P. 1
Turbo Pascal Repetitivas

Turbo Pascal Repetitivas

|Views: 17|Likes:
Publicado porJoe Orlando

More info:

Published by: Joe Orlando on Mar 20, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

06/29/2014

pdf

text

original

ESTRUCTURAS REPETITIVAS

Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad específica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa). En PASCAL existen tres estructuras de repetición que son las estructuras: FOR DO, REPEAT - UNTIL, Y WHILE - DO. La primera de ellas, la estructura FOR - DO, tiene la siguiente sintaxis: FOR contador := principio TO final DO STEP incremento BEGIN instrucción_1; instrucción_2; … END; donde “contador” es una variable que puede almacenar un dato ordinal, “principio” es el valor que se le asigna a esa variable antes de realizar la acción, “final” es el valor máximo que puede alcanzar la variable “contador” antes de finalizar la acción. La variable “incremento” es el valor que se va a suma a la variable “contador” cada vez que se entra al ciclo. Si se va a ejecutar una sola instrucción dentro de la estructura, se puede omitir las instrucciones BEGIN y END; si el contador es entero y se desea incrementar de uno en uno, entonces se puede omitir la sentencia STEP y la variable de incremento. Existe también la opción equivalente FOR identificador := principio DOWNTO final DO BEGIN instrucción _1; instrucción _2; …

3

La limitación básica de la estructura For-Do es que la acción que implícitamente se realiza cada vez es simplemente el aumento o decremento de una variable ordinal. en la estructura WHILE . hay que tener presente que las variables ordinales no son solamente los Integer. Su sintaxis es: WHILE (condición) DO BEGIN instrucción_1 instrucción_2.DO se realiza la comprobación de la condición que ha de finalizar la repetición antes de ejecutarse la acción. … END. pero hay que ser extremadamente cuidadoso porque de lo contrario se puede generar un bucle infinito. La variable que se utiliza como contador en la estructura For-Do puede modificarse también en la acción que se repite. . en la que el valor del identificador se decrementa en uno cada vez que se realiza la acción. No obstante. Las acciones se realizan al menos una vez porque la verificación de la condición se hace después que las acciones. donde la condición es una expresión cuyo resultado es un dato Boolean.DO pero más versátil es la REPEAT UNTIL. Una estructura muy similar a la FOR .ESTRUCTURAS REPETITIVAS 2 END. Sin embargo. y las instrucciones se repetirán mientras la condición se evalúe verdadera. Su sintaxis es: REPEAT instrucción_1 instrucción_2. … UNTIL (condición) En esta estructura se especifica que se repita el conjunto de acciones situado entre el REPEAT y el UNTIL mientras que no sea verdadero el valor de la condición.

Readln ( Resp ). Writeln ( ‘¿ Existen más números en la lista (s / n) ? ’ ). Si se trata del programa principal. producirá la interrupción de la ejecución del programa. Readln ( Resp ) end. While Numero >= 0 do begin Suma := Suma + Numero. Valor Centinela: un centinela es un valor especial utilizado para señalar el final de una lista de datos. Suma := 0. El valor elegido debe ser totalmente distinto de los posibles valores de la lista para que se pueda utilizar para señalar el final de la lista. 2.ESTRUCTURAS REPETITIVAS 3 Cuando se ha de programar un procedimiento repetitivo. Suma := 0. si se considerará la función EXIT cuyo efecto es interrumpir la ejecución del bloque en el que se encuentra. la elección de una de las tres estructuras se hará siempre considerando la claridad y facilidad de programación. Suma := Suma + Numero. while ( ( Resp = ‘s’ ) or ( Resp = ‘S’ ) ) do begin Writeln ( ‘ Introduzca un número: ‘ ). Writeln ( ‘ ¿ Existen más números (s / n) ? ’ ). Uso de banderas o interruptores: una bandera o interruptor (flag) es una variable lógica que se utiliza para conservar el . • Bucles controlados por condición 1. Readln ( Numero ). Solicitar al usuario la continuación del bucle: este método consiste simplemente en pedir al usuario si existena más entradas. Read ( Numero ). En PASCAL también existe la sentencia de control no estructurado GOTO. Sin embargo. Read ( Numero ) end 3. pero no se considerará pues en este curso se pretende que el alumno ejercite la programación estructurada.

