Você está na página 1de 50

UNIVERSIDAD POLITCNICA DE CARTAGENA rea de Lenguajes y Sistemas Informticos

FUNDAMENTOS de INFORMTICA PRCTICAS

Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro J. Navarro Lorente

PRCTICAS PARA LA ASIGNATURA

FUNDAMENTOS DE INFORMTICA
PRCTICAS 1 y 2: El entorno de Turbo C++. Empezando a programar en C.

INGENIEROS INDUSTRIALES UNIVERSIDAD POLITCNICA DE CARTAGENA

Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente

Prcticas n 1 y 2: El entorno de Turbo C++. Empezando a programar en C. 2 de 8

Prcticas n 1 y 2: El entorno de Turbo C++. Empezando a programar en C. 3 de 8 PRCTICA PRIMERA


1. Practicando el entorno de Turbo C++ 4.5., para ello introduciremos este primer programa: #include <stdio.h> // esto es un comentario /* esto tambin es un comentario programa realizado por: Juan Prez Toms fecha: 16/10/00, aqu termina el segundo comentario*/ void main(void) { printf("Hola mundo"); }

Ventana de Cdigo

Barra de mens

Prcticas n 1 y 2: El entorno de Turbo C++. Empezando a programar en C. 4 de 8


2. Practicar con las opciones de salvar del men File y con sus respectivos botones de la barra de mens. El programa se llamar primero.c.

Ventana de mensajes 3. Compilar el programa, corrigiendo errores si fuese necesario. 4. Ejecutar el programa.

5. Ver cuntos archivos existen con el nombre del programa y cambiando de extensin, despus de todos estos procesos: primero.bak : primero.cpp : primero.obj : primero.exe :

Prcticas n 1 y 2: El entorno de Turbo C++. Empezando a programar en C. 5 de 8


6. Realizar los mismos pasos para los siguientes programas 6.1 #include <stdio.h> int main (void) { int iNum1, iNum2; printf("\n Introducir el primer valor: "); scanf("%d", &iNum1); printf("\n Introducir el segundo valor: "); scanf("%d", &iNum2); printf("\n la suma es: %d",iNum1 + iNum2) printf("\n la resta es: %d",iNum1 - iNum2); printf("\n la multiplicacin es: %d",iNum1 * iNum2); printf("\n la divisin es: %d",iNum1 / iNum2); return 0; } 6.2 #include <stdio> int main(void) { char cNombre[35]; printf("Introducir nombre: "); scanf("%s",cNombre); printf("Buenos dias %s",cNombre); return 0; } 7. Explicar al alumno los pasos principales para la depuracin de programas. Correcta interpretacin de los mensajes de Error y de los mensajes de Advertencia. Ejecucin del programa paso a paso. Uso del Evaluador de expresiones. Puntos de ruptura. Usar todos estos conceptos implementados hasta el momento. en los diferentes programas

Prcticas n 1 y 2: El entorno de Turbo C++. Empezando a programar en C. 6 de 8 PRCTICA SEGUNDA


1. C++. Uso de la entrada/salida bsica mediante flujos. #include <stdio.h> int main (void) { printf(ESTO ES UN EJEMPLO DE SALIDA POR PANTALLA); return 0; // el programa ha acabado correctamente } // fin de la funcion main() 2. Uso de secuencias de escape bsicas. \ \n \t \r \a Carcter de escape Salto de lnea Tabulacin horizontal retorno de carro (cursor a principio de lne actual) hace sonar la campana del sistema

#include <stdio.h> int main (void) { printf(EJEMPLO DE SALIDA, sin SALTO DE LINEA \n); printf(EJEMPLO DE SALIDA \n, con SALTO DE LINEA); return 0; // el programa ha acabado correctamente } // fin de la funcion main() Otro ejemplo a implementar: #include <stdio.h> int main (void) { printf(ESTO ES UN EJEMPLO DE SALIDA POR PANTALLA); printf(\r REESCRIBIMOS ENCIMA); return 0; // el programa ha acabado correctamente } // fin de la funcion main() 3. El siguiente programa trabaja con variables enteras. Obsrvese cmo la E/S en C++ es a prueba de tipos.

Prcticas n 1 y 2: El entorno de Turbo C++. Empezando a programar en C. 7 de 8


// E/S en C #include <stdio.h> void main(void) { int i1, i2, iRes; printf( \n scanf(%d, printf( \n scanf(%d, iRes = i1 / Introduzca el dividendo ... ); i1); Introduzca los dos datos a dividir); i2); i2;

printf("\n El resultado de dividir ); printf(%d entre %d es %d ",i1, i2, iRes); } 4. Realizar las modificaciones oportunas en los programas del ejercicio 3 para poder trabajar con nmeros reales. 5. Escribir un programa que logre que: a) Indique que el programa calcular el producto de tres enteros. b) Declare tres datos como variables de tipo short. c) Pida al usuario que introduzca los tres nmeros. d) Calcule el producto y asigne el resultado a una variable long. e) Muestre por pantalla el resultado. 6. Usar el depurador para verificar el contenido de las variables del ejercicio 5 durante una ejecucin paso a paso del programa.

