LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es...

42
Guía de Cibernética y Computación II. Turno matutino UNIDAD 1 LENGUAJE DE PROGRAMACIÓN PASCAL 1

Transcript of LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es...

Page 1: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

UNIDAD

1

LENGUAJE DE PROGRAMACIÓN PASCAL

1

Page 2: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

1. ELEMENTOS DEL LENGUAJE.

Las reglas de estructura que se deben seguir siempre que se escriban programas en PASCAL es la siguiente:

program identificador {cabecera del programa} uses identificadores label lista de etiquetas {sección de etiquetas}

const

definición de constantes type declaración de tipos de datos definidos por el usuario var declaración de variables

procedure definición de procedimientos

function definición de funciones

begin

sentencias {cuerpo del programa}

end.

Los identificadores representan los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones, unidades, programas y campos de registros). No es más que una secuencia de caracteres que puede ser de cualquier longitud, pero sólo los 63 primeros caracteres son significativos.

Un identificador se caracteriza por las siguientes reglas: 1. Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no

puede contener espacios en blancos. 2. Letras, dígitos y caracteres subrayados ( _ ) están permitidos después

del primer carácter. 3. No se puede utilizar una palabra reservada como identificador; sin

embargo, los identificadores estándar se pueden redefinir:

2

Page 3: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Ejemplos: Identificadores válidos Identificadores No válidos Nombre 1Nombre cobra_iva cobra iva Pagina1 La_@beja A_d_e A&M Pascal_begin begin

Las palabras reservadas tienen un significado especial y por lo tanto no pueden utilizarse para otros propósitos. No pueden usarse como identificador. Por lo regular, en la unidad del libro las palabras reservadas se han escrito en negritas. A continuación la lista de palabras reservadas en Turbo PASCAL. absolute and array begin case const div do downto else end external

file for forward function goto if implementation in inline interface interrupt label

mod nil not of or packed procedure program record repeat set shl

shr string then to type unit until uses var while with xor

Los siguientes cuadros muestran los diferentes tipos de datos en PASCAL.

Tipo entero Tipo Rango Formato Byte

Integer Longint Shortint Word

0 . . 255 -32768 . . 32767

-247483648..2147483647-128 . . 127 0 . . 65535

8 bits sin signo (1 byte) 16 bits con signo (2 bytes)32 bits con signo (4 bytes)8 bits con signo (1 byte)

16 bits sin signo (2 bytes)

Tipo Real Tipo Rango Cifras Tamaño y bytes Real

Single Double

Extended Comp

2.910-39 .. 1.71038

1.510-45 .. 3.41038

5.010-324.. 1.710308

1.910-4932.. 1.1104932

-263 + 1 .. 263 - 1

11-12 7-8

15-16 19-20 19-20

6 4 8

10 8

3

Page 4: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Tipos caracter (Char)

El tipo char es un tipo de datos que puede contener un solo caracter. Un

literal char se debe encerrar entre simples apóstrofos (sin embargo, no se puede utilizar apóstrofos cuando se introducen caracteres desde la Terminal). Algunos ejemplos son los siguientes:

‘Z’ ‘x’ ‘$’ ‘3’ ‘<’ ‘¿’ ‘ ‘ ‘12’ ‘^’ ‘_’ ‘ - ‘ Un caracter se almacena en memoria como un solo byte. Tipos lógicos (boolean)

Los valores de tipo lógico pueden tomar sólo dos valores posibles: true (verdadero) y false (falso). Al igual que el tipo char, el tipo boolean es un tipo ordinal, que significa que tiene un número fijo de posibles valores que existen en un orden definido. Ocupa un solo byte en memoria. La relación es:

false < true Tipos cadena (string)

Un tipo string (cadena) es una secuencia de caracteres de cero o más

cararcteres, escrita en una línea sobre el programa y encerrado entre apóstrofos. Ejemplos:

‘ ‘ ‘Laura’ ‘hola, mundo’ ‘ ; ‘ Una cadena sin algo entre los apóstrofos se llama cadena nula o cadena

vacía. La longitud de una cadena es el número de caracteres encerrados entre

los apóstrofos.

En cuanto al orden de evaluación de expresiones aritméticas (la prioridad), al aparecer dos o más operadores, ¿qué operación se realiza primero? Esto se refiere a cuál es el orden de prioridad (jerarquía) de las operaciones aritméticas. Veamos la siguiente tabla que resume las reglas de evaluación de expresiones.

4

Page 5: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

EJERCICIOS PROPUESTOS DE LA UNIDAD 1

1. Todas las subexpresiones entre paréntesis se evalúan primero. Las subexpresiones con paréntesis anidados se evalúan de dentro-afuera; el paréntesis más interno se evalúa primero.

2. Prioridad de operaciones. Dentro de una misma expresión o subexpresión, los

operadores se evalúan en el siguiente orden:

*, /, div, mod primero +, - último

