Sei sulla pagina 1di 16

EJERCICIOS EN PASCAL 1.- rea de un tringulo (Entrada y salida estndar - Pascal) 1.

- Escribir un programa (en Pascal) que: 1) Pida por teclado la base (dato real) de un tringulo. 2) Pida por teclado la altura (dato real) de un tringulo. 3) Calcule el rea del tringulo. 4) Muestre por pantalla el resultado (dato real). En pantalla:
PROGRAM Area_triangulo; VAR Altura, Area, Base : Real; BEGIN ClrScr; WRITE( 'Introduzca base: ' ); READLN( Base ); WRITE( 'Introduzca altura: ' ); READLN( Altura ); Area := Base * Altura / 2; WRITE( 'El area del triangulo es: ', Area:0:2 ); END.

Una segunda solucin es:


PROGRAM Area_triangulo; USES Crt; VAR Altura, Base : Real; BEGIN ClrScr; WRITE( 'Introduzca base: ' ); READLN( Base ); WRITE( 'Introduzca altura: ' ); READLN( Altura ); WRITE('El area del triangulo es: ', Base * Altura / 2:0:2 ); END.

2.- Escribir un programa en Pascal que admita por teclado un ngulo en grados, calcule su tangente y la muestre por pantalla en notacin decimal con siete caracteres y dos decimales. Precondicin: angGra " 90 + k*180
PROGRAM Tangente; CONST Pi=3.1416; VAR angGra, angRad,tan: real; BEGIN WRITE ('Escribe el ngulo en grados ( ngulo<>90+k*180): '); READLN(angGra); angRad:=angGra * Pi / 180; tan:= sin(angRad) / cos (angRad) WRITE('El valor de la tangente es: '); WRITEln(tan:7:2) END.

3.- Cambio de signo (Alternativa simple - Pascal) Escribir un programa (en Pascal) que: 1) Pida por teclado un nmero (dato real). 2) Muestre por pantalla el nmero introducido, pero, cambiado de signo y, slo en el caso de que el nmero no sea mayor o igual que cero.
PROGRAM Cambio_de_signo; USES Crt; VAR Numero : Real; BEGIN ClrScr; WRITE( 'Introduzca numero (real): ' ); READLN( Numero ); IF ( Numero < 0 ) then WRITE( -Numero ) END.

4.- Divisin entera (Entrada y salida estndar - Pascal) Escribir un programa (en Pascal) que: 1) Pida por teclado dos nmeros (datos enteros). (Divisor y Dividendo) 2) Muestre por pantalla el resultado de realizar la divisin entera del primer nmero introducido por el usuario entre el segundo, y el resto.
PROGRAM Division_entera; USES Crt; VAR Dividendo, Divisor, Cociente, Resto : Integer; BEGIN ClrScr; WRITE( 'Introduzca dividendo (entero): ' ); READLN( Dividendo ); WRITE( 'Introduzca divisor (entero): ' ); READLN( Divisor ); Cociente := Dividendo div Divisor; Resto := Dividendo mod Divisor; WRITE(Dividendo, ' div ', Divisor, ' = ', Cociente, ' ( Resto = ', Resto, ' )' ); END.

Una segunda solucin es:


PROGRAM Division_entera; USES Crt; VAR Dividendo, Divisor : Integer; BEGIN ClrScr; WRITE( 'Introduzca dividendo (entero): ' ); READLN( Dividendo ); WRITE( 'Introduzca divisor (entero): ' ); READLN( Divisor ); WRITE( Dividendo, ' div ', Divisor, ' = ', Dividendo div Divisor, ' ( Resto = ', Dividendo mod Divisor, ' )' ); END.

5.- Escribir un programa que convierta un nmero de segundos en su equivalente en minutos y segundos.
PROGRAM Convertir; USES Crt; VAR seg0,seg,min: Integer; BEGIN ClrScr; WRITE('Introduzca los segundos: '); READLN(seg0); WRITELN; min := seg0 div 60; seg := seg0 mod 60; WRITE(seg0,' segundos son ',min,' minutos y ',seg,' segundos.'); END.

Una segunda solucin es:

PROGRAM Convertir; USES Crt; VAR iniseg, segundos, minutos: integer; BEGIN ClrScr; WRITE('Dime un nmero de segundos:'); READLN(iniseg); minutos := iniseg div 60; segundos := iniseg mod 60; WRITELNn(iniseg,' segundos son ',minutos,' minutos y ',segundos,' segundos.'); READkey END.

