Beruflich Dokumente
Kultur Dokumente
SEMINARIO DE TESIS I
Prof. Rubn Medina PhD.
Texto: Como Programar En C,c++ Y Java. Autores: Harvey M. Deitel Y Paul J. Deitel.4 Edicin
CAPTULOS A DESARROLLAR MEDIANTE EXPOSICIONES 4. Control de programas en C 5. Funciones en C 6. Arreglos en C 7. Apuntadores en C 8. Caracteres y cadenas en C 9. Entrada/Salida con formato en C 10. Estructuras, uniones, manipulaciones de bits y enumeraciones en C 11. Procesamiento de archivos en C 12. Estructuras de datos en C 13. El preprocesador de C 14. Otros temas de C 15. C++ como un Mejor C 16. Clases y abstraccin de datos en C++ 17. Clases en C++: Parte II 18. Sobrecarga de operadores en C++ 19. Herencia en C++ 20. Funciones virtuales y polimorfismo en C++ 21. Entrada / salida de flujo en C++ 22. Plantillas en C++
Texto: Como Programar En C,c++ Y Java. Autores: Harvey M. Deitel Y Paul J. Deitel.4 Edicin
4. Control de programas en C 5. Funciones en C 6. Arreglos en C 7. Apuntadores en C 8. Caracteres y cadenas en C 9. Entrada/Salida con formato en C 10. Estructuras y uniones en C 11. Procesamiento de archivos en C 12. Estructuras de datos en C 13. El preprocesador de C 14. Otros temas de C
Primera exposicin
15. C++ como un Mejor C C 16. Clases y abstraccin de datos en C++ abstracci 17. Clases en C++: Parte II 18. Sobrecarga de operadores en C++ 19. Herencia en C++ 20. Funciones virtuales y polimorfismo en C++ 21. Entrada / salida de flujo en C++ 22. Plantillas en C++
REPETICIN
De tipo:
SELECCIN
De tipo:
INTERRUPCIN
De tipo:
for
while do while
if ifelse
switch
break
continue
Estas palabras reservadas pueden realizar acciones de CONTROL en programas donde intervienen:
FUNCIONES
ARREGLOS
Junto a las FUNCIONES permiten crear programas verstiles y flexibles CARACTERES y CADENAS
APUNTADORES
Estos elementos posibilitan la creacin y manipulacin de:
UNIONES
Estructuras y ARCHIVOS
y
ENUMERACIONES
REPETICIN
for
Su formato es:
Instruccin for for( inicializacin de contadores ; condiciones ; incrementos ) { conjunto de instrucciones a ejecutar en el bucle }
for
Ejemplo1: Uso de for para obtener la suma de los primeros 50 nmeros naturales pares mediante un ciclo controlado por CONTADOR. #include <stdio.h> int main() { int suma = 0; int numero; for ( numero = 2; numero <= 100; numero += 2 ) { suma += numero; } printf( "La suma es %d\n", suma ); return 0; }
REPETICIN
while
Ejemplo2: Uso de while para obtener el promedio de calificaciones mediante una repeticin controlada por CONTADOR.
#include <stdio.h> int main() { int contador=1,calificacion=0,total=0,promedio=0; while ( contador <= 10 ) { printf( "Introduzca la calificacion: " ); scanf( "%d", &calificacion ); total = total + calificacion; contador = contador + 1; } promedio = total / 10; printf( "El promedio de la clase es %d\n", promedio ); return 0; }
REPETICIN
do while
Ejemplo3: Uso de dowhile para obtener por pantalla los primeros diez nmeros naturales mediante un ciclo controlado por CONTADOR. #include <stdio.h> int contador = 1; int main() { do { printf( "%d\n", contador ); } while ( ++contador <= 10 ); Resultado luego de ejecutar el programa
return 0; }
for
SELECCIN
if
INTERRUPCIN
break Ejemplo4: Ruptura de un ciclo for mediante break precedido de una instruccin if.
#include <stdio.h> int main() { int x; for ( x = 1; x <= 10; x++ ) { if ( x == 5 ) { break; } printf( "%d ", x ); } printf( "\nRompe el ciclo en x == %d\n", x ); return 0; }
Instruccin If else
Su formato es:
REPETICIN
if ( condicin ) { bloque que se ejecuta si se cumple la condicin } else { bloque que se ejecuta si no se cumple la condicin } If - else
while
SELECCIN doble
Ejemplo5: Promedio de calificaciones con repeticin controlada por CENTINELA. #include <stdio.h> int main() { int contador=0,calificacion=0,total=0; float promedio; while ( calificacion != -1 ) { total = total + calificacion; contador = contador + 1; printf( "Introduzca la calificacion o digite -1 para terminar: " ); scanf("%d", &calificacion); } if ( total != 0 ) { promedio = ( float ) total / contador; printf( " El promedio de la clase es: %.2f\n", promedio ); } else { printf( "No se introdujeron calificaciones\n" ); } return 0; }
If - else
SELECCIN doble
#include <stdio.h> int main() { int contador=0,calificacion=0,total=0; float promedio; while ( calificacion != -1 ) { total = total + calificacion; contador = contador + 1; printf( "Introduzca la calificacion, -1 para terminar: " ); scanf("%d", &calificacion); } if ( total != 0 ) { promedio = ( float ) total / contador; printf( " El promedio de la clase es: %.2f\n", promedio ); } else { printf( "No se introdujeron calificaciones\n" ); } return 0; }
while
Ejemplifica el else
#include <stdio.h> int main() { int contador=0,calificacion=0,total=0; float promedio; while ( calificacion != -1 ) { total = total + calificacion; contador = contador + 1; printf( "Introduzca la calificacion, -1 para terminar: " ); scanf("%d", &calificacion); } if ( total != 0 ) { promedio = ( float ) total / contador; printf( " El promedio de la clase es: %.2f\n", promedio ); } else { printf( "No se introdujeron calificaciones\n" ); } return 0; }
SELECCIN doble
Ejemplifica el while
switch
for ( tiro = 1; tiro <= 6000; tiro++ ) { switch ( cara ) { case 1: /* tiro 1 */ ++frecuencia1; break; case 2: /* tiro 2 */ ++frecuencia2; break; case 3: /* tiro 3 */ ++frecuencia3; break; case 4: /* tiro 4 */ ++frecuencia4; break; case 5: /* tiro 5 */ ++frecuencia5; break; case 6: /* tiro 6 */ ++frecuencia6; }
}
cara = 1 + rand() % 6;
printf( "%s%13s\n", "Cara", "Frecuencia" ); printf( " 1%13d 2%13d 3%13d 4%13d 5%13d 6%13d\n ", frecuencia1, frecuencia2 , frecuencia3, frecuencia4, frecuencia5, frecuencia6 ); return 0;
}
Texto: Como Programar En C,c++ Y Java. Autores: Harvey M. Deitel Y Paul J. Deitel.4 Edicin
REPETICIN
for
SELECCIN
if
INTERRUPCIN
continue Ejemplo7: Interrupcin de un ciclo for mediante continue precedido de if. #include <stdio.h> int main() Resultado luego de ejecutar el programa { int x; for ( x = 1; x <= 10; x++ ) { if ( x == 5 ) { continue; } printf( "%d ", x ); } printf( "\nUtiliza continue para ignorar la impresion del valor 5\n" ); return 0; }
Texto: Como Programar En C,c++ Y Java. Autores: Harvey M. Deitel Y Paul J. Deitel.4 Edicin
Ejemplo8: for anidado #include <stdio.h> int main() { int i, j; for( i=0; i<6; i++ ) { for( j=0; j<i; j++ ) printf( "*" ); printf( "\n" ); } return 0; }
Definicin de una funcin tipo_de_variable nombre_de_la_funcion( argumentos );//prototpo prototipo { cuerpo de la funcin; return Valor; }
Ejemplo9: Creacin y llamado de una funcin por valor. #include <stdio.h> int cuadrado( int y ); int main() { int x; for ( x = 1; x <= 10; x++ ) { printf( "%d ", cuadrado( x ) ); } printf( "\n" ); return 0; } int cuadrado( int y ) { return y * y; }
float Tasa(float monto,float Cap, float n); int main() { printf("La tasa es: %f\n\n\n\n",Tasa( monto,Cap,n )); printf("Si desea salir, pulse cualquier tecla\n"); return 0; } float Tasa(float monto,float Cap, float n){ printf("Introduzca el monto con dos numeros decimales:"); scanf("%f",&monto); printf("Introduzca el Capital con dos numeros decimales:"); scanf("%f",&Cap); printf("Introduzca el tiempo:"); scanf("%f",&n); N=float(monto/Cap); nf=float(log(N)); c1=float(nf/n); CC=float(exp(c1)); Ta=float(CC-1); return Ta;
}
o parmetro.
#include <stdio.h> funcin int maximo( int x, int y, int z ); por int main() valor { int numero1, numero2, numero3; printf( "Introduzca tres enteros: " ); scanf( "%d%d%d", &numero1, &numero2, &numero3 ); printf( "El maximo es: %d\n", maximo( numero1, numero2, numero3 ) ); return 0; } int maximo( int x, int y, int z ) { int max = x; Resultado luego de ejecutar el programa if ( y > max ) { max = y; } if ( z > max ) { max = z; } return max; }
#include <stdio.h> long factorial( long numero ); /* prototipo de la funcin */ int main() { int i; /* contador */ for ( i = 0; i <= 10; i++ ) { printf( "%2d! = %ld\n", i, factorial( i ) ); } /* fin de for */ Resultado luego de ejecutar el programa return 0; } /* definicin recursiva de la funcin factorial */ long factorial( long numero ) { /* caso base */ if ( numero <= 1 ) { return 1; } /* fin de if */ else { /* paso recursivo */ return ( numero * factorial( numero - 1 ) ); } /* fin de else */ }
Ejemplo13: Arreglos y llamado de una funcin por Valor. Arreglo: conjunto de variables del mismo tipo y nombre que se diferencian en el ndice.
ARREGLOS
#include <stdio.h> #include <math.h> float Tas,n,Cap,p=0,M=0; int anio=0;
APUNTADORES
a la DIRECCIN de
otras variables y por tanto, mediante el se puede: a.- Almacenar la direccin de la(s) variable(s) a las que apunta b.- Acceder y modificar la informacin de dichas variables c.- Llamar FUNCIONES por REFERENCIA Un Apuntador o PUNTERO se declara de acuerdo al formato: tipo_de_dato *nombre_del_puntero; Ejemplo14: Un
#include <stdio.h> void main() { int num; int *ptrnum=NULL; num = 100; ptrnum = # printf( "Direccion de num = %p, valor de num = %i\n", ptrnum,*ptrnum ); *ptrnum = 75; printf( "Direccion de num = %p, el nuevo valor de num = %i\n", ptrnum,*ptrnum ); }
y Valor.
#include <stdio.h> int suma( int *a, int b ) { int c; c = *a + b; *a = 0; return c; } int main() { int var1, var2, resultado; var1 = 5; var2 = 8; resultado = suma(&var1, var2); printf( "La suma es: %i y a vale: %i\n", resultado , var1 ); }
Ejemplo17: Sntesis de conceptos expuestos y algunas funciones especiales #include <stdio.h> #include <math.h> #define CE 0.000001 int k,anio=0; char salir,S; float p1,p=0,q=0,r=0,s=0,u=0,R=0,C=0,t=0,M=0,inicial=0,f=0,g=0,E[100000]={0},D[100000]={0}; float i[100000]={0},Arreglo[100000]={0}, N,nf,dt,df,d,n,Tas,renta,capital,Cap; float *ptrrenta=NULL,*ptrTas=NULL, *ptrn=NULL;
float Renta( float Cap,float Tas,float n ); float Capital( float *ptrrenta,float *ptrTas,float *ptrn ); float Tiempo(float renta,float Cap, float Tas); float Tasa(float renta,float Cap, float n);
1/6
int main() { repita: while (p!=-1){ printf("\t\t\tDIGITE LA ALTERNATIVA DE SU PREFERENCIA:\n\n\n"); printf("PARA SALIR: pulse -1\n\n\t PARA CALCULAR LA RENTA: pulse 1\n\n\t\t PARA CALCULAR CAPITAL: pulse 2\n\n\t\t\t PARA CALCULAR TIEMPO: pulse 3\n\n\t\t\t\t PARA CALCULAR TASA de INTERES: pulse 4\n\n"); Resultado luego de ejecutar el programa scanf("%f",&p);
2/6
if (p==1){q=p; printf("LA renta acumulada es: %f\n\n\n\n",Renta( Cap,Tas,n )); } if (p==2){ r=p; printf( "El capital invertido fue: %f\n\n\n\n ", Capital( &renta,&Tas,&n )); }
if (p==3){ s=p; printf( "El tiempo de la inversion es: %f\n\n\n\n ", Tiempo( renta,Cap,Tas)); }
if (p==4){ u=p; printf( "La tasa de interes fue: %f\n\n\n\n if (q==1 && r==2 && s==3 && u==4){
printf("Quiere salir del programa?\n\a Si: pulse S\n NO: pulse cualquier otro caracter\n"); salir=getchar(); if (salir==83){ goto fin; } else{ goto repita; } } goto repita; } fin: printf("Si esta seguro que desea salir, pulse -1\n"); scanf("%f",&p1); return 0; }
Ejemplo17: Sntesis de conceptos expuestos y algunas funciones especiales float Renta( float Cap,float Tas,float n ) { printf("Introduzca el Capital con dos numeros decimales:"); scanf("%f",&Cap); printf("Introduzca la tasa expresada en decimal:"); scanf("%f",&Tas); printf("Introduzca el periodo de tiempo:"); scanf("%f",&n); printf("%4s%12s\n"," Periodo","RENTA"); for(anio=1;anio<=n;anio++) { R=float(Cap*Tas/(1-pow(1+Tas,-anio))); Arreglo[anio]=R; if (anio==(12)){ continue; } printf("%4d% 15.2f\n",anio,Arreglo[anio]); } return R;
float Capital( float *ptrrenta,float *ptrTas,float *ptrn ){ printf("Introduzca la renta con dos numeros decimales:"); scanf("%f",&renta); printf("Introduzca la tasa expresada en decimal:"); scanf("%f",&Tas); printf("Introduzca el periodo de tiempo:"); scanf("%f",&n);
d=float((1-pow(1+*ptrTas,-*ptrn))/(Tas)); C=float(*ptrrenta*d);
return C; } 4/6
float Tiempo(float renta,float Cap, float Tas){ printf("Introduzca la renta con dos numeros decimales:"); scanf("%f",&renta); printf("Introduzca el capital con dos numeros decimales:"); scanf("%f",&Cap); printf("Introduzca la tasa de interes en decimal:"); scanf("%f",&Tas);
float Tasa(float renta,float Cap, float n){ printf("Introduzca la renta con dos numeros decimales:"); scanf("%f",&renta); printf("Introduzca el Capital con dos numeros decimales:");scanf("%f",&Cap); printf("Introduzca el tiempo:");scanf("%f",&n); printf("%4s %10s %10s\n","Periodo"," ERRORCALCULADO"," TASA");
inicial=float(1.5*(pow(((renta*n)/(Cap)),1/(n+1))-1));f=inicial; for(k=1;k<=100;k++){ E[k]=float(1+pow((1+f),(-n))-float(Cap*f/renta)); D[k]=float(-n*pow((1+f),(-n-1))-float(Cap/renta)); i[k]=float(f-float(E[k]/D[k])); g=float(fabs(f-i[k])); f=i[k]; printf("%4d %1.6f %1.6f\n",k,g,f); if (g<=CE){ break; } } M=float(Cap*pow(1+f,n)); printf("EL MONTO ASOCIADO A ESTA ANUALIDAD ES %.2f:\n",M); return f; }
inicial=float(1.5*(pow(((renta*n)/(Cap)),1/(n+1))-1)); f=inicial; for(k=1;k<=100;k++){ E[k]=float(1-pow((1+f),(-n))float(Cap*f/renta)); D[k]=float(n*pow((1+f),(-n-1))float(Cap/renta)); i[k]=float(f-float(E[k]/D[k])); g=float(fabs(f-i[k])); f=i[k]; printf("%4d %1.6f %1.6f\n",k,g,f); if (g<=CE){ break; } }
6.2/6
Ejemplo17: Sntesis de conceptos expuestos y algunas funciones especiales Resultado luego de ejecutar el programa
Ejemplo17: Sntesis de conceptos expuestos y algunas funciones especiales Resultado luego de pulsar 4
CARACTERES y CADENAS
la funcin a.-
#include <stdio.h> int main() { char nombre[30]; printf( "Introduzca su nombre (30 letras mximo): " ); scanf( "%s", nombre ); printf( "\nEl nombre que ha escrito es: %s\n", nombre ); }
CARACTERES y CADENAS
Ejemplo19: Uso de la funcin strcpy Esta funcin copia el contenido de la cadena2 en la cadena1. Su formato es: strcpy( cadena1, cadena2); #include <stdio.h> #include <string.h> int main() { char contador_imagenes[ ] = "Esta es la Imagen numero "; char destino[40]; strcpy( destino, contador_imagenes ); printf( "Valor final: %s\n", destino ); } Resultado al ejecutar el programa
CARACTERES y CADENAS
Ejemplo20: Uso de la funcin strcat. Esta funcin copia el contenido de la cadena2 al final de la cadena1. Su formato es: char strcat(char cadena1, const char cadena2); #include <stdio.h> #include <string.h> int main() { char nombre_completo[50]; char nombre[ ]="Miguel"; char apellido[ ]="Vera"; strcpy( nombre_completo, nombre ); strcat( nombre_completo, " " ); strcat( nombre_completo, apellido ); Resultado al ejecutar el programa printf( "El nombre completo es: %s.\n", nombre_completo ); }
CARACTERES y CADENAS
para cadenas.
int main() { char cadena[30]; printf( "Escribe una palabra: " ); fflush( stdout ); scanf( "%s", cadena ); printf( "He guardado: \"%s\" \n", cadena ); }
Estructuras: Son conjuntos de variables relacionadas bajo un nombre. Sus variables pueden ser de distintos tipos de datos La Estructuras comparten el mismo formato :
Estructuras
UNIONES
ENUMERACIONES
Estructuras
#include <stdio.h> struct estructura_amigo { char nombre[50]; char apellido[50]; char telefono[12]; char edad; }; struct estructura_amigo amigo; int main() { printf( "Escribe el nombre de su amigo: " ); fflush( stdout ); scanf( "%s", &amigo.nombre ); printf( "Escribe el apellido de su amigo: " ); fflush( stdout ); scanf( "%s", &amigo.apellido ); printf( "Escribe el numero de telefono de su amigo: " ); fflush( stdout ); scanf( "%s", &amigo.telefono ); printf( "Mi amigo %s %s tiene el numero : %s.\n", amigo.nombre, amigo.apellido, amigo.telefono ); }
Estructuras #include <stdio.h> #define ELEMENTOS 3 struct estructura_amigo { char nombre[30]; char apellido[40]; char telefono[10]; int edad; }; struct estructura_amigo amigo[ELEMENTOS]; int main() Resultado al ejecutar el programa { int num_amigo; for( num_amigo=0; num_amigo<ELEMENTOS; num_amigo++ ) { printf( "\nDatos del amigo numero %i:\n", num_amigo+1 ); printf( "Nombre: " ); fflush( stdout ); gets(amigo[num_amigo].nombre); printf( "Apellido: " ); fflush( stdout ); gets(amigo[num_amigo].apellido); printf( "Telefono: " ); fflush( stdout ); gets(amigo[num_amigo].telefono); printf( "Edad: " ); fflush( stdout ); scanf( "%i", &amigo[num_amigo].edad ); while(getchar()!='\n'); } for( num_amigo=0; num_amigo<ELEMENTOS; num_amigo++ ) { printf( "El amigo %s ", amigo[num_amigo].nombre ); printf( "%s tiene ", amigo[num_amigo].apellido ); printf( "%i an_os ", amigo[num_amigo].edad ); printf( "y su telefono es el %s.\n" , amigo[num_amigo].telefono ); } }
Estructuras
UNIONES
Ejemplo24: Uso bsico de una UNION. Resultado al ejecutar el programa #include <stdio.h> union _persona { char nombre[10]; char inicial; } pers; int main() { printf("Escribe tu nombre: "); gets(pers.nombre); printf("\nTu nombre es: %s\n", pers.nombre); printf("Tu inicial es: %c\n", pers.inicial); /* Cambiamos la inicial */ pers.inicial='V'; printf("\nAhora tu nombre es: %s\n", pers.nombre); printf("y tu inicial es: %c\n", pers.inicial); }
Estructuras
ENUMERACIONES
#include <stdio.h> enum { primero, segundo, tercero, cuarto, quinto } posicion; int main() { posicion=segundo; printf("posicion = %i\n", posicion); }
#include <stdio.h> El ejemplo de la derecha: int main() Abre un archivo, lo lee, { FILE *fichero; muestra el contenido en pantalla char letra,s; y lo cierra. fichero = fopen("origen.txt","r"); if (fichero==NULL) Formato de las instrucciones: { printf( "No se puede abrir el fichero.\n" ); goto fin; FILE *fopen(nombre_fichero, modo); } printf( "Contenido del fichero:\n" ); fgets(buffer, int longitud_max, FILE *fichero); letra=getc(fichero); while (feof(fichero)==0) { printf( "%c",letra ); letra=fgetc(fichero); } if (fclose(fichero)!=0) printf("salir"); scanf("%c",s); printf( "Problemas al cerrar el fichero\n" ); fin: return 0; }
ARCHIVOS
Manejo de
#include <stdio.h> #include <io.h> #include <stdlib.h> #include <math.h> #include <direct.h> #include <string.h> main() { unsigned char *ima,*ima1; char archivo[50],imagen[50]; int i,j,k,l,m,n,p,id,idd; FILE *fp; printf("Introduzca el nombre de la imagen: "); scanf("%s", imagen); if((fp=fopen(imagen,"rb"))!=NULL) { printf("Introduzca el tamao de la imagen: "); scanf("%d", &id); printf("Introduzca el tamao de la subimagen: "); scanf("%d", &idd); ima = new unsigned char[id*id]; ima1 = new unsigned char[idd*idd]; fread(ima,sizeof(unsigned char),id*id,fp); fclose(fp);
Manejo de
_itoa(p,M,10); strcpy(archivo,"image"); strcat(archivo,M); strcat(archivo,".raw"); fopen(archivo,"wb"); fwrite(ima1,sizeof(unsigned char),idd*idd,fp); fclose(fp); p++; } printf("Imagen %d\n",p); } delete ima; delete ima1; } else printf("No se puede encontrar el archivo %s.\n",imagen); return 0; }