Puede ver ms ejercicios planteados y resueltos en el Manual Fundamentos de Informtica. Programacin en Lenguaje C.

Prcticas n 1 y 2: El entorno de Turbo C++. Empezando a programar en C. 8 de 8

PRCTICAS PARA LA ASIGNATURA

FUNDAMENTOS DE INFORMTICA
PRCTICA 3: Tipos de datos y expresiones en C.

INGENIEROS INDUSTRIALES UNIVERSIDAD POLITCNICA DE CARTAGENA

Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente

Prctica n 3: Tipos de datos y expresiones en C. 2 de 6

Prctica n 3: Tipos de datos y expresiones en C. 3 de 6

PRCTICA TERCERA
1. El siguiente programa calcula y visualiza el rea de un tringulo. Para ello solicita por teclado la base y la altura. Trabaja con variables de distinto tipo. #include <stdio.h> void main (void) { int iAltura,iBase,iArea; float fArear,fAreai; printf("\n introducir la base de un triangulo: "); scanf(%d, &iBase); printf(\n introducir la altura de un triangulo: "); scanf(%d, &iAltura); iArea=iBase*iAltura/2; fArear=(float)iBase*iAltura/2; fAreai=iBase*iAltura/2; /* resultado entero*/ /* resultado real*/

printf(\n el rea del tringulo es %d, iArea); printf(\n el rea del triangulo es %f, fAreai); printf(\n el rea del triangulo es %f, fArear); } 2. Realizar un programa en lenguaje C para Convertir grados Fahrenheit a Celsius: C=(5/9)*(F-32). Advertencia: recuerde que la operacin entre dos enteros da un resultado que es otro entero del mismo tipo. 3. El siguiente programa trabaja con la situacin de overflow en variables de tipo char. Justifica el resultado que visualiza por pantalla. #include<stdio.h> void main(void) { char a = 127; a++; printf(%hd, a); }

Prctica n 3: Tipos de datos y expresiones en C. 4 de 6

4. Realiza otros programas como el anterior, modificando los tipos de datos (long int , short int, float, double). Recuerde que el rango del tipo de dato int quedar determinado por el compilador. Segn en cul se trabaje, una variable int se comportar como una variable long, y segn dnde, como una variable short. 5. El siguiente programa determina los tamaos en bytes de los diferentes tipos de datos en C. #include <stdio.h> void main (void) { printf(\nTamao de un entero en este compilador: "); printf(%ld bytes.", sizeof(int)); printf( y en bits = %ld", sizeof(int) * 8); printf("\nTamao de un entero corto: "); printf(%ld bytes., sizeof(short int)); printf(\nTamao de un entero largo: ); printf(%ld bytes., sizeof(long int)); printf(\nTamao de un float: ); printf(%ld bytes., sizeof(float)); printf(\nTamao de un double: ); printf(%ld bytes., sizeof(double)); printf(\nTamao de un long double: ); printf(%ld bytes., sizeof(long double); } 6. Ejercicio de expresiones con variables tipo char. #include <iostream.h> void main (void) { char a='X',b='Y'; printf(\n valor caracter de a = %c, a); printf( y en decimal = %d, (int)a); printf(\n valor caracter de b = %c, b);

Prctica n 3: Tipos de datos y expresiones en C. 5 de 6


