Programacion redes lengueje C

32
UNIVERSIDAD TECNOLOGICA DE PANAMA FACULTAD DE INGENIERIA DE SISTEMAS COMPUTACIONALES DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS PLAN DE CONTENIDO PROGRAMACIÓN APLICADA II REDES DE SISTEMAS COMPUTACIONALES DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS PLAN DE CONTENIDO PROGRAMACIÓN APLICADA II PRESENTADO POR: Profesor: Ing.Emilio Batista Him Código de Asignatura: 8358, horas laboratorios 2 Horas de clases 3 12/18/2013 1 Programación II Universidad Tegnológica de Panamá Prof E Batista

Transcript of Programacion redes lengueje C

UNIVERSIDAD TECNOLOGICA DE PANAMAFACULTAD DE INGENIERIA DE SISTEMAS COMPUTACIONALES

DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADOR AS PLAN DE CONTENIDO PROGRAMACIÓN APLICADA II

REDESDE SISTEMAS COMPUTACIONALESDEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS

• PLAN DE CONTENIDO PROGRAMACIÓN APLICADA II

• PRESENTADO POR:

• Profesor: Ing.Emilio Batista Him

• Código de Asignatura: 8358, horas laboratorios 2

• Horas de clases 3

12/18/2013 1Programación II Universidad Tegnológica de Panamá Prof E Batista

12/18/2013Programación II Universidad Tegnológica de Panamá Prof E Batista 2

PLAN DE CONTENIDO PROGRAMACIÓN

APLICADA II

Código de Asignatura: 8358, horas laboratorios 2

I. ARREGLOS, ESTRUCTURAS Y UNIONES

1.1. Arreglos1.1.1 Definición de un arreglo

1.1.2. Procesamiento de un arreglo1.1.3. Paso arreglos a funciones1.1.4. Arreglos y cadenas de caracteres

1.2. Estructuras y Uniones1.2.1. Definición de una estructura

1.2.2. Procesamiento de una estructura1.2.3. Tipos de datos definidos por el usuario

1.2.4. Paso de estructura a una función1.2.5. Estructura auto referenciadas

1.2.6. Uniones1.2.7. Arreglos de estructuras

12/18/2013 3Programación II Universidad Tegnológica de Panamá Prof E Batista

2. PUNTEROS2.1 Conceptos básicos2.2 Declaración de punteros2.3 Paso de funciones a punteros2.4 Punteros y arreglos unidimensionales2.5 Operaciones con punteros2.6 Puntero y arreglos multidimensionales2.7 Punteros a estructuras2.8 Paso de funciones a otras funciones2.9.Asignación dinámica de memoria

12/18/2013 4Programación II Universidad Tegnológica de Panamá Prof E Batista

3. CONCEPTOS BÁSICOS DE LA MEMORIA3.1 Estructura de Memoria3.2 Segmentación de la Memoria3.3 Pila

� Retorno� Argumentos de funciones� Variables locales

12/18/2013 5Programación II Universidad Tegnológica de Panamá Prof E Batista

4. PROGRAMACIÓN A BAJO NIVEL

4.1 Estructura de los registros4.2 Interrupciones del BIOS

�Interrupciones de video�Interrupciones de teclado�Interrupciones de disco�Interrupciones de base del disco�Interrupciones de Comunicación Serial

4.3Sub-Rutinas Misceláneas�Manejo de cadenas�Manejo de Memoria�Entrada / Salida (archivos)�Impresión

4.4. Función MK_FK12/18/2013 6

Programación II Universidad Tegnológica de Panamá Prof E Batista

5. GRAFICOS CON C A BAJO NIVEL 5.1 Introducción5.2 Estructura de un programa gráfico5.3 Modalidad de video5.4 Colores modo texto / gráfico5.5 Especificaciones de coordenadas5.6 Funciones gráficas5.7 Concepto

�Relativas a la configuración�Relativas a las coordenadas�Referente al uso de paletas�Para obtener o poner atributos

