0% encontró este documento útil (0 votos)
142 vistas23 páginas

Manual de Programación Free Pascal

pascal manual
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
142 vistas23 páginas

Manual de Programación Free Pascal

pascal manual
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 23
Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria - ELEMENTOS BASICOS Un programa en Free Pascal es un conjunto de instrucciones o sentencias, escritas segun ciertas reglas, para realizar operaciones sobre entidades de datos conocidas como constantes, variables y resultados de funciones Arecordar: > Laconstante, es una entidad cuyo valor no puede ser modificado durante la ejecucion > Lavariable, es una entidad cuyo valor puede modificarse durante la ejecucién > Una funcién, es un conjunto de operaciones asociadas a un nombre y que devuelve un valor > Una sentencia, es una accién algoritmica que se escribe y puede ser ejecutada > Una instruccién, es una orden singular impartida a un computador mediante un programa escrito en un determinado lenguaje > El comand, es un término con el que se suele indicar una instruccién dada al computador 2.- ESTRUCTURA DE UN PROGRAMA La estructura basica de un programa en FreePascal, Pascal o Turbo Pascal es’ program identificador; {cabecera del programa} uses identificador: (ert, graph, print, etc.) {zona de declaracién} const lista de constantes = valor; type declaracién de tipos de datos definidos por el usuario; var lista de variables:tipo: (integer, real, char, string, etc.) procedure definicién de procedimientos: function definicién de funciones; begin {cuerpo del programa} instrucciones; end. Ejemplos. Codificar un programa que permita sumar 2 ntimeros enteros program numero; uses crt; var suma, a, b: integer; begin clrser; write(‘Ingrese 2 numeros:’); read{a,b); suma:atb; vnite(El resultado es:'suma): readkey; end, Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria PROGRAM numero; USES CRT; VAR a, b, c: INTEGER: BEGIN ClrSer, WRITELN (‘Este programa suma dos nimeros:); WRITELN ("1); WRITE Cintroduzca un numero’ READIN (a); WRITE (‘introduzca otro numero:'); READLN (b): WRITELN (''); cath; WRITE (EL RESULTADO ES: ') WRITE (c); END. Escribir un programa en Pascal que calcule la velocidad de un proyectil que recorre 2 Km en 5 minutos. Expresar el resultado en metros/segundo. PROGRAM velocidad; USES CRT; VAR espacio, tiempo, espacio2, tiempo2: REAL; VAR velocidad, velocidad2: REAL; BEGIN {Este programa calcula la velocidad de un cuerpo} Cirser, WRITE (Para calcular la velocidad debe escribirlo en unidades '); WRITE (del sistema internacional’; WRITELN (') WRITE (Escriba el espacio recorrido: READIN (espacio); WRITE (Escriba el tiempo transcurrido: ); READLN (tiempo); WRITELN (' velocidad:=(espacio)/(tiempo); WRITE (‘VELOCIDAD DEL PROYECTIL: '); WRITE (velocidad:5:2); WRITELN ( m/s); WRITELN (''); WRITELN (‘Si lo desea en Km/h introduzca los datos: ); WRITELN ('’); WRITE (‘Escriba el espacio recorrido: '); READLN (espacio2); WRITE (Escriba el tiempo transcurrido: ); READLN (tiempo2); WRITELN (' velocidad2:=(espacio2)/tiempo2): WRITE (velocidad2:5:2); WRITE ( Krvh END. 3.- OBJETOS DE UN PROGRAMA. Un programa se construye en base a objetos y separadores. Los objetos son las unidades significativas mas pequefias de texto de un programa y se divide en: simbolos especiales, identificadores, etiquetas, ntimeros, constantes, variables, directivas, etc 3.1.- Identificadores Representan los objetos de un programa. Un identificador es una secuencia de caracteres que puede ser de cualquier longitud, pero los primeros 64 son significativos Se caracteriza por las siguientes regias: = Debe comenzar con una letra mayliscula y/o mintiscula desde la "A" a la "Z" y desde latata la "2" io Moreno Garcia ‘Segundo Grado de Edscacén Secundaria = Los ntimeros del "0" al "a" = Caracteres especiales, tales como el "ampersand" (&), el signo de interrogacién (7), el signo de igualdad (=) = Caracteres no imprimibles, tales como el espacio en bianco, el tabulador, el salto de linea, el retorno de carro, el pitido - No se pueden utilizar palabras reservadas como identificadores, - Letras, digitos y caracteres subrayados ( _ ) estén permitidos después del primer caracter En general, los compiladores de FREEPASCAL, PASCAL 0 TURBO PASCAL no distinguen entre letras maytisculas y minisculas excepto cuando se escriben entre apéstrofes: Ejemplos: Validos PROGRAM Uno y PROGRAM UNO son equivalentes "Pepe Pérez’ y ‘PEPE PEREZ’ son diferentes nombre, pis, Lp_p, impuesto_Renta No son validos Fox%horas, j horas, begin, while 3.2. Palabras Reservadas: Se usan como nombres de sentencia, de tipos de datos y de operadores. Suelen escribirse con mayiisculas, aunque no es necesario, Las palabras reservadas sélo se pueden usar, dentro de un programa, en el contexto para ‘el que han sido definidas. No se pueden redefinir para usarlas como identificadores. Podemos indicar: AND END NIL SET ARRAY — FILE NOT THEN BEGIN FOR OF To CASE FUNCTION OR TYPE CONST GOTO PACKED UNTIL ov IF PROCEDURE VAR Do IN PROGRAM WHILE DOWNTO LABEL RECORD WITH ELSE MoD REPEAT 3.3.- Etiquetas: es un identificador que se compone de una secuencia de letras, digitos y que a diferencia del identificador clasico puede comenzar con digitos 4.- TIPOS DE DATOS En Free Pascal, todo dato esta asociado a un TIPO de datos y debe ser deciarado antes de utiizarse. Un TIPO de datos esta representado por un identificador y determina el rango de valores que un elemento de datos puede tomar, asi como las operaciones a que puede ser sometido. Ademas, el TIPO determina el espacio en memoria necesario para almacenar cualquiera de los valores posibles que puede tomar esa entidad El compilador proporciona identificadores para algunos tipos que estan predefinidos nimeros enteros y reales, valores logicos, caracteres alfanuméricos, registros, tablas, cadenas de caracteres, conjuntos, ficheros y punteros a estructuras dinamicas. Pero, ademas, el Free Pascal permite al usuario crear sus propios tipos definiendo identificadores de su eleccién para representar rangos de valores. Estos también llevan asociados un conjunto de operadores admisibles y unas necesidades determinadas de espacio en memoria. El tipo de una constante io Moreno Garcia ‘Segundo Grado de Edscacin Secundaria @8 el tipo de su valor correspondiente. El tipo de una variable es el tipo establecido cuando se deciaré y no puede modificarse en general. El tipo de una funcién es el del valor que devuelve Los valores de las variables y de las funciones pueden cambiar tantas veces como se desee durante la ejecucién de un programa, pero esos valores deben permanecer siempre dentro del tango establecido por su tipo. Una variable no adopta un valor hasta que el programa le asigna uno. E valor de una funcién se calcula durante la ejecucién de dicha funcién Tipos de datos Predefinidos en Free Pascal Enteros Reales 4982 116493210 (Comp “92518 292618 Tipo cardcter (Char) El tipo Char depende del cédigo de caracteres empleado por la maquina. El mas tilizado es el cédigo ASCII, Una variable 0 constante tipo Char puede contener un solo caracter especificado entre apéstrofes. Ejemplo: ‘a’, "M’ Tipo Légico (Boolean) Pueden tomar dos valores True (verdadero) False (falso). El identificador estandar boolean define una variable de este tipo Tipo Cadena (String) Una cadena (string) es una secuencia de caracteres que tiene una longitud maxima de 255 caracteres. Los caracteres que componen la cadena se delimitan con apéstrofes. Ejemplo: ‘abed! longitud de la cadena 4" cadena vacia o nula. Una variable de cadena se define utiizando la palabra reservada String y el tamaho fisico maximo que pueda alcanzar durante la ejecucién del programa. Ejemplos: Const Lonmax 80; Type Cadena = StringfLonmax]: Var Varcad: Cadena; {*almacena hasta 80 caracteres"} Nombre: String: {*almacena hasta 255 caracteres"} io Moreno Garcia ‘Segundo Grado de Edscacén Secundaria Ejemplos: Escribir un programa que calcule la suma de los numeros hasta un ntimero dado (introducido por el usuario) PROGRAM defiusuario; USES CRT, VAR inum:INTEGER; VAR suma:LONGINT, BEGIN ClrSer; WRITE(Introduzca un numero -> ); READLN(num); WRITE(Suma '); WRITE(0-); WRITE(num); WRITE(~->'); WRITE(suma); END. Escribir un programa en Pascal que calcule cuantos affos tarda en duplicarse un capital depositado al 5% de interés anual. PROGRAM EJERSO; USES CRT, VAR tiempo:REAL; VAR cap_ini,cap_fin:REAL; CONST interes = 0.05; BEGIN Cirser, WRITE (‘intruduzca el capital pata calcular cuanto tardara WRITE (en duplicarse, con un interes del 5%: '); READIN (cap_ini); WRITELN ("); IF cap_ini <0 THEN BEGIN WRITE (‘No se puede incluir un capital negativo'); EXIT, END; tiempo:=0; cap_fin REPEAT cap_fin:=cap_fin + (cap_fin * interes); tiempo:= tiempo + 1; UNTIL cap_fin > (cap_ini* 2); WRITELN (Tardara’, fiempo'3:0' afios en duplicarse’); WRITELN (Capital final: ', cap_fin:5:2," pts’); END. -ap_ini; Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria Tipos de datos Definidos en Free Pascal Existen dos diferentes tipos de datos simples definidos por el usuario: enumerados y subrago Tipos enumerados. Los tips enumerados se componen de una lista de identificadores ‘encerrados entre paréntesis y separados por comas. Type Estaciones = (primavera, verano, otofo, invierno); Colores (rojo, amarillo, verde, azul, violeta); Los tipos enumerados son ordinales ya que llevan asociado cada uno un numero entero, ‘empezando por el primero, al que se le asigna el O, al segundo un 1, y asi sucesivamente, por lo que no es independiente el orden de deciaracién. Un valor de tipo enumerado no puede pertenecer a dos declaraciones de tipo distintas y no pueden leerse desde teclado, ni escribirse en pantalla Tipos subrango Es un subconjunto de un tipo ordinal (enteros, boolean, caracter y enumerado) que se ‘specifica indicando el primero y el titimo elemento del conjunto. Ejemplo: Type Identificador=primerelemento. ultimoelemento; Ejem. 2 Type Fecha= 1.31; Var Dia: Fecha; Los tipos enteros, cardcter, booleanos, enumerados y subrango se denominan tipos ordinales. Un tipo ordinal representa una secuencia ordenada de valores individuales, a los que se puede aplicar los conceptos de predecesor y sucesor. En cada tipo de datos ordinales hay un primer valor y un titimo valor. Ejemplos: Escribir un programa en Pascal que almacene on la segunda fila de la siguionte matriz los cuadrados de los datos de la primera fila 36 7 8 9 00 o 0 0 PROGRAM arregio; USES CRT; CONST ar_nunARRAY [1.2.1.5] of INTEGER=( (367,89), .0.0,0.0)); VAR ij,cuad INTEGER; BEGIN ClrSer; ist, FOR j:=1 TO 5 DO BEGIN FOR i=1 TO 1 DO BEGIN ‘cuad:=sqr(ar_numfidl): art_numi2,j}-= cuad; WRITELN (art_num(2 j)); END; END; END. io Moreno Garcia ‘Segundo Grado de Edscacén Secundaria Escribir un programa en Pascal que cuente las mayuisculas de una cadena de caracteres PROGRAM funciones; USES CRT, CONST cadena:STRING- VAR i, mayus:INTEGE! BEGIN (EstO os PROGraMAcién’); TO LENGTH(cadena) DO BEGIN IF cadena[i] = UPCASE(cadenalil) THEN mayus:=mayus + 1; IF cadenali}: WRITELN (El ntmero de maytsculas es: ', mayus); END. 5.- OPERACIONES DE ENTRADA/SALIDA. Sentencias de salida o escritura Write 0 Whiten (NombreArchivo, Nomvarl Nomvar2...) Realizan conversién de tipos de datos antes de que la salida llegue al archivo de salida. Las variables 0 argumentos de esta sentencia pueden ser: expresiones. constantes o variables numéricas, de caracter, de cadena 0 booleanas Formatos: Write 0 Whiten (argumento); ite 0 Writeln (argumento:m); Write 0 Writein (argumento:m:n); Donde m es el numero de caracteres que ocupard la salida ajustando Ia informacién a la derecha, y n sélo so omplea cuando el argumento es numérico real indica el nimero de caracteres que ocupara en la salida la parte decimal Ejemplo: E36) Mostrar la salida formateada para nlimeros decimales Program formato; Var N:Real; Begin N= 113; Witein (Formato por defect Writeln (Anchura 8:1’, n:8:1); Whiten (Anchura 8:3", n:8:3), readkey; End. sn); Ejecucién: Formato por defecto 3.33333393335E-01 Anchura 8:1 03 Anchura 8:3 0.333 ‘Sentencia de entrada o lectura Read o Readin (NombreArchivo,Nomvarl Nomwar2..); io Moreno Garcia ‘Segundo Grado de Edscacén Secundaria Ejemplos: Programa que calcule al area y volumen de un prisma program ejeareas; uses ett; var I1,12,/3:real; var area,volumen:real; begin {calcula el area y volumen de un prisma} clrser; writeln (para calcular el area y el volumen del prisma, escriba: '); writeln ('); write (lado: ); readin (1); write (lado2: '); readin (12); write (ado3: ); readln (3); waiteln (7); area=2* (1 *I2)+(2* (1 *13)) + 2" (2°13); volumen'= I1 * 12 * 13; write (area del prisma: '); writein (area:5:2); write (volumen del prisma: ); write (volumen:5:2); readkey, end. Escribir un programa en Pascal que detecte si un ntimero leido desde el teclado es mayor 0 menor que 100. PROGRAM maymenor:; USES CRT, VAR num:INTEGER; BEGIN Cirser, WRITE (‘Escriba un numero enter WRITELN (); IF num < 100 THEN WRITE (EI numero que ha escrito es menor de 100) ELSE IF num > 100 THEN WRITE (EI numero que ha escrito es mayor de 100) ELSE WRITE (‘El numero es 100’) END. READLN (num); # Escribir un programa en Pascal que detecte si se han introducido en orden creciente tres numeros introducidos por el usuario. PROGRAM ejemenmay; USES CRT; VAR num1, num2, num3:INTEGER; BEGIN CirSer; WRITE (‘introduzca un numero (1) :'); READLN (numt); WRITE (‘Introduzca un numero (2) :); READLN (num2); WRITE (‘introduzca un numero (3) :); READLN (numa); IF ((numt < num) AND (aum2 < num3)) THEN WRITE (‘Los numeros se han introducido en orden creciente’) ELSE WRITE (‘Los numeros no se han introducido en orden creciente’); END. Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 6.- OPERACIONES BASICAS DE UTILIDAD Comandos Utiles clrser: bora la pantalla y sitda el cursor en la esquit ésta orden debemos declarar la unidad ert abs (valor): permite determinar el valor absoluto de un nimero readkey: permite detener la ejecucién del programa, continuara cuando se presionen una tecla cualesquiera delay(tiempo): detiene la ejecucién de programa por un tiempo dado mod: permite determinar el residuo de una divisién div: permite obtener una division entera ‘sqr(ntimero): permite manejar el cuadrado de un niimero sqrt(ntimero): permite obtener la raiz cuadrada de un ntimero 1a superior izquierda. Para poder utilizar ‘Trabajando en el Entorno de Windows Primero se supone que ingresamos al editor propio de FreePascal y creams el programa con su respectiva extensién, Free Pascal emplea como extensién pas Compilar el programa: presionamos ALT + F9.0 Clic en Compile, opcién compile Aqui se crea un archivo con extensién 0 Si, el archivo no compila correctamente entonces tendremos que regresar al editor de FreePascal y abrir el archivo y corregiremos los errores presentados Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria Ejecutar el archivo compilado: presionamos CTRL + F9 0 Clic en Run, opcién Run 10 Jl Te ul Moreno Garcia ‘Segundo Grado de Edueacién Secundaria ESTRUCTURAS DE CONTROL SELECTIVAS Se denominan estructuras de control a aquellas que determinan qué instrucciones deben ejecutarse y qué nimero de veces. Existen dos tipos de estructuras de control: alternativas o de seleccién y repetitivas o de iteracién 7.4.. ESTRUCTURAS SIMPLES ‘Son aquellas que se ejecutan en forma descendente y sin ninguna bifurcacién Ejemplos: Determinar la velocidad instantanea program ejervel; uses crt; var v,g.treal; begin clrscr, =9.8; write (velocidad inicial (m/s) -> '); readin(v); warite(‘tiempo (5) “>; readin(); write (velocidad instantanea: }); writeln(v-(g"t):5:2); readkey; end. Escribir un programa en pascal que detecte el cardcter introducido por el usuario. program ejercar; uses crt; var pato_donald:char; begin clrser, write (introduzca un caracter alfanumerico: readin (pato_donald) write (el caracter introducido es ~-—>' + pato_donald); readkey; end. Escribir un programa en pascal que sume, reste, multiplique y divida dos numeros: x=10y=2 program ejeropera: inos va a permitir limpiar la pantalla junto con cirscr} var x,y:integer; var suma,rest;mul,diviinteger; begin mutt:=x * y divissx div y: {con estas 4 variables realizamos las cuatro operaciones aritméticas fundamentales: ‘uma, resta, multiplicacion y division} clrscr; {impia la pantalla) write (suma:); vaiteln (suma); write (resta:); writein (rest): write (multiplicacion:’); writeln (mutt); Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 12 write (division); write (divi): Escribir un programa en Freepascal que calcule el area de un rectangulo: ladot = 3 lado2 = 4 rea del rectangulo=ladot * lado2 program ejerarea; Uses crt; var lado't,lado2:integer; var area‘integer; begin {este programa nos va a servir para calcular el rea de un recténgulo} ladot:=3; lado2:=4; {damos valores para las variables} area:=lado1*lado2; {calculamos el area} lrser, write (area del rectangulo: end. ; write (area); {lo mostramos en pantalla} program ejerareat; uses crt; var lado! lado2:real; var area:eal; begin {este programa calcula el area de un recténgulo} clrscr; wtiteln (‘escriba los lados del rectangulo’); read (lado1): read (lado2); waiteln ("); area‘=ladot*lado2; write (area del rectangulo:’); write (area:5:2); delay(1000); end. Escribir un programa en pascal que calcule el area de un triangulo: base = 7 altura = 4 area del tridngulo = (base * altura)/2 program ejerarea2; uses crt; var base,altura:real; var area:real; begin base= altura:=4; atea‘=(base “ altura) / 2; clrscr, write (area del triangulo: '; write (area‘5:2); {52 sirve para dar el formato de salida al numero, 5 posiciones y 2 decimales} Teadkey; end. lo Morene Garcia ‘Segundo Grado de Edueacién Secundaria 13 7.2.- ESTRUCTURAS ALTERNATIVAS. ‘Son aquellas que bifurcan o dirigen la ejecucién de un programa hacia un grupo de sentencias u otro dependiendo del resultado de una condicion. Las dos sentencias alternativas de Free Pascal son: Sentencia alternativa simple IF-THEN Sentencia altemnativa doble IF-THEN-ELSE. IF THEN Formato: _ IF (expresién légica 0 booleana) THEN begin ‘Sentencial (simple o compuesta); end; IF THEN ELSE Formato: IF (expresién logica 0 booleana) THEN begin Sentencial (simple 0 compuesta); end ELSE begin Sentencia2 (simple 0 compuesta) end; NOTA: cabe indicar que las estructuras condicionales pueden obviar el manejo de cuerpo de programa si es que solo tienen una instruccién dentro de sus procesos, en el resto de casos es obligatorio el uso del b nd Ejemplos: Programa sirve para calcular la velocidad instantanea de un cohete program ejercond ; uses crt; const gravedad = 9.81; var velocidad0, tiempo, velocidadfinal:real; begin clrscr, write (para calcular la velocidad de un cohete en un instante, '): writeln (‘introduzca los datos: writeln (") write (introduzca la velocidad inicial: ); readin (velocidado); write (introduzca el tiempo’); readin (tiempo); waiteln ("); velocidadfinal:=velocidad0 - (gravedad * tiempo); if velocidadfinal <= 0 then vite (el cohete ya se ha parado.’); if velocidadfinal > O then write (la velocidad final es de: ") if velocidadfinal > O then write (velocidadfinal:4:2); if velocidadfinal > 0 then vwnite (mis. readkey; end. Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria “4 Escribir un programa en pascal que detecte si se han introducido en orden creciente tres, nlimeros introducidos por el usuario program ejermaymen; uses crt; var nurn1 num2,num3:integer; begin clrscr, write Cintroduzca un numero (1) :); readin (num1); write (introduzca un numero (2) :); readin (num2); write (introduzca un numero (3) :); readin (num3); if (nummt sin descuento; importe bruto mayor de 20.000 -> 15% de descuento program ejercondi2; uses crt; var importe_bruto:real; var descuento, total:real; begin clrscr, write Cindique el importe de su factura para ver’); writeln (‘si le "descontamos" algo’); wariteln ("); readin (importe_bruto); writeln (") {calcula el importe bruto con descuento del 15%} descuento:=importe_bruto * 0.15; if importe_bruto > 20000 then begin writein (‘se merece un descuento de: '\descuento:5:2, ' soles’); total:=importe_bruto - descuento; writeln (el total es de la factura es de: 'total:5:2,’ soles’) end else write (con ese dinero no se merece un descuento’); program ejercondi2; uses crt; var imp_bru,imp_net:real; begin clrser; write (importe bruto -> '); readin(imp_bru); if imp_bru <= 20000 then imp_net:=imp_bru else io Moreno Garcia ‘Segundo Grado de Edscacén Secundaria imp_net:=imp_bru-(0.15*imp_bru) write importe a pagar: '); write(imp_net’5:2); readkey end. Escribir un programa en pascal que una vez leida una hora en formato (horas, minutos, segundos) indique cual sera el tiempo dentro de un segundo. program ejethoras; uses crt; {as variables son: horas, minutos y segundos} {Son las horas, minutos y segundos introducidos por el usuario} var h, m, s:integer; var h2,m2,s2:integer; {son las horas, minutos y seguntos a los que se les sumara} begin clrser, write Cescriba en formato horas, minutos y segundos’); waiteln ("); write Choras ') readin (h): write (minutos); readin (rr); write (segundos '); readin (s); waiteln ("); writeln ('se le sumara un segundo a la hora actual.’); waiteln ("); sss+t: 52:=8; m= ((m * 60) + 5) div 60; fh * 60) + m) div 60; if h2 = 24 then h2 =O; writeln (h2,"'.m2,"",s2) delay(1000); end. 15 Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 16 7.3. ESTRUCTURAS REPETITIVAS ‘Son aquellas que crean un bucle (tepeticién continua de un conjunto de instrucciones) en. la ejecucién de un programa respecto de un grupo de sentencias en funcion de una condicién Las tres sentencias repetitivas de FreePascal son: + SENTENCIA WHILE DO + SENTENCIA REPEAT-UNTIL + SENTENCIA FOR TO DO (ascendente) o FOR DOWNTO DO (descendente) - SENTENCIA WHILE Indica al ordenador que se ejecuten una o mas sentencias mientras se cumpla una determinada condicién. La condicién viene determinada por una vatiable 0 expresion booleana Formato: while condicién do begin (sentenciat); (sentencian); end; while condicién do (sentencia): NOTA: esta titima instruccién sélo se da cuando se maneja una sola instruccién Esta sentencia comprueba inicialmente si la condicién es verdadera. Si la condicién es verdadera se ejecutan las sentencias mientras la condicion de su enunciado sea verdadera y finaliza cuando la condicién es falsa. Dado que la condicién puede ser falsa inicialmente, es decir antes de comenzar el bucle, habra casos en que el bucle no se ejecute Caracteristicas del bucle WHIILE DO: Se ejecuta mientras la condicién sea verdadera, y dentro del bucle debe existir, por lo menos, una sentencia que modifique el valor de la variable o expresién, de lo contrario. se puede producir una situacién de bucle infinito. Si la expresién lgica es falsa al comenzar el bucle, éste no se realizara Ejemplos: Esoribir los N primeros numeros naturales, donde N es un valor introducido por el usuario program escribeenteros; uses crt; Var N contador: integer; Begin Cirser; Write (Introduzca numero maximo de enteros: ?); Readin (N); Contado While (contador<=N) do Begin Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 7 Write (contador:5); Contador:=contador+1; End; Wiitetn; Writeln (Fin de programa. Contador = ', contador); Delay(1000); End. Escribir un programa que calcule la suma de los nimeros hasta un numero dado (introducido por el usuario). program ejersuma; uses crt var x, y, num:integer; begin cirser; write (este programa calcula la suma de los numeros hasta uno '); write (introducido por el usuario: '; readin (num); writen ("); x=0; while (num >= 0) do begin vwariteln (%); x= x-+ num; num:=num - 1; end; readkey; end. Escribir un programa que pida un nimero y si el que se introduce por el teclado es menor de 100 que wuelva a solicitarl. program ejernumero; uses ort; var nunvinteger; begin cirscr; vwrite(introduzca un numero ->'); readin(num);, while (num==100) do begin vaite(introduzca un numero -> '); readin(num); end; end. program ejernumero; uses crt; var nurminteger; begin clrscr, vwriteCintroduzca un numero -> '); readin(num);, while (num<=100) do vwwite(introduzca un numero -> '); readin(num); end. Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 18 b.- SENTENCIA REPEAT UNTIL Ejecuta las sentencias comprendidas entre las palabras reservadas REPEAT y UNTIL. hasta que la expresi6n o variable sea verdadera Formato: repeat (sentencia); (sentencia); until (condicién); Caracteristicas del bucle REPEAT: Se ejecutan siempre una vez, por lo menos, y la terminacién del bucle se produce cuando el valor de la expresién logica 0 condicién de salida es verdadera, Se ejecuta hasta que la expresin es verdadera, es decir, se ejecuta mientras la expresién sea falsa Ejemplos: El mismo que con la sentencia while program escribeenteros; uses crt; Var N.contador:integer; Begin Clrscr; White (Introduzca ntimero maximo de enteros: ‘); Readin (N); Contador:= Repeat Contador:=contador+1 Write (contador:5); Until (Contador = N); Writeln (Fin de programa. Contador Readkey; End. ' contador); Escribir un programa en FreePascal que genere la tabla de multiplicar de un nimero intreducido por el teclado. program tabla ; uses crt; var tabla, x, numinteger; begin clrscr; write (introduzca un numero para hacer su tabla de multiplicar:'); readin (num); writeln ("); repeat writeln (tabla); x=X+ 1; tabla:= num * x; until (x=11) readkey; end. Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 19 Escribir un programa en pascal que realice la pregunta zdesea continuar s/n? y que no doje de hacerla hasta que el usuario teclee n. program respuesta; uses crt; var respuesta:char; begin cirser; repeat vaiteln (desea continuar: s/n); readin (respuesta); until (respuesta delay (1000); end. Escribir un programa en Pascal que calcule cuantos afios tarda en duplicarse un capital depositado al 5% de interés anual PROGRAM CAPITAL; USES CRT; CONST interes = 0.05; VAR tiempo:REAL; cap_ini,cap_fin:REAL; BEGIN ClrScr; WRITE (‘Intruduzca el capital para calcular cuanto tardara '); WRITE (‘en duplicarse, con un interes del 5%: '); READIN (cap_ini); WRITELN (" IF cap_ini <0 THEN BEGIN WRITE (No se puede incluir un capital negative’); EXIT, END; tiempo:=0; ‘cap_fin:= cap_ini: REPEAT ‘cap_fin:=cap_fin + (cap_fin * interes); tiempo:= tiempo + 1; UNTIL (cap_fin > (cap_ini *2)); WRITELN (Tardara’,tiempo:3:0,' afios en duplicarse’); WRITELN (Capital final: "cap_fin’5:2,' pts’); END. cc. SENTENCIA FOR Repite la ejecucién de una o varias sentencias un ntimero fijo de veces. Previamente establecido, Necesita una variable de control del bucle que es necesariamente de tipo ordinal, ya que el bucle se ejecuta mientras la variable de control toma una serie consecutiva de valores de tipo ordinal, comprendidos entre dos valores extremos (inferior y superior). Formato ascendente: FOR variablecontrol:=valorinicial TO valorfinal DO begin (sentencia); end: Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 20 Formato descendente: FOR variablecontrol:=valorincial DOWNTO valorfinal DO begin (sentencia); end; donde (sentencia) puede ser una sentencia simple o compuesta, Caracteristicas del bucle FOR: ‘Aunque a primera vista pueda resultar mas atractivo FOR, existen limitaciones en su aplicacién ya que en el bucle FOR siempre se incrementa o decrementa (de uno en tno) los valores de la variable de control de bucle y no de dos en dos o de tres entres, © con valores fraccionarios. El numero de iteraciones de un bucle FOR siempre es fijo y se conoce de antemano: Valor final - Valor inicial +1 Ejemplos: El mismo que con la sentencia while y repeat Program escribeenteros; Var N contador: integer; Begin Wite (Introduzca numero maximo de enteros: ‘); Readin (N); For contador:= 1 ton do begin Write (contador:5); Wiitein; End; Readkey; End. Esoribir un programa en pascal que detecte si un nimero es primo 0 no. un niimero es primo si sélo es divisible por si mismo y por la unidad ejemplo: 2,3,4,7,11,17,19 son numeros primos 9 no es niimero primo, es divisible por 1, 9, 3 el algoritmo para resolver este problema pasa por dividir sucesivamente el numero estudiado por 2,3.4, etc., hasta el propio numero. program primo; uses ort; var isnum flag:integer; begin write(introduzea un numero -> ); readin(num); to (num-1) do begin if (num mod i)=0 then begin flag=1; end; i (fag=1) then begin write(num); write’ no es un numero primo’); end else begin Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria 21 write(num); write(’ es un numero primo’); end; end; readkey; end. Escribir un programa en Pascal que calcule la depreciacién de un objeto segiin el método de la linea recta. Calcular el ntimero de afios que tarda en hacerse 0. En este método el valor original del objeto se divide por su vida (ntimero de afios). El cociente resultante sera la cantidad en la que el objeto se deprecia anualmente. Por ejemplo, si un objeto se deprecia 8000 délares en diez afos, entonces la depreciacion anual sera 8000/10=800 délares. Por tanto, el valor del objeto habr disminuido en 800 dolares cada afo. Nétese que la depreciacién anual es la misma cada afio cuando se utiliza este método PROGRAM deprecia; USES CRT; VAR val_ini,val_dep,tas_dep:REAL; VAR ianios:INTEGER; BEGIN ChrSor; WRITE(’Valor inicial WRITE(Numero de afios tas_dep:=val_ini/anios; val_dep:=val_ini-tas_dep; FOR [=1 TO anios DO BEGIN WRITE(‘Azo WRITE('3); WRITE( —~"); WRITELN(val_dep:10:2); val_dep:=val_dep-tas_dep; END; END. v 1; READLN(val_ini); >); READLN(anios); 2CUANDO UTILIZAR WHILE/ REPEAT/ FOR? > Utilizar la sentencia o estructura FOR cuando se conozca el nimero de iteraciones, y siempre que la variable de control de bucle sea de tipo ordinal > Utilizar la estructura REPEAT-UNTIL cuando el bucle se realice por lo menos una vez > En todos los demas casos utilizar la sentencia WHILE, 7.4.- CASE opcion OF Formato: case (expresién o variable) of (lista de constantes1):(sentencia); (lista de conslantes2):(sentencia2); (lista de constantes3):(senteneia3); (lista de constantesn):(sentencian); else (sentencia) Jule Morene Garcia ‘Segundo Grado de Edueacién Secundaria Ejemplos: Elaborar un programa que permita ingresar el dia de la semana y muestre como resultado ‘su conversion en letras, Program menu; Uses crt: Var Numerodia: integer; Begin Cirser, Write‘introduzca el ordinal de un dia laborable de la semana:’); Readin (numerodia); Write (Hoy es); Case numerodia Of 1-Writeln Lunes’); 2vritein CMartes’); 3.Writein (Miercoles’); 4Wvritein CJueves'); 5\Writein (Viernes); 6.Writeln (Sabado’) Else \Writeln (jjDomingo!! No es dia laborable’); End; Readkey; End. 22 io Moreno Garcia Elabora un programa que permita ingresar una calificacién utilizando las vocales 23 program califica; uses crt; var cal:char; begin clrscr, write ‘introduzca una calificacion (a-e):'): readin(cal); case cal of ‘a': writeln(calificacion numerica ~> 4’; 'b’: wnitein¢calificacion numerica —> 5}; ‘c: writeln(‘calificacion numerica > 6); 'd': yaiteln¢calificacion numerica ~> 7’); ‘e': wniteln¢calificacion numerica —> 8}; else vniteln(calificacion incorrecta’); end: readkey end. ‘Segundo Grado de Edueacién Secundaria

También podría gustarte