printf( y en decimal = %d, (int)b); printf(\n valor caracter a + b = %c, (char)(a + b)); printf( y en decimal = %d, (int)(a + b)); printf(\n valor caracter a+b+5 = %c, (char)(a+b+5)); printf( y en decimal = %d, (int)(a + b + 5)); printf(\nvalor caracter a+b+'5'=%c",(char)(a+b+'5')); printf( y en decimal = %d, (int)(a + b + '5')); } 7. Evaluar las expresiones del siguiente programa, indicando cual es la respuesta en cada caso. #include <stdio.h> void main(void) { int x,y,z,m,n; float r; x=5; y=2; z=4; r=0.5; m=1; n=2; printf(\n expresion 1 es = %hd, (x-2>z&&!r==m/n)); printf(\n expresion 2 es = %hd, (r*x>y ||y*r*x<=z)); } 8. Realizar la traza del siguiente programa indicando cuales serian los resultados visualizados por pantalla: #include <stdio.h> void main(void) { const float pi=3.141592; int x,y,z; int expr; float e; e=2.7182; x=1; y=4;

Prctica n 3: Tipos de datos y expresiones en C. 6 de 6


z=10; expr = (x > 3 && (y == 4 || x + y <= z)) printf(\nexpr 1 = %d, expr); expr = (!(2 * x == y / 2 || (pi e ) * z > y ); expr = expr != y / 2 == 2 * x && y < (pi - e) * z; printf(\nexpr 2 = %d, expr); }

Puede ver ms ejercicios planteados y resueltos en el Manual Fundamentos de Informtica. Programacin en Lenguaje C.

PRCTICAS PARA LA ASIGNATURA

FUNDAMENTOS DE INFORMTICA
PRCTICA 4: Estructuras de control condicionales.

INGENIEROS INDUSTRIALES UNIVERSIDAD POLITCNICA DE CARTAGENA

Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente

Prctica n 4: Estructuras de control condicionales. 2 de 6

Prctica n 4: Estructuras de control condicionales. 3 de 6

PRCTICA CUARTA
1. Introducir un entero por teclado, visualizar si es par o impar. 2. Sentencia if: Programa que visualiza el menor de tres nmeros enteros introducidos por teclado . (ref: if1.cpp) /* programa que visualiza el menor de tres numeros enteros introducidos por teclado */ #include <stdio.h> void main(void) { int iNum1,iNum2,iNum3,iMenor; printf(Introducir el primer numero ... ); scanf(%d, &iNum1); printf(Introducir el segundo numero ... ); scanf(%d, &iNum2); printf(Introducir el tercer numero ... ); scanf(%d, &iNum3); if(iNum1 < iNum2) iMenor = iNum1; else iMenor = iNum2; if (iNum3 < iMenor) iMenor = iNum3; printf(\nEl menor es... %d, iMenor); } 3. Introducir tres nmeros enteros por teclado, visualizar iguales si la suma de cualquier pareja es igual al tercero (eje. a + b == c) y distintos en caso de lo contrario. (utilizar el menor nmero de sentencias if). Solucin con tres sentencias if: #include<stdio.h> void main(void) { int iNum1,iNum2,iNum3; printf(Introducir el primer numero ... ); scanf(%d, &iNum1); printf(Introducir el segundo numero ... );

Prctica n 4: Estructuras de control condicionales. 4 de 6


scanf(%d, &iNum2); printf(Introducir el tercer numero ... ); scanf(%d, &iNum3); if (iNum1 + iNum2 == iNum3) printf(\n iguales); else if (iNum1 + iNum3 == iNum2) printf(\n iguales); else if (iNum3 + iNum2 == iNum1) printf(\niguales); else printf(\n distintos); } Solucin con una sentencias if: #include<stdio.h> void main(void) { int i1,i2,i3; printf(Introducir el primer numero ... ); scanf(%d, &i1); printf(Introducir el segundo numero ... ); scanf(%d, &i2); printf(Introducir el tercer numero ... ); scanf(%d, &i3); if(i1 + i2 == i3 || i1 + i3 == i2 || i3 + i2 == i1) printf(\n iguales); else printf(\n distintos); } 4. Introducir cuatro nmeros, visualizarlos de menor a mayor. Utilizar variables auxiliares y el menor nmero de sentencias if. 5. Sentencias anidadas: Introducir una nota numrica por teclado, y visualizar la calificacin alfabtica correspondiente. // introducir una nota numerica, visulizarla alfabetica #include <stdio.h> void main(void) { int iNota; printf(Introducir nota : ); scanf(%d, &iNota); if(iNota> = 0 else if(iNota else if(iNota else if(iNota else if(iNota && >= >= == == iNota < 5) printf(Suspenso); 5 && iNota < 7) printf(aprobado); 7 && iNota <9) printf(notable); 9) printf(sobresaliente); 10) printf(M.Honor);

Prctica n 4: Estructuras de control condicionales. 5 de 6


else printf(error en nota, fuera de rango); } 6. Introducir por teclado un numero real que indique una cantidad en euros y desglosarla en monedas de: 100, 50, 20, 10, 5, 0.50, 0.20, 0.05 y 0.01 euros. No visualizar en el caso de que no se desglose en esa moneda. 7. Sentencia switch: El siguiente programa realiza la operacin introducida (+,-,*,/,%), con dos nmeros enteros introducidos por teclado. #include <stdio.h> void main (void) { int iNum1,iNum2,iResultado; char cOpe; printf((+, -, *, /, %), operacion a realizar?: ); scanf(%c, &cOpe); printf(introducir el primero operando: ); scanf(%d, &iNum1); printf(introducir el segundo operando: ); scanf(%d, &iNum2); printf(\n%d %c %d = , iNum1, cOpe, iNum2); switch (cOpe) { case '+': iResultado = iNum1 + iNum2; case '-': iResultado = iNum1 - iNum2; case '*': iResultado = iNum1 * iNum2; case '/': iResultado = iNum1 / iNum2; case '%': iResultado = iNum1 % iNum2; default: printf(\noperacion errnea.); iResultado=0; } printf(%d, iResultado); } 8. Realizar el programa anterior con diferentes tipos de datos. 9. Realiza el programa del punto 4 con la sentencia switch. Puede ver ms ejercicios planteados y resueltos en el Manual Fundamentos de Informtica. Programacin en Lenguaje C.

break; break; break; break; break;

