Download Lenguaje de Programación Pascal 42 paginas

Document related concepts

Pascal (lenguaje de programación) wikipedia , lookup

Transcript
Guía de Cibernética y Computación II. Turno matutino
UNIDAD
1
LENGUAJE DE PROGRAMACIÓN
PASCAL
1
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.
2.
3.
Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no
puede contener espacios en blancos.
Letras, dígitos y caracteres subrayados ( _ ) están permitidos después
del primer carácter.
No se puede utilizar una palabra reservada como identificador; sin
embargo, los identificadores estándar se pueden redefinir:
2
Guía de Cibernética y Computación II. Turno matutino
Ejemplos:
Identificadores válidos
Nombre
cobra_iva
Pagina1
A_d_e
Pascal_begin
Identificadores No válidos
1Nombre
cobra iva
La_@beja
A&M
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
Byte
Integer
Longint
Shortint
Word
Tipo entero
Rango
0 . . 255
-32768 . . 32767
-247483648..2147483647
-128 . . 127
0 . . 65535
Formato
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
Real
Single
Double
Extended
Comp
Rango
2.910-39 .. 1.71038
1.510-45 .. 3.41038
5.010-324.. 1.710308
1.910-4932.. 1.1104932
-263 + 1 .. 263 - 1
Cifras
11-12
7-8
15-16
19-20
19-20
Tamaño y bytes
6
4
8
10
8
3
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
Guía de Cibernética y Computación II. Turno matutino
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.
EJERCICIOS PROPUESTOS DE LA UNIDAD 1
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)
c)
d)
b *b – 4 * a * c;
3 * x * x * x *x – 5 * x * x * x + x * 12 – 17;
(b + d) / (c + 4);
(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)
(a + b + c )
donde p =
(semiperímetro).
2
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 = c
dx + ey = f
se puede resolver con las siguientes fórmulas:
5
Guía de Cibernética y Computación II. Turno matutino
x=
ce − bf
ae − bd
y=
af − cd
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
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
Significado
Equivalente matemático
Menor que
<
Mayor que
>
Mayor o igual que
≥
Menor o igual que
≤
Diferente que
≠
Igual que
=
Operador
<
>
>=
<=
<>
=
La jerarquía de los operadores es la siguiente:
OPERADOR
PRIORIDAD
Not
SE EVALÚA EN PRIMER LUGAR
*, /, div, mod, and
EN SEGUNDO
7
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
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
Guía de Cibernética y Computación II. Turno matutino
Estructura simple:
while expresión lógica do
sentencia;
condición
falsa
Estructura compuesta:
while expresión lógica do
begin
sentencia 1;
.
.
.
sentencia n
end;
verdadera
Sentencia (s)
REPEAT – UNTIL
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:
Estructura de repeat-until:
Cuerpo del
ciclo
(sentencias)
falsa
condición
verdadera
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:
Para estructura simple:
for variable := Vi to Vf do
sentencia;
Para una sentencia compuesta:
for V := Vi to Vf do
begin
sentencia1;
sentencia 2;
10
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 +
2)
1 1
1
+ + ... +
2 3
n
1 2
3
3
+ 2 + 3 + ... + n
2 2
2
2
11
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
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
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
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
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.
2.
3.
4.
Da algunos elementos de un programa en pascal.
Da algunos ejemplos de palabras reservadas.
¿Cuáles son las reglas para construir identificadores?
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
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
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
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
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
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
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
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
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
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
fibonacci 1 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 perfecto 2 o no.
12. Realiza un programa que obtenga los primeros 4 números perfectos.
1
2
La sucesión fibonnaci es 1,1,2,3,5,8,13,21,…
Un número n es perfecto cuando la suma de los divisores menores a n es igual a n
25
Guía de Cibernética y Computación II. Turno matutino
UNIDAD
3
PROCEDIMIENTOS Y
FUNCIONES
26
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
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
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 combinaciones 3 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
Guía de Cibernética y Computación II. Turno matutino
UNIDAD
4
ESTRUCTURAS DE DATOS
DEFINIDOS POR EL USUARIO
30
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
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
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
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índromo 4 o no.
2. Realiza un programa que mencione si un número introducido por el
usuario es capicúa 5 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 mediana 6 de un conjunto de datos.
Sugerencia: utiliza el programa del método de la burbuja.
6. Realiza un programa que obtenga la moda 7 de un conjunto de datos.
7. Realiza un programa que obtenga la desviación estándar 8 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
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
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
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 gemelos 9 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
Guía de Cibernética y Computación II. Turno matutino
UNIDAD
5
INTRODUCCIÓN A LA
PROGRAMACIÓN EN DELPHI
38
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
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
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, RAMA, 1992.
41
Guía de Cibernética y Computación II. Turno matutino
42