Introducción al Lenguaje C -...
Transcript of Introducción al Lenguaje C -...
![Page 1: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/1.jpg)
Introducción al Lenguaje de Programación C
Andrés ArciaDepartamento de ComputaciónEscuela de Ingeniería de SistemasFacultad de IngenieríaUniversidad de Los Andes
![Page 2: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/2.jpg)
Lenguaje de Programación C
❃ Fue diseñado e implementado por Brian Kernighan y Dennis Ritchie en 1972, a partir de los lenguajes BCPL (1967) y B (1970). Su desarrollo está estrechamente vinculado al del sistema operativo UNIX.
❃ Combina características de los lenguajes de alto nivel (sentencias de control y manipulación de datos) y de los lenguajes de bajo nivel (manejo de bits).
❃ Es independiente del hardware.
![Page 3: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/3.jpg)
¿Cual es la diferencia entre C y C++?
❃ C++ es una extensión de C inventado por Bjarne Stroustrup a principio de la década de 1980 en los laboratorios Bell.
❃ Es un lenguaje de programación híbrido. Permite usar tanto la técnica de programación estructurada y como la técnica de programación orientada a objetos.
![Page 4: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/4.jpg)
Enfoques de Programación
❃ Programación estructurada (evolucionó en los sesenta y setenta)
❃ Programación orientada a objetos (OOP: Object- Oriented Programming) (evolucionó en los ochenta)
![Page 5: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/5.jpg)
Programación Estructurada
Programación estructurada
❃ Enfoque disciplinado que permite escribir programas estructurados, utilizando las siguientes tres estructuras de control bien definidas:
➙ Secuencial (asignación, lectura, escritura)➙ Decisión o selección (simple, doble, múltiple)➙ Repetición (repita-mientras, hacer-mientras, repita-para)
❃ Programación orientada a acciones donde la unidad básica es la función.
![Page 6: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/6.jpg)
Programación Orientada a Objetos
¿Qué es POO?
Encapsula datos (atributos) y métodos (comportamiento) en objetos.
Objetos Computacionales: Componentes de software reutilizables que modelan objetos del mundo real.
Un objeto, en general, es un ente que puede ser percibido con alguno de los sentidos.
![Page 7: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/7.jpg)
Programación Orientada a Objetos
La unidad minima en la POO es la clase. Una clase es a un objeto lo que una idea es a un hecho.
Ejemplo:
Clase: Libro. Objetos: El mundo de Sofia. Hostein Gaarder. Piense como Leonardo Da Vinci. Michael Gelb.
Clase: Planeta. Objetos: Mercurio, Venus, La Tierra.
![Page 8: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/8.jpg)
¿ Por qué Programación Estructurada ?
❃ Vamos a estudiar en este curso la programación estructurada por las siguientes razones:
➙ Los objetos se componen en parte de fragmentos de programación estructurada.
➙ Los métodos se implementan usando programación estructurada.
![Page 9: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/9.jpg)
Lenguajes de Programación C/C++
❃ Características generales
➙ Simple.➙ Sintaxis Flexible.➙ Flujo de control estructurado.➙ Tipos de datos variados.➙ Posibilidad de abstracción de datos.➙ Amplia variedad de operadores.
❃ Elementos sintácticos
➙ Palabras clave➙ Identificadores➙ Delimitadores➙ Comentarios
![Page 10: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/10.jpg)
Palabras Reservadas en C
Las palabras listadas a continuación son reservadas del compilador y no pueden ser utilizadas para otro propósito que no sea el predefinido.
Palabras reservadas en Cauto break case char const
continue default do double else
goto if float enum extern
float for int long return
register short signed sizeof static
struct switch typedef union unsigned
void volatile while
![Page 11: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/11.jpg)
Identificadores
Consideraciones Semanticas
❃ Nombres que permiten señalar, mencionar o hacer referencia a los diferentes objetos manipulados por un programa.
❃ Deben resultar significativos, sugiriendo lo que representan.
![Page 12: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/12.jpg)
Identificadores
Consideraciones Sintacticas
❃ No pueden ser palabras reservadas.
❃ El primer caracter debe ser una letra (ó un underscore).
❃ Las letras mayusculas y minusculas son diferentes. Ej: “A” es diferente que “a”.
❃ En la mayoria de los compiladores la máxima longitud es de al menos 31 caracteres.
![Page 13: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/13.jpg)
Ejemplos de Identificadores
Ejemplos:
Identificadores válidos
promedio, TempMinima, _parametro_auxiliar, __p4, Color_Pared, _VALMAX, VAL_MINIMO5
Identificadores inválidos
4promedio, -TempMinima, parámetro_auxiliar, =_p4, 8Color_Pared, °_VALMAX, ?VAL_MINIMO5
![Page 14: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/14.jpg)
Delimitadores
Signos especiales que permiten al compilador
separar y reconocer las diferentes unidades sintácticas del lenguaje.
➔ ; (punto y coma). Se considera el de terminación, que es necesario cuando finaliza cada una de las sentencias o declaraciones.
➔ , (coma). Separa dos elementos consecutivos de una lista.
➔ ( ) (paréntesis). Enmarca una lista de parámetros, expresiones o condiciones.
➔ [ ] (corchetes). Enmarca la dimensión o el subíndice de un arreglo.
➔ { } (llaves). Enmarca un bloque de sentencias o una lista de valores iniciales.
![Page 15: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/15.jpg)
Comentarios
• Permiten que el programador documente sus programas.
• Los comentarios dan legilibilidad al programa.• Deben ser actualizados con regularidad.• No representan ningún peso para el desempeño
final del programa pues son completamente ignorados por el compilador.
![Page 16: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/16.jpg)
Comentarios
Características Semanticas:
➔ Deben ser coherentes con el programa.
➔ Deben ser relevantes.
➔ Deben mantenerse al día.
➔ Siempre deben enriquecer el programa: conceptos, gráficos, relaciones entre funciones, etc..
![Page 17: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/17.jpg)
Comentarios
En C los comentarios empiezan por los caracteres /* y terminan con los caracteres */.
Pueden comprender varias líneas y estar distribuidos de cualquier forma, pero todo aquello que está entre el /* (inicio del comentario) y el */ (fin del comentario) es simplemente ignorado por el compilador.
![Page 18: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/18.jpg)
Sintaxis de un Comentario
Ejemplos:
/* Esto es un comentario simple. */
/* Esto es un comentario más largo, distribuido en varias líneas. El texto se suele alinear por la izquierda. */
/***************************************** Esto es un comentario de varias ** líneas, encerrado en una caja para ** llamar la atención. ******************************************/
![Page 19: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/19.jpg)
Un programa simple en C
/* Evaluacion del polinomio x*x+x-1 en x=2 */
int main(){
int x, r; // Declaracion de la variable x y r
r=x*x+x-1; // Calculo del resultado}
![Page 20: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/20.jpg)
Consideraciones del Programa Anterior
❃ La primera linea describe el propósito del programa.
❃ Todo programa debe contener un punto de entrada para su ejecución:
int main()
❃ La llave que abre { indica el comienzo del cuerpo de la función, mientras que la llave que cierra } indica el final del cuerpo de la función.
{
int x, r; // Declaracion de la variable x y r
r=x*x+x-1; // Calculo del resultado}
![Page 21: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/21.jpg)
Programas en C
❃ Esta línea dice al compilador que dos variables del tipo entero x y r, se van a usar en el programa. El compilador reservará espacio en memoria para estas variables durante su ejecución. Toda variable usada en un programa debe ser declarada y se le debe asignar un tipo de dato.
int x, r;
❃ El calculo del valor del polinomio se hace de la forma esperada:
r = x*x+x-1
![Page 22: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/22.jpg)
Programa en C
La función principal y obligatoria de todo programa en C es la función main:
void main( )
{ Aqui va el código. }
![Page 23: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/23.jpg)
Sintaxis de un Prog. en C
Sintaxis formal 1/* Comentarios */Declaración de importacionesDefinición de constantes ⇐ Opcional
Definición de tipos ⇐ Opcional
Declaración de prototipos ⇐ Opcional
Declaración de variables globales ⇐ Opcional
void main ( ){ Declaración de variables locales ⇐ Opcional
Declaración de constantes locales ⇐ Opcional
Conjunto de sentencias ⇐ Cuerpo de la función
}
Definición de funciones ⇐ Opcional
![Page 24: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/24.jpg)
Sintaxis de Un Prog. En CSintaxis formal 2
/* Comentarios */Declaración de importacionesDefinición de constantes ⇐ Opcional
Definición de tipos ⇐ Opcional
Declaración de variables globales ⇐ Opcional
Definición de funciones ⇐ Opcional
void main ( ){ Declaración de variables locales ⇐ Opcional
Declaración de constantes locales ⇐ Opcional
Conjunto de sentencias ⇐ Cuerpo de la función
}
![Page 25: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/25.jpg)
Recuerde
Elementos de un lenguaje de programación
Un sublenguaje para definir los datos: Qué datos tenemos Cómo les llamamos Cómo son (tipo y/o estructura) Qué se puede hacer con ellos
Un sublenguaje para definir los algoritmos: Qué le hacemos a los datos En qué orden (cuándo se lo hacemos) Cuántas veces
Según Wirth: Programa = Algoritmo + Datos
![Page 26: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/26.jpg)
Conjunto de sentencias
Estructuras de control
❃ El proceso de diseño del algoritmo y posterior codificación del programa consiste en definir las acciones o sentencias que resolverán el problema.
❃ En un programa las sentencias son ejecutadas de forma secuencial y en el orden en que aparecen escritas, a menos de que exista una indicación de salto abrupto.
![Page 27: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/27.jpg)
Estructuras de Control
Programa lineal: Las sentencias se ejecutan secuencialmente en el orden en que aparecen escritas.
Programa no lineal: Se interrumpe la secuencia mediante sentencias de bifurcación.
![Page 28: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/28.jpg)
Tipos de Estructuras de Control
La programación estructurada se caracteriza por utilizar tres estructuras de control. Todos los programas pueden ser escritos en términos de estas estructuras de control (Bohm y Jacopini):
➔ Estructuras secuenciales ➔ Estructuras de decisión o selección
➔ Estructuras de repetición
![Page 29: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/29.jpg)
Estructuras Secuenciales
Se ejecutan en secuencia sin posibilidad que la sentencia siguiente a ejecutar pueda ser otra diferente de la que sigue en la secuencia.
Tipo de sentencia Pseudocódigo Pseudocódigo Código en inglés en español en C
Comienzo de proceso begin Inicio {Fin de proceso end Fin }Entrada (lectura) read Leer scanfSalida (escritura) write Escribir printfAsignación A ← 5 ó A = 5 A ← 5 ó A = 5 A = 5
![Page 30: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/30.jpg)
Estructuras Secuenciales
.
. Punto de entrada o salida único
Estructura secuencial
Ejecución secuencial
![Page 31: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/31.jpg)
Sentencia de Entrada (Lectura)
Permite leer de la entrada estandar determinados valores y asignarlos a determinadas variables. La entrada estandar puede estar determinada por los dispositivos de entrada (teclados, unidades de disco, tarjetas de red, etc.)
Notación algorítmica
Leer (lista de variables de entrada) Leer (a, b, c)
Notación en Cscanf(“tipos”,&var1,&var 2, …,&varn);scanf(“tipos”,&a,&b,&c);
![Page 32: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/32.jpg)
Sentencia de Salida (Escritura)
Permite escribir los resultados de un programa. La salida puede aparecer en un dispositivo de salida (pantalla, impresora, etc.)
Notación algorítmica
Escribir (mensajes y/o variables de salida)Escribir (“El resultado es”, resultado)
Notación en C++
printf(“mensajes + tipos”, var1, var2, ..., varN);printf(“El resultado es %tipo”, resultado).
![Page 33: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/33.jpg)
Ejemplo: ¡Hola Mundo!
#include <stdlib.h>
int main(){
printf(“¡Hola Mundo! \n”); return 0;}
![Page 34: Introducción al Lenguaje C - webdelprofesor.ula.vewebdelprofesor.ula.ve/ingenieria/amoret/pd1/clase3.pdf · de alto nivel (sentencias de control y ... Objetos Computacionales: Componentes](https://reader031.fdocuments.mx/reader031/viewer/2022020414/5bb987c309d3f2323f8b5858/html5/thumbnails/34.jpg)
Ejemplo 2: Saludo Personalizado.
#include <stdlib.h>
int main(){
char nombre[20]; printf(“Ingrese su nombre: ”);
scanf(“%s”, nombre);
printf(“Hola %s\n”, nombre); return 0;}