Prctica n 4: Estructuras de control condicionales. 6 de 6

PRCTICAS PARA LA ASIGNATURA

FUNDAMENTOS DE INFORMTICA
PRCTICA 5: Estructuras de repeticin.

INGENIEROS INDUSTRIALES UNIVERSIDAD POLITCNICA DE CARTAGENA

Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente

Prctica n 5: Estructuras de repeticin. 2 de 14

Prctica n 5: Estructuras de repeticin. 3 de 14

PRCTICA QUINTA
1. Visualizar los 100 primeros nmeros naturales. Solucin con tres bucles diferentes. Solucin n. 1: #include<stdio.h> int main(void) { short int iNum; printf(los 100 primeros naturales son:\n); iNum = 1; do { printf(%hd, iNum); iNum++; }while(iNum <= 100); return 0; } Solucin n. 2: #include<stdio.h> int main(void) { short int iNum; printf(los 100 primeros naturales son:\n); iNum = 1; while(iNum <= 100) { printf(%hd, iNum); iNum++; } return 0; } Solucin n. 3: #include<stdio.h> int main(void) { short int n; printf(los 100 primeros naturales son:\n); for (n = 1 ; n <= 100 ; n++) printf(%hd, n); return 0;

Prctica n 5: Estructuras de repeticin. 4 de 14


} 2. Calcula y visualiza una potencia. Para ello solicita la base y el exponente. #include<stdio.h> int main(void) { short int iBase, iExp, x; long int iRes = 1; printf(*** CALCULO DE UNA POTENCIA ***\n); printf(\nTeclea la Base: ); scanf(%hd, &iBase); printf(\nTeclea el Exponente: ); scanf(%hd, &iExp); /* Bucle "para" para el clculo */ for(x = 1 ; x <= iExp ; x++) iRes *= iBase; printf(El Resultado es: %ld, iRes); return 0; } 3. Visualizar la tabla de multiplicar de un nmero introducido por teclado. #include <stdio.h> int main(void) { short int N, c; printf(Indicar qu tabla se quiere mostrar: ); scanf(%hd, &N); for(c = 1 ; c <= 10 ; c++) printf(%hd * %hd = %hd\n, N, c, N * c); return 0; } 4. Hacer un programa que calcule la suma de los 10 primeros nmeros pares y el producto de los 10 primeros nmeros impares simultneamente. Ejemplo de utilizar switches para par e impar.

Prctica n 5: Estructuras de repeticin. 5 de 14

#include <stdio.h> int main(void) { short int iSP, iPi, c, Sw; // Inicializamos iSP al elemento neutro de la suma. iSP = 0; // Inicializamos iPi al elemento neutro del producto. iPi = 1; c = 0; Sw = 0; // Cambiar de 0 a 1 alternativamente. do { c++; if(!Sw) { iPi *= c; Sw = 1; } else { iSP += c; Sw = 0; } }while(c<20); // contamos desde 0 hasta 19. printf(Suma = %hd\tProducto = %hd, iSP, iPi); return 0; } 5. Calcular y visualizar el factorial de nmeros enteros introducidos por teclado, el programa terminar cuando se introduzca un 0. #include <stdio.h> int main(void) { short int N,; long int F; /* este programa funciona mientras se introduzca un nmero distinto de cero visualizando su factorial. */ printf(\n di un numero: ); scanf(hd, &N); while (N != 0)

Prctica n 5: Estructuras de repeticin. 6 de 14


{ /* /* F = 1; for (i = 1 ; i <= N ; i++) F *= i; Fuera del bucle for visualiza su factorial*/ El rango de un entero largo es desde -2147483648 hasta +2147483647. El factorial de 14 ya supera ese rango de valores. ------------- */ printf(\n el factorial de %hd es %ld, N, F); printf(\n di un numero: ); scanf(hd, &N); } return 0; } Otro modo de hacerlo (quiz ms elegante, aunque menos intuitivo): #include <stdio.h> int main(void) { short int N,; long int F; do { printf(\n di un numero: ); scanf(hd, &N); if(!N) break; for(F = 1, i = 1 ; i <= N ; F *= i++); printf(\n el factorial de %hd es %ld, N, F); }while(1); return 0; } 6. Calcular la media de una serie de nmeros enteros introducidos por teclado. El programa termina cuando en nmero introducido sea cero. #include <stdio.h> int main(void) { short int N; short int cont = 0; long int Suma = 0;

// Sucesivos nmeros de entrada. // Cantidad nmeros introducidos. // Suma acumulada de los nmeros.

Prctica n 5: Estructuras de repeticin. 7 de 14


/* El programa funciona mientras se introduzca un numero distinto de cero. Visualiza la media de los nmeros introducidos ------------------------------------- */ do { printf(Introduce nmero (%hd): , cont + 1); scanf(%hd, &N); if(!N) break; iSuma+=iNum; cont++; }while(1); fuera del bucle calcula y visualiza */ printf(\nSe han introducido %hd nmeros, cont); if(cont) printf(\nMedia: %8.2lf,(double)Suma/cont); return 0; } 7. Calcular y visualizar el resultado de la siguiente serie, siendo a y b dos nmeros enteros sin signo introducidos por teclado: , = + + + + + + + + + + + +