3. Regla asociativa izquierda. Los operadores en una misma expresión o subexpresión con igual nivel de prioridad (tal como * y /) se evalúan de izquierda a derecha.

1. Evaluar:

a) Para A =2 y B = 5: 3 * A – 4 * B/A^2; b) 4 / 2 * 3 / 6 + 6 / 2 / 1 / 5 ^ 2 / 4 * 2; c) ((12 + 3) div 2) / (8 – (5 + 1)); d) ((12 + 3) div 2) / (8 – (5 + 1)) / 4 – 4 * 4.

2. Escribir las siguientes expresiones en PASCAL como expresiones

algebraicas:

a) b *b – 4 * a * c; b) 3 * x * x * x *x – 5 * x * x * x + x * 12 – 17; c) (b + d) / (c + 4); d) (x * x + y * y) / (1/2 * x +3/4 * y);

3. PROGRAMACIÓN. Realizar los siguientes programas en PASCAL.

a) Calcular el área de un triángulo en función de las longitudes de sus

lados a, b y c: Área = ( )( )(p p a p b p c− − − , (fórmula de Herón)

donde p = (2

a b c+ + ) (semiperímetro).

b) Convertir una temperatura leída en grados Faherenheit a grados

centígrados, usando la fórmula C = (5/9) * (F – 32).

c) Un sistema de ecuaciones lineales

ax by cdx ey f

+ =+ =

se puede resolver con las siguientes fórmulas:

5

Page 6: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

ce bf af cdx yae bd ae bd

− −= =

− −

Construir el programa que lea dos conjuntos de coeficientes (a, b, c; d, e y f) y visualice los valores de x e y.

UNIDAD

2

ESTRUCTURA DE CONTROL DE SECUENCIA

6

Page 7: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

1. ESTRUCTURAS DE CONTROL DE SECUENCIA

La programación estructurada permite la escritura de programas fáciles de leer y modificar. El flujo lógico se rige por las estructuras de control básicas:

1. secuenciales, 2. repetitivas, 3. selección.

Antes de entrar a estas estructuras es importante analizar operadores

que serán de vital importancia para el manejo, ya sea la bifurcación, o ya sea la repetición. Estos operadores son los operadores relacionales. No son más que las expresiones lógicas que usamos en situaciones en las que se deben proporcionar instrucciones alternativas que pueden o no ejecutarse dependiendo de los datos de entrada, para mostrar el cumplimiento o no de una determinada condición.

Operadores relacionales

Operador Significado Equivalente matemático < Menor que < > Mayor que >

>= Mayor o igual que ≥ <= Menor o igual que ≤ <> Diferente que ≠ = Igual que =

La jerarquía de los operadores es la siguiente:

OPERADOR

PRIORIDAD

Not SE EVALÚA EN PRIMER LUGAR

*, /, div, mod, and EN SEGUNDO

7

Page 8: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

+, -, or EN TERCERO

Operadores relacionales EN ÚLTIMO LUGAR

IF-THEN-ELSE

if expresión lógica then sentencia A else sentencia B. Si la expresión lógica es verdadera se ejecuta la sentencia A y el control del programa pasará a la sentencia inmediatamente al if-then-else (no se ejecuta la sentencia B) sino es verdadera, se ejecuta la sentencia B. Veamos dos programas y se recomienda ejecutarlo (prueba de escritorio). Ejemplo:

program Parte_fraccionaria; uses crt; var n:real; begin write(’Deme número: b’); readln(n); if n = trunc(n) then writeln(‘El numero no tiene parte fraccionaria’); end.

CASE

La sentencia case se utiliza para elegir entre diferentes alternativas. Una sentencia case se compone de varias sentencias simples. Cuando case se ejecuta, una (y sólo una) de las sentencias simples se selecciona y ejecuta. No es más que una estructura de control que permite la selección de un grupo particular de sentencias entre varios grupos posibles. La selección se basa en el valor de una expresión a la que se le denomina selector.

8

Page 9: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

La forma general (el formato) de la estructura CASE es: case expresión OF lista de rótulos 1: sentencia 1; lista de rótulos 2: sentencia 2; . . . lista de rótulos n: sentencia n end

La expresión puede ser cualquier expresión de tipo simple que no sea real. A continuación se muestra un ejemplo de esta estructura con un bloque de programa. Se supone variable de tipo de char.

Case opcion of ‘R’ : writeln(‘ROJO’); ‘B’ : writeln(‘BLANCO’); ‘A’ : writeln(‘AZUL’) end; De este modo se escribirá ROJO si la variable opcion tiene el valor R,

BLANCO si vale B y AZUL si su valor es A. No se producirá salida si opcion tiene asignado algún otro carácter distinto de R, B o A.

Otro ejemplo es el siguiente: case trunc(x/10) of 1 : y := y + 5; 3, 5 : y := y – 2; 6 : y := 2 * (y +1); 4 : ; 9 : y := 0 end