5.8 Creación de una máscara

12/18/2013 7Programación II Universidad Tegnológica de Panamá Prof E Batista

12/18/2013 8Programación II Universidad Tegnológica de Panamá Prof E Batista

Arreglos:Un arreglo o array (en inglés) es una colección de variables relacionadas a las que se hace referencia por medio de un nombre común. Otra definición válida es que un arreglo es un conjunto de datos que se almacenan en memoria de manera contigua con el mismo nombre y para diferenciar los elementos de un arreglo se utiliza un índice. En el lenguaje C un arreglo se le conoce como un tipo de dato compuesto. Los arreglos pueden tener una o varias dimensiones.

12/18/2013 9Programación II Universidad Tegnológica de Panamá Prof E Batista

REPRESENTACION GRAFICA DE ARREGLOS

12/18/2013 10Programación II Universidad Tegnológica de Panamá Prof E Batista

Representación de gráfica del arreglo de 3 dimensiones

Índice de unarreglo:Todo arreglo está compuesto por un número deelementos. El índice es un número correlativo queindica la posición de un elemento del arreglo. Los índicesen C van desde la posición 0 hasta laposición tamaño – 1.

Elemento de unarregloUn elemento de un arreglo es un valor particular dentrode la estructura del arreglo. Para acceder a unelemento del arreglo es necesario indicar la posición oíndice dentro del arreglo. Ejemplo:• arreglo[0] //Primer elemento del arreglo

USO DE CADENAS OTRAS FORMASUSO DE CADENAS OTRAS FORMAS

ARREGLO DE UNA DIMENSION EJEMPLOARREGLO DE UNA DIMENSION EJEMPLOcharchar texto [8] = "texto [8] = "abcdddddabcddddd";"; Pero NO se puede hacer una Pero NO se puede hacer una

asignación de ese tipo en una sentencia:asignación de ese tipo en una sentencia:texto = "texto = "xyzxyz";";/* ERROR *//* ERROR */ En su lugar, hay que emplear En su lugar, hay que emplear

ciertas funciones de biblioteca.ciertas funciones de biblioteca.Tres formas equivalentes de inicializar una cadena:Tres formas equivalentes de inicializar una cadena:

charchar hola [5] = { 'h', 'o', 'l', 'a', 0 }; // TIENE 5 ELEMETOShola [5] = { 'h', 'o', 'l', 'a', 0 }; // TIENE 5 ELEMETOScharchar hola [5] = “ hola ” ;hola [5] = “ hola ” ;

CharChar utputp [30] = “Universidad Tecnológica de Panamá“ ;[30] = “Universidad Tecnológica de Panamá“ ;mainmain()(){{

charchar hola [5] ; // tiene 5 elementos ejemplo if24hola [5] ; // tiene 5 elementos ejemplo if24hola[0] = ‘h’ ;hola[0] = ‘h’ ;hola[1] = ‘o’ ;hola[1] = ‘o’ ;hola[2] = ‘l’ ;hola[2] = ‘l’ ;hola[3] = ‘a’ ;hola[3] = ‘a’ ;hola[4] = 0 ;hola[4] = 0 ;

}}

#include <stdio.h>#include <string.h>#include<math.h>#include<graphics.h>// producto a x b dos matrices // E Batista programa axbvoid MultiplyAB() {int i ;int j ;int k ;// 1 2 3 --- filasint aMatrix[3][2] = {{1, 1}, {2, 2}, {1, 1}};// 2 2 2 --- columnasint bMatrix[2][3] = {{1, 1, 1}, {1, 1, 2}};int product[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};for ( i = 0; i < 3; i++) {for ( j = 0; j < 3; j++) {

for ( k = 0; k < 2; k++) {product[i][j] += aMatrix[i][k] * bMatrix[k][j];

}printf (" %d", product[i][j] );

}printf (" \n");

}}

void main() {MultiplyAB();getchar( );

}

