63
Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya Sitio de la asignatura: http://www.jiiea.com/SyPrgLan/ User: sist2014 psw : sist#C10

Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Embed Size (px)

Citation preview

Page 1: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Asignatura: Lenguaje de Programación de Sistema PPT No.01

Programa vespertino de Ingeniería (E) en Sistemas Computacionales

Profesor: José Estay ArayaSitio de la asignatura:http://www.jiiea.com/SyPrgLan/User: sist2014 psw: sist#C10

Page 2: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Asignatura: Lenguaje de Programación de Sistema

Objetivos: • Aprender a programar, en sus aspectos

elementales, un lenguaje de alto nivel, y para aplicaciones en modo nativo y plataforma virtual.

• Usar un compilador 32 bits: Microsoft Visual C/C++ Express 2010 o superior

• Aplicar el Lenguaje C en el uso y programación con recursos del sistema.

Page 3: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Objetivos (cont): • Aprender a combinar código fuente

ensamblador en un programa fuente C• Aprender a combinar Assembly x86 con

fuente C/C++ Visual corriendo sobre maquina virtual de Microsoft .NET Framework.

• Adquirir una visión global del uso de compiladores IDE en lenguaje C, tanto nativo como de maquina virtual.

Page 4: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Plan de la asignatura

De acuerdo al plan de estudios, modalidad asignatura de un semestre académico.

La asignatura contempla horas teóricas mas horas de laboratorio.

Material de la asignatura:http://www.jiiea.com/SyPrgLan/user:sist2014psw:sist#C10

Page 5: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

SESION FECHA ACTIVIDAD DESCRIPCION

1 18/Marzo Introducción a la asignatura Fundamentos de C

2 25 Exp 1: Microsoft Visual C/C++ Express Edition 2010 o superior

IDE, “holaMundo!”, operaciones aritm +,-,*,/

3 1/Abril Exp 2.Win32: solución ecc cuadratica

4 8 Exp 3

5 15 Exp 4

6 22 C-1

7 29 Exp 5

8 6/Mayo Exp 6

9 13 Exp 7

10 20 Exp 8

11 27 C-2

12 3/Junio Exp 9

13 10 Exp 10

14 17 Exp 11

15 24 Exp 12

16 1/Julio C-3

17 8 Notas finales y cierre del curso

Page 6: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Conceptos: el TRADUCTOR

Traductores: ensambladores (ASSEMBLER), interpretadores, compiladores, enlazadores

Lenguaje de máquina

Page 7: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Características generales de un lenguaje

Transportabilidad Facilidad de aprendizaje Facilidades para el usuario Bibliotecas: dinámicas y estáticas Control electrónico

Page 8: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Lenguaje C

Compilador: MICROSOFT VISUAL C/C++ Express Edition 2010 o superior

Obtener desde Microsoft

Page 9: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Lenguaje C

Instalación Importancia de las bibliotecas Bajar e instalar Directorios DISPLAY: modo de consola y modo

Windows

Page 10: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Ambito o entorno de C

*.C *.OBJ *.EXE Edición / Creación Código de máquina no-linkeado Enlazar (Linking) Código de máquina ejecutable

Page 11: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Ventajas Desventajas de C

Top-down Estructurado Modular + Eficiente +/- Transportable + Control del computador + Aplicación en microcontroladores y

microprocesadores, pequeños subsistemas +

Poco legible -

Page 12: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Estructuración de un programa

Programación estructurada Programación modular

Page 13: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Elementos de C