/*

Solucin con DOS bucles: #include <stdio.h> #include <math.h> int main(void) { short int a,b, den; double num,res; printf(Introduzca el valor de a: ); scanf(%hd, &a); printf(Introduzca el valor de b: ); scanf(%hd, &b); num = den = res = 0; for (i = 1 ; i <= 99 ; i += 2) num += (pow(a , i)) + (pow(b , i + 1)); for (i = 1 ; i <= 100 ; i++) den += i; /* fuera del bucle calcula y visualiza */ res = num / den; printf(\n f(%hd, %hd) = %lf, a, b, res); return 0;

Prctica n 5: Estructuras de repeticin. 8 de 14


} Solucin con UN SOLO bucle: En este caso, las dos estructuras for quedaran en una sola: for (i = 1 ; i <= 99 ; i += 2) { num += (pow(a , i)) + (pow(b , i + 1)); den += 2 * i + 1; } Y el resto del cdigo es igual que en el caso anterior. 8. Visualizar si un nmero entero introducido por teclado es perfecto. Terminar cuando en nmero introducido sea cero. Un nmero se dice que es perfecto cuando es igual a la suma de todos sus divisores (incluido el 1) excluido l mismo. Por ejemplo, 28 = 1 + 2 + 4 + 7 + 14, luego 28 es un nmero perfecto. #include <stdio.h> int main(void) { long int N, Suma, div; /* Este programa funciona mientras se introduzca un numero distinto de cero. Indica si es perfecto o no.*/ do { printf(Introduzca un nmero a testear... ); scanf(%ld, &N); if(!N) break; for(Suma = 1, div = 2 ; i <= N/2 ; i++) if (N % div == 0) Suma += div; if (N == Suma) printf(%ld es PERFECTO, N); else printf(%ld NO es PERFECTO, N); }while(1); return 0; } 9. Visualizar todos los nmeros perfectos comprendidos entre a y b (nmeros enteros introducidos por teclado, debiendo ser a menor que b y mayor que 2).

Prctica n 5: Estructuras de repeticin. 9 de 14

#include <stdio.h> int main(void) { short int N,div,Suma,a,b; printf(Bsqueda de perfectos entre a y b\n\n); do { printf(\nValor de a (mayor o igual que 2): ); scanf(%hd, &a); }while(a < 2); do { printf(\nValor de b (mayor que a): ); scanf(%hd, &b); }while(b <= a); printf(Los perfectos entre %hd y %hd son:\n, a, b); for (N = a ; N <= b ; N++) // N: todos los candidatos. { for (Suma = 1 , div = 2 ; div <= N / 2 ; div++) if (N % div == 0) Suma += div; /* fuera del bucle for segundo*/ if (N == Suma) printf(%10hd, N); } return 0; } 10. Introducir un nmero entero por teclado y visualizar si es primo. Terminar cuando en nmero introducido sea cero. #include <stdio.h> int main(void) { short int N, div; do { printf(Introduzca un entero ... ); scanf(%hd, &N); if(!N) break; for(div = 2 ; div <= sqrt(N) ; div++) if(N % div == 0) break; if(N%div == 0) printf(%hd es COMPUESTO.\n, N); else printf(%hd es PRIMO.\n, N); }while(1); return 0;

Prctica n 5: Estructuras de repeticin. 10 de 14


} Obsrvese que la sentencia condicional que se encuentra en el nico bucle for de la solucin podra haberse introducido dentro del propio for, quedando entonces el cdigo de la siguiente forma: #include <stdio.h> int main(void) { short int N, div; /* Este programa funciona mientras se introduzca un nmero distinto de cero -------------------------- */ do { printf(Introduzca un entero ... ); scanf(%hd, &N); if(!N) break; for(div = 2 ; div <= sqrt(N) && N % div ; div++); if(N % div) printf(%hd es PRIMO.\n, N); else printf(%hd es COMPUESTO.\n, N); }while(1); return 0; } Obsrvese tambin que en ese caso la estructura iterativa se ha quedado si sentencia por iterar. Por eso hemos tenido que aadir una sentencia vaca (un punto y coma despus de la estructura for). 11. Visualizar todos los nmeros primos comprendidos entre a y b ( enteros introducidos por teclado). El nmero a debe ser mayor que 2 y menor que b. #include <stdio.h> int main(void) { short int N,div,a,b; /* El programa visualiza los primos entre a y b. */ printf(Bsqueda de primos entre a y b\n\n); do { printf(\nValor de a (mayor o igual que 2): ); scanf(%hd, &a); }while(a < 2); do {

Prctica n 5: Estructuras de repeticin. 11 de 14