#include <stdio.h>#include <string.h>#include<math.h>// producto AxB dos matrices, A+B, A-B // E Batistavoid MultiplyAB() {int i, j, k;// 1 2 3 --- filasint aMatrix[3][3] = {{1,1,1 }, {1,1,1 }, {1,1,1 }};int bMatrix[3][3] = {{1,1,1 }, {1,1,1 }, {1,1,1 }};int product[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};int restaAB[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; // resta o suma: iniciarizamos en cero

int sumaAB[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};printf (" Universidad Tecnologica de Panama \n");printf (" Producto matriz A*B\n");for ( i = 0; i < 3; i= i+1) {for ( j = 0; j < 3; j= j+1) {

for ( k = 0; k < 3; k= k+1) {product[i][j] += aMatrix [i] [k] * bMatrix [k] [j];

}printf (" %d", product [i] [j] );

}printf (" \n");

}// A continuaci¢n se realiza la suma matricialprintf (" suma de matriz A + B\n" );for (i =0 ; i <3 ; i=i+1){for (j =0 ; j <3 ; j=j+1){restaAB[i][j] = aMatrix [i ][j] – bMatrix [i] [j];sumaAB[i][j] = aMatrix [i] [j] + bMatrix [i] [j];printf (" %d", sumaAB [i] [j] );}printf (" \n"); }

// A continuaci¢n se imprime restaprintf (" Resta de matriz A - B\n" );for (i =0 ; i <3 ; i= i+1) {for (j =0 ; j <3 ; j= j+1) {

restaAB[i][j] =0;sumaAB[i][j] = 0;product[i][j] = 0;printf (" %d", restaAB [i] [j] );

}printf (" \n");

}}

//-------------void main() {

MultiplyAB();getchar( );}

12/18/2013 18Programación II Universidad Tegnológica de Panamá Prof E Batista

#include <stdio.h>#include <string.h>#include<math.h>// uso ampliado de cadenas. y su formato para impresion// varias forma de definir. PROGRAMA IF24char hola [5] = { 'h', 'o', 'l', 'a', 0 };// char hola [5] = "hola ";

char utp [35] = "Universidad Tecnológica de Panamá" ;char estudiante [30] = "Blanca azucar gonzalez" ;char cedula [15] = "1234567890" ;char grupo [15] = "I703 o i702" ;char faculta [30] = "facultad de ing. industrial " ;

main(){char hola [5]; // TIENE 5 ELEMETOShola[0] = 'h';hola[1] = 'o';hola[2] = 'l';hola[3] = 'a';hola[4] = 0;printf ( "El texto Hola .... %s\n", hola );printf ( "texto utp....... %s\n", utp );printf ( "texto cedula.... %s\n", cedula);printf ( "texto grupo..... %s\n", grupo);printf ( "texto estudiante.... %s\n", faculta);system("PAUSE");}

Escritura en disco

� Definir el puntero� Utilizar el fopen� Definir la extensiontipo .txt� Utilizar el comando fprint (con formatos)� FORMATO:�archivo = fopen("C:\\DATO.TXT","w+");

12/18/2013 20Programación II Universidad Tegnológica de Panamá Prof E Batista

COMO ESCRIBIR EN DISCO Y COMO LEER DATOSEN FORMATOS DE TEXTOS.

fgets

• (texto tipo chart)

• Tiene L/R longitud registro

Puntero• Tiene un fichero * Puntero

fclose

• Y se utiliza con fclose, para cerrar el archivo

12/18/2013 21Programación II Universidad Tegnológica de Panamá Prof E Batista

VER EJEMPLO: LECTURA DE TEXTOS

// formato fgets(texto, 80, fichero);#include<stdio.h>// file * , donde * es un puntero para acceder al archivo de texto – ruta del archivoFILE * fichero; // debe estar en mayúscula y un espaciochar texto[80];main(){// fichero = fopen("c:\\autoexec.txt", "rt"); // Historicos de fact Fiscal - rutafichero = fopen("c:\\BLANCA.txt", "rt"); // TEXTO DE PRUEBAif (fichero == NULL){printf("No existe el fichero ? o file ubicado disco C: raiz \n");exit(1);

}while (! feof(fichero)) // repetimos la lectura hasta encontrar fin de archivo{fgets(texto, 80, fichero);printf("%s", texto);}

