30
Marzo 28, Lunes

Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Marzo28,Lunes

Page 2: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Agendaparaestaclase� ConformacióndeEquipos�  IntroducciónalLenguajedeProgramaciónC�  “ElLenguajedeProgramaciónC”aka“ElLibroBlanco”aka“K&R”

� ElProcesodeCompilación,versiónsimplificada� ElPreprocesador�  Intervalo� AnálisisySíntesisdeHello.c� AutómataFinitoparaIdentificadores�  Sintaxis,Semántica,yPragmática� VersionesdelEstándar

Prof. Esp. Ing. José María Sola 66

Page 3: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

ConformacióndeEquipos1.  Cincointegrantescomomínimo2.  Porequipo,enviarunmaila

[email protected],nombresyusuariogithubdecadaintegrante.

Prof. Esp. Ing. José María Sola 67

Page 4: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida
Page 5: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Descripcióngeneral_� LPdepropósitogeneral,noestáespecializado� Economíaenlasexpresiones,peroexpresivo� Controldeflujo(¿dequé?)� Estructurasdedatos� Grancantidaddeoperadores�  Flexible� Noesdemuyaltonivel(¿dequé?)� Noesgrande(¿enquésentido?)� Sufaltaderestriccionesysugeneralidadlohacenefectivo

�  Independientedemáquina,portable(procesadorysistemaoperativo).

Prof. Esp. Ing. José María Sola 69

Page 6: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

FrasessobreC_� CnoesunLPgrande,ynolequedabienunlibrogrande(K&R)

� Ctienevueltas,falenciasyunenormeéxito(Ritchie)� Cesunarmafilosa,conlasepuedenhacerprogramaseficientesyelegantesouna“carnicería”(Pike)

� CmejoraamedidaqueunoganaexperienciaconC(K&R)(Curvadeaprendizajeempinada).

Prof. Esp. Ing. José María Sola 70

Page 7: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

�  OtrosLP�  C++�  Objective-C�  C#�  D�  Java

�  1966-1973�  Elaboración.BasadoenB,a

suvez,basadoenBCPL�  CPreestandarización

�  1978�  K&R1eraedición

�  1983�  Comienzaestandarización

�  1988�  K&R2daedición

�  1989-90�  C89–C90(1eraversión

estándar)�  1999

�  C99(2daversiónestándar)�  2011

�  C11(3eraversiónestándar)

EvolucióndeCyLPrelacionados_

Prof. Esp. Ing. José María Sola 71

Page 8: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

“ElLenguajedeProgramaciónC”aka“ElLibroBlanco”aka“K&R”

�  Autores:�  DennisRitchieautordel

LPycoautordeUnixconKenThompson

�  Kernighan�  Requisitos

�  Conocimientodeprogramación

�  Lecturaatenta�  Ejercicios�  Edicionesyusos

�  19781eraEdición�  Manualdereferencia

�  19882daEdición�  ANSIC

�  Preliminares(FrontMatter)�  Prefacio�  Prefaciodelaprimera

edición�  Introducción

�  General,“Ancho”�  Capítulo1:Tutorial

�  En“profundidad”:Capítulos2a7�  2Tipos,Operadoresy

Expresiones�  3ControldeFlujo�  4Funcionesy

EstructuradePrograma

�  5PunterosyArreglos�  6Estructuras�  7EntradaySalida

�  EjemploIntegrador�  8InterfazdeSistema

deUNIX–entrada/salida,sistemadearchivosyalocacióndememoria

�  “Apéndices”�  A:Especificacióndel

LP:Semántica(LN)ySintaxis(BNF)

�  B:Bibliotecaestándar.

Page 9: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

K&R1.1UnaIntroducciónTipoTutorial–Empezando

Page 10: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

#include <stdio.h> main( ) { printf("Hello, World!\n"); } > cc hello.c > hello.exe Hello, World!

"Hello,World!"–DemostracióndeCompilaciónyEjecución

Page 11: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Ejercicios�  1-1.Experimentarconeliminacióndepartesycompilar�  1-2.Probardiferentes\c.

Prof. Esp. Ing. José María Sola 76

Page 12: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida
Page 13: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

HelloWorld/* Hello World * JMS * 20150402 */ #include <stdio.h> int main(void){ printf("Hello, World!\n"); }

Page 14: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Tiempos� Tiempodediseño� Tiempodetraducción(compilación)

1.  TiempodePreprocesamiento2.  TiempodeCompilación3.  TiempodeVinculación

� Tiempodeejecución� Comparacione

�  ContrastarconMáquinaVirtualyBytecode�  ConstrastarconLenguajesInterpretados

Prof. Esp. Ing. José María Sola 79

Page 15: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

ElProcesodeCompilación,VersiónSimplificada

Compilador LinkerHello.c

(código fuente)

Hello(ejecuta-

ble)

Hello(objeto)

#include

Biblioteca Standard

stdio.h(encabe-

zado standard)

Prof. Esp. Ing. José María Sola 80

Page 16: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Prof. Esp. Ing. José María Sola 81

Page 17: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

#include <_____.h> return/*entre*/0; return0; return 0;

�  Incluirarchivos,directiva#include� Reemplazarcomentarios.

DosFuncionesBásicasdelPreprocesador

Page 18: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Prof. Esp. Ing. José María Sola 84

Page 19: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Defineunafunciónllamadamainquenorecibevaloresargumento.Lassentenciasdemainseencierranentrellaves

