FundamTurbC++
-
Upload
julio-moran -
Category
Documents
-
view
22 -
download
0
Transcript of FundamTurbC++
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 1/50
FUNDAMENTOS de INFORMÁTICA
PRÁCTICAS
UNIVERSIDADPOLITÉCNICADE CARTAGENA
Área de Lenguajes y Sistemas Informáticos
Pedro María Alcover Garau
Dolores Cano Gil
Carlos Fernández Andrés
Pedro J. Navarro Lorente
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 3/50
PRÁCTICAS PARA LA ASIGNATURA
FUNDAMENTOS DEINFORMÁTICA
PRÁCTICAS 1 y 2:El entorno de Turbo C++.
Empezando a programar en C.
INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE CARTAGENA
Pedro María Alcover GarauDolores Cano Gil
Carlos Fernández AndrésPedro Javier Navarro Lorente
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 4/50
Prácticas nº 1 y 2:El entorno de Turbo C++.
Empezando a programar en C. 2 de 8
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 5/50
Prácticas nº 1 y 2:El entorno de Turbo C++.
Empezando a programar en C. 3 de 8
PRÁCTICA PRIMERA
1. Practicando el entorno de Turbo C++ 4.5., para ello introduciremoseste primer programa:
#include <stdio.h>
// esto es un comentario
/* esto también es un comentario
programa realizado por: Juan Pérez Tomás
fecha: 16/10/00, aquí termina el segundo comentario*/
void main( void )
{
printf("Hola mundo");
}
Ventana deCódigo Barra de
menús
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 6/50
Prácticas 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 susrespectivos botones de la barra de menús. El programa se llamaráprimero.c.
3. Compilar el programa, corrigiendo errores si fuese necesario.
4. Ejecutar el programa.
5. Ver cuántos archivos existen con el nombre del programa y cambiandode extensión, después de todos estos procesos:
primero.bak : ……………………………………………………………………………………………
primero.cpp : ……………………………………………………………………………………………
primero.obj : …………………………………………………………………………………………… primero.exe : ……………………………………………………………………………………………
Ventana demensajes
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 7/50
Prácticas 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 programas6.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 multiplicación es: %d",iNum1 * iNum2);
printf("\n la división 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 depuración deprogramas. Correcta interpretación de los mensajes de Error y de losmensajes de Advertencia. Ejecución del programa paso a paso. Uso delEvaluador de expresiones. Puntos de ruptura.
Usar todos estos conceptos en los diferentes programasimplementados hasta el momento.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 8/50
Prácticas nº 1 y 2:El entorno de Turbo C++.
Empezando a programar en C. 6 de 8
PRÁCTICA SEGUNDA
1. C++. Uso de la entrada/salida básica 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 básicas.
\ Carácter de escape\n Salto de línea\t Tabulación horizontal\r retorno de carro (cursor a principio de líne actual)\a 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. Obsérvese cómola E/S en C++ es a prueba de tipos.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 9/50
Prácticas 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 Introduzca el dividendo ... ”);
scanf(“%d”, i1);
printf(“ \n Introduzca los dos datos a dividir”);
scanf(“%d”, i2);
iRes = i1 / 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 3para poder trabajar con números 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 números.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 delejercicio 5 durante una ejecución paso a paso del programa.
Puede ver más ejercicios planteados y resueltos en el Manual “Fundamentos
de Informática. Programación en Lenguaje C.”
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 10/50
Prácticas nº 1 y 2:El entorno de Turbo C++.
Empezando a programar en C. 8 de 8
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 11/50
PRÁCTICAS PARA LA ASIGNATURA
FUNDAMENTOS DEINFORMÁTICA
PRÁCTICA 3:
Tipos de datos y expresiones en C.
INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE CARTAGENA
Pedro María Alcover GarauDolores Cano Gil
Carlos Fernández AndrésPedro Javier Navarro Lorente
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 12/50
Práctica nº 3:Tipos de datos y expresiones en C. 2 de 6
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 13/50
Práctica nº 3:Tipos de datos y expresiones en C. 3 de 6
PRÁCTICA TERCERA
1. El siguiente programa calcula y visualiza el Área de un triángulo. Paraello solicita por teclado la base y la altura. Trabaja con variables dedistinto 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; /* resultado entero*/
fArear=(float)iBase*iAltura/2; /* resultado real*/
fAreai=iBase*iAltura/2;
printf(“\n el área del triángulo 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 Fahrenheita Celsius: C=(5/9)*(F-32).
Advertencia: recuerde que la operación entre dos enteros da un resultado que
es otro entero del mismo tipo.
3. El siguiente programa trabaja con la situación de overflow envariables de tipo char . Justifica el resultado que visualiza por pantalla.
#include<stdio.h>
void main( void )
{
char a = 127;
a++;
printf(“%hd”, a);}
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 14/50
Práctica 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. Según en cuál se trabaje, una variable int se comportará comouna variable long , y según dónde, como una variable short .
5. El siguiente programa determina los tamaños en bytes de losdiferentes tipos de datos en C.
#include <stdio.h>
void main ( void )
{
printf(“\nTamaño de un entero en este compilador: ");
printf(“%ld bytes.", sizeof(int));
printf(“ y en bits = %ld", sizeof(int) * 8);
printf("\nTamaño de un entero corto: ");
printf(“%ld bytes.”, sizeof(short int));
printf(“\nTamaño de un entero largo: ”);
printf(“%ld bytes.”, sizeof(long int));
printf(“\nTamaño de un float: ”); printf(“%ld bytes.”, sizeof(float));
printf(“\nTamaño de un double: ”); printf(“%ld bytes.”, sizeof(double));
printf(“\nTamaño 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);
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 15/50
Práctica 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 losresultados 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;
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 16/50
Práctica 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 más ejercicios planteados y resueltos en el Manual “Fundamentosde Informática. Programación en Lenguaje C.”
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 17/50
PRÁCTICAS PARA LA ASIGNATURA
FUNDAMENTOS DEINFORMÁTICA
PRÁCTICA 4:
Estructuras de control condicionales.
INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE CARTAGENA
Pedro María Alcover GarauDolores Cano Gil
Carlos Fernández AndrésPedro Javier Navarro Lorente
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 18/50
Práctica nº 4:Estructuras de control condicionales. 2 de 6
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 19/50
Práctica nº 4:Estructuras de control condicionales. 3 de 6
PRÁCTICA CUARTA
1. Introducir un entero por teclado, visualizar si es par o impar.
2. Sentencia if: Programa que visualiza el menor de tres númerosenteros 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 números enteros por teclado, visualizar “iguales” si lasuma de cualquier pareja es igual al tercero (eje. a + b == c) y
“distintos” en caso de lo contrario. (utilizar el menor número desentencias if ).
Solución 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 ... ”);
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 20/50
Práctica 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”);
}
Solución 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 números, visualizarlos de menor a mayor. Utilizarvariables auxiliares y el menor número de sentencias if .
5. Sentencias anidadas: Introducir una nota numérica por teclado, yvisualizar la calificación alfabética correspondiente.
// introducir una nota numerica, visulizarla alfabetica#include <stdio.h>
void main( void )
{
int iNota;
printf(“Introducir nota : ”);
scanf(“%d”, &iNota);
if(iNota> = 0 && iNota < 5) printf(“Suspenso”);
else if(iNota >= 5 && iNota < 7) printf(“aprobado”);
else if(iNota >= 7 && iNota <9) printf(“notable”); else if(iNota == 9) printf(“sobresaliente”);
else if(iNota == 10) printf(“M.Honor”);
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 21/50
Práctica 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 eneuros 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 enesa moneda.
7. Sentencia switch: El siguiente programa realiza la operaciónintroducida (+,-,*,/,%), con dos números enteros introducidos porteclado.
#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; break;
case '-': iResultado = iNum1 - iNum2; break;
case '*': iResultado = iNum1 * iNum2; break;
case '/': iResultado = iNum1 / iNum2; break;
case '%': iResultado = iNum1 % iNum2; break;
default: printf(“\noperacion errónea.”);
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 más ejercicios planteados y resueltos en el Manual “Fundamentos
de Informática. Programación en Lenguaje C.”
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 22/50
Práctica nº 4:Estructuras de control condicionales. 6 de 6
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 23/50
PRÁCTICAS PARA LA ASIGNATURA
FUNDAMENTOS DEINFORMÁTICA
PRÁCTICA 5:Estructuras de repetición.
INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE CARTAGENA
Pedro María Alcover GarauDolores Cano Gil
Carlos Fernández AndrésPedro Javier Navarro Lorente
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 24/50
Práctica nº 5:Estructuras de repetición. 2 de 14
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 25/50
Práctica nº 5:Estructuras de repetición. 3 de 14
PRÁCTICA QUINTA
1. Visualizar los 100 primeros números naturales. Solución con tresbucles diferentes.
Solución 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;
}
Solución 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;
}
Solución 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;
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 26/50
Práctica nº 5:Estructuras de repetición. 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 cálculo */
for(x = 1 ; x <= iExp ; x++) iRes *= iBase;
printf(“El Resultado es: %ld”, iRes);
return 0;
}
3. Visualizar la tabla de multiplicar de un número introducido porteclado.
#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 númerospares y el producto de los 10 primeros números imparessimultáneamente. Ejemplo de utilizar “switches” para par e impar.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 27/50
Práctica nº 5:Estructuras de repetición. 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 números enteros introducidos porteclado, 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
número distinto de cero visualizando su factorial. */
printf(“\n di un numero: ”);
scanf(“hd”, &N);
while (N != 0)
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 28/50
Práctica nº 5:Estructuras de repetición. 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á más 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 números enteros introducidos porteclado. El programa termina cuando en número introducido sea cero.
#include <stdio.h>
int main( void )
{short int N; // Sucesivos números de entrada.
short int cont = 0; // Cantidad números introducidos.long int Suma = 0; // Suma acumulada de los números.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 29/50
Práctica nº 5:Estructuras de repetición. 7 de 14
/* El programa funciona mientras se introduzca un numero
distinto de cero. Visualiza la media de los números
introducidos ------------------------------------- */
do
{
printf(“Introduce número (%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 números”, 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 dosnúmeros enteros sin signo introducidos por teclado:
, = + + + +⋯+ +
+ + + +⋯+ +
Solución 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;
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 30/50
Práctica nº 5:Estructuras de repetición. 8 de 14
}
Solución con UN SOLO bucle:
En este caso, las dos estructuras for quedarían 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 código es igual que en el caso anterior.
8. Visualizar si un número entero introducido por teclado es perfecto.Terminar cuando en número introducido sea cero.
Un número se dice que es perfecto cuando es igual a la suma de todos susdivisores (incluido el 1) excluido él mismo. Por ejemplo, 28 = 1 + 2 + 4 + 7 +14, luego 28 es un número 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 número 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 números perfectos comprendidos entre a y b(números enteros introducidos por teclado, debiendo ser a menor que
b y mayor que 2).
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 31/50
Práctica nº 5:Estructuras de repetición. 9 de 14
#include <stdio.h>
int main( void )
{
short int N,div,Suma,a,b;
printf(“Búsqueda 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 número entero por teclado y visualizar si es primo.Terminar cuando en número 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;
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 32/50
Práctica nº 5:Estructuras de repetición. 10 de 14
}
Obsérvese que la sentencia condicional que se encuentra en el único bucle for de la solución podría haberse introducido dentro del propio for , quedandoentonces el código de la siguiente forma:
#include <stdio.h>
int main( void )
{
short int N, div;
/* Este programa funciona mientras se introduzca un
número 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;
}
Obsérvese también que en ese caso la estructura iterativa se ha quedado sisentencia por iterar. Por eso hemos tenido que añadir una sentencia vacía (unpunto y coma después de la estructura for ).
11. Visualizar todos los números primos comprendidos entre a y b (enteros introducidos por teclado). El número a debe ser mayor que 2 ymenor que b.
#include <stdio.h>
int main( void )
{short int N,div,a,b;
/* El programa visualiza los primos entre a y b. */
printf(“Búsqueda 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
{
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 33/50
Práctica nº 5:Estructuras de repetición. 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 números y escriba cuántos númerospositivos y negativos se han leído. La finalización de la entrada dedatos se realiza por la respuesta al siguiente mensaje "TerminarS/N?", escrito después de introducir cada número.
#include <stdio.h>
void main( void )
{
short int p, n, N;char opcion;
p = 0; // Positivos introducidos.
n = 0; // Negativos o Ceros introducidos.
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);
}
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 34/50
Práctica nº 5:Estructuras de repetición. 12 de 14
13. Hacer un programa que lea N (N mayor o igual que 2) númerosenteros (tanto positivos como negativos) y muestre el mayor y el
menor de los números leídos.
#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 números pares.
16. Visualizar el abecedario en minúsculas y su equivalente numéricoASCII.
17. Determinar las situaciones de overflow en el ejercicio resuelto 5.6,realizando las pruebas con diferentes tipos de datos para la variablefac.
18. Calcular y visualizar el resultado de la siguiente serie, siendo a unnumero entero sin signo introducido por teclado:
=
+
+
+⋯+
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 35/50
Práctica nº 5:Estructuras de repetición. 13 de 14
19. Introducir una serie de 30 letras por teclado. Visualizar cuantas 'a',
'e', 'i', 'o', 'u' (mayúscula y minúsculas) tiene.
20. Realizar un programa para que enseñe una tabla de multiplicar:Solicitará que tabla se desea aprender. Solicitará que introduzca larespuesta a cada elemento de la tabla. Dará mensajes de correcto eincorrecto (en este caso solicitará que lo vuelva a repetir dando tresoportunidades ) . El programa terminará cuando la tabla solicitada seacero.
21. Calcula y visualiza los divisores de un número entero introducido porteclado y el número de divisores que tiene.
22. Calcular el número e mediante el siguiente desarrollo en serie: N esentero introducido pro teclado.
= +
!+
!+
!+
!+⋯+
!
con una aproximación A (A > 1 / N!). Por ejemplo, dado A = 0.000001,
escribir e = 2.71828198 con aproximación de 0.000001
23. Escribir una tabla con los N primeros números triangulares. Losnúmeros triangulares se obtienen sumando los números naturalessucesivos 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 números triangulares
1
3
6
10
15
24. Sumar los N primeros términos de la siguiente sucesión: + · + ·
+ · + …+ · (−). Por ejemplo, dado X = 2 y N = 3, escribir: Lasuma de los 3 primeros términos es 17
25. Calcular en número de combinaciones de N elementos tomados de Men M, según la siguiente fórmula: (N sobre M) = N! / M! * (N - M)!
Por ejemplo, dado N = 5 y M = 3, escribir “Hay 10 combinaciones de 5elementos tomados de 3 en 3”.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 36/50
Práctica nº 5:Estructuras de repetición. 14 de 14
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 37/50
PRÁCTICAS PARA LA ASIGNATURA
FUNDAMENTOS DEINFORMÁTICA
PRÁCTICA 6:
Vectores y Punteros.
INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE CARTAGENA
Pedro María Alcover GarauDolores Cano Gil
Carlos Fernández AndrésPedro Javier Navarro Lorente
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 38/50
Práctica nº 6:Vectores y Punteros. 2 de 6
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 39/50
Práctica nº 6:Vectores y Punteros. 3 de 6
PRÁCTICA SEXTA
1. Un uso común para un vector inicializado es la creación de una tablade búsqueda. Por ejemplo, en este programa se inicializa una matrizbidimensional de 5x2 de modo que el primer elemento de cada fila esel nombre de una CPU, y el segundo elemento contiene su velocidadmedia de procesamiento. El programa permite que un usuariointroduzca el número de un procesador y después examina la tabla einforma 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 ordenarinformación. Este programa permite que el usuario introduzca hasta100 números y después los ordena de menor a mayor. El algoritmo deordenación es el de la burbuja. El algoritmo de ordenación de laburbuja es pobre en eficiencia, pero fácil de entender y sencillo decodificar.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 40/50
Práctica 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; // Números introducidos
printf("Cuántos números 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, después lepermite mostrarlas, una a una, en cualquier orden que elija. Paradetener el programa se introducirá un número 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);
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 41/50
Práctica nº 6:Vectores y Punteros. 5 de 6
gets(cTexto[i]);} /* fin for() */
do {
printf("\n¿Numero 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 común de los vectores de caracteres es para implementar una
interfaz basada en órdenes. A diferencia de un menú, que permite queel usuario haga una elección, una interfaz basada en órdenes muestraun mensaje indicativo, espera a que el usuario introduzca una orden ydespués hace lo que pide la orden. Este programa permite que elusuario 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 número:");gets(cTemporal);i=atoi(cTemporal);
printf("Introduzca el segundo número:");gets(cTemporal);j=atoi(cTemporal);
/* ahora, realiza la operación */if(!strcmp(cComando, "sumar"))printf("La suma es %d\n", i + j);
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 42/50
Práctica 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 división es: %d\n", i / j);
else if (!strcmp(cComando, "multiplicar"))printf ("la multiplicación 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 elprimer elemento de cada fila contenga un número, el segundoelemento contenga su cuadrado y el tercer elemento contenga sucubo.
6. Escriba un programa que defina una matriz de tres dimensiones de3x3x3, y almacene los números del 1 al 127. Haga que el programamuestre la suma de los datos.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 43/50
PRÁCTICAS PARA LA ASIGNATURA
FUNDAMENTOS DEINFORMÁTICA
PRÁCTICA 7:Funciones.
INGENIEROS INDUSTRIALES
UNIVERSIDAD POLITÉCNICA DE CARTAGENA
Pedro María Alcover GarauDolores Cano Gil
Carlos Fernández AndrésPedro Javier Navarro Lorente
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 44/50
Práctica nº 7:Funciones. 2 de 6
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 45/50
Práctica nº 7:Funciones. 3 de 6
PRÁCTICA SÉPTIMA
1. Función que incrementa el valor del parámetro.
#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 parámetro vale, ANTES de la llamada: %hd”, Val);
Val=inc_par(Val); //llamada a la función inc_par()
printf(“El parámetro vale, DESPUÉS de la llamada: %hd”, Val);} // fin de función main()
// funcion inc_par(): incrementa el parámetroshort int inc_par(short int a){
return (a++);} // fin función inc_par()
2. Programa para la búsqueda del mayor de tres números enterosintroducidos por teclado.
// Programa que visualiza el menor de tres números enteros// introducidos por teclado.#include <stdio.h>
// Prototipo de la función maximo()short int maximo(short int, short int, short int);
void main( void ){
short int N1,N2,N3;
printf(“Primer número ... ”); scanf(“%hd”, &N1);
printf(“Segundo número ... ”); scanf(“%hd”, &N2); printf(“Tercer número ... ”); scanf(“%hd”, &N3);
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 46/50
Práctica nº 7:Funciones. 4 de 6
printf(“El mayor es: %hd”, maximo(N1, N2, N3));} // fin de funcion main()
// funcion maximo(): calcula el máximo de 3 números 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 función 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 Estáticas. Escriba el siguientecódigo y explique la salida que ofrece por pantalla.
#include <stdio.h> void imprimir( void ); // prototipo de la función imprimir()
void main( void ){
short int i;
for(i = 0 ; i < 3 ; i++) imprimir();} // fin de función main()
// función 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 función imprimir()
4. Escriba una función que recibe como parámetro un número entero yescribe por pantalla, una por una, todas sus cifras.
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 47/50
Práctica nº 7:Funciones. 5 de 6
5. En el siguiente programa hemos definido una macro que indica cuál es
el mayor de dos números que toma como parámetros.
// Programa que visualiza el mayor de dos números enteros// introducidos por teclado. Usa una MACRO.
#include <stdio.h>
#define mayor(a, b) ((a > b) ? a : b) // definición 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 función main()
6. Dado el siguiente programa, escriba el prototipo y la definición de lafunción Media().
// Programa que visualiza la media de tres números 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 función main()
7. Recursividad (ref: factorial.cpp)
// programa que calcula el factorial de un numero
5/12/2018 FundamTurbC++ - slidepdf.com
http://slidepdf.com/reader/full/fundamturbc 48/50
Práctica nº 7:Funciones. 6 de 6
// introducido por teclado#include <stdio.h>
// prototipo de la función 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 función main()
// Función factorial(): calcula el factorial de un numero enterolong int factorial(short int a){
return a == 0 ? 1 : (long)a * factorial(a – 1);}// fin función recursividad()
8. Escriba un programa que pida dos números por teclado y permitacalcular el mayor o el menor, usando dos funciones. El programaterminará cuando el usuario teclee -1.
9. Escriba una función, multiplo(), que reciba dos números enteros ydevuelva 1 si el segundo es múltiplo del primero ó 0 si no lo es. Use lafunción en un programa que acepte como entrada una serie de paresde números enteros.
10. Defina una función recurrente que reciba como parámetro unentero y muestre como salida el elemento correspondiente de la seriede Fibonacci.
11. Defina una función que intercambie el valor de dos variables querecibe como parámetros y cuyo cambio quede, efectivamente,recogido en la función invocante.
Puede ver más ejercicios planteados y resueltos en el Manual “Fundamentosde Informática. Programación en Lenguaje C.”