fclose(fichero);} 12/18/2013 22

Programación II Universidad Tegnológica de Panamá Prof E Batista

Ejemplo como escribir en disco: prog texto3.c#include <stdio.h>#include <stdlib.h>#define pi 3.14int main (void){FILE *archivo; // la palabra File en mayusculaarchivo = fopen("C:\\DATO3.TXT","w+"); // ruta del archivoprintf("UNIVERSIDAD TECNOLOGIA DE PANAMA\n");fprintf(archivo, "UNIVERSIDAD TECNOLOGICA DE PANAMA\n");printf("ESTUDIANTE Juan Perez de prueba\n");fprintf(archivo, "ESTUDIANTE Juan Perez de prueba\n");printf("CEDULA 8-99999-77\n");fprintf(archivo, "CEDULA 8-99999-77");printf("prueba de impresion en disco C: \n");fprintf(archivo,"prueba de impresion en disco C:\n");

printf("FIN DEL PROGRAMA texto3 \n");fprintf(archivo,"FIN DEL PROGRAMA texto3 \n");fclose(archivo);getch();} 12/18/2013 23

Programación II Universidad Tegnológica de Panamá Prof E Batista

Escribir en disco programa texto4#include<stdio.h>#include<conio.h>#include<math.h>#include <string.h>

int main(void){FILE *archivo;int i = 100;char c = 'C';float f = 1.234;

archivo = fopen("C:\\DATO.TXT","w+");fprintf(archivo,"AGREGAR VARIABLES\n");fprintf(archivo, "%d %c %f", i, c, f);

fprintf(archivo, "\nCREAR TEXTO");fclose(archivo);return 0;}

12/18/2013 24Programación II Universidad Tegnológica de Panamá Prof E Batista

Usos de estructuras y unionesUsos de estructuras y unionesTipos estructuradosSe pueden definir tipos compuestos de varios elementos o camposde tipos más simples.La sintaxis es:struct nombre_del_tipo { campo1; campo2;…..campoN;}; Las variables de ese tipo se declaran así:

struct nombre_de_tipo variable;y para acceder a un campo de una variable estructurada,se utiliza esta sintaxis:variable.campo Ejemplo: if16.exe DATOS ESTRUCTURADOS

#include<stdio.h> // lectura por pantalla : (teclado)main(){int matriz[4][3], i, j;printf("\n Visualización de la matriz:");printf("\n===========================\n");printf("\n entre los valor i,j matriz =\n");for(i=0;i<4;i=i+1)

{for(j=0;j<3;j=j+1)

{// comentario leemos la matriz (i+j)

scanf("%d", &matriz[i][j]);}

printf("\n");}printf("\n Fin del programa. matriz 4x3..\n");

12/18/2013 26Programación II Universidad Tegnológica de Panamá Prof E Batista

Lectura de un arreglo de dos dimensiones x pantalla con scanf (matriz)

12/18/2013Programación II Universidad Tegnológica de Panamá Prof E Batista 27

archivo = fopen("C:\\DATO.TXT","w+");

12/18/2013Programación II Universidad Tegnológica de Panamá Prof E Batista 28

Que el estudiante aplique los conceptos de manipulación de arreglos en dos dimensiones de la forma AB[i][j], cargar los datos en forma fija, o en forma de entrada de datos por medio del scanf, la utilización del :

for ( i = 0; i < n; i=i+1).Confeccione un programa en lenguaje C,

que pueda sumar los arreglos de A+ B, Restar A-B, y realizar el producto de A* B, y al final imprimir los datos en pantalla,y por ultimo, generar los datos en disco c:

