La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sesión 4: Repaso Lenguaje C (1). 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales.

Presentaciones similares


Presentación del tema: "Sesión 4: Repaso Lenguaje C (1). 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales."— Transcripción de la presentación:

1 Sesión 4: Repaso Lenguaje C (1)

2 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás 11 Generalidades del lenguaje C Introducción a este lenguaje. 22 Estructura de Código en C Cómo es la programación usando Lenguaje C Agenda para la clase

3 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Estructuras de Control Estructura, variables y Operadores Generalidades del lenguaje C Ejercicios Ejemplos

4 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás UNIDAD CENTRAL DE PROCESO MEMORIA RELOJ SOFTWARE  Lenguaje C para S.E.  Programas portables y robustos.  Tener código C rápido y pequeño.  Identificar los elementos críticos en cada programa.  Desarrollar software para el control de Hardware: Firmware. Generalidades del Lenguaje C

5 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Algunas preguntas sobre C  ¿Qué es el lenguaje C? Lenguaje de Programación El desarrollo inicial de C se llevó a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973; según Ritchie, el periodo más creativo tuvo lugar en 1972. Se le dio el nombre "C" porque muchas de sus características fueron tomadas de un lenguaje anterior llamado "B".  ¿Una de sus mejores características? Portabilidad del código en diferentes sistemas Hardware. Generalidades del Lenguaje C

6 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Lenguaje Ensamblador  Una misma aplicación deberá ser diseñada para cada procesador si ellos tienen diferentes filosofías de diseño Algoritmo INTEL x86 ARMv9 m68k Power PC Código ASM x86 ASM ARMv9 ASM m68k ASM PPC Código de máquina Generalidades del Lenguaje C

7 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Lenguaje C  Una misma aplicación puede ejecutarse en diferentes procesadores, solo es necesario volverla a compilar Algoritmo INTEL x86 ARMv9 m68k Power PC Código Comp x86 Comp ARMv9 Comp m68k Comp PPC Código de máquina Generalidades del Lenguaje C

8 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Algunas preguntas sobre C  ¿Por qué se utiliza C? Debido a la flexibilidad, se puede ser más productivo. Lenguaje pequeño, estructurado, mediano nivel.  ¿Por qué no usar C? Código generado. Asignación dinámica de memoria. Uso de la pila. Optimizaciones. Acceso al mapa de memoria. Interrupciones. Contra: El código generado puede ser más grande que si se hace en ASM. Pro: Una aplicación muy compleja en ASM es muy difícil de depurar. Contra: El código generado puede ser más grande que si se hace en ASM. Pro: Una aplicación muy compleja en ASM es muy difícil de depurar. Contra: C manipula la memoria sin la intervención directa del usuario. Pro: Mediante punteros y haciendo uso del Linker, es posible decir a C como utilizar la memoria más eficientemente. Contra: C manipula la memoria sin la intervención directa del usuario. Pro: Mediante punteros y haciendo uso del Linker, es posible decir a C como utilizar la memoria más eficientemente. Contra: Una mala implementación en C puede acabar con el Stack. Pro: Mediante el linker, es posible modificar en cierto nivel el manejo del Stack. Contra: Una mala implementación en C puede acabar con el Stack. Pro: Mediante el linker, es posible modificar en cierto nivel el manejo del Stack. Contra: Las optimizaciones no tienen en cuenta el funcionamiento del Hardware. Pro: Existen palabras reservadas para indicarle a C que no lleve a cabo ciertas optimizaciones. Contra: Las optimizaciones no tienen en cuenta el funcionamiento del Hardware. Pro: Existen palabras reservadas para indicarle a C que no lleve a cabo ciertas optimizaciones. Contra: Explícitamente, C no permite manipular el mapa de memoria. Pro: Existen algunas directivas y parámetros del linker que permiten hacer esto. Contra: Explícitamente, C no permite manipular el mapa de memoria. Pro: Existen algunas directivas y parámetros del linker que permiten hacer esto. Contra: C directamente no maneja interrupciones. Pro: Con algunas directivas se pueden emplear las interrupciones. Contra: C directamente no maneja interrupciones. Pro: Con algunas directivas se pueden emplear las interrupciones. Generalidades del Lenguaje C

9 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Diferencias principales entre S.E. y PC.  Memoria RAM limitada.  Memoria ROM limitada.  Espacio para el Stack limitado.  Programación orientada al hardware.  Manejo de eventos: Interrupciones.  Otras. Problema: Sistemas embebidos con poca cantidad de memoria. Pro: Codificación eficiente usando tipos de datos pequeños y modos de direccionamiento cortos. Problema: Sistemas embebidos con poca cantidad de memoria. Pro: Codificación eficiente usando tipos de datos pequeños y modos de direccionamiento cortos. Problema: Normalmente cuando se programa en C, el uso del hardware es problema del S.O. Pro: Existen alternativas con C para manejar directamente el hardware. Problema: Normalmente cuando se programa en C, el uso del hardware es problema del S.O. Pro: Existen alternativas con C para manejar directamente el hardware. Generalidades del Lenguaje C