printf(\nValor de b (mayor que a): ); scanf(%hd, &b); }while(b <= a); printf(Los primos entre %hd y %hd son:\n, a, b); for(N = a ; N <= b ; N++) // N: todos los candidatos. { for(div = 2 ; div <= sqrt(N) && N % div ; div++); if(N % div == 0) printf(%10hd, N); } return 0; } 12. Escribir un programa que lea nmeros y escriba cuntos nmeros positivos y negativos se han ledo. La finalizacin de la entrada de datos se realiza por la respuesta al siguiente mensaje "Terminar S/N?", escrito despus de introducir cada nmero. #include <stdio.h> void main(void) { short int p, n, N; char opcion; p = 0; n = 0; do { printf(Introducir Entero ... ); scanf(%hd, &N); if(N > 0) p++; else n++; printf(Terminar (S / N)?: ); do { // flushall(); opcion = getchar(); while(opcion !='N' && opcion != S); }while(opcion == 'S'); printf(Positivos: %hd\tNegativos: %hd, p, n); } // Positivos introducidos. // Negativos o Ceros introducidos.

Prctica n 5: Estructuras de repeticin. 12 de 14


13. Hacer un programa que lea N (N mayor o igual que 2) nmeros enteros (tanto positivos como negativos) y muestre el mayor y el menor de los nmeros ledos. #include <stdio.h> int main(void) { short int j, N, Mayor, Menor, Numero; j = 1; printf(Valor ... ); scanf(%hd, &Mayor); Menor = Mayor; do { printf(Valor ... ); scanf(%hd, &Numero; j++; if(Numero > Mayor) Mayor = Numero; else if(Numero < Menor) Menor = Numero; }while(j < Num); printf(Mayor = %hd\tMenor = %hd, Mayor, Menor); return 0; } 14. Visualizar la tabla de multiplicar de 9. 15. Visualizar la suma de los 200 primeros nmeros pares. 16. Visualizar el abecedario en minsculas y su equivalente numrico ASCII. 17. Determinar las situaciones de overflow en el ejercicio resuelto 5.6, realizando las pruebas con diferentes tipos de datos para la variable fac. 18. Calcular y visualizar el resultado de la siguiente serie, siendo a un numero entero sin signo introducido por teclado: = + + + +

Prctica n 5: Estructuras de repeticin. 13 de 14

19. Introducir una serie de 30 letras por teclado. Visualizar cuantas 'a', 'e', 'i', 'o', 'u' (mayscula y minsculas) tiene. 20. Realizar un programa para que ensee una tabla de multiplicar: Solicitar que tabla se desea aprender. Solicitar que introduzca la respuesta a cada elemento de la tabla. Dar mensajes de correcto e incorrecto (en este caso solicitar que lo vuelva a repetir dando tres oportunidades ) . El programa terminar cuando la tabla solicitada sea cero.

21. Calcula y visualiza los divisores de un nmero entero introducido por teclado y el nmero de divisores que tiene. 22. Calcular el nmero e mediante el siguiente desarrollo en serie: N es entero introducido pro teclado. = + + + + + + ! ! ! ! !

con una aproximacin A (A > 1 / N!). Por ejemplo, dado A = 0.000001, escribir e = 2.71828198 con aproximacin de 0.000001 23. Escribir una tabla con los N primeros nmeros triangulares. Los nmeros triangulares se obtienen sumando los nmeros naturales sucesivos 1, 2, 3, 4, ... (1=1, 3=1+2, 6=1+2+3, 10=1+2+3+4, ...). Por ejemplo, dado N = 5, escribir: Tabla de 5 nmeros triangulares 1 3 6 10 15 24. Sumar los N primeros trminos de la siguiente sucesin: + + + + + () . Por ejemplo, dado X = 2 y N = 3, escribir: La suma de los 3 primeros trminos es 17 25. Calcular en nmero de combinaciones de N elementos tomados de M en M, segn la siguiente frmula: (N sobre M) = N! / M! * (N - M)! Por ejemplo, dado N = 5 y M = 3, escribir Hay 10 combinaciones de 5 elementos tomados de 3 en 3.

Prctica n 5: Estructuras de repeticin. 14 de 14

PRCTICAS PARA LA ASIGNATURA

FUNDAMENTOS DE INFORMTICA
PRCTICA 6: Vectores y Punteros.

INGENIEROS INDUSTRIALES UNIVERSIDAD POLITCNICA DE CARTAGENA

Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente

Prctica n 6: Vectores y Punteros. 2 de 6

Prctica n 6: Vectores y Punteros. 3 de 6 PRCTICA SEXTA