archivo = fopen("C:\\DATO.TXT","w+");

12/18/2013Programación II Universidad Tegnológica de Panamá Prof E Batista 29

Continuación del laboratorio no. 1Utilizar las rutinas:#include<math.h> // producto a x b dos matrices, programa: AXB

void MultiplyAB() {int i , j , k ;int aMatrix[3][2] = {{1, 1}, {1, 1}, {1, 1}};int bMatrix[2][3] = {{1, 1, 1}, {1, 1, 2}};int product[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};// creamos el archivo para texto// FILE *archivo ;// archivo = fopen("C:\\arreglo5.TXT","w+");printf("UNIVERSIDAD TECNOLOGIA DE PANAMA\n");// 1 2 3 --- filas// 2 2 2 --- columnasfor ( i = 0; i < 3; i++) {for ( j = 0; j < 3; j++) {

for ( k = 0; k < 2; k++) {product[i][j] += aMatrix[i][k] * bMatrix[k][j];

}printf (" %d", product[i][j] );

}printf (" \n");

}}

Void main ( ) {MultiplyAB( );getchar( ); }

12/18/2013Programación II Universidad Tegnológica de Panamá Prof E Batista 30

Continuación del laboratorio no. 1

#include <stdio.h>#include <string.h> // producto AxB dos matrices, A+B, A-Bvoid MultiplyAB() {int i ,j ,k ;// 1 2 3 --- filas// 2 2 2 --- columnasint aMatrix[3][3] = {{1,1,1 }, {1,1,1 }, {1,1,1 }};int bMatrix[3][3] = {{1,1,1 }, {1,1,1 }, {1,1,1 }};int product[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};// resta o suma: iniciarizamos en ceroint restaAB[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};int sumaAB[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};// -------------------------------------printf (" Universidad Tecnologica de Panama\n");printf (" Producto matriz A*B\n");

for ( i = 0; i < 3; i=i+1) {for ( j = 0; j < 3; j=j+1) {

for ( k = 0; k < 3; k=k+1) {product[i][j] += aMatrix[i][k] * bMatrix[k][j];

}printf (" %d", product[i][j] );

}printf (" \n") ; }

// A continuacion se realiza la suma matricialprintf (" suma de matriz A + B\n" );for (i =0 ; i <3 ; i=i+1) {for (j =0 ; j <3 ; j=j+1) {

restaAB[i][j] = aMatrix[i][j] - bMatrix[i][j];sumaAB[i][j] = aMatrix[i][j] + bMatrix[i][j];

printf (" %d", sumaAB[i][j] );}

printf (" \n");}

// A continuacion se imprime la resta de matrizprintf (" Resta de matriz A - B\n" );for (i =0 ; i <3 ; i=i+1) {for (j =0 ; j <3 ; j=j+1) {

printf (" %d", restaAB[i][j] );}printf (" \n");}}

//-------------void main ( ) {

MultiplyAB();getchar( ); // esperamos el intro

}

12/18/2013Programación II Universidad Tegnológica de Panamá Prof E Batista 31

Continuación del laboratorio no. 1

Presentación del informe o taller de laboratorio:

� Primera hora de presentación, Universidad Tecnológica de Panamá, Nombre del estudiante, cedula, numero del grupo y código de materia, fecha completa, nombre del curso, nombre del profesor, año académico.� Introducción: explicación y objetivo del laboratorio.� Materiales utilizados, y equipos� Descripción de variables utilizadas en el programa.� Copia del código fuente en lenguaje C, con sus respectivos comentarios� Copia de las imágenes de corrida del programa, pantallas de entradas de datos, salidas de pantallas de datos, y copia de salida del texto generado en disco en formato txt, utilizando la instrucción file open para uso de disco.� Glosario de 10 palabras relacionadas con arrays, vectores, del capitulo 1� Conclusión del proyecto de laboratorio.

12/18/2013Programación II Universidad Tegnológica de Panamá Prof E Batista 32