Componentes léxicos (token), ejemplo main { +

Palabras reservadas ANSI C

Page 14: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Tipos de Datos

char int float Entero-32768..+32767 Flotante+/-3.4 e +/- 38 ...entre otros...ver HELP de C

Page 15: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Sentencias (instrucciones)

Simples: ejemplo x = 3+5; Compuestas: delimitada por { }

Page 16: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Funciones

Display o despliegues en pantalla Monitor, proyector, LCD todos con

características VGA Función printf()

Page 17: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Especificador de formato

%d %o %u %x %f %e %c %s ...entre otros...ver HELP de C.

Page 18: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Identificadores

Función Sensibilidad may/min Palabras reservadas Declaración de variables

Page 19: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Operadores aritméticos

+ - * / %

Page 20: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Precedencia

() - * / + -

Page 21: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Operador de asignación

Asigna zona de memoria Antes dirección física Ahora dirección mnemónica o literal Ejemplo x = 10 significado

Page 22: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Asignación compuesta

x= x + 5 x +=5 Extensible a las otras operaciones

aritméticas.

Page 23: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Secuencias de escape

\n \t

...entre otras secuencias de escape. Ver HELP de C.

Page 24: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Especificador de ancho de campo

“el numero %5.2f lo usa”, 6.0 Despliega 6.00

Donde signo, mantisa, punto decimal, dos decimales

Page 25: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Entrada estándar Funcion scanf() Especificador de

formato

printf()

scanf()

Page 26: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Comentarios

Comentarios en C // /* rem */ Ayuda para debugging

Page 27: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Desarrollo de un programa en C

Ejemplos con la ley de ohm. Diseño del código Todo el proceso hasta llegar al código

ejecutable

Page 28: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Funciones printf() scanf() sin(x) cos(x) tan(x) sqrt() Funciones creadas por el programador

Page 29: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Nombres de funciones creadas por el programador

Similar a reglas para nombres de variables

Se le pasan valores a través de una lista de parámetros formales

La función puede retornar un valor

Page 30: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Toma de decisiones

Operadores relacionales: >>=<<===!=

Page 31: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Sentencia if Sintaxis:

if (expresion) sentencia

yes

noproceso

Page 32: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Sentencia if-else Sintaxis: if

(expresion) sentencia1 else sentencia2

process1

process2yes

no

Page 33: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

switch Sintaxis: switch(expresion) {case exp1:sentencia1;break;case exp2:sentencia2;break;

.

.default}

Page 34: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

switch

var

S1 S3S2 Default

1 2 3

Page 35: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Conversión de tipos

La conversión se realiza teniendo en cuenta el rango de cada tipo:

Rango inferior <= char, int, long, float, double => Rango superior

Page 36: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Operador condicional

Sintaxis:

expresion1 ? expresion2 : expresion3

Si expresion1 es TRUE devuelve expresion2, caso contrario devuelve expresion3

Page 37: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Operador condicional (cont.)#include <stdio.h>main(){int eleccion; /* Elección del usuario. */

printf("Introduzca un 1 o un 0 => ");scanf("%d",&eleccion);eleccion? printf("Un uno.\n") : printf("Un cero.\n");

}

Page 38: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Lazo o bucle for

Sintaxis:for(expresion_inicial;

expresion_condicional; expresion_de_lazo){

sentencias}

Nota:si es 1 sentencia las {} no son necesarias

Page 39: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Lazo while

Sintaxis:while(expresion) sentencia;

while(expresion){sentencias}

Page 40: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

while…..

sentencia(s)

true

false

Page 41: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

do-while

Sintaxis:do sentencia while(expresion)

do {sentencias

}while(expresion)

Page 42: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

do-while…….

sentencia(s)

true

false

Page 43: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Lazos anidados Se admiten lazos anidados siempre y

cuando ellos no se traslapen:

lazo1(mas externo)

lazo 2

lazo3(mas interno) Lazos mal anidadosno validos

Page 44: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Recursividad

Estudio personal: significado y aplicación

Page 45: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Vectores numéricos

Declaración: int vector[3], define un vector con 3 elementos vector[0], vector[1], vector[2]

Los vectores pueden declararse en alguno de los 3 formatos básicos: int, float o char, entre otros

La carga de un vector int se puede realizar por asignación

Page 46: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Vectores…………..

La carga de un vector float se puede realizar por asignación

El contenido de las celdas de un vector determinado debe ser homogéneo

Page 47: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Vectores multidimensionales o matrices numéricas(array)

Declaración: int matriz[2][3] Carga de valores:

int matriz[2][3]={ /*fila columna*/{10,20,30},{11,21,31}

};

Page 48: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Cadenas (strings) de caracteres

Definición: char cadena[]=“hola”; También: char cadena[5]=“hola”; El último elemento del vector de

cadena es siempre ‘\0’ Э funciones de biblioteca para

comprobar el tipo de carácter. Ver Tabla 6.1

Page 49: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Cadenas (strings) de caracteres

Э funciones para manejar cadenas de caracteres

Por ejemplo, la función que retorna la longitud de la cadena de caracteres strlen()

Ver HELP de C para otras funciones