Incluyeinformaciónacercadelabibliotecaestándar#include <stdio.h> main( ) { printf("Hello, World!\n"); }

Análisisde‘Hello,World!’

�  Estructuradeunprograma�  vs.Pascal

�  Linealvs.Jerárquico

�  Roldemain�  Preprocesador�  Bibliotecaestándar:

Entrada/Salida�  vsFramework

�  Roldellaves{}�  Funciónprintf�  Pasajede

argumentosafunciones

�  Constantesdecadenaoliteralcadena

�  Secuenciadeescape�  Puntoycomacomo

terminador�  vs.Pascal

�  Analizarquees“palabra”delLPyqueno

�  Identificadores:mainyprintf--¿Cuáleselautómatafinitoquelosreconoce?

mainllamaalafuncióndebibliotecaestándarprintfparaimprimiresasecuenciadecaracteres.\nrepresentaelcarácternueva-linea

Page 20: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

ProgramaGeneral ProgramaHello

�  Unprogramaesunasecuenciadefunciones.Formageneral:main fg…

�  FormageneraldeunafunciónTipoNombre(Parámetros){Cuerpo}

�  Cuandosecorre(ejecuta)unprograma,porconvención,maineslaprimerafuncióninvocadaporelambientedeejecución(e.g.,sistemaoperativo).Todoprogramadebetenerunmainconosinparámetros

�  Esteprogramadefinesololafunciónmain

�  Comotodafunción,mainpuedeteneronoparámetros

�  Estemaininvocaaprintfconunacadenaliteral(cadenaconstante)comoargumento."Entrecomillas".

Generalizaciónde‘Hello,World!’

Page 21: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Prof. Esp. Ing. José María Sola 87

Page 22: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

ComponentesdeunAutómataFinito� Estados

�  Inicial�  Finales

� Transición� Origen�  Evento� Destino�  Transiciónreflexiva

� Alfabeto� Ejemplo:Identificadores

Prof. Esp. Ing. José María Sola 88

Page 23: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Prof. Esp. Ing. José María Sola 89

Page 24: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

#include <stdio.h> main( ) { printf( "Hello, World!\n" ); }

Otrasversiones–¿MismasSintaxis,SemánZca,yPragmáZca?

#include <stdio.h>

main( ){

printf( "Hello," );

printf( " World!" );

printf( "\n" );

}

#include <stdio.h>

main( ){

printf( "Hello,"

"World!"

"\n" );

}

#include <stdio.h>

main( ){

puts( "Hello, World!" );

}

Page 25: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Prof. Esp. Ing. José María Sola 91

Page 26: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

DiferenciasconANSIC(yconC++)main( ){ puts("Pre Ansi"); }

#include <stdio.h> int main(void){ puts("Post Ansi"); return 0; }

#include <stdio.h> #include <stdlib.h> int main(void){ puts("Post Ansi"); return EXIT_SUCCESS; }

#include <iostream> int main() { std::cout << "ANSI C++\n"; }

#include <stdio.h> int main(void){ puts("Post Ansi"); }

Page 27: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Tareasparalapróximaclase1.  ConformarEquipos2.  Resolver[K&R1988]1-1a1-33.  Estudiar[K&R1988]

•  1.4ConstantesSimbólicas•  1.5EntradaySalidadeaCaracteres

Prof. Esp. Ing. José María Sola 93

Page 28: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida

Términosdelaclase#Definircadatérminoconlabibliograca�  ParteI

�  Niveldeabstracción�  IndependientedeMáquina�  Controldeflujodeejecución�  HistoriadeCydeANSIC�  RelaciónentreCyC++�  ANSIC,C89óC90�  C99�  C11

�  ParteII�  “ElLenguajedeProgramaciónC”aka

“ElLibroBlanco”aka“K&R”�  ParteII

�  Fuente�  Compilador�  Ejecutabe

�  ParteIII�  Comentariosmínimosenarchivos

fuente�  Tiempodediseño�  Tiempodetraducción�  TiempodePreprocesamiento�  TiempodeCompilación�  TiempodeVinculación(linker)�  Bibliotecaestándar�  Tiempodeejecución�  ContrasteconFramework

�  Funcióndelcompilador�  Vinculador(Linker)�  ContrasteconMáquinavirtual�  Bytecode

�  ParteIV�  #include�  Tratamientodecomentariosporparte

delpreprocesador�  ParteV

�  main�  printf�  Funcióndel#include�  puts�  Secuenciadeescape�  TerminadordesentenciadeC�  SeparadordesentenciasdePascal�  EstructuralinealdeunprogramaC�  Estructurajerárquicadeunprograma

Pascal�  Archivo.h(Encabezado)�  Stringliteral:CadenaLiteral,oLiteral

decadena,oConstantecadena,oCadenaconstante

�  ParteVI�  Identificadores�  AutómataFinito�  Estados

�  Inicial

�  Finales�  Transición

�  Origen�  Evento�  Destino�  Transiciónreflexiva

�  Alfabeto�  ParteVII

�  ComparaciónSintaxis,Semántica&Pragmática

�  ParteVIII�  puts�  EXIT_SUCCESS

03

Prof. Esp. Ing. José María Sola 94

Page 29: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida
Page 30: Marzo 28, Lunes 2016...Tareas para la próxima clase 1. Conformar Equipos 2. Resolver [K&R1988] 1-1 a 1-3 3. Estudiar [K&R1988] • 1.4 Constantes Simbólicas • 1.5 Entrada y Salida