En este ejemplo las variables x e y son de tipo real. El valor x/10 se

trunca, por lo que se vuelve entero, y éste se utiliza como selector. Trata de deducir el resto.

WHILE – DO.

El concepto de bucle permite usare repeticiones de una determinada(s) sentencia(s). La estructura while-do es una estructura donde de antemano no se conoce el número de iteraciones y el cuerpo del ciclo se repite mientras se cumple una determinada condición. Por esta razón, a estos ciclos se les conoce también como bucles condicionales.

9

Page 10: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Estructura simple: while expresión lógica do sentencia; Estructura compuesta: while expresión lógica do begin sentencia 1; . . . sentencia n end;

condición Sentencia (s)

REPEAT – UNTIL

verdadera

falsa

Es una variante de la estructura anterior. Esta sentencia (repeat-until) especifica un bucle condicional que se repite hasta que la condición se hace verdadera. Veamos el diagrama de flujo y el formato de esta estructura:

condición

Cuerpo del ciclo (sentencias)

verdadera falsa

Estructura de repeat-until: repeat sentencia 1; . . cuerpo del . bucle o ciclo sentencia n until expresión lógica

FOR – DO Cuando se quiere saber con exactitud cuántos ciclos se desea que ejecute la computadora se usa la estructura For – do a diferencia de las dos estructuras anteriores. El formato para esta sentencia es:

10

Para estructura simple: for variable := Vi to Vf do sentencia; Para una sentencia compuesta: for V := Vi to Vf do begin sentencia1; sentencia 2;

Page 11: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Los valores Vi y Vf pueden expresarse como constantes, variables o expresiones, por lo que deben ser del mismo tipo que la variable de control. Veamos algunos ejemplos a través de segmentos de programa: EJERCICIOS PROPUESTOS DE LA UNIDAD 2.

1. PROGRAMACIÓN. Realizar los siguientes programas en PASCAL.

If–then; if–then–else. a) Programa que pida tres enteros y emita un mensaje que indique

si están o no ordenados en forma descendente.

b) De tres números enteros indicar cuál es el mayor de los tres.

Ciclos a) Calcular la suma de los primeros 250 números pares. b) Se desea calcular, independientemente, la suma de los números

pares e impares comprendidos entre 1 y 999, incluyendo estos dos.

c) Escribir los n primeros números de la serie de Fibonacci, sabiendo que F1 = 1 y F2 = 1 y que Fn = Fn-1 + Fn-2.

d) Realizar un programa que mueva un carácter a lo largo de todo

un renglón de izquierda a derecha o viceversa.

e) Calcular las siguientes sumas, para una n determinada.

1) 1 1 11 ...2 3 n

+ + + +

2) 2 3

1 2 3 3...2 2 2 2n+ + + +

11

Page 12: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

f) Leer una sucesión de números distintos de cero (el último número de la sucesión es – 99) y obtener el número mayor. Como resultado se debe visualizar el número mayor y un mensaje de indicación de número negativo, en caso de que se haya leído un número negativo.

Ejemplos de Programas en Pascal que utilizan estructuras alternativas

Programa que pide un año y menciona a que siglo pertenece

program siglo; uses crt; var r,s,a:integer; begin write('dame un año'); readln(a); s:=a div 100; r:=a mod 100; if r<>0 then s:=s+1; writeln('el siglo al que pertenece es:',s); readkey; end.

Programa que menciona si un número introducido por el usuario es

múltiplo de 5 o no

program MULTIPLO; uses crt; var n,r:integer; begin write('dame un número'); readln(n);

12

Page 13: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

r:=n mod 5; if r=0 then writeln(n,' si es múltiplo de 5'); else writeln(n,' no es múltiplo de 5'); readkey; end.

Programa que pide un número entero y positivo y lo escribe con letra

program letra; uses crt; var a:array[1..5] of integer; n,i:integer; begin clrscr; for i:=1 to 5 do a[i]:=0; write('dame un numero:'); readln(n); i:=1; repeat a[i]:=n mod 10; n:=n div 10; i:=i+1; until n=0; case a[5] of 1:write('diez y '); 2:write('veinti'); 3:write('treinta y '); 4:write('cuarenta y '); 5:write('cincuenta y '); 6:write('sesenta y '); 7:write('setenta y '); 8:write('ochenta y '); 9:write('noventa y '); end; case a[4] of 1:if a[5]=0 then write('mil') else write('uno mil '); 2:write('dos mil');

13

Page 14: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

