marzo 28, lunes 2016...tareas para la próxima clase 1. conformar equipos 2. resolver [k&r1988]...
TRANSCRIPT
![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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/4.jpg)
![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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/7.jpg)
� 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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/8.jpg)
“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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/10.jpg)
#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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/12.jpg)
![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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/17.jpg)
#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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/24.jpg)
#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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/29.jpg)
![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](https://reader033.vdocuments.pub/reader033/viewer/2022050123/5f52f7fc08b16e56a83c841e/html5/thumbnails/30.jpg)