Escolar Documentos
Profissional Documentos
Cultura Documentos
Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro J. Navarro Lorente
FUNDAMENTOS DE INFORMTICA
PRCTICAS 1 y 2: El entorno de Turbo C++. Empezando a programar en C.
Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente
Ventana de Cdigo
Barra de mens
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 :
#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.
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.
FUNDAMENTOS DE INFORMTICA
PRCTICA 3: Tipos de datos y expresiones en C.
Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente
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); }
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);
Puede ver ms ejercicios planteados y resueltos en el Manual Fundamentos de Informtica. Programacin en Lenguaje C.
FUNDAMENTOS DE INFORMTICA
PRCTICA 4: Estructuras de control condicionales.
Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente
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 ... );
FUNDAMENTOS DE INFORMTICA
PRCTICA 5: Estructuras de repeticin.
Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente
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;
#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)
// Sucesivos nmeros de entrada. // Cantidad nmeros introducidos. // Suma acumulada de los nmeros.
/*
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;
#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;
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.
FUNDAMENTOS DE INFORMTICA
PRCTICA 6: Vectores y Punteros.
Pedro Mara Alcover Garau Dolores Cano Gil Carlos Fernndez Andrs Pedro Javier Navarro Lorente
FUNDAMENTOS DE INFORMTICA
PRCTICA 7: Funciones.
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.