Page 50: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Estructura de datos Declaración:main() {

struct {char fabricante[20]; /* Fabricante */int cantidad; /*Número de R’s*/float precio_unitario; /* Precio cada

R*/} resistencias; /* Estructura */

Page 51: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Estructura de datos

Asignación de valores: gets(resistencias.fabricante);/*permite

introducir blancos*/ scanf("%d",&resistencias.cantidad); scanf("%f",&resistencias.precio_unitario); Cálculo del valor total:valor_total = resistencias.cantidad *

resistencias.precio_unitario;

Page 52: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Estructura de datos

La gran potencialidad está en poder escribir vectores y matrices de estructuras.

Page 53: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Estructura de datos Por ejemplo:struct{

char pieza[20]; /* Tipo de pieza. */int cantidad; /* Número de piezas. */float precio_unitario; /* Precio de cada pieza. */char existe; /* Comprobar si el registro existe. */

} registro_piezas;main(){

static registro_piezas contenido_cajas[3];int registro;int i;

…………………………………………………………………………………

}

Page 54: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

I/O- Manejo de puertos

Leer un puerto: inportb() Escribir un puerto: outportb() Ejemplos:outportb(port_a,0xAA);entrada=inportb(port_c);La dirección de los puertos debe

conocerse y tener soporte de ROM-BIOS

Page 55: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Dispositivos de almacenamiento de datos, en memoria secundaria(discos magnéticos, memorias flash)

La administración de archivos se maneja bajo modalidad FAT o NTFS

C provee las funciones necesarias para escribir o leer archivos en memoria secundaria

Page 56: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

E/S de disco (memoria 2aria.) Condiciones de archivos de disco1 El archivo de disco no existe y se

quiere crearlo y añadir información2 El archivo de disco existe y se quiere

extraer información de él3 El archivo de disco existe y se quiere

añadir más información, conservando la información que ya estaba en él.

4 El archivo de disco existe y se quiere borrar la información, y agregar información nueva.

Page 57: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Distintos métodos de lectura y escritura de datos

Un carácter a la vez Lee y escribe a memoria 2aria. Un carácter a la vez

Leer y escribir cadenas de caracteres

Lee y escribe a memoria 2aria. Cadenas de caracteres.

Método mixto E/S de caracteres, cadenas de caracteres, reales y enteros

Método de estructura de bloques

E/S de vectores y estructuras

Page 58: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Distintos métodos de …(cont.) Para todos los casos se usan las

siguientes funciones:

• FILE *puntero• fopen(nombre_archivo, modo de

operación)• fclose(puntero a archivo)

Page 59: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Distintos métodos de …(cont.)

Un carácter a la vez o cada vez

TXT

Lee y escribe a memoria 2aria. Un carácter a la vezputc() //para escribir; getche() //para leer

Leer y escribir cadenas de caracteres

TXT

Lee y escribe a memoria 2aria. Cadenas de caracteres.putc() //para escribir; getc() //para leer

Método mixtoMIX

E/S de caracteres, cadenas de caracteres, reales y enterosfprintf(); fscanf()

Método de estructura de bloques

BIN

E/S de vectores y estructurasfread(); fwrite

Page 60: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Distintos métodos de …(cont.)Acceso Random Se utiliza la función fseek(p,d,m ) la cual tiene 3 argumentos: p: puntero a archivo, d: desplazamiento, m: modoModo puede tomar 3 valores• SEEK_SET(0) desplazamiento desde

el inicio• SEEK_SET(1)desplazamiento desde

posición actual• SEEK_SET(2)desplazamiento desde

el final del archivo

Page 61: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Archivos de texto frente a binariosIncide en el rendimiento de la transferencia de los datos. Por ejemplo, se tiene el siguiente número entero:

12345678Si almacenamos el número como texto31 32 33 34 35 36 37 38 8 bytesSi almacenamos binario

BC614E 3 bytesPor lo cual el ahorro de espacio es considerable

Page 62: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

Operaciones sobre archivos

“a” Abierto para añadir datos. Los datos se añaden al final del archivo o se crea un archivo nuevo si no existe.

“r” Abierto para lectura. El archivo debe existir

“w” Abierto para escritura. Los datos son escritos desde el principio, o se crea un nuevo archivo si no existe.

Page 63: Asignatura: Lenguaje de Programación de Sistema PPT No.01 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya

“a+” Abierto para lectura y añadir datos. Si el archivo no existe, se crea.

“r+” Abierto para lectura y escritura. El archivo debe existir.

“w+” Abierto para lectura y escritura. Se escribe desde el principio del archivo

Operaciones sobre archivos(Cont)