6.- Media aritmtica (Alternativa simple - Pascal) Escribir un programa (en Pascal) que: 1) Pida por teclado dos nmeros (datos enteros). (Numero 1 y Numero 2) 2) Muestre por pantalla la media aritmtica de los nmeros introducidos, pero, slo en el caso de que ambos nmeros sean mayores que cero.
PROGRAM Media; USES Crt; VAR A, B : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); IF ( A > 0 ) and ( B > 0 ) then WRITE( ( A + B ) / 2 ) END.

7.- Escribir un programa en Pascal que calcule el importe de una factura sabiendo que el IVA a aplicar es del 12% y que si el importe bruto de la factura es superior a 50.000 pts se debe realizar un descuento del 5%.
PROGRAM Impuesto; USES CRT; VAR i_bruto, i_neto, importe:REAL; CONST IVA=0.12; BEGIN ClrScr; WRITE ('Escriba el importe bruto: '); READLN (i_bruto); WRITELN (''); i_bruto:= i_bruto + (IVA * i_bruto); IF i_bruto > 50000 THEN BEGIN i_neto:= i_bruto - (i_bruto * 0.05); WRITE ('El importe neto con descuento del 5% es de: ',i_neto:5:2,' pts') END ELSE BEGIN i_neto:= i_bruto; WRITE ('El importe bruto sin descuento es de: ',i_neto:5:2,' pts.'); END; END.

Una segunda solucin es:


PROGRAM Impuesto; USES CRT; VAR imp_bruto:REAL; BEGIN ClrScr; WRITE('Importe bruto -> '); READLN(imp_bruto); IF imp_bruto <= 50000 THEN BEGIN WRITE('Importe neto: '); WRITELN(imp_bruto+(imp_bruto*0.12):9:2); END ELSE BEGIN WRITE('Importe neto -> '); imp_bruto:=imp_bruto-(imp_bruto*0.05); WRITELN(imp_bruto+(imp_bruto*0.12):9:2); END; END.

8.- Escribir un programa en Pascal que calcule el rea y el volumen de un cilindro:


PROGRAM Area_cilindro; USES CRT; VAR radio, altura:REAL; VAR area, volumen:REAL; BEGIN ClrScr; radio:=3; altura:=4; area:= 2 * (3.1416 * sqr(radio)) + ((2 * 3.1416 * radio) * altura); volumen:= (3.1416 * sqr(radio)) * altura; WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2); WRITE ('EL VOLUMEN ES: '); WRITE (volumen:6:2); END.

Una segunda solucin es:


PROGRAM Area_cilindro; USES CRT; VAR radio, altura:REAL; VAR area, volumen:REAL; BEGIN ClrScr; WRITELN ('PARA CALCULAR EL AREA Y VOLUMEN DE UN CILINDRO: '); WRITELN (' '); WRITE ('ESCRIBA EL RADIO- '); READLN (radio); WRITE ('ESCRIBA LA ALTURA- '); READLN (altura); WRITELN (' '); area:= 2 * (3.1416 * sqr(radio)) + ((2 * 3.1416 * radio) * altura); volumen:= (3.1416 * sqr(radio)) * altura; WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2); WRITE ('EL VOLUMEN ES: '); WRITE (volumen:6:2); END.

9.- Cubos de nmeros pares (Repetitiva para - Pascal) (FOR) Escribir un programa (en Pascal) que muestre por pantalla los cinco primeros nmeros naturales pares elevados al cubo.
PROGRAM Cubos; USES Crt; VAR Numero, Resultado : Integer; BEGIN ClrScr; for Numero := 1 to 5 do BEGIN Resultado := Numero * 2; WRITE( Resultado * Resultado * Resultado, ' ' ) END END.

10.- Escribir un programa en Pascal que lea desde teclado el importe bruto de una factura y determine el importe neto segn los siguientes criterios. Importe bruto menor de 20.000 -> sin descuento Importe bruto mayor de 20.000 -> 15% de descuento
PROGRAM Factura; USES CRT; VAR importe_bruto:REAL; VAR descuento, total:REAL; BEGIN ClrScr; WRITE ('Indique el importe de su factura para ver '); WRITELN ('si le "descontamos" algo'); WRITELN (''); READLN (importe_bruto); WRITELN (''); descuento:=importe_bruto * 0.15; IF importe_bruto > 20000 THEN WRITELN ('SE MERECE UN DESCUENTO DE: ',descuento:5:2, ' PTS'); total:=importe_bruto - descuento; WRITELN ('El total es de la factura es de: ',total:5:2,' pts') ELSE WRITE ('CON ESE DINERO NO SE MERECE UN DESCUENTO') END.

