View
9
Download
0
Category
Preview:
Citation preview
Abril 26, Lunes
Esp. Ing. José María Sola, Profesor 85v1.0.0-beta.1, 2021-04-26
Agenda para esta clase� El Proceso de Compilación, versión simplificada� El Preprocesador� Introducción al Lenguaje de Programación C� “El Libro Blanco”� Expresiones & Iteraciones
Esp. Ing. José María Sola, Profesor 86
Esp. Ing. José María Sola, Profesor 87
Hello World/* Hello World
* JMS* 20150402*/
#include <stdio.h>
int main(void){printf("Hello, World!\n");
}
Esp. Ing. José María Sola, Profesor 88
Tiempos� Tiempo de diseño� Tiempo de traducción
1. Tiempo de Preprocesamiento2. Tiempo de Compilación3. Tiempo de Vinculación
� Tiempo de ejecución� Comparaciones
� Contrastar con Máquina Virtual y Bytecode� Constrastar con Lenguajes Interpretados
Esp. Ing. José María Sola, Profesor 89
Esp. Ing. José María Sola, Profesor 90
El Proceso de Traducción u Compilación,Versión Simplificada
Esp. Ing. José María Sola, Profesor 91
#include <_____.h>
return/*entre*/0;return0;return 0;
� Incluir archivos, directiva #include� Reemplazar comentarios.
Dos Funciones Básicas del Preprocesador
Esp. Ing. José María Sola, Profesor 92
Esp. Ing. José María Sola, Profesor 93
Esp. Ing. José María Sola, Profesor 94
� LP de propósito general, no está especializado
� Economía en las expresiones, pero expresivo� Poco texto, mucha información� Variabilidad en texto, variabilidad
en significado.� Control de flujo (¿de qué?)� Estructuras de datos� Gran cantidad de operadores� lexible� No es de muy alto nivel (¿de qué?)� No es grande (¿en qué sentido?)� Su falta de restricciones y su
generalidad lo hacen efectivo� Independiente de máquina, portable
(procesador y sistema operativo)� El lenguaje de programación de Unix
� Primer lenguaje de alto nivel eficiente y portable� En el momento, menos
problemas que� Basic, PL/I, Fotran, Cobol, Pascal
� Comparado con Lisp� Vinculación� Más rápdo� Con GC, lo cual no es apropiado
para programación de sistemas� C es la mejor asbtracción de
una computadora existente, no de un dispositivo imaginario
� Suficientes estructuras de control y de datos para resolver problemas, limitadas para que se pueda implementar el compilador.
Descripción general
Esp. Ing. José María Sola, Profesor 95
Frases sobre C� C no es un LP grande, y no le queda bien un libro grande
(K&R)� C tiene vueltas, falencias y un enorme éxito (Ritchie)� C es un arma filosa, con la se pueden hacer programas
eficientes y elegantes o una “carnicería” (Pike)� C mejora a medida que uno gana experiencia con C
(K&R) (Curva de aprendizaje empinada).
Esp. Ing. José María Sola, Profesor 96
� 1969-1973� Elaboración. Basado en B, a su
vez, basado en BCPL� C Pre estandarización
� 1978� K&R 1era edición
� 1983� Comienza estandarización
� 1988� K&R 2da edición
� 1989-90� C89–C90 (1era versión
estándar)� 1999
� C99 (2da versión estándar)� 2011
� C11 (3era versión estándar)� 2019
� C18 (4ta vesisón, sin cambios visibles, también se lo conoce como C17)
� Otros LP� C++� Objective-C� C#� D� Java
Historia de C y LP relacionados
Esp. Ing. José María Sola, Profesor 97
K&R 1.1 Una Introducción Tipo Tutorial – Empezando
Esp. Ing. José María Sola, Profesor 98
“El Lenguaje de Programación C” aka “El Libro Blanco” aka “K&R”
� Autores:� Dennis Ritchie autor del LP y
coautor de Unix con Ken Thompson
� Kernighan� Requisitos
� Conocimiento de programación� Lectura atenta
� Ejercicios� Ediciones y usos
� 1978 1era Edición� Manual de referencia
� 1988 2da Edición� ANSI C
� Preliminares (Front Matter)� Prefacio� Prefacio de la primera edición� Introducción
� General, “Ancho”� Capítulo 1: Tutorial
� En “profundidad”: Capítulos 2 a 7� 2 Tipos, Operadores y Expresiones� 3 Control de Flujo� 4 Funciones y Estructura de
Programa� 5 Punteros y Arreglos� 6 Estructuras� 7 Entrada y Salida
� Ejemplo Integrador� 8 Interfaz de Sistema de UNIX –
entrada/salida, sistema de archivos y alocación de memoria
� “Apéndices”� A: Especificación del LP:
Semántica (LN) y Sintaxis (BNF)� B: Biblioteca estándar� C: Cambios introducidos en la
primera versión del estándar.
Esp. Ing. José María Sola, Profesor 99
"Hello, World!"– Demostración de Compilación y Ejecución#include <stdio.h>
main( ) {printf("Hello, World!\n");
}
$ cc hello.c
$ ./helloHello, World!
Esp. Ing. José María Sola, Profesor 100
Ejercicios� 1-1. Experimentar con eliminación de partes y compilar� 1-2. Probar diferentes \c.
Esp. Ing. José María Sola, Profesor 101
K&R 1.2-1.3 Variables, Tipo de datos, Expresiones Aritméticas y la Sentencia For
Esp. Ing. José María Sola, Profesor 102
Problema – Tabla Fahrenheit-Celsius°C = 5/9 ( °F – 32 )0 -17
20 -640 460 1580 26100 37120 48140 60160 71180 82200 93220 104240 115260 126280 137300 148
Esp. Ing. José María Sola, Profesor 103
// F2C K&R 1988#include <stdio.h>int main(void){int fahr, celsius;int lower, upper, step;
lower = 0; //scale lower limitupper = 300; //upper limitstep = 20; //step sizefahr = lower;
while (fahr <= upper) {celsius = 5 * (fahr-32) / 9;printf("%d\t%d\n", fahr, celsius);fahr = fahr + step;
}}
� Comentarios� Variables
� Abstracción de datos� Tipo de datos
� Declaraciones de variables� Anuncio de propiedades� Asociación� Declaración con varios
Declaradores� Comienzo de la Ejecución
(Cómputo)� Sentencias� "Sentencia de asignación"� Sentencia while� Sentencia compuesta� Indentación
� Estilos de codificación� Secuencia� Expresiones aritméticas� División entera y real� Formateo de la salida
� ¿Cómo mejorar la alineación?.
Resolución – Fahrenheit-Celsius°C = 5/9 ( °F – 32 )
Esp. Ing. José María Sola, Profesor 104
F-C 2 – Formato y Precisión#include <stdio.h>
int main(void){float fahr, celsius;int lower, upper, step;
lower = 0; // lower limit of temperature scaleupper = 300; // upper limitstep = 20; // step sizefahr = lower;
while (fahr <= upper) {celsius = (5.0/9.0) * (fahr-32.0);printf("%3.0f %6.1f\n", fahr, celsius);fahr = fahr + step;
}}
Esp. Ing. José María Sola, Profesor 105
Otros formatos para printf� Diferencia entre Valor y Formato
� 65 , 41, 101, LXV, A� 1000001
� %d entero decimal� %i también entero decimal, la diferencia está en la función scanf� %6d entero decimal, por lo menos ancho 6� %f punto flotante� %6f punto flotante, por lo menos ancho 6� %.2f punto flotante y 2 caracteres luego del punto� %6.2f punto flotante, por lo menos ancho 6 y 2 caracteres luego del punto� %o octal� %x hexadecimal� %c carácter� %s string� %% porciento
Esp. Ing. José María Sola, Profesor 106
F-C 3 – For generaliza While y una "Best Practice"
#include <stdio.h>int main(void){
float fahr, celsius;int lower, upper, step;
lower = 0; upper = 300; step = 20; fahr = lower;
while (fahr <= upper) {celsius = (5.0/9.0) * (fahr-32.0);printf("%3.0f %6.1f\n", fahr, celsius);fahr = fahr + step;
}}
#include <stdio.h>
int main(void){int fahr;
for( fahr = 0; fahr <= 300; fahr = fahr + 20 )printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32) );
}
� for por while� Variable
celsius reemplazada por expresión
Sentencias for
Sentencias while
Esp. Ing. José María Sola, Profesor 107
Ejercicios� 1-3. Encabezado sobre la tabla� 1-4. C-F.
Esp. Ing. José María Sola, Profesor 108
Términos de la clase #Definir cada término con la bibliografía� Proceso de Compilación, Versión Simplificada
� Fuente� Compilador� Ejecutable� Comentarios mínimos en archivos fuente� Tiempo de diseño� Tiempo de traducción� Tiempo de Preprocesamiento� Tiempo de Compilación� Tiempo de Vinculación (linker)� Biblioteca estándar� Tiempo de ejecución� Contraste con Framework� Función del compilador� Vinculador (Linker)� Contraste con Máquina virtual� Bytecode
� Preprocesador� #include� Tratamiento de comentarios por parte del
preprocesador� Introducción al Lenguaje de Programación C
� Nivel de abstracción� Independiente de Máquina� Control de flujo de ejecución� Historia de C y de ANSI C� Relación entre C y C++� ANSI C, C89 ó C90� C99� C11� C18, también conocido como C17
� “El Lenguaje de Programación C” aka “El Libro Blanco” aka “K&R”� Partes del libro.
� Expresiones & Iteraciones � Abstracción de datos� Declaraciones� División entera y real� Operación cerrada� Valor de una expresión � Efecto de lado de una expresión� Formateo de valor
04
Esp. Ing. José María Sola, Profesor 109
Tareas para la próxima clase1. Leer de[K&R1988] desde la tapa hasta la sección
1.3 La Sentencia For inclusive2. Entregar trabajo “Interfaces & Makefile —
Temperaturas”.
Esp. Ing. José María Sola, Profesor 110
Esp. Ing. José María Sola, Profesor 111
Recommended