1. Un uso comn para un vector inicializado es la creacin de una tabla de bsqueda. Por ejemplo, en este programa se inicializa una matriz bidimensional de 5x2 de modo que el primer elemento de cada fila es el nombre de una CPU, y el segundo elemento contiene su velocidad media de procesamiento. El programa permite que un usuario introduzca el nmero de un procesador y despus examina la tabla e informa de su velocidad media. /* Programa TABLA de BUSQUEDA */ #include <stdio.h> long lCpu[5][2]={ {8088, 4}, {8086,4}, {80286, 10}, {80386, 20}, {80486, 40} }; void main(void) { short int i; long lProcesador; printf("\nIntroduzca el numero del procesador: "); scanf("%ld", &lProcesador); /* Examinar en la tabla */ for(i = 0 ; i < 5 ; i++) if(lProcesador==lCpu[i][0]) { printf("La velocidad media es ); printf(%d Mhz. \n", lCpu[i][1]); break; } /* comunicar error si no lo encuentra */ if(i == 5) printf("Procesador no encontrado \n"); } /* fin de main() */ 2. Los vectores resultan especialmente tiles cuando se quiere ordenar informacin. Este programa permite que el usuario introduzca hasta 100 nmeros y despus los ordena de menor a mayor. El algoritmo de ordenacin es el de la burbuja. El algoritmo de ordenacin de la burbuja es pobre en eficiencia, pero fcil de entender y sencillo de codificar.

Prctica n 6: Vectores y Punteros. 4 de 6


/* programa ORDENACION */ # include <stdio.h> #include <stdlib.h> # define DIM_MAX 100 void main(void) { long int V[DIM_MAX], aux; short int i, j; short int N; // Nmeros introducidos printf("Cuntos nmeros desea ordenar? \n"); scanf("%hd", &N); for(i = 0 ; i < N ; i++) { printf(Entrada (%hd) --> , i + 1); scanf(%ld, &V[i]); } for(i = 0 ; i < N ; i++) for(j = i + 1 ; j < N ; j++) if(V[i] > V[j]) // Intercambiar... { aux = V[i]; V[i] = V[j]; V[j] = aux; } for(i = 0 ; i < N ; i++) printf(%10ld, Vi[]); } 3. Este programa permite al operador introducir diez cadenas, despus le permite mostrarlas, una a una, en cualquier orden que elija. Para detener el programa se introducir un nmero negativo. /* Programa CADENAS */ # include <stdio.h> # define LINEAS 10 # define CARACTERES 80 void main(void) { char cTexto[LINEAS][CARACTERES]; short int i; for(i = 0 ; i < LINEAS ; i++) { printf("%d: ", i+1);

Prctica n 6: Vectores y Punteros. 5 de 6


gets(cTexto[i]); } /* fin for() */ do { printf("\nNumero de linea (1-%hd)? :", LINEAS); scanf("%hd", &i); i--; /* ajustar valor para indice de vector */ if(i >= 0) printf("%s", cTexto[i]); } while (i >= 0);/* fin do-while() */ } /* fin de main() */ 4. Un uso comn de los vectores de caracteres es para implementar una interfaz basada en rdenes. A diferencia de un men, que permite que el usuario haga una eleccin, una interfaz basada en rdenes muestra un mensaje indicativo, espera a que el usuario introduzca una orden y despus hace lo que pide la orden. Este programa permite que el usuario sume, reste, multiplique o divida dos datos, sin usar men, sino interfaz de rdenes. /* programa COMANDOS */ #include <stdio.h> #include <stdlib.h> #include <string.h> void main(void) { long int i, j; char cComando[80], cTemporal[80]; for( ; ; ) { printf("Operacion?: "); gets(cComando); /* comprobar si el usuario desea abandonar la aplicacion */ if(!strcmp(cComando, "salir")) break; printf("Introduzca el primer nmero:"); gets(cTemporal); i=atoi(cTemporal); printf("Introduzca el segundo nmero:"); gets(cTemporal); j=atoi(cTemporal); /* ahora, realiza la operacin */ if(!strcmp(cComando, "sumar")) printf("La suma es %d\n", i + j);

Prctica n 6: Vectores y Punteros. 6 de 6


else if(!strcmp(cComando, "restar")) printf("La resta es %d\n", i - j); else if (!strcmp(cComando, "dividir")) if(j) printf ("la divisin es: %d\n", i / j); else if (!strcmp(cComando, "multiplicar")) printf ("la multiplicacin es: %d\n", i * j); else printf ("Comando desconocido \n"); } /* fin for vacio */ } /* fin de main() */ 5. Escribir un programa que inicialice una matriz de 10x3 de modo que el primer elemento de cada fila contenga un nmero, el segundo elemento contenga su cuadrado y el tercer elemento contenga su cubo. 6. Escriba un programa que defina una matriz de tres dimensiones de 3x3x3, y almacene los nmeros del 1 al 127. Haga que el programa muestre la suma de los datos.

PRCTICAS PARA LA ASIGNATURA

FUNDAMENTOS DE INFORMTICA
PRCTICA 7: Funciones.

INGENIEROS INDUSTRIALES UNIVERSIDAD POLITCNICA DE CARTAGENA

Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente

Prctica n 7: Funciones. 2 de 6

Prctica n 7: Funciones. 3 de 6