3:write('tres mil '); 4:write('cuatro mil '); 5:write('cinco mil '); 6:write('seis mil '); 7:write('siete mil '); 8:write('ocho mil '); 9:write('nueve mil '); end; case a[3] of 1:write(' ciento '); 2:write(' doscientos'); 3:write(' trescientos '); 4:write(' cuatrocientos '); 5:write(' quinientos '); 6:write(' seiscientos '); 7:write(' setecientos '); 8:write(' ochocientos '); 9:write(' novecientos '); end; case a[2] of 1:case a[1] of 0:write('diez'); 1:write('once'); 2:write('doce'); 3:write('trece'); 4:write('catorce'); 5:write('quince') else write('diez y '); end; 2:if a[1]<>0 then write(' venti') else write('veinte'); 3:if a[1]<>0 then write(' treinta y ') else write(' treinta'); 4:if a[1]<>0 then write(' cuarenta y ') else write(' cuarenta'); 5:if a[1]<>0 then write(' cincuenta y ') else write(' cincuenta'); 6:if a[1]<>0 then write(' sesenta y ') else write(' sesenta'); 7:if a[1]<>0 then write(' setenta y ') else write(' setenta'); 8:if a[1]<>0 then write(' ochenta y ') else write(' ochenta'); 9:if a[1]<>0 then write(' noventa y ') else write(' noventa'); end; case a[1] of 1:if a[2]<>1 then write(' uno'); 2:if a[2]<>1 then write(' dos'); 3:if a[2]<>1 then write(' tres'); 4:if a[2]<>1 then write(' cuatro'); 5:if a[2]<>1 then write(' cinco'); 6:write('seis'); 7:write('siete'); 8:write('ocho'); 9:write('nueve'); end; readln;

14

Page 15: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

end.

Ejercicios que involucran el uso de estructuras alternativas

1. Realiza un programa que convierta una cantidad dada en pesos en

dólares.

2. Realiza un programa que pida el nombre del usuario y lo salude.

3. Realiza un programa que obtenga la parte entera y el residuo de una división.

4. Realiza un programa que sume y multiplique 2 números introducidos por

el usuario.

5. Realiza un programa que mencione si un número introducido por el usuario es par o impar.

6. Realiza un programa que obtenga el mayor de dos números introducidos

por el usuario.

7. Realiza un programa que obtenga el mayor de tres números introducidos por el usuario.

8. Realiza un programa que mencione si un número introducido por el

usuario es positivo, negativo o es el cero.

9. Realiza un programa que pida las dimensiones de un triángulo y menciones si es equilátero, isósceles o escaleno.

10. Realiza un programa que pida un número al usuario del 1 al 7 y que

muestre el nombre del día que le corresponde.

11. Realiza un programa que mencione si un número de tres dígitos (introducido por el usuario) es capicúa o no.

15

Page 16: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

12. Realiza un programa que muestre un número de tres dígitos (introducido por el usuario) de manera invertida.

CUESTIONARIO

1. Da algunos elementos de un programa en pascal. 2. Da algunos ejemplos de palabras reservadas. 3. ¿Cuáles son las reglas para construir identificadores? 4. En pascal, ¿es lo mismo escribir program tarea; que PROGRAM

TAREA;? 5. ¿Qué es un comentario en pascal? Proporciona un ejemplo. 6. ¿Cuál es el operador de asignación en pascal? 7. ¿Cuáles son las tres partes en las que se compone un programa en

pascal? 8. Proporciona un ejemplo de una cabecera de un programa. 9. ¿Qué función realiza sqrt(n)? 10. ¿Qué función realiza sqr(n)? 11. Investiga de que palabras en ingles proviene sqrt . 12. ¿Qué valor se le asigna a la variable entera x si existe la asignación

x:=7 mod 2; ? 13. ¿Qué valor se le asigna a la variable entera x si existe la asignación x:=7

div 2; ? 14. ¿Qué tipos de datos se pueden utilizar con los operadores mod y div? 15. ¿Con que palabras se encuentra acotado el cuerpo del programa? 16. ¿Qué tipos de datos conoces en pascal? 17. ¿Qué tipo de dato numérico puede tomar valores no enteros y enteros? 18. ¿Cómo declararías una constante pi con valor de 3.1416.? 19. ¿Cómo declararías a, b, y c como variables de tipo real? 20. ¿Cuáles son las reglas relativas a los punto y coma? 21. ¿Se puede realizar la siguiente declaración?

var begin: real;

Justifique su respuesta.

16

Page 17: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

22. ¿En que casos se debe omitir el punto y coma? 23. Menciona 5 funciones predefinidas en pascal y lo que realiza cada una

de ellas. 24. Menciona 10 caracteres en pascal y para que sirven. 25. ¿Cuáles son los operadores relacionales? 26. ¿Cuáles son los operadores lógicos? 27. ¿Cuáles son los operadores aritméticos?

ALGUNAS RESPUESTAS AL CUESTIONARIO

2. begin ,program, end. 4. si, el compilador de pascal no hace diferencia entre las mayúsculas y las minúsculas 6. := 7. cabecera del programa, sección de declaraciones y el cuerpo del programa 8. program hola; 9. devuelve la raíz cuadrada de n 10. devuelve el cuadrado de n 11. square root (raíz cuadrada) 12. 1 13. 3 14. enteros 15 begin y end. 25. < , > , <= , >= , = , <> 26. and, or y not 27 +, -, *, /, div y mod