ESTRUCTURAS REPETITIVAS 4 estado (verdadero o falso) de una condición. El valor del interruptor debe inicializarse antes de comenzar el bucle y debe cambiar su estado (Valor) dentro del cuerpo del bucle para preparar la siguiente iteración. .

READLN (respuesta). WRITELN (''). if N > 0 then Positivo := true end Ejercicios prácticos de tipo repetitivo.ESTRUCTURAS REPETITIVAS 5 Positivo := false. WRITELN (' '). T1C. IF UPCASE(respuesta)='F' THEN BEGIN WRITELN ('Introduzca los grados para pasar a Fahrenheit: '). Fahrenheit:= ((9 * Celsius) / 5) + 32. READLN (Celsius). BEGIN CLRSCR.'). UNTIL (respuesta='C') OR (respuesta='F') OR (respuesta='c') OR (respuesta='f'). respuesta:CHAR.Escribir un programa en Pascal que calcula el equivalente en grados Fahrenheit o Celsius de las siguientes temperaturas. .' grados Fahrenheit. VAR Fahrenheit. Readln ( N ).T2F:REAL. while not Positivo do begin Write ( ‘ Introduzca un entero mayor que cero ‘ ). REPEAT BEGIN WRITE ('¿DESEA PASARLO A FAHRENHEIT O CELSIUS? F/C: '). 1. WRITE ('Celsius: '). WRITE (Fahrenheit:5:2. USES CRT. END. Temperatura 1 = 32º Fahrenheit Temperatura 2 = 10 º Celsius {Regla de 3: Celsius / 5 = (Fahrenheit – 32) 9} PROGRAM EJER1. Celsius:REAL.

READKEY. USES CRT. 3. END. 2. PROGRAM EJER3. WHILE X <= 10 DO BEGIN WRITELN (x). BEGIN CLRSCR.' grados Celsius.'). END. VAR x:INTEGER. .Escribir un programa en Pascal que realice un bucle con Repeat y muestre en pantalla del 1 al 10.32) / 9) * 5. Celsius:= ((Fahrenheit . WRITE (Celsius:5:2. READKEY. REPEAT WRITELN (x). END. x:=x+1. USES CRT. END. READLN (Fahrenheit).ESTRUCTURAS REPETITIVAS 6 END ELSE IF UPCASE (respuesta)='C' THEN BEGIN WRITELN ('Introduzca los grados para pasar a Celsius: '). PROGRAM EJER2. x:=0. BEGIN CLRSCR. VAR x:INTEGER. x:=0.Escribir un programa en Pascal que realice un bucle con WHILE y muestre en pantalla del 1 al 10. WRITE ('Fahrenheit: ').

num:=2.Escribir un programa en Pascal que realice un bucle con FOR y muestre en pantalla del 1 al 10. VAR num:INTEGER. BEGIN CLRSCR. num:= num + 2. USES CRT. 5. VAR x:INTEGER. READKEY. READKEY. END. REPEAT WRITELN (num). USES . UNTIL x=10.ESTRUCTURAS REPETITIVAS 7 x:=x+1.Escribir un programa en Pascal que visualice en pantalla los números pares entre 1 y 25. BEGIN CLRSCR. USES CRT. END. 4. END. PROGRAM EJER5. READKEY. UNTIL num= 26. FOR x:=0 TO 10 DO WRITELN(x). PROGRAM EJER5B. PROGRAM EJER4.

END. END. PROGRAM EJER6. USES CRT. 6. FOR sem:= 1 TO 100 DO BEGIN . VAR sem:INTEGER. sem:=sem + 1. READKEY.Escribir un programa en Pascal que visualice en pantalla los números múltiplos de 5 comprendidos entre 1 y 100. BEGIN CLRSCR. BEGIN CLRSCR. WHILE sem <= 25 DO BEGIN IF sem mod 2=0 THEN WRITELN(sem).ESTRUCTURAS REPETITIVAS 8 CRT. sem:=1. num:= num + 5. END. END. num:= 5. PROGRAM EJER6B. READKEY. USES CRT. BEGIN CLRSCR. VAR num:INTEGER. WHILE num <= 100 DO BEGIN WRITELN (num). VAR sem:INTEGER.

num:INTEGER.ESTRUCTURAS REPETITIVAS 9 IF sem mod 5=0 THEN WRITELN(sem). END. Escribir un programa en Pascal que sume los números comprendidos entre 1 PROGRAM EJER7. END. BEGIN CLRSCR. tabla:= num * x. READLN (num). num:=1. x:= x + num.Escribir un programa en Pascal que genere la tabla de multiplicar de un número introducido por el teclado. READKEY. USES CRT. REPEAT WRITELN (tabla). READKEY. .y 10. num:= num + 1. x:= x + 1. x:=1. USES CRT. WRITELN (''). VAR num. WHILE num <= 10 DO BEGIN WRITELN (x). 7. BEGIN CLRSCR. END. VAR tabla. x. WRITE ('Introduzca un numero para hacer su tabla de multiplicar: '). x:INTEGER. END. 8. PROGRAM EJER8.

WRITELN(num*sem). PROGRAM EJER9. USES CRT. UNTIL respuesta='N'. END.ESTRUCTURAS REPETITIVAS 10 UNTIL x=11.Escribir un programa en Pascal que realice la pregunta ¿Desea continuar S/N? y que no deje de hacerla hasta que el usuario teclee N. VAR respuesta:CHAR. VAR num. END. READKEY. PROGRAM EJER9B. USES CRT. FOR sem:=1 TO 10 DO BEGIN WRITE(num). READLN(num). END. READLN (respuesta). 9. PROGRAM EJER8B. VAR respuesta:STRING. USES CRT. WRITE(' = '). END. REPEAT WRITELN ('DESEA CONTINUAR: S/N '). BEGIN .sem:INTEGER. WRITE(sem). BEGIN CLRSCR. READKEY. {Pascal distingue entre ‘N’ y ‘n’} READKEY. WRITE(' * '). WRITE('Introduzca un numero entero: '). BEGIN CLRSCR.

WHILE UPCASE(resp)='S' DO BEGIN WRITE('Desea continuar? '). IF cap_ini < 0 THEN BEGIN WRITE ('No se puede incluir un capital negativo'). VAR tiempo:REAL. END. WRITELN ('').Escribir un programa en Pascal que calcule cuantos años tarda en duplicarse un capital depositado al 5% de interés anual PROGRAM EJER10. READLN (respuesta). resp:='S'. END. USES CRT. END. READKEY. USES CRT. CONST interes = 0. con un interes del 5%: '). VAR resp:CHAR. READKEY. PROGRAM EJER9C. REPEAT WRITELN ('DESEA CONTINUAR: SI/NO '). EXIT. 10. cap_ini. WRITE ('Intruduzca el capital para calcular cuanto tardara ').05. READLN (cap_ini).cap_fin:REAL. UNTIL respuesta='NO'.. BEGIN CLRSCR.ESTRUCTURAS REPETITIVAS 11 CLRSCR. . BEGIN CLRSCR. READLN(resp). WRITE ('en duplicarse.

WHILE cap_fin < (cap_ini*2) DO BEGIN cap_fin:=cap_fin+(cap_fin*interes). REPEAT cap_fin:=cap_fin + (cap_fin * interes). PROGRAM EJER10B. 11. CONST INTERES=0. num_year:INTEGER. WRITE('Capital inicial -----: '). END. WRITELN(cap_fin:5:2). WRITE('Capital inicial -----: ').cap_fin:REAL.Escribir un programa que calcule la suma de los números hasta un número dado (introducido por el usuario).cap_fin:5:2. READKEY. WRITE('Capital duplicado en '). VAR cap_ini. WRITELN ('Capital final: '. USES CRT. tiempo:= tiempo + 1. READKEY. BEGIN CLRSCR. PROGRAM EJER11. WRITE(num_year). WRITE(' años').. USES CRT. END. tiempo:=0.tiempo:3:0. VAR . END.ESTRUCTURAS REPETITIVAS 12 END. WRITELN ('Tardara'. cap_fin:= cap_ini. READLN(cap_ini).05. WRITE('Capital final -------: '). num_year:=num_year + 1. cap_fin:=cap_ini.' pts'). UNTIL cap_fin > (cap_ini * 2). num_year:=0. WRITELN(cap_ini:5:2).' años en duplicarse').

WRITE('Suma '). 12.. PROGRAM EJER12.num:INTEGER. y. num:INTEGER. BEGIN {Este programa no finaliza hasta que se escribe un numero mayor a 100} CLRSCR. num:=num . BEGIN CLRSCR.ESTRUCTURAS REPETITIVAS 13 x. BEGIN CLRSCR. x:=0. READKEY. WRITE ('Este programa calcula la suma de los numeros hasta uno '). USES CRT. END. READLN (num). READLN(num). WRITE('Introduzca un numero -> '). READKEY. WRITE ('introducido por el usuario: '). . USES CRT.Escribir un programa que pida un número y si el que se introduce por el teclado es menor de 100 que vuelva a solicitarlo. x:= x + num. WRITE(suma). WRITE('---->'). VAR i. END. WRITE(num). VAR num:INTEGER. WRITE('0-'). WHILE num >= 0 DO BEGIN WRITELN (x).1. FOR i:=0 TO num DO suma:=suma+ i. WRITELN (''). suma:LONGINT. END. PROGRAM EJER11B.

END.Escribir un programa en Pascal que calcule el factorial de un número. PROGRAM EJER13. END. END. WHILE num<=100 DO BEGIN WRITE('Introduzca un numero -> '). USES CRT. x:=1. READLN(num). VAR num:INTEGER. BEGIN CLRSCR.ESTRUCTURAS REPETITIVAS 14 REPEAT WRITELN ('Introduzca un numero: '). READKEY. {Este programa hace el factorial de un numero} USES CRT. . READLN (num). END. 13. UNTIL num > 100. num:=num . READLN(num). READKEY. READKEY. READLN (num). END. x. WRITE ('Introduzca un numero para hacer su factorial: ').1. num. y:REAL. WRITELN (''). WRITE('Introduzca un numero -> '). PROGRAM EJER12B. WHILE num > 1 DO BEGIN x:=x * num. WRITELN (x). BEGIN CLRSCR. VAR factorial.

15. READLN(num). 14.num. READKEY. USES CRT. END. READKEY.. suma:=suma+num. WRITE(temp). Un número es primo si sólo es divisible por sí mismo y por la unidad. UNTIL i=5. . BEGIN CLRSCR. temp:=num. VAR i:INTEGER. i:=0. REPEAT WRITE('Introduzca un numero: '). END. fac:=1. WHILE num>=1 DO BEGIN fac:=fac*num. WRITE('Introduzca un numero -> '). VAR temp. temp:=num. num. BEGIN CLRSCR.Escribir un programa en Pascal que detecte si un número es primo o no. END. WRITE('La media es: ').fac:LONGINT. num:=num-1. WRITELN(suma/i:5:2).. PROGRAM EJER14. i:=i+1. USES CRT. WRITE('El factorial de '). READLN(num).ESTRUCTURAS REPETITIVAS 15 PROGRAM EJER13B. WRITE(fac).suma:REAL.Escribir un programa en Pascal que calcule la media de 5 números introducidos por el teclado. WRITE(' es ').

{Variable que usamos dentro del bucle} BEGIN {p. {Almacenamos la raiz del numero.4. {par va a ser True cuando el numero sea par} If num = 2 THEN Write('El 2 es primo. Todos los primos son impares.3. hasta el propio número. excepto el 2.17.3. exceptuando el 1 y ellos mismos. {Guardamos el valor de la raiz del numero} noesprimo: Boolean. 9.p} CLRSCR.7. Program primo15 (INPUT. noesprimo toma el valor true. excepto el 2. etc.ESTRUCTURAS REPETITIVAS 16 Ejemplo: 2.') Else if par THEN Write('Todo numero par no es primo. Var num: Word.} raiznum: Integer. redondeada} FOR i := raiznum To (num . {Nos sirve para marcar los numeros que son pares} i: Byte. es divisible por 1. Repeat Write('Introduzca un numero entero para ver si es primo: '). UNTIL num > 1.') Else BEGIN raiznum := round(sqrt(num)). USES Crt..1) DO BEGIN If (num mod i) = 0 THEN noesprimo := true END. es el unico numero par que lo es.19 son números primos 9 no es número primo. 3 El algoritmo para resolver este problema pasa por dividir sucesivamente el número estudiado por 2.OUTPUT). {Pedimos un numero y no lo aceptamos hasta que sea > 1} par := num mod 2 = 0. {Variable para decir que un numero no es primo} par: Boolean. Read(num). Si algun numero divide al numero. {Los numeros primos son enteros mayores que 1 sin divisores enteros positivos.} .11. {Comprobamos la divisibilidad de los numeros superiores a la raiz cuadrada del numero introducido. Solo es necesario comprobar la divisibilidad por numeros superiores a la raiz cuadrada del numero.4. Writeln.

flag:=0.p} PROGRAM EJER15B. END. FOR i:=2 TO (num-1) DO BEGIN IF (num mod i)=0 THEN flag:=1. END. READKEY. END ELSE BEGIN WRITE(num).flag:INTEGER. BEGIN CLRSCR. READLN(num). READKEY. WRITE(' no es un numero primo'). IF flag=1 THEN BEGIN WRITE(num). END. .ESTRUCTURAS REPETITIVAS 17 If noesprimo THEN Write(num. VAR i.' no es un numero primo') Else Write(num. {p. WRITE('Introduzca un numero -> '). END.num.' es un numero primo'). USES CRT. {Mostramos por pantalla si el numero es primo o no} END. WRITE(' es un numero primo').

termina en 25 como X.Generar la tabla de multiplicar del 1 hasta el 10.Leer 100 números enteros y posteriormente calcule y muestre lo siguiente: • Cantidad de números positivos..Mostrar los números enteros que se encuentran dentro del intervalo formado por dos números positivos.. salario básico por hora. el total de salarios pagados a todos los empleados y el promedio salarial por empleado.. su cuadrado es 25.Dado cualquier número entero positivo X.. teniendo en cuenta lo siguiente: • Los números positivos deben ser datos de entrada (no importa el orden). 4. 7.. Se entiende por valor reflejo la escritura invertida del número..Utilizando ciclos anidados generar las siguientes parejas de enteros 0 1 1 1 2 2 3 2 4 3 5 3 6 4 7 4 8 5 9 5 5. deducciones. Por ejemplo: X = 5. 3.Leer dos números y mostrar todos los números terminados en 4 comprendidos entre ellos.PROBLEMAS PROPUESTOS 18 EJERCICIOS PROPUESTOS. Otro ejemplo: X = 25. el valor reflejo de 753 es 357. el de 7 es 7.Mostrar en pantalla todos los pares comprendidos entre 20 y 200. nombre del empleado.Determinar el valor reflejo de un número entero positivo. 10. por ejemplo. 13. • Menor numero negativo. 6.Suponga una computadora que no “sabe” multiplicar. Se desea calcular e imprimir al final.Una persona guarda en el banco 120. encontrar si su cuadrado termina en las mismas cifras que el número X. 2. termina en 5 como X. Si gana el 45% de interés anual. • Los números a imprimir no deben ser más de veinte. Dado dos números naturales A y B hallar el producto A x B utilizando sumas Sucesivas.000 Bs.Se tiene la siguiente información de los empleados de una compañía: # de empleados.Determinar el promedio de n valores..Leer un número entero de tres dígitos y mostrar todos los enteros comprendidos entre 1 y cada uno de los dígitos. 12... • Debe existir por lo menos un número entre los dos valores dados. Calcule cuánto tendrá a los 5 años.. 11. • Promedio de los números pares. . horas trabajadas. • Mayor numero positivo. su cuadrado es 625..Mostrar en pantalla todos los enteros comprendidos entre 1 y 100. 8... 9. 1. 14.. DESGLOSE DE DIGITOS.

Leer un número entero y mostrar todos sus componentes numéricos o sea aquellos para quienes el sea un múltiplo.. 32.Mostrar en pantalla el promedio entero de los n primeros múltiplos de 3 para un número n leído. 29. 36.Leer un número entero y si es múltiplo de 4 determinar si su último dígito es primo. 24..Leer números hasta que digiten 0 y determinar a cuánto es igual el promedio de los números terminados en 5. 19.Leer un número entero de 3 dígitos y determinar si tiene el dígito 1..PROBLEMAS PROPUESTOS 19 15.Leer un número de dos dígitos y determinar si pertenece a la serie de Fibonacci.. 17.Mostrar en pantalla todos los números terminados en 6 comprendidos entre 25 y 205.. 26..Leer un número entero y determinar a cuánto es igual la suma de sus dígitos pares.. 18.Leer un número entero y determinar a cuánto es igual la suma de todos los enteros comprendidos entre 1 y el número leído.Mostrar en pantalla los primeros 20 múltiplos de 3.. 35. 37.Leer un número entero y determinar a cuánto es igual el primero de sus dígitos.Leer dos números entero y mostrar todos los múltiplos de 5 comprendidos entre el menor y el mayor. 23. 16. determinar cuál es el número primo más cercano por debajo de él.. 33..Leer un número entero de tres dígitos y determinar cuántos dígitos primos tiene. . 34.... 38. 28. 39.. 20. 31.Leer un número entero y determinar a cuánto es igual el promedio entero de sus dígitos.Si 32768 es el tope superior para los números entero cortos.Promediar los x primeros múltiplos de 2 y determinar si ese promedio es mayor que los y primeros múltiplos de 5 para valores de x y y leídos.Leer un entero y mostrar todos los múltiplos de 5 comprendidos entre 1 y el número leído.. 27. 30. 22.....Leer un número entero de dos dígitos menor que 20 y determinar si es primo..Leer 2 números enteros y determinar cual de los dos tiene mayor cantidad de dígitos primos..Leer un número entero de dos dígitos y mostrar en pantalla todos los enteros comprendidos entre un dígito y otro..Leer números hasta que digiten 0 y determinar a cuanto es igual el promedio entero de los número primos leídos.Leer un número entero de dos dígitos y determinar si sus dos dígitos son primos. 21. 25..Leer un número entero y determinar cuál es el mayor de sus dígitos.. 40.Leer dos números enteros y determinar si la diferencia entre los dos es un número primo...Escribir en pantalla el resultado de sumar los primeros 20 múltiplos de 3.Leer 2 números enteros y determinar cuál de los dos tiene mayor cantidad de dígitos.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->