PRCTICA SPTIMA
1. Funcin que incrementa el valor del parmetro. #include <stdio.h> short int inc_par(short int); // prototipo de la funcion inc_par() void main(void) { short int Val; printf(Introducir un numero entero: ); scanf(%hd, &Val); printf(El parmetro vale, ANTES de la llamada: %hd, Val); Val=inc_par(Val); //llamada a la funcin inc_par() printf(El parmetro vale, DESPUS de la llamada: %hd, Val); } // fin de funcin main() // funcion inc_par(): incrementa el parmetro short int inc_par(short int a) { return (a++); } // fin funcin inc_par() 2. Programa para la bsqueda del mayor de tres nmeros enteros introducidos por teclado. // Programa que visualiza el menor de tres nmeros enteros // introducidos por teclado. #include <stdio.h> // Prototipo de la funcin maximo() short int maximo(short int, short int, short int); void main(void) { short int N1,N2,N3; printf(Primer nmero ... ); printf(Segundo nmero ... ); printf(Tercer nmero ... ); scanf(%hd, &N1); scanf(%hd, &N2); scanf(%hd, &N3);

Prctica n 7: Funciones. 4 de 6
printf(El mayor es: %hd, maximo(N1, N2, N3)); } // fin de funcion main() // funcion maximo(): calcula el mximo de 3 nmeros enteros. short int maximo(short int a, short int b, short int c) { short int Max; if(b < a) Max = b; else Max = a; if (c > Max) Max = c; return Max; } // fin funcion maximo() Otra forma de la funcin maximo short int maximo(short int a, short int b, short int c) { return a > b ? (a > c ? a : c) : (b > c ? b : c); } 3. Modos de almacenamiento. Variables Estticas. Escriba el siguiente cdigo y explique la salida que ofrece por pantalla. #include <stdio.h> void imprimir(void); // prototipo de la funcin imprimir() void main(void) { short int i; for(i = 0 ; i < 3 ; i++) imprimir(); } // fin de funcin main() // funcin imprimir(): muestra modos de almacenamiento void imprimir(void) { static short int V1=0; short int V2=0; V1++; V2++; printf(Valor 1 = %hd\tValor 2 = %hd, V1, V2); } // fin funcin imprimir() 4. Escriba una funcin que recibe como parmetro un nmero entero y escribe por pantalla, una por una, todas sus cifras.

Prctica n 7: Funciones. 5 de 6

5. En el siguiente programa hemos definido una macro que indica cul es el mayor de dos nmeros que toma como parmetros. // // Programa que visualiza el mayor de dos nmeros enteros introducidos por teclado. Usa una MACRO.

#include <stdio.h> #define mayor(a, b) ((a > b) ? a : b) // definicin de la MACRO void main(void) { long int N1,N2,Mayor; printf(Introduzca el primer valor ... ); scanf(%ld, &N1); printf(Introduzca el segundo valor ... ); scanf(%ld, &N2); Mayor = mayor(N1, N2); //llamada a MACRO mayor.

printf(El mayor es: %ld, Mayor); } // fin de funcin main() 6. Dado el siguiente programa, escriba el prototipo y la definicin de la funcin Media(). // Programa que visualiza la media de tres nmeros enteros // introducidos por teclado. #include <stdio.h> void main(void) { short int N1, N2, N3, Media; printf(Primer valor ... ); scanf(hd, &N1); printf(Segundo valor ... ); scanf(hd, &N2); printf(Tercer valor ... ); scanf(hd, &N3); printf(La media es ... %hd, Media(N1, N2, N3)); } // fin de funcin main() 7. Recursividad (ref: factorial.cpp) // programa que calcula el factorial de un numero

Prctica n 7: Funciones. 6 de 6
// introducido por teclado #include <stdio.h> // prototipo de la funcin factorial() long int factorial(short int); void main(void) { short int N; printf(Introduzca un entero ... ); scanf(%hd, &N); printf(El factorial de %hd es %ld, N, factorial(N)); } // fin de funcin main() // Funcin factorial(): calcula el factorial de un numero entero long int factorial(short int a) { return a == 0 ? 1 : (long)a * factorial(a 1); }// fin funcin recursividad() 8. Escriba un programa que pida dos nmeros por teclado y permita calcular el mayor o el menor, usando dos funciones. El programa terminar cuando el usuario teclee -1. 9. Escriba una funcin, multiplo(), que reciba dos nmeros enteros y devuelva 1 si el segundo es mltiplo del primero 0 si no lo es. Use la funcin en un programa que acepte como entrada una serie de pares de nmeros enteros. 10. Defina una funcin recurrente que reciba como parmetro un entero y muestre como salida el elemento correspondiente de la serie de Fibonacci. 11. Defina una funcin que intercambie el valor de dos variables que recibe como parmetros y cuyo cambio quede, efectivamente, recogido en la funcin invocante.

Puede ver ms ejercicios planteados y resueltos en el Manual Fundamentos de Informtica. Programacin en Lenguaje C.

Você também pode gostar