17

Page 18: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Ejemplos de Programas en Pascal que utilizan estructuras de control repetitivas

Programa en pascal que visualice en pantalla los números pares entre 1 y 25.

program pares;

uses crt; var num:integer; begin

num:=2; clrscr; repeat

writeln (num); num:= num + 2;

until num= 26; end. program pares; uses

crt; var

sem:integer; begin

clrscr; sem:=1; while sem <= 25 do begin

if (sem mod 2)=0 then writeln(sem); sem:=sem + 1;

18

Page 19: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

end; end.

Programa en pascal que visualice en pantalla los números múltiplos de 5

comprendidos entre 1 y 100.

program multiplos; uses crt; var num:integer; begin

num:= 5; clrscr; while num <= 100 do begin

writeln (num); num:= num + 5;

end; end. program multiplos; uses crt; var sem:integer; begin

clrscr; for sem:= 1 to 100 do begin

if sem mod 5=0 then

19

Page 20: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

writeln(sem); end;

end.

Programa en pascal que sume los números enteros comprendidos entre 1

y 10.

program suma; uses crt; var num, x:integer; begin

clrscr; num:=1; x:=1; while num <= 10 do begin

writeln (x); num:= num + 1; x:= x + num;

end; end.

Programa en pascal que genere la tabla de multiplicar de un número

introducido por el teclado.

program tablas; uses crt; var tabla, x, num:integer; begin

clrscr; write (’introduzca un numero para hacer su tabla de multiplicar: ’); readln (num); writeln (‘‘);

20

Page 21: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

repeat writeln (tabla); x:= x + 1; tabla:= num * x;

until x=11; end. program tablas; uses crt; var num,sem:integer; begin

clrscr; write(’introduzca un numero entero: ’); readln(num); for sem:=1 to 10 do begin

write(num); write(’ *’); write(sem); write(’= ’); writeln(num*sem);

end; end.

Programa en pascal que realice la pregunta ¿desea continuar s/n? y que

no deje de hacerla hasta que el usuario teclee n.

program respuesta; uses

crt; var

respuesta:char; begin

clrscr; repeat

writeln (’desea continuar: s/n ’); readln (respuesta); until respuesta=’n’;

end. program respuesta; uses

crt;

21

Page 22: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

var respuesta:string;

begin clrscr; repeat

writeln (’desea continuar: si/no ’); readln (respuesta); until respuesta=’no’;

end.

Programa en pascal que calcula el factorial de un número.

Conocimientos previos:

• Elementos básicos de Pascal • Estructuras de control de repetición • Factorial de un número

program factorial_n; uses

crt; var

factorial, x, num, y:real; begin

{este programa hace el factorial de un numero} clrscr; write (’introduzca un numero para hacer su factorial: ’); readln (num); writeln (’’); x:=1; while num > 1 do

begin x:=x * num; num:=num - 1;

end; writeln (x); end. program factorial_n; uses crt; var

temp,num,fac:longint; begin

clrscr; fac:=1; temp:=num; write(’introduzca un numero -> ’); readln(num);

22

Page 23: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

temp:=num; while num>=1 do begin

fac:=fac*num; num:=num-1;

end; write(’el factorial de ’); write(temp); write(’ es ’); write(fac);

end.

Programa en pascal que detecte si un número es primo o no.

Conocimientos previos:

• Elementos básicos de Pascal • Estructuras de control de repetición • Número primo

program primo_o_no; uses crt; var

num, x,primo:integer; begin

clrscr; writeln (’introduzca un numero para comprobar si es primo.’); writeln (’’); x:=1; write (’introduzca el numero: ’); readln (num); writeln (’’); repeat

x:= x + 1; primo:= num mod x; writeln (primo);

until x = 5; writeln (’’); writeln (’si ninguno de los resultados es 0, el numero es primo.’); writeln (’si alguno es 0, el numero no es primo.’);

end. program primo_o_no; uses crt; var

i,num,flag:integer; begin

clrscr; flag:=0; write(’introduzca un numero -> ’); readln(num); for i:=2 to (num-1) do begin

23

Page 24: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

if (num mod i)=0 then flag:=1;

end; if flag=1 then begin write(num); write(’ no es un numero primo’);

end else begin

write(num); write(’ es un numero primo’); end; end.

Programa que pide un número entero y positivo y muestra cuantos dígitos tiene y cuanto suman

program digitos; uses crt; var i,x,s,n,a:integer; begin clrscr; write(’dame un numero entero y positivo:’); readln(n); a:=n; repeat x:=n mod 10; s:=s+x; i:=i+1; n:=n div 10

until n=0; writeln(’el número de dígitos de ’,a,’ es: ’,i); writeln(’la suma de los dígitos de ’,a,’ es: ’,s);

