FundamTurbC++

50
  FUNDAMENTOS de INFORMÁTICA PRÁCTICAS UNIVERSIDAD POLITÉCNICA DE CARTAGENA Área de Lenguajes y Sistemas Informátic os  Pedro María Alcover Garau Dolores Cano Gil Carlos Fernández Andrés Pedro J. Navarro Lorente

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 2/50

 

 

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.”  

5/12/2018 FundamTurbC++ - slidepdf.com

http://slidepdf.com/reader/full/fundamturbc 49/50

 

 

5/12/2018 FundamTurbC++ - slidepdf.com

http://slidepdf.com/reader/full/fundamturbc 50/50