Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca...
Transcript of Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca...
![Page 1: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/1.jpg)
Marzo26,Lunes
![Page 2: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/2.jpg)
Agendaparaestaclase� IntroducciónalLenguajedeProgramaciónC� Intervalo� “ElLenguajedeProgramaciónC”aka“ElLibroBlanco”aka“K&R”
� ElProcesodeCompilación,versiónsimplificada� Otrasversionesdehello.c� ElPreprocesador� Sintaxis,Semántica,yPragmática� AnálisisySíntesisdeHello.c
Prof. Esp. Ing. José María Sola 56
![Page 3: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/3.jpg)
![Page 4: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/4.jpg)
� LPdepropósitogeneral,noestáespecializado
� Economíaenlasexpresiones,peroexpresivo� Pocotexto,muchainformación� Variabilidadentexto,variabilidad
ensignificado.� Controldeflujo(¿dequé?)� Estructurasdedatos� Grancantidaddeoperadores� Flexible� Noesdemuyaltonivel(¿dequé?)� Noesgrande(¿enquésentido?)� Sufaltaderestriccionesysu
generalidadlohacenefectivo� Independientedemáquina,portable
(procesadorysistemaoperativo)� EllenguajedeprogramacióndeUnix
� Primerlenguajedealtoniveleficienteyportable� Enelmomento,menos
problemasque� Basic,PL/I,Fotran,Cobol,Pascal
� ComparadoconLisp� Vinculación� Másrápdo� ConGC,locualnoesapropiado
paraprogramacióndesistemas� Ceslamejorasbtracciónde
unacomputadoraexistente,nodeundispositivoimaginario
� Suficientesestructurasdecontrolydedatospararesolverproblemas,limitadasparaquesepuedaimplementarelcompilador.
Descripcióngeneral
Prof. Esp. Ing. José María Sola 58
![Page 5: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/5.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 59
![Page 6: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/6.jpg)
� 1969-1973� Elaboración.BasadoenB,
asuvez,basadoenBCPL� CPreestandarización
� 1978� K&R1eraedición
� 1983� Comienza
estandarización� 1988
� K&R2daedición� 1989-90
� C89–C90(1eraversiónestándar)
� 1999� C99(2daversión
estándar)� 2011
� C11(3eraversiónestándar)
� OtrosLP� C++� Objective-C� C#� D� Java
HistoriadeCyLPrelacionados
Prof. Esp. Ing. José María Sola 60
![Page 7: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/7.jpg)
![Page 8: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/8.jpg)
K&R1.1UnaIntroducciónTipoTutorial–Empezando
![Page 9: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/9.jpg)
“ElLenguajedeProgramaciónC”aka“ElLibroBlanco”aka“K&R”
� Autores:� DennisRitchieautordelLPy
coautordeUnixconKenThompson
� Kernighan� Requisitos
� Conocimientodeprogramación� Lecturaatenta
� Ejercicios� Edicionesyusos
� 19781eraEdición� Manualdereferencia
� 19882daEdición� ANSIC
� Preliminares(FrontMatter)� Prefacio� Prefaciodelaprimeraedición� Introducción
� General,“Ancho”� Capítulo1:Tutorial
� En“profundidad”:Capítulos2a7� 2Tipos,OperadoresyExpresiones� 3ControldeFlujo� 4FuncionesyEstructurade
Programa� 5PunterosyArreglos� 6Estructuras� 7EntradaySalida
� EjemploIntegrador� 8InterfazdeSistemadeUNIX–
entrada/salida,sistemadearchivosyalocacióndememoria
� “Apéndices”� A:EspecificacióndelLP:
Semántica(LN)ySintaxis(BNF)� B:Bibliotecaestándar� C:Cambiosintroducidosenla
primeraversióndelestándar.
![Page 10: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/10.jpg)
"Hello,World!"–DemostracióndeCompilaciónyEjecución#include <stdio.h> main( ) { printf("Hello, World!\n"); } > cc hello.c > hello.exe Hello, World!
![Page 11: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/11.jpg)
Ejercicios� 1-1.Experimentarconeliminacióndepartesycompilar� 1-2.Probardiferentes\c.
Prof. Esp. Ing. José María Sola 65
![Page 12: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/12.jpg)
Prof. Esp. Ing. José María Sola 66
![Page 13: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/13.jpg)
DiferenciasconEstándarC(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 14: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/14.jpg)
![Page 15: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/15.jpg)
HelloWorld/* Hello World * JMS * 20150402 */ #include <stdio.h> int main(void){ printf("Hello, World!\n"); }
![Page 16: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/16.jpg)
Tiempos� Tiempodediseño� Tiempodetraducción(compilación)
1. TiempodePreprocesamiento2. TiempodeCompilación3. TiempodeVinculación
� Tiempodeejecución� Comparaciones
� ContrastarconMáquinaVirtualyBytecode� ConstrastarconLenguajesInterpretados
Prof. Esp. Ing. José María Sola 70
![Page 17: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/17.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 71
![Page 18: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/18.jpg)
Prof. Esp. Ing. José María Sola 72
![Page 19: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/19.jpg)
#include <_____.h> return/*entre*/0; return0; return 0;
� Incluirarchivos,directiva#include� Reemplazarcomentarios.
DosFuncionesBásicasdelPreprocesador
![Page 20: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/20.jpg)
Prof. Esp. Ing. José María Sola 74
![Page 21: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/21.jpg)
#include <stdio.h> main( ) { printf( "Hello, World!\n" ); }
Otrasversiones–¿MismasSintaxis,SemánWca,yPragmáWca?
#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 22: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/22.jpg)
Prof. Esp. Ing. José María Sola 76
![Page 23: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/23.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 24: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/24.jpg)
Prof. Esp. Ing. José María Sola 78
![Page 25: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/25.jpg)
ProgramaGeneral hello.c
� 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óndehello.c
![Page 26: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/26.jpg)
Términosdelaclase#Definircadatérminoconlabibliograaa� IntroducciónalLenguajede
ProgramaciónC� Niveldeabstracción� IndependientedeMáquina� Controldeflujodeejecución� HistoriadeCydeANSIC� RelaciónentreCyC++� ANSIC,C89óC90� C99� C11
� K&RCapítulo#1� “ElLenguajedeProgramaciónC”
aka“ElLibroBlanco”aka“K&R”� OtrasversionesdeHello.c
� Tipointimplícito� Valorretornadopormain� Concatenacióndecadenas� Múltiplesinvocaciones� puts� EXIT_FAILURE� stdlib.h
� ProcesodeCompilación,VersiónSimplificada� Fuente� Compilador� Ejecutabe� 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
� Preprocesador� #include� Tratamientodecomentariospor
partedelpreprocesador� Sintaxis,Semántica,yPragmática
� Sintaxis� Semánctica� Pragmática
� AnálisisySíntesisdehello.c� main� printf� Funcióndel#include� puts
� Secuenciadeescape� TerminadordesentenciadeC� SeparadordesentenciasdePascal� Archivo.h(Encabezado)� Stringliteral:CadenaLiteral,o
Literaldecadena,oConstantecadena,oCadenaconstante
� LenguajeEnsamblador� Stack� EstructuralinealdeunprogramaC� Estructurajerárquicadeun
programaPascal
02
Prof. Esp. Ing. José María Sola 80
![Page 27: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/27.jpg)
Tareasparalapróximaclase1. EntregaTrabajo#02. Leerde[K&R1988]desde1.2VariablesyExpresiones
Aritméticashasta1.4ConstantesSimbólicasinclusive.
Prof. Esp. Ing. José María Sola 81
![Page 28: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/28.jpg)
![Page 29: Marzo 26, Lunes · 4 Funciones y Estructura de Programa ... main llama a la función de biblioteca estándar printf para imprimir esa secuencia de caracteres. \n representa el carácter](https://reader033.fdocumento.com/reader033/viewer/2022060302/5f087a7c7e708231d42235e2/html5/thumbnails/29.jpg)