readkey; end.

Programa que muestra un número entero y positivo de manera invertida

program inversa; uses crt; var a:longint; begin clrscr; write(’Dame una cantidad:’); readln(a); write(’El número invertido es:’); repeat write(a mod 10); a:=a div 10; until ((a div 10)=0); if ((a mod 10))<>0 then write(a mod 10);

24

Page 25: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

readkey; end. Ejercicios que involucran estructuras de control

repetitivas

1. Realiza un programa que pida el nombre al usuario y muestre su nombre 10 veces.

2. Realiza un programa que muestre los primeros 10 números pares

3. Realiza un programa que muestre los divisores de un número

introducido por el usuario.

4. Realiza un programa que imprima el número de divisores de un número introducido por el usuario.

5. Realiza un programa que obtenga el mayor de 10 números.

6. Realiza un programa que obtenga el resultado de elevar un número a

otro número b, donde a es real y b es entero

7. Realiza un programa en que convierta un número de base 2 a base 10.

8. Realiza un programa en que simule el movimiento de una palabra de manera horizontal.

9. Realiza un programa que obtenga el n-ésimo término de la sucesión

fibonacci1 donde es un número introducido por el usuario.

10. Realiza un programa que muestre los números primos que hay entre 1 y 2000.

11. Realiza un programa que mencione si un número introducido por el

usuario es perfecto2 o no.

12. Realiza un programa que obtenga los primeros 4 números perfectos.

1 La sucesión fibonnaci es 1,1,2,3,5,8,13,21,… 2 Un número n es perfecto cuando la suma de los divisores menores a n es igual a n

25

Page 26: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

UNIDAD

3

PROCEDIMIENTOS Y FUNCIONES

26

Page 27: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

FUNCIONES EN TURBO PASCAL

ESTRUCTURA, DECLARACIÓN Y EMPLEO DE UNA FUNCION

Una función es idéntica a un procedimiento con una diferencia: la función devuelve un único valor de tipo simple. La cabecera comienza con la palabra reservada FUCTION seguida de un identificador , a continuación la lista de parámetros formales. Dado que la función devuelve un valor de tipo simple, en la cabecera y separada por dos puntos del cierre del paréntesis, se debe indicar el tipo de dato que devuelve la función. El identificador de la función debe estar situado de por lo menos en una sentencia de asignación y nunca puede figurar a la derecha de una asignación o como componente de una expresión.

Ejemplo: Programa que contiene una función que calcula el mayor de

dos números. Program ejemplo; Uses crt; Var a,b,:real; function maximo(x,y:real):real; begin if x>y then maximo:=x; else maximo:=y; end; begin write(‘dame un número:’);

27

Page 28: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

readln(a); write(‘dame otro número:’); readln(b); writeln(‘el mayor es:’,maximo(a,b) ); readln; end.

Investigar

1. Investiga que es la recursividad

2. Investiga cual es la diferencia primordial entre un procedimiento y una función

3. Investiga la definición del factorial de manera recursiva

4. Investiga la definición de número de Fibonacci

Ejercicios para que el estudiante utilice funciones para resolverlos

1. Realizar un programa que contenga una función que calcule el factorial

de un número n.

2. Realizar un programa que contenga una función que obtenga la media de 3 valores.

3. Realiza un programa que muestre todos los valores de f(x)=(x-3)/(x+6)

para x igual a -5, -4, -3,….,5.

4. Realiza un programa que muestre todos los valores de f(x)= x+5 para x igual a 1, 2, 3,4,…,100.

5. Realiza un programa que obtenga la suma de los dígitos de un número

entero positivo introducido por el usuario.

28

Page 29: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

6. Realiza un programa que obtenga el resultado de elevar un número a otro número b, donde a es real y b es entero.

7. Realiza un programa que obtenga el área de un cubo.

8. Realiza un programa que obtenga el mayor de tres números

9. Realiza un programa que obtenga la suma de los primeros n términos de

la sucesión 2, 4, 6, 8,10, … 10. Realiza un programa que obtenga el número de combinaciones3 de n

elementos tomando r a la vez.

11. Realiza un programa que obtenga el factorial de un número utilizando una función recursiva.

12. Realiza un programa que obtenga el fibonacci de un número utilizando

una función recursiva.

13. Realiza un programa que obtenga el resultado de elevar un número real a otro número entero b utilizando una función recursiva.

14. Realiza un programa que obtenga la suma de los primeros n términos de

la sucesión 1, 2, 3, …,n. Utiliza una función recursiva

Cinco Retos

1. Realiza un programa en pascal que obtenga las tablas de multiplicar en base 16.

2. Realiza un programa que obtenga probabilidades binomiales. 3. Realiza un programa que agrupe por el método de la raíz cuadrada un

conjunto de n datos. 4. Realiza un programa que dibuje por medio de gráficos el sistema solar. 5. Realiza un programa que obtenga el determinante de una matriz

cuadrada.

3 Consulte la fórmula y una pequeña explicación de esto con algún profesor o libro de estadística

29

Page 30: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

UNIDAD

4

ESTRUCTURAS DE DATOS DEFINIDOS POR EL USUARIO

30

Page 31: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Ejemplos de Programas en Pascal que utilizan array

Programa en pascal que solicita cinco números, los almacena en un array

y luego calcula la media aritmética de esos números

program media_5; uses crt; var arr_num:array [1..5] of real; var i, num:integer; var media:real; begin

clrscr; writeln (’escriba 5 números para hacer su media aritmética: ’); for i := 1 to 5 do begin

readln(num); arr_num[i]:=num;

end; for i:=1 to 5 do

media:= media + arr_num[i]; media:= media / i; writeln (’la media aritmetica es: ’,media:5:2);

end. program media_5; uses crt; var arr_num:array[1..10] of real; var num,suma,media:real; var i:integer; begin

clrscr; i:=0; suma:=0; media:=0; while i<5 do

31

Page 32: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

begin write(’número ’,i+1,’--->’); readln(num); arr_num[i]:=num; suma:=suma+num; i:=i+1;

end; media:=(suma/i); write(’media: ’, media:5:2);

end.

Programa en pascal que tras asignar los números, 23, 45, 68, 99, 10, 15 y 4 a un array, determine las posiciones del array en las que se encuentran

el máximo y el mínimo valor.

program max_y_min; uses crt; const arr: array [1..7] of integer=(23,45,68,99,10,15,4); var i, mayor, menor,posi_mayor,posi_menor:integer; begin

clrscr; mayor:= arr[1]; menor:= arr[1]; for i:=2 to 7 do begin

if arr[i] >= mayor then begin

mayor:= arr[i]; posi_mayor:=i;

end else

continue; end; writeln (’el número mayor es: ’,mayor:3); writeln (’su posición es: ’,posi_mayor:3); writeln (’’); for i:=2 to 7 do begin

if arr[i] <= menor then begin

menor:= arr[i]; posi_menor:=i;

end else

continue; end; writeln (’el número menor es: ’,menor:3); writeln (’su posición es: ’,posi_menor:3);

32

Page 33: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

end.

Método de la burbuja (este programa ordena de manera ascendente un

conjunto de números)

Conocimientos previos:

• Elementos básicos de Pascal • Arreglos • Estructuras de control de repetición • Método de la burbuja

program x; uses crt; var

i,j,n:integer; a:array[1..60] of string; aux:string;

begin write(’dame el número de alumnos:’); readln(n); for i:=1 to n do begin write(’nombre ’,i,’:’); readln(a[i]); end; for i:=1 to n do for j:=i+1 to n do if a[i]>a[j] then begin aux:=a[i]; a[i]:=a[j]; a[j]:=aux; end; for i:=1 to n do writeln(a[i]); readkey end.

33

Page 34: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Ejercicios que involucran arreglos

1. Realiza un programa que mencione si una frase introducida por el usuario es palíndromo4 o no.

2. Realiza un programa que mencione si un número introducido por el

usuario es capicúa5 o no.

3. Realiza un programa que pida n números al usuario y los muestre después de proporcionarlos, n es un número entero positivo y también es introducido por el usuario.

4. Realiza un programa que ordene un listado de 10 nombres introducidos

por el usuario.

5. Realiza un programa que obtenga la mediana6 de un conjunto de datos. Sugerencia: utiliza el programa del método de la burbuja.

6. Realiza un programa que obtenga la moda7 de un conjunto de datos.

7. Realiza un programa que obtenga la desviación estándar8 de un

conjunto de datos.

8. Realiza un programa que convierta un número binario introducido por el usuario a base 10.

9. Realiza un programa que convierta un número en base 10 introducido

por el usuario a base 2. 10. Realiza un programa que convierta un número de base 10 (este número

introducido por el usuario) a cualquier a base n, donde n es entero positivo e introducido por el usuario.

4 Frase que puede leerse de igual forma de izquierda a derecha como de derecha a izquierda. Ejemplo: La ruta natural. 5 Número que puede leerse de igual forma de izquierda a derecha como de derecha a izquierda. Ejemplo: 12321. 6 Dato que divide en dos a un conjunto de datos, mitad de ellos mayor o igual a él y mitad de ellos menor o igual a él. 7 Dato que ocurre con mayor frecuencia 8 Medida de dispersión, consulte un libro de estadística para mayor referencia

34

Page 35: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

11. Realiza un programa que pida un número que pertenezca a base n ( el usuario deberá especificar a que base pertenece) y lo convierta a base 10.

12. Realiza un programa que realiza conversiones de base 8 a base 2 y

viceversa.

13. Realiza un programa que realice conversiones de base 16 a base 2 y viceversa.

14. Realiza un programa en Pascal que obtenga la suma de dos números binarios.

Ejemplos de Programas en Pascal que utilizan array

Programa con parámetros por variable program ejemplo; uses crt; var x,y:real; procedure iguales(var a,b:real); begin a:=b; end; begin clrscr; x:=4; y:=356; iguales(x,y); writeln(x:4:4,’ ’,y:4:4); readkey; end. Del ejemplo, ¿qué realiza el programa? ______________________________________________________________________________________________________________________________

Programa que intercambia el valor de dos variables usando un

procedimiento

program intercambiar; uses crt; var x,y:real;

35

Page 36: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

procedure INTERCAMBIO(var a,b:real); var aux:real; begin aux:=a; a:=b; b:=aux; end; begin clrscr; write(’Introducir 2 numeros:’); readln(x,y); INTERCAMBIO(X,Y); writeln(x:3:3,’ ’,y:3:3); readkey; end. Del ejemplo, ¿qué hubiera sucedido si los parámetros a y b no se hubieran declarado por variable? ______________________________________________________________________________________________________________________________

Programa que menciona cual es el mayor entre dos números. Este programa utiliza un procedimiento

program m; uses crt; var x,y,elmayor:real; procedure MAYOR(a,b:real;var max:real); begin if a>=b then max:=a else max:=b; end; begin clrscr; write(’Introducir 2 numeros:’); readln(x,y); MAYOR(X,Y,ELMAYOR); writeln(’El mayor es ‘, elmayor); end.

36

Page 37: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Investigar

1. Investiga que es la programación modular

2. Investiga que es un procedimiento en Pascal

Ejercicios para que el estudiante utilice procedimientos para resolverlos

3. Realizar un programa sume, reste, multiplique o divida 2 números

introducidos por el usuario.

4. Realice un programa que mencione si dos números introducidos por el usuario son primos gemelos9 o no.

5. Realice un programa que mencione si un número es perfecto o no

prefecto, primo o no, par o impar, positivo o negativo, capicúa o no.

9 Dos números primos cuya diferencia entre ellos es 2, ejemplo 5 y 7

37

Page 38: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

UNIDAD

5

INTRODUCCIÓN A LA PROGRAMACIÓN EN DELPHI

38

Page 39: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

.

Un objeto representa un ente capaz de ser identificable, o una entidad real o abstracta, con un papel definido.

Una clase es un conjunto de objetos que comparten una estructura y comportamiento comunes.

Una de las ventajas de la programación orientada a objetos es que permite crear objetos nuevos, que aparte de tener sus propiedades y métodos disponen las del otro objeto llamado padre. A esto se reconoce como herencia.

Se dice que el objeto tiene la característica de encapsulación cuando los datos que se declaren en el interior del objeto sólo puedan ser manipulados por los métodos de ese objeto, que estarán precisamente especializados en la manipulación de los miembros del objeto.

Los eventos son señales que el entorno recibe desde distintos elementos, como puedan ser del ratón, del teclado o hasta del mismo sistema.

Un método es un procedimiento o función que nos permite realizar una determinada acción en el componente, pudiendo necesitar o no el paso de algún parámetro.

La siguiente figura pertenece a la ventana principal de Kylix:

La siguiente figura pertenece al Object inspector, en la cual se pueden ver y modificar las propiedades y eventos del componente:

39

Page 40: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

CUESTIONARIO

1. Todo Objeto tiene: a) Propiedades Eventos y Métodos b) Propiedades Eventos y Características c) Ninguna de las anteriores

2. Las propiedades son: a) Variables pertenecientes a un objeto b) Definición de un evento c) Acción realizada por el usuario final d) Ninguna de las anteriores

3. Los eventos son: a) Señales que el entorno recibe desde distintos elementos b) Señales enviadas por los objetos c) Propiedades de los objetos

4. Investiga que es la programación orientada a objetos. 5. ¿Qué es una clase? 6. ¿Qué es la herencia? 7. ¿Qué es el encapsulamiento? 8. ¿Qué es un método? 9. ¿Qué ocurre si cerramos la ventana principal de Kylix? 10. Da un ejemplo de evento. 11. Da un ejemplo de objeto. 12. Cita 5 propiedades de un formulario.

40

Page 41: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

Bibliografía

1. JOYANES, Aguilar Luis. Programación en Turbo Pascal / Borland. Pascal 7, Mc-Graw-Hill, 1998.

2. JOYANES, Aguilar Luis.Pascal y Turbo Pascal. Un enfoque práctico, Mc-Graw-Hill, 1995.

3. PASCUAL, González Francisco. Domine Turbo Pascal 6, Madrid, RA-MA, 1992.

41

Page 42: LENGUAJE DE PROGRAMACIÓN PASCALoscarjosebl.webcindario.com/Pascal42.pdf · programas en PASCAL es la siguiente: end. program identificador {cabecera del programa} uses identificadores

Guía de Cibernética y Computación II. Turno matutino

42