sesión 4: repaso lenguaje c (1). 2009/1 circuitos digitales iii 2010/1 circuitos digitales iii...
TRANSCRIPT
Sistemas Digitales IISesión 4: Repaso Lenguaje C (1)
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
11Generalidades del lenguaje C Introducción a este lenguaje.
22Estructura de Código en C Cómo es la programación usando Lenguaje C
Agenda para la claseAgenda para la clase
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Estructuras de Control
Estructura, variables y Operadores
Generalidades del lenguaje CGeneralidades del lenguaje C
Ejercicios
Ejemplos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
UNIDAD CENTRAL DE PROCESO
UNIDAD CENTRAL DE PROCESO
MEMORIAMEMORIA
RELOJRELOJ
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 CGeneralidades del Lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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 CGeneralidades del Lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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
INTEL x86 ARMv9ARMv9 m68km68k Power
PC
Power PC
CódigoCódigo CódigoCódigo CódigoCódigo CódigoCódigo
ASM x86
ASM x86
ASM ARMv9
ASM ARMv9
ASM m68k
ASM m68k
ASM PPC
ASM PPC
Código de máquina
Generalidades del Lenguaje CGeneralidades del Lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Lenguaje C Una misma aplicación puede ejecutarse en diferentes
procesadores, solo es necesario volverla a compilar
AlgoritmoAlgoritmo
INTEL x86
INTEL x86 ARMv9ARMv9 m68km68k Power
PC
Power PC
CódigoCódigo
Comp x86
Comp x86
Comp ARMv9
Comp ARMv9
Comp m68k
Comp m68k
Comp PPC
Comp PPC
Código de máquina
Generalidades del Lenguaje CGeneralidades del Lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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 CGeneralidades del Lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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 CGeneralidades del Lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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 CGeneralidades del Lenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
;Lenguaje ensamblador, sintaxis Intel para procesadores x86mov 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ónLenguaje de Programación
Alto Nivel
Bajo Nivel
Má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#,Java,
Fortran, Pascal,
XML,HTML
Ensamblador
Alto Nivel
Bajo Nivel
Máquina
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Estructuras de Control
Estructura, variables y Operadores
Generalidades del lenguaje C
Ejercicios
Ejemplos
Estructura, variables y Operadores
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Estructura de un ProgramaEstructura de un Programa
INICIO
FIN
Declaración de variables
Acciones del Algoritmo
Encabezados
Directivas
//Mi primer programa en C#include <stdio.h>#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; }
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
VARIABLESVARIABLESLenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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.
TipoNúmero de Bits
char 8
int 32
float 32
char (string)
N
Otros …
Variables y ConstantesVariables y Constantes
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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.
VariablesVariables
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Palabras ReservadasPalabras Reservadas
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
OPERADORESOPERADORESLenguaje C
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
OperadoresOperadores
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Operadores Aritméticos Suma: + Resta: - Multiplicación: * División: / Módulo: %
AritméticosAritméticos
OPERADOR ASOCIATIVIDAD
() Izquierda - derecha
*,/,% Izquierda – derecha
+,- Izquierda - derecha
= Derecha - izquierdaPri
ori
dad
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Aritméticos especiales +=, -=, *=, /=, %=. Son una abreviatura de las expresiones de
asignación:
OPERACIÓN OPERADOR EJEMPLO SIGNIFICADO
Suma += c += 7 c = c + 7
Resta -= d -= 4 d = d – 4
Multiplicación *= e *= 5 e = e * 5
División /= f /= 3 f = f / 3
Módulo %= g %=9 g = g % 9
AritméticosAritméticos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Aritméticos incrementales - decrementales: De un operando (++, – –)
OPERACIÓN OPERADOR EJEMPLO SIGNIFICADO
Preincremento ++ ++a1. Se incrementa2. Se utiliza el valor
Predecremento -- --a1. Se decrementa2. Se utiliza el valor
Postincremento ++ b++1. Se utiliza el valor2. Se incrementa
Postdecremento -- b--1. Se utiliza el valor2. Se decrementa
AritméticosAritméticos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Operadores Relacionales Igualdad: == Diferente: != Mayor que: > Menor que: < Mayor o igual que: >= Menor o igual que: <= Ejemplos
RelacionalesRelacionales
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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ógicosLógicos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Estructuras de Control
Estructura, variables y Operadores
Generalidades del lenguaje C
Ejercicios
Ejemplos
Estructuras de Control
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Generalidades del Lenguaje CGeneralidades 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: ifSelección Múltiple: switchEstructuras ciclicas:
Para: forMientras: while
Haga-Mientras: do-while
Estructuras ciclicas:Para: for
Mientras: whileHaga-Mientras: do-while
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Se debe incluir el encabezado “<stdio.h>”
scanf (“-----);
printf(“-----);
Entrada y Salida de DatosEntrada y Salida de Datos
scanf(“%d”, &a);
printf(“%d”, a);
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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 masDe dos alternativas
Condicional: IFCondicional: IF
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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: SwitchSelección Múltiple: Switchswitch (selector) { case val1: Instrucciones1; break; case val2: Instrucciones2; break; … case valN: InstruccionesN; break; default: InstruccionesDefault;}
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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: WhileCiclo: While
while (condición){Instrucciones;
}
(Condición)
Cuerpo
Fin
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Bucle condicional que se ejecuta al menos una vez (muy semejante al ciclo while).
Ciclo: Do - WhileCiclo: Do - While
Cuerpo
do { Instrucciones;} while (expresión);
(Condición)
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Realiza un conjunto de operaciones un determinado número de veces
Ciclo: ForCiclo: For
for( VC; condicionBucle; INC o DEC){
instrucciones;}
for(i = 0; i < n; i++) {
<Instrucciones>; ...
}
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Estructuras de Control
Estructura, variables y Operadores
Generalidades del lenguaje C
Ejercicios
EjemplosEjemplos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
EjemplosEjemplos 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
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
EjemplosEjemplos 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
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
EjemplosEjemplos 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
1 Ingresar cantidad de estudiantes
2 Ingresar cantidad de prácticas
3 Ingresar Notas (mostrar definitiva de cada estudiante)
4 Mostrar Promedio del curso
5 Mostrar Porcentaje de estudiantes que ganaron
6 Salir
Seleccione una opción:
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
EjemplosEjemplos
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.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Estructuras de Control
Estructura, variables y Operadores
Generalidades del lenguaje C
Ejercicios
Ejemplos
Ejercicios
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
EjerciciosEjercicios Diseñe un algoritmo que lea dos valores A y B, y
encuentre A^B mediante sumas únicamente.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
EjerciciosEjercicios Realizar calculadora de dos variables complejas
usando un menú de selección
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Fin de la Clase!!!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?
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
ReferenciasReferencias
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/
Sistemas Digitales IIFin de la clase 2