10 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Ventajas  Lenguaje estándar.  Se puede realizar código estructurado.  Más productivo.  Fácil de comprender.  Código reutilizable.  Librería estándar.  Portabilidad entre diferentes plataformas.  Desventajas  Gran cantidad de memoria (Flash y RAM).  Precio de las herramientas de compilación y depuración algo costoso.  Problemas en el compilador.  Código generado innecesario. Generalidades del Lenguaje C

11 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás ;Lenguaje ensamblador, sintaxis Intel para procesadores x86 mov eax,1; //mueve a al registro eax el valor 1 xor ebx, ebx; //pone en 0 el registro ebx int 80h; //llama interrupción 80h(80h=128sistema decimal) Lenguaje de Programación Alto NivelBajo NivelMáquina int main (void){ //Variables int a, b, c; //Ingreso de datos printf(“Introduzca el primer numero (entero)”) scanf(“%d”,a); ESCRIBA(“Introduzca el segundo numero (entero)”) scanf(“%d”,b); //Proceso c = a + b //Salida printf(“La suma es: ”,c) } C,C++,C#,Jav a, Fortran, Pascal, XML,HTML Ensamblador Alto Nivel Bajo Nivel Máquina

12 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Estructuras de Control Estructura, variables y Operadores Generalidades del lenguaje C Ejercicios Ejemplos Estructura, variables y Operadores

13 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Estructura de un Programa INICIO FIN Declaración de variables Acciones del Algoritmo Encabezados Directivas //Mi primer programa en C #include #include “mod1.h”; int main(void){ int a, b, c = 0; printf(“Digite el primer numero: ”); scanf(“%d”, &a); printf(“Digite el segundo numero: ”); scanf(“%d”, &b); c = a + b; printf(“El resultado es: << c <<‘\n’; return 0; }

14 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás VARIABLES Lenguaje C

15 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Una variable es un lugar en memoria para almacenar información.  Cada variable tiene un tamaño específico que le dice a la máquina cuanta memoria necesita reservar.  Existen variables locales y globales. Tipo Número de Bits char8 int32 float32 char (string) N Otros… Variables y Constantes

16 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Locales- Automaticas Una variable local se declara dentro de una función, son visibles solo dentro de la funcion Ocultan a las variables globales con el mismo nombre. “Nacen” y “mueren” con la función. A no ser que se declaren (static) Globales Una variable global se declara fuera de todas las funciones es visible en todo el programa Se le puede cambiar el valor en cualquier parte del programa y lo mantiene. Se recomienda usar pocas o ninguna variable global. Variables

17 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Palabras Reservadas

18 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás OPERADORES Lenguaje C

19 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Operadores

20 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Operadores Aritméticos  Suma: +  Resta: -  Multiplicación: *  División: /  Módulo: % Aritméticos OPERADORASOCIATIVIDAD ()Izquierda - derecha *,/,%Izquierda – derecha +,-Izquierda - derecha =Derecha - izquierda Prioridad

21 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Aritméticos especiales  +=, -=, *=, /=, %=.  Son una abreviatura de las expresiones de asignación: OPERACIÓNOPERADOREJEMPLOSIGNIFICADO Suma+=c += 7c = c + 7 Resta-=d -= 4d = d – 4 Multiplicación*=e *= 5e = e * 5 División/=f /= 3f = f / 3 Módulo%=g %=9g = g % 9 Aritméticos

22 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Aritméticos incrementales - decrementales:  De un operando (++, – –) OPERACIÓNOPERADOREJEMPLOSIGNIFICADO Preincremento++++a 1.Se incrementa 2.Se utiliza el valor Predecremento----a 1.Se decrementa 2.Se utiliza el valor Postincremento++b++ 1.Se utiliza el valor 2.Se incrementa Postdecremento--b-- 1.Se utiliza el valor 2.Se decrementa Aritméticos

23 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Operadores Relacionales  Igualdad: ==  Diferente: !=  Mayor que: >  Menor que: <  Mayor o igual que: >=  Menor o igual que: <=  Ejemplos Relacionales

24 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Operadores Lógicos  AND: &&  OR: ||  NOT: !  Otros Operadores:  Ver o cambiar contenido de memoria: *  Dirección de memoria de una variable: &  Prueba incondicional: ? : Lógicos

25 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  ¿Qué diferencias hay entre variables locales y variables globales?  Encuentre la(s) palabra(s) reservada(s) que no pertenece(n) al grupo:  Tipos de datos: char, int, static, long, const.  Preprocesador: const, #ifdef, #include, #define, #else, struct.  Op. Relacionales: ==, ||, >, >=, !=, &&. ¿Cuánto he aprendido?

26 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Estructuras de Control Estructura, variables y Operadores Generalidades del lenguaje C Ejercicios Ejemplos Estructuras de Control

27 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Generalidades del Lenguaje C  Las estructuras de control permiten dar solución a cualquier problema de programación.  Existen tres estructuras de control:  Secuenciales  De Decisión  Repetitivas Entrada y Salida de datos. Operaciones. Entrada y Salida de datos. Operaciones. Condicional: if Selección Múltiple: switch Condicional: if Selección Múltiple: switch Estructuras ciclicas: Para: for Mientras: while Haga-Mientras: do-while Estructuras ciclicas: Para: for Mientras: while Haga-Mientras: do-while

28 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Se debe incluir el encabezado “ ” scanf (“-----); printf(“-----); Entrada y Salida de Datos scanf(“%d”, &a); printf(“%d”, a);

29 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás if (condicion1) { Instrucciones1 } else if (condicion2){ Instrucciones2 }. else if (condicionN){ InstruccionesN } else{ InstruccionesE } Se utilizan cuando interesa realizar acciones que involucren mas De dos alternativas Condicional: IF

30 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás La selección se basa en el valor de una variable simple o de una expresión simple denominada expresión de control o selector. Selección Múltiple: Switch switch (selector) { case val1: Instrucciones1; break; case val2: Instrucciones2; break; … case valN: InstruccionesN; break; default: InstruccionesDefault; }

31 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Realiza un conjunto de operaciones mientras una condición se esté cumpliendo, o mientras una expresión sea verdadera Ciclo: While while (condición){ Instrucciones; } (Condición) Cuerpo Fin

32 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Bucle condicional que se ejecuta al menos una vez (muy semejante al ciclo while). Ciclo: Do - While Cuerpo do { Instrucciones; } while (expresión); (Condición)

33 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Realiza un conjunto de operaciones un determinado número de veces Ciclo: For for( VC; condicionBucle; INC o DEC ) { instrucciones; } for(i = 0; i < n; i++) { ;... ;... } }

34 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Estructuras de Control Estructura, variables y Operadores Generalidades del lenguaje C Ejercicios Ejemplos

35 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Ejemplos  Diseñar un programa que lea tres números e indique el tipo de triángulo que forman (isósceles, equilátero, escaleno). Comprobar que los números realmente formen un triángulo, sino emitir el error

36 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Ejemplos  Diseñar un programa que lea como entrada tres enteros que representa una fecha como el día, mes, año. Este debe imprimir el número de día, mes y año de la fecha del día siguiente. Típica de entrada: 28 3 1992 La salida típica: Fecha siguiente al día 28:03:1992 es 29:02:1992

37 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Ejemplos  En el curso de informática I está dividido en parte teórica (45%) y parte práctica (55%). En este se realizan tres parciales (uno del 10%, otro del 15% y el final del 20%) y N prácticas de igual porcentaje cada una. El profesor requiere un programa que calcule la nota definitiva de cada estudiante, el promedio definitivo del curso y el porcentaje de estudiantes que ganaron la materia. MENU 1Ingresar cantidad de estudiantes 2Ingresar cantidad de prácticas 3Ingresar Notas (mostrar definitiva de cada estudiante) 4Mostrar Promedio del curso 5Mostrar Porcentaje de estudiantes que ganaron 6Salir Seleccione una opción:

38 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Ejemplos  El profesor indica el número de estudiantes.  El profesor indica cuántas prácticas se realizaron.  Todas las notas deben estar entre 0 y 5 (validar datos).  Al ingresar todas las notas de cada estudiante se debe mostrar su promedio.  El programa debe tener el menú que se muestra a continuación.  La única manera de terminar el programa es cuando el profesor seleccione la opción de Salir.

39 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Estructuras de Control Estructura, variables y Operadores Generalidades del lenguaje C Ejercicios Ejemplos Ejercicios

40 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Ejercicios  Diseñe un algoritmo que lea dos valores A y B, y encuentre A^B mediante sumas únicamente.

41 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Ejercicios  Realizar calculadora de dos variables complejas usando un menú de selección

42 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Fin de la Clase!!!  Lecturas propuestas próxima clase  Funciones Motivación para la próxima clase.  Desarrollo de programas complejos utilizando la modularización mediante funciones  ¿Preguntas por parte de ustedes?

43 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Referencias  Como Programar en C++ - Deithel & Deithel Ed. PRENTICE HALL  Sams Teach Yourself C++ in One Hour a Day, J. Liberty,S. Rao, B. Jones http://newdata.box.sk/bx/c/

44  Fin de la clase 2


Descargar ppt "Sesión 4: Repaso Lenguaje C (1). 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales."

Presentaciones similares


Anuncios Google