Una segunda solucin es:


PROGRAM Factura; USES CRT; VAR imp_bru,imp_net:REAL; BEGIN ClrScr; WRITE('Importe Bruto -> '); READLN(imp_bru); IF imp_bru <= 20000 THEN imp_net:=imp_bru ELSE imp_net:=imp_bru-(0.15*imp_bru); WRITE('Importe a pagar: '); WRITE(imp_net:5:2) END.

11.- Suma de dos nmeros (Alternativa doble - Pascal) Escribir un programa (en Pascal) que: 1) Pida por teclado dos nmeros (datos enteros). (Numero 1 y Numero 2) 2) Calcule la suma de los nmeros introducidos por el usuario. 3) Muestre por pantalla:

"LA SUMA S ES MAYOR QUE CERO.", en el caso de que s lo sea. "LA SUMA NO ES MAYOR QUE CERO.", en el caso de que no lo sea.

PROGRAM Suma; USES Crt; VAR A, B, Suma : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); Suma := A + B; IF ( Suma > 0 ) then WRITE( 'LA SUMA SI ES MAYOR QUE CERO.' ) ELSE WRITE( 'LA SUMA NO ES MAYOR QUE CERO.' ); END.

Una segunda solucin es:

PROGRAM Suma; USES Crt; VAR A, B : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); IF ( A + B > 0 ) then WRITE( 'LA SUMA SI ES MAYOR QUE CERO.' ) ELSE WRITE( 'LA SUMA NO ES MAYOR QUE CERO.' ); END.

12.- Nmero intermedio (Alternativa doble - Pascal) Escribir un programa (en Pascal) que: 1) Pida por teclado tres nmeros (datos enteros): <numero1>, <numero2> y <numero3>. 2) Muestre por pantalla: EL NMERO MAYOR ES:
PROGRAM Num_intermedio; USES Crt; VAR N1, N2, N3 : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( N1 ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( N2 ); WRITE( 'Introduzca tercer numero (entero): ' ); READLN( N3 ); IF ( N2 < N3 ) and ( N2 > N1 ) then WRITE( N2, ' SI ES MENOR QUE ', N3, ' Y MAYOR QUE ', N1 ) ELSE WRITE( N2, ' NO ES MENOR QUE ', N3, ' Y MAYOR QUE ', N1 ); END.

Una segunda solucin es:

PROGRAM Num_intermedio; USES Crt; VAR N1, N2, N3 : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( N1 ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( N2 ); WRITE( 'Introduzca tercer numero (entero): ' ); READLN( N3 ); WRITE( N2 ); IF ( N2 < N3 ) and ( N2 > N1 ) then WRITE( ' SI ' ) ELSE WRITE( ' NO ' ); WRITE( 'ES MENOR QUE ', N3, ' Y MAYOR QUE ', N1 ); END.

13.- Suma o multiplicacin de dos nmeros (Anidamiento de alternativas - Pascal) Escribir un programa (en Pascal) que: 1) Pida por teclado dos nmeros (datos enteros). 2) Calcule la suma y multiplicacin de ambos nmeros. 3) Muestre por pantalla: "La suma es mayor.", en caso de que sea mayor que la multiplicacin de ambos nmeros. "La multiplicacin es mayor.", en caso de que sea mayor que la suma de ambos nmeros. "La suma y multiplicacin son iguales.", en caso de que as sea.
PROGRAM Suma_multiplicacion; USES Crt; VAR A, B, Suma, Multiplicacin : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); Suma := A + B; Multiplicacion := A * B; IF ( Suma > Multiplicacion ) then WRITE( 'LA SUMA ES MAYOR.' ) ELSE { Inicio del anidamiento } IF ( Multiplicacion > Suma ) then WRITE( 'LA MULTIPLICACION ES MAYOR.' ) ELSE WRITE( 'LA SUMA Y MULTIPLICACION SON IGUALES.' ); { Fin del anidamiento } END.

Una segunda solucin es:


PROGRAM Suma_multiplicacion; USES Crt; VAR A, B : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); IF ( A + B > A * B ) then WRITE( 'LA SUMA ES MAYOR.' ) ELSE { Inicio del anidamiento } IF ( A * B > A + B ) then WRITE( 'LA MULTIPLICACION ES MAYOR.' ) ELSE WRITE( 'LA SUMA Y MULTIPLICACION SON IGUALES.' ); { Fin del anidamiento } END.

ESTRUCTURA WHILE
1.- Cantidad y suma de nmeros enteros (Anidamiento de repetitivas y alternativas Pascal). (WHILE) Escribir un programa (en Pascal) que: 1) Pida por teclado un nmero (dato entero). 2) Repita el paso 1, mientras que, el nmero introducido sea distinto de cero. En caso de ser cero MENSAJE: EL NUMERO DEBE SER DIFERENTE DE CERO) 3) Muestre cuntos nmeros mayores que cero han sido introducidos por el usuario, as como, la suma de todos ellos.
PROGRAM Suma_de_enteros; USES Crt; VAR Numero, Contador, Suma : Integer; BEGIN ClrScr; WRITE( 'Introduzca un numero entero: ' ); READLN( Numero ); Contador := 0; Suma := 0; while ( Numero <> 0 ) do BEGIN IF ( Numero > 0 ) then BEGIN Contador := Contador + 1; Suma := Suma + Numero END; WRITE( 'Introduzca un numero entero: ' ); READLN( Numero ) END; WRITELn( 'Ha introducido ', Contador, ' numero(s) mayor(es) que cero.' ); WRITE( 'La suma es ', Suma ); END.

10

2.- Sean 10 alumnos de la seccin 3N6IS y dadas 5 notas por alumno de la materia programacin. Calcular y mostrar: El promedio de la materia por alumno. El promedio de la seccin.
PROGRAM NOTAS1; USES crt; VAR alumnos,materia,notas: integer; promedioalumno,promedioseccion,sumaseccion,suma,nota: Real; nombre:string[30]; BEGIN alumnos:=1; sumaseccion:=0; WHILE alumnos <=10 do writeln('Introduzca el nombre del alumno: '); readln(nombre); suma:=0; notas:=1; WHILE notas <=5 do writeln('Introduzca las 5 notas: '); readln(nota); suma:=suma+nota; notas:=notas+1; END; promedioalumno:=suma/5; sumaseccion:=sumaseccion+promedioalumno; alumnos:=alumnos+1; WRITELN('El nombre del alumnos es:', nombre); WRITELN('El promedio del alumno es:', promedioalumno:2:2); WRITELN; promedioseccion:=sumaseccion/2; WRITELN('El Promedio de la seccion es: ',promedioseccion:2:2); READKEY END.

3.- Escribir un programa en Pascal que calcule el factorial de un nmero.


PROGRAM Factorial; USES CRT; VAR factorial, x, num, y:REAL; BEGIN ClrScr; WRITE ('Introduzca un numero para hacer su factorial: '); READLN (num); WRITELN; x:=1; WHILE num > 1 DO x:=x * num; num:=num - 1; WRITELN (x); END.

11

ESTRUCTURA REPEAT
1.- Mostrar y sumar nmeros enteros (Anidamiento de repetitivas y alternativas Pascal) Escribir un programa (en Pascal) que: 1) Pida por teclado dos nmeros (datos enteros). 2) En el caso de que el primer nmero introducido por el usuario, no sea mayor que cero y el segundo menor que cero, muestre por pantalla el mensaje:

"ERROR: El primer nmero debe ser mayor que cero y el segundo menor que cero."

En caso contrario, muestre por pantalla los nmeros que hay entre los dos nmeros introducidos por el usuario, ambos inclusive, as como, la suma de todos ellos.

PROGRAM Suma_de_enteros; USES Crt; VAR Mayor, Menor, Suma : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero entero: ' ); READLN( Mayor ); WRITE( 'Introduzca segundo numero entero: ' ); READLN( Menor ); Suma := 0; IF ( Mayor > 0 ) and ( Menor < 0 ) then BEGIN repeat WRITE( Menor, ' ' ); Suma := Suma + Menor; Menor := Menor + 1 until Menor > Mayor; WRITELn; WRITE( 'La suma es ', Suma ); END ELSE WRITE( 'ERROR: El primer numero debe ser mayor que cero y el segundo menor que cero.' ); END.

12

2.- Escribir un programa en Pascal que genere la tabla de multiplicar de un nmero introducido por el teclado.
PROGRAM TABLA_MULTIPLICAR; USES CRT; VAR tabla, x, num:INTEGER; BEGIN ClrScr; WRITE ('Introduzca un numero para hacer su tabla de multiplicar: '); READLN (num); WRITELN; REPEAT WRITELN (tabla); x:= x + 1; tabla:= num * x; UNTIL x=11; END.

3.- Escribir un programa en Pascal que calcule la media de 5 nmeros introducidos por el teclado.
PROGRAM Media; USES CRT; VAR i:INTEGER; VAR num,suma,media:REAL; BEGIN ClrScr; i:=0; REPEAT WRITE('Introduzca un numero: '); READLN(num); suma:=suma+num; i:=i+1; UNTIL i=5; media:= suma/i WRITE('La media es: ',media:5:2); END.

13

ESTRUCTURA FOR
1.- Escribir un programa en Pascal que calcule la suma de los cuadrados de los 100 primeros nmeros enteros. (FOR)

PROGRAM Suma_de_cuadrados; USES CRT; VAR i:INTEGER; VAR sumacuad:Real; BEGIN ClrScr; FOR i:=1 TO 100 DO sumacuad:=sumacuad+sqr(i); WRITE('Suma de Cuadrados (1-100) ---> '); WRITE(sumacuad); END.

Una segunda solucin es:


PROGRAM Suma_de_cuadrados; USES CRT; VAR x:INTEGER; VAR suma:REAL; BEGIN ClrScr; FOR x:=1 TO 100 DO suma:= suma + (sqr(x)); WRITE (suma); END.

14

2.- Escribir un programa en Pascal que lea 4 datos, calcule y visualice en pantalla su producto, suma y media aritmtica. (FOR)
PROGRAM producto_suma; USES CRT; VAR i:INTEGER; VAR dato,producto,suma,media:REAL; BEGIN ClrScr; producto:=1; suma:=0; FOR i:=1 TO 4 DO BEGIN WRITE('Dato '); WRITE(i); WRITE('-> '); READLN(dato); producto:=producto*dato; suma:=suma+dato; END; media:=suma/i; WRITE('Producto: '); WRITELN(producto:5:2); WRITE('Suma: '); WRITELN(suma:5:2); WRITE('Media: '); WRITELN(media:5:2); END.

Una segunda solucin es:


PROGRAM producto_suma; USES CRT; VAR a,b,c,d:REAL; VAR producto,suma,media:REAL; BEGIN ClrScr; WRITELN('Introduzca 4 datos para calcular las soluciones:'); WRITELN (''); WRITE ('a: '); READLN (a); WRITE ('b: '); READLN (b); WRITE ('c: '); READLN (c); WRITE ('d: '); READLN (d); WRITELN (''); producto:= a * b * c * d; suma:= a + b + c + d; media:= suma / 2; WRITELN ('El valor del producto de los numeros es: ', producto:10:2); WRITELN ('El valor de la suma de los numeros es: ',suma:10:2); WRITELN ('El valor de la media de los numero ses: ',media:10:2); END.

15

3.- Escribir un programa en Pascal que calcule, independientemente, la suma y la media de los nmeros pares e impares comprendidos entre 1 y 200.
PROGRAM Par_impar; USES CRT; VAR media_p, media_i:REAL; VAR suma_p, suma_i:LONGINT; VAR i, total_p, total_i:LONGINT; BEGIN ClrScr; FOR i:=1 TO 200 DO IF (i mod 2)=0 THEN suma_p:=suma_p + i; total_p:=total_p + 1; ELSE suma_i:=suma_i + i; total_i:=total_i + 1; END; END; media_i:= suma_i / total_i; media_p:= suma_p / total_p; WRITELN ('La suma de los impares es: ',suma_i); WRITELN ('La suma de los pares es : ',suma_p); WRITELN ('La media de los impares es: ',media_i:5:2); WRITELN ('La media de los pares es: ',media_p:5:2); END.

Una segunda solucin es:


PROGRAM Par_impar; USES CRT; VAR i,conpar,conimp,sumapar,sumaimp:INTEGER; BEGIN ClrScr; sumapar:=0; sumaimp:=0; conpar:=0; conimp:=0; FOR i:=1 TO 200 DO BEGIN IF (i mod 2) = 0 THEN sumapar:=sumapar+i; conpar:=conpar+1; ELSE sumaimp:=sumaimp+i; conimp:=conimp+1; END; END; WRITE('Suma pares: '); WRITELN(sumapar:7); WRITE('Media pares: '); WRITELN(sumapar div conpar:7); WRITE('Suma impares: '); WRITELN(sumaimp:7); WRITE('Media impares: '); WRITELN(sumaimp div conimp:7); END.

16

Potrebbero piacerti anche