Escolar Documentos
Profissional Documentos
Cultura Documentos
DAET - FATEC
ALGORITMICA Y PROGRAMACION
1. INTRODUCCION
El objetivo a tener en cuenta para empezar el tratamiento y a obtencin de la
informacin en forma mecanizada en el rea de informtica son:
Resolver problemas creativamente
Ser eficientes en el intento
Al mnimo costo
Si no dispone de nuevos recursos usar los disponibles
1.1 ALGORITMO
Un algoritmo es un mtodo para resolver un problema mediante una serie de
pasos precisos, definidos y finitos
Caractersticas:
1.2 PROGRAMA
Es la descripcin de un algoritmo en un lenguaje de programaci6n, es
decir, un lenguaje orientado a optimizar la descripcin de los pasos que
debe realizar el ordenador para alcanzar el objetivo final del algoritmo.
Segn el objetivo del programa y el lenguaje en el que se
describe, se distinguen diversos tipos de programas:
Fuente: es el programa escrito por el programador a partir del algoritmo.
En el caso de no emplear un lenguaje de descripcin formal de
algoritmos, es el primero que introducimos en el ordenador, origen, por
tanto, de todo el proceso para conseguir que el ordenador ejecute nuestro
algoritmo, razn por la cual se le llama "fuente". El programa fuente se
DAET - FATEC
DAET - FATEC
DAET - FATEC
Ejemplo
Entrada
Proceso
Salida
FIN
modular.
DAET - FATEC
Ejemplo:
DAET - FATEC
b. PSEUDOCODIGO
Herramienta de programacin en la que las instrucciones se escriben en palabras
similares al ingles o espaol, que facilitan tanto la escritura como la lectura de
programas
Ejemplo:
DAET - FATEC
DAET - FATEC
DAET - FATEC
3.- ALGORITMICA
Como se defini en el apartado anterior la obtencin del algoritmo para el
desarrollo de una informacin mecanizada (la informtica) conlleva a utilizar
herramientas de diseo de resolucin de problemas, la cual nos basaremos en
el pseudocodigo. En general definiremos la estructura que debe tener un
algoritmo bajo los siguientes conceptos:
3.1.- Accin.
Es cada uno de los pasos en los que hemos descrito un algoritmo.
Las acciones son operaciones elementales que podemos expresar en un
lenguaje algortmico. Sern ms o menos complejas dependiendo del
nivel de detalle de descripci6n del algoritmo. Los algoritmos descritos de
forma muy general estn desglosados en acciones muy complejas,
mientras que los descritos de forma detallada estn desglosados en
acciones muy sencillas, pr6ximas al lenguaje de programacin
3.2.- SENTENCIA.
Es una instruccin que podemos expresar en un lenguaje de
programacin. La precisin de las sentencias determina la precisin de la
ejecucin del programa, y para conseguirla deben ajustarse a una sintaxis
muy concreta.
Por extensin, se denomina tambin sentencia a las acciones
expresadas en un lenguaje algortmico.
DAET - FATEC
4. - SENTENCIA DE ASIGNACION
Son las sentencias en las que, como su nombre indica, se asigna un
valor a una variable.
10
DAET - FATEC
Ejemplos:
DECLARACION
VALIDEZ
abc
VALIDO
a123
VALIDO
1a2b
NO VALIDO
_MiVariable
VALIDO
Mi_Variable
VALIDO
Mi_123456
VALIDO
_1_2_3
VALIDO
Mi@Variable
NO VALIDO
4.2.- EXPRESION.
Una expresin es la descripcin de una o varias operaciones
a realizar sobre una o varias variables, es decir, una sentencia que
evala una formula matemtica.
Los operadores que intervienen en las expresiones son:
MATEMATICO
OPERADOR
RELACIONAL
SIGNIFICADO
OPERADOR
SIGNIFICADO
>
MAYOR
SUMAR
<
MENOR
RESTAR
>=
MAYOR o IGUAL
MULTIPLICAR
<=
MENOR o IGUAL
DIV
DIVISION ENTERA
IGUAL
DIVISION REAL
<>
DIFERENTE
MOD, %
RESTO ARTIMETICO
, ^,**
POTENCIACION
LOGICO
C
SIGNIFICADO
CONJUNCION
DISYUNCION
NO
NEGACION
11
DAET - FATEC
ASIGNACIN / AGRUPACION
OPERADOR
SIGNIFICADO
ASIGNAR
()
AGRUPAR
Ejemplo
a 1000
X (a+b) * 5
4.3.- PREDENCIA
La dificultad que representa escribir una formula matemtica en
forma de sentencia, es decir, en una sola lnea de texto, en los
lenguajes de programacin y en los algortmicos se subsana
mediante unas reglas de precedencia, que determinan de forma
inequvoca el orden en el que se ejecutara cada una de las
operaciones indicadas en la expresin. Las podemos resumir de la
forma siguiente:
-
12
DAET - FATEC
+, - (resta), or (o logica)
Las operaciones del mismo grupo (ej. * y /) se evaluan de izquierda
a derecha.
Expresin Matemtica
Expresin Algortmica
2A
2A + 3B
(2A + 3B) / (2A)
[(5C x 6D) / (3E)] x 5A
[(2X + 3Y) x (5Y 2X)]/2A
Entero
Real
ALFANUMERICOS
13
Carcter (CHAR)
Cadena (STRING)
DAET - FATEC
a, b, c
REAL:
x, y, z
texto1, texto2
LOGICO:
RESULTADO
(a + b) DIV d
(a + b) MOD d
(a > b) Y (c < d)
NO (a > b) O ( c <> d)
14
DAET - FATEC
X0
Y ENTERO ( a )
Y 97
C CHAR(97)
C a
A CHAR ( U +3)
AX
OPERACIN CADENAS
Para manipular cadenas presenta las siguientes operaciones
Comparacin: Las comparaciones de cadenas de caracteres se
hacen segn el orden de los caracteres en el cdigo ASCII y con los
operadores de relacin.
`0 < `1
`1 < `2
`8 < `9
`A < `B
`C < `D
`M > `B
`a < `h
`m > `b
`p < `r
15
DAET - FATEC
..
.
INICIO
..
..
INSTRUCCIONES
Y/ O SENTENCIAS
FIN
Ejemplo 1.
Ingrese un nmero entero, luego smele 2 unidades y visualcelo
16
DAET - FATEC
Ejemplo 2.
Algoritmo mitad de numero
variables
entero:
INICIO
leer(n)
n n DIV 2
escribir( n )
FIN
Ejemplo 3.
Ingrese el precio y la cantidad comprada de un producto, luego
calcule y visualice el total a pagar por la compra realizada.
Algoritmo total a pagar
Variables
entero:
cantidad
real:
precio, total
INICIO
leer( cantidad, precio )
total cantidad * precio
escribir( total )
FIN
Ejemplo 4.
Una empresa decide otorgar una bonificacin del 5% del haber bsico
por cada hijo a todos sus trabajadores. Calcule el total a pagar a un
trabajador.
Algoritmo pago con bonificacion
variables
entero : NroHijos
real:
constante
valorBoni = 0.05
INICIO
leer(Hbasico, NroHijos)
bonificacion (Hbasico * valorBoni) * NroHijos
total Hbasico + bonificacion
escribir( total )
FIN
17
DAET - FATEC
Ejemplo 5.
Una tienda otorga un descuento del 2.5% por cada 5 productos
adquiridos, calcular el total a pagar por una compra.
cantidad
18
DAET - FATEC
Ejemplo 7
Un ejemplo donde se observa la concatenacin de cadenas
Algoritmo ejemplo 7;
Variable
CADENA [40]: Cad1,Cad2,Cad3
INICIO
Cad1 := `Programa
Cad2 := ` de computadora
Cad3 := Cad1+Cad2
//concatenacin de cadenas
PROBLEMAS PROPUESTOS
1. Convertir grados centgrados a farenheit a partir de la siguiente formula:
GradosFar =1.8 * GradosCent+32
.
2. La nota final del curso de sistema de procesamiento de datos se obtiene de
acuerdo a las siguientes formulas:
PF=(Ep+2Ef+Pp)/4
Ef=(2Pe+Py)/3
Pp=(2Pa+Pc)/3
Donde:
PF
Promedio final
Ep
Ef
Pp
Pe
Py
Examen Parcial
Examen final
Promedio de practicas
Prueba escrita del examen final
proyecto
Pa
Pc
19
DAET - FATEC
Caracter (30)
Caracter (6)
Numrico
INICIO
LEERr (nombre,direccin,telfono)
LEER (salario)
bonific salario*0.1
neto salario + bonif
ESCRIBIR (neto)
20
DAET - FATEC
FIN
11. Que determine el neto a pagar por parte de un cliente sabiendo que el
producto lo llevar con dos descuentos sucesivos, el primero del 12% y el
segundo del 15%.
No considere IGV.
12. Escriba un programa que cuente las vocales de una palabra.
13. Escriba un programa que lea una cadena de caracteres en minscula y la convierta a
mayscula
Sintaxis:
SI ( Expresion<es> ) ENTONCES
:
INSTRUCCIONES :
TRUE
Y/O
:
SENTENCIAS
FIN-SI
21
DAET - FATEC
EJEMPLO 1
22
DAET - FATEC
Sintaxis:
SI ( Expresion<es> ) ENTONCES
INSTRUCCIONES :
:
Y/O
:
SENTENCIAS
TRUE
SINO
INSTRUCCIONES
Y/O
SENTENCIAS
FALSE
:
:
:
FIN-SI
EJEMPLO 1
Calcular el mayor valor de 2 nmeros enteros.
Algoritmo Entero mayor
variables
entero: a, b, mayor
INICIO
leer(a, b)
si( a > b ) entonces
mayor a
si_no
mayor b
fin_si
escribir(mayor)
FIN
EJEMPLO 2
Ingrese un nmero entero, si es 2 cifras visualice la suma de sus cifras, caso
contrario visualice su doble.
Algoritmo Calculo de cifras
Variables:
entero: n, a, b
INICIO
leer( n )
si( n >= 10 ) Y ( n <= 99 ) entonces
23
DAET - FATEC
a n DIV 10
b n MOD 10
escribir( a + b )
si_no
escribir( n * 2 )
fin_si
FIN
SINO
:
FIN-SI
SINO
SI (Expresion<es>) ENTONCES
:
SINO
:
FIN-SI
FIN-SI
EJEMPLO 1
Ingrese el puntaje obtenido por un postulante y luego visualice a que carrera ingreso,
segn la siguiente tabla:
Puntaje
[ 70 90 >
[ 90 100 >
[ 100 120 >
[ 120 150 >
[ 150 a ms
Carrera
Contabilidad
Administracin
Derecho
Ingeniera
Medicina
SI NO LOGRO
INGRESO,
VISUALIZAR
CUANTOS PUNTOS
LE FALTO
Algoritmo Puntaje
var
entero:
puntaje
INICIO
leer( puntaje )
si (puntaje >= 70) Y (puntaje < 90) entonces
escribir(Contabilidad)
si_no
si (puntaje >= 90) Y (puntaje < 100) entonces
escribir (Administracin)
24
DAET - FATEC
si_no
si (puntaje >= 100) Y (puntaje < 120) entonces
escribir (Derecho)
si_no
si (puntaje >= 120) Y (puntaje < 150) entonces
escribir (INGENIERIA)
si_no
si (puntaje >= 150) entonces
escribir (MEDICINA)
si_no
escribir (LE FALTO:, 70-Puntaje)
fin_si
fin_si
fin_si
fin_si
fin_si
FIN
OPCIONAL
Lista_N: Instrucciones_Sentencias
OTRO CASO:
Instrucciones_Sentencias
FIN_CASO
EJEMPLO 1
Ingresar un nmero entre 1 y 5, y luego visualizar su equivalente en letras.
Algoritmo Ejemplo1
var
entero:
INICIO
leer( n )
CASO ( n ) HACER
1: escribir(UNO)
2: escribir(DOS)
3: escribir(TRES)
25
DAET - FATEC
4: escribir(CUATRO)
5: escribir(CINCO)
OTRO_CASO : escribir(# FUERA DE RANGO)
FIN_CASO
FIN
EJEMPLO 2
Ingrese nmero entre 1 y 99, luego visualice su equivalente en romanos.
Algoritmo Ejemplo2
variables
entero:
n, a, b
INICIO
leer( n )
si ( n >= 1) Y ( n <= 99 ) entonces
a n DIV 10 : b n MOD 10
CASO ( a ) HACER
1: escribir(X)
2: escribir(XX)
:
9: escribir(XC)
FIN_CASO
CASO ( b ) HACER
1: escribir(I)
2: escribir(II)
:
9: escribir(IX)
FIN_CASO
fin_si
FIN
EJEMPLO 3
Calcular el total a pagar por su consumo telefnico, sabiendo que su renta bsica
es de S/. 50 (60 minutos libres), y que el cobro por minutos adicionales se factura
segn la siguiente tabla.
Minutos
Consumidos
< 60 100 ]
Costo x
Minuto
0.007
<100 200 ]
<200 400 ]
0.005
0.004
<400 500 ]
<500 Ms
0.003
0.002
26
DAET - FATEC
OBSERVACION
SOLO SE PUEDE UTILIZAR RANGO DE VALORES EN LA ESTRUCTURA
CASO-SEA
CASO RANGO DE NUMEROS HACER
1..9 :
10..99 :
totalConsumo, rentaBasica
INICIO
rentaBasica 50
leer( minutos )
CASO ( minutos ) HACER
1 .. 60
: totalConsumo 0
27
DAET - FATEC
PROBLEMAS PROPUESTOS
1. Un restaurante ofrece un descuento del 10% para consumos de hasta S/.
50 y un 20% para consumos mayores. Que determine el monto neto a
cobrar aun cliente sabiendo que adems se cobrar el 18% de IGV.
2. desarrollar una algoritmo que muestre un mensaje indicando si un usuario
es o no mayor de edad
3.
Dcto (%)
Mayor a 250
25
Mayor a 180
20
Mayor a 100
10
28 , 56 , 15 mostrar
Mayor
56
Promedio
42
28
DAET - FATEC
9. Determinar las races de una ecuacin de segundo grado del tipo : Ax2+Bx+
C=0 Considerar las races imaginarias.
Las races se obtienen segn :
12. Determine el neto a cobrar por un trabajador sabiendo que tiene derecho a una
bonificacin dependiendo de su estado civil y del nmero de hijos, segn:
ESTADO CIVIL
PORCENTAJE
Casado
13
Viudo
15
Divorciado
Soltero
29
DAET - FATEC
13. Que admita el ingreso de un nmero entero positivo menor a 1000 e imprima si este es
par o impar
14. Que muestre el neto a pagar por un televisor sabiendo que la tienda se encuentra en
realizacin ofreciendo los siguientes descuentos :
MARCA
19"
21"
SANSUMG
12
13
AIWWA
13
15
PAMASONIC
14
12
LGG
12
14
TOMY
13
15
908
Muestra
809
Ingresa
640
Muestra
46
30
DAET - FATEC
31
DAET - FATEC
ALGORITMO Ejemplo3
VARIABLES
32
DAET - FATEC
ENTERO : N, A , B
INICIO
PARA N 10 HASTA 99
A N DIV 10
B N MOD 10
SI ( A <> B ) ENTONCES
ESCRIBIR( N )
FIN-SI
FIN-PARA
FIN
Ejemplo 4
Ingrese un nmero entero y luego calcule la suma de todos los nmeros impares
menores al nmero ingresado.
ALGORITMO Ejemplo 4
VARIABLES
ENTERO: N, SUMA, I
INICIO
LEER( N )
SUMA 0
PARA I 1 HASTA N-1
SI ( I MOD 2 <> 0 ) ENTONCES
SUMA SUMA + I
FIN-SI
FIN-PARA
ESCRIBIR ( SUMA )
FIN
VERDAD
:
:
Instrucciones
y/o sentencias
33
DAET - FATEC
FIN-MIENTRAS
Condicin de ejecucin (expresion<es>): es una expresin que puede
tomar los valores cierto o falso.
Instrucciones y/o sentencia de bucle: Es la sentencia que se debe
ejecutar en el caso de que el condicin ejecucin sea cierto. Puede ser
una sentencia compuesta.
Ejemplo 1
Visualizar los 3 primeros nmeros naturales.
ALGORITMO Ejemplo1
VARIABLES
ENTERO:
N
INICIO
N 1 //inicializacin
MIENTRAS( N <= 3 ) HACER //condicin
ESCRIBIR( N )
N N + 1 //incremento
FIN-MIENTRAS
FIN
Ejemplo 2
Hallar la media de un conjunto de valores enteros de entrada acabado en el nmero 1.
ALGORITMO media;
VARIABLES
ENTERO: i, j, sum
INICIO
Inicializa suma y contador de elementos leidos ;
Sum 0
i0
Leer (j)
MIENTRAS ( j <> -1 ) HACER
Cuenta elemento leido;
I i +1
Lo suma a la suma de todos los anteriores; leer (elemento)
Sum sum + j
Leer (j)
FIN-MIENTRAS
Escribir (" La media es ", Sum DIV i )
FIN.
34
DAET - FATEC
Ejemplo 3
Usando la instruccin mientras hacer un algoritmo para un programa que
imprima la serie 1, 3, 5, 7,9.
Algoritmo ejemplo 3
Variables
Entero I
Inicio
I1
Mientras I<=9 hacer
escribir (I)
II+2
fin mientras
Fin
Ejemplo 4
Calcular y visualizar la suma de los nmeros de 2 cifras que estn compuestos por
cifras diferentes.
ALGORITMO Ejemplo 4
VARIABLES
ENTERO
N, SUMA, A, B
INICIO
N 10 : SUMA 0
MIENTRAS ( N <= 99 ) HACER
A N DIV 10
B N MOD 10
SI ( A <> B ) ENTONCES
SUMA SUMA + N
FIN-SI
NN+1
FIN-MIENTRAS
ESCRIBIR(LA SUMA ES:, SUMA)
FIN
Ejemplo 5
Ingrese un nmero entero y calcule la suma de las cifras del nmero.
ALGORITMO Ejemplo 5
VARIABLES
35
DAET - FATEC
Algoritmo Ejemplo 6
Entero: pht, nht, sexo, ptt, sumasm, sumasf, sm, sf, nombre, centinela
INICIO
Sumasm 0
Sumasf 0
36
DAET - FATEC
Sm 0
Sf 0
MIENTRAS ( centinela <> 1 ) HACER
LEER (sexo)
SI sexo<>1 o sexo <> 2 entonces
Centinela 1 //aqu se origina la salida
Sm 1
Sf 1
SI-NO
Si sexo 1 entonces
sm sm+1
LEER ( nombre, nht, pht )
ptt nht*pht
ESCRIBIR ( nombre,ptt )
sumasm sumasm+ptt
SI-NO
sf sf+1
LEER( nombre, nht, pht )
ptt nht*pht
ESCRIBIR( nombre, ptt )
sumasf sumasf+ptt
FIN SI
FIN SI
FIN MIENTRAS
ESCRIBIR (sumasm, sumasm/sm )
ESCRIBIR ( sumasf, sumasf/sf )
Fin
Ejemplo 7
Calcular la suma de los n primeros terminos del desarrollo de Taylor de la
serie (para n = 3):
Algoritmo ejemplo 7
Variables
Entero: i, f;
Real: s;
37
DAET - FATEC
INICIO
s 1,0
i 0
f 1
Escribir (ingresar el el termino n de la serie de Taylor)
Leer (n)
Mientras (i < n) Hacer
i i + 1;
f f * 1;
s s + 1,0/f;
Fin-Mientras
Escribir (Valor de la suma es:, s)
FIN
REPETIR
FALSO
:
Instrucciones
:
y/o sentencias
:
HASTA_QUE(Expresion<es>)
38
DAET - FATEC
Ejemplo 1
Visualizar los 5 primeros nmeros naturales.
ALGORITMO Ejemplo1
VARIABLES
ENTERO
INICIO
N 1
REPETIR
ESCRIBIR( N )
NN+1
HASTA_QUE ( N > 5 )
FIN
Ejemplo 2
Ingrese un nmero entero y luego visualice todos sus divisores.
ALGORITMO Ejemplo 2
VARIABLES
ENTERO N, Divisor, Resto
INICIO
LEER( N )
Divisor 1
REPETIR
Resto N MOD Divisor
SI( Resto = 0 )ENTONCES
ESCRIBIR (Divisor)
FIN-SI
Divisor Divisor + 1
HASTA_QUE ( Divisor > N )
FIN
39
DAET - FATEC
Ejemplo 3
Hallar la media de un conjunto de valores enteros de entrada acabado en el
nmero -1
ALGORITMO media_R;
VAR
ENTERO: I, J, sum
INICIO
Sum 0
I0
REPETIR
LEER (J)
II+1
Sum Sum + J
HASTA_ QUE (J = -1)
Sum Sum J
II-1
3, 4, 5, 6, 7 . . . 65
S = 5 + 9 + 13 + 17 + . . . 45
OP = 167 - (3 + 6 + 9 + . . . + 27 )
P = 4 * 6 * 8 * . . . * 18
1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3 . . .
( 60 trminos )
1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3 . . .
( 47 trminos )
1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 1, 2, 3,4, 5, 1 . . . 1, 2
40
( 22 trminos )
( 31 trminos )
DAET - FATEC
41
DAET - FATEC
14. Que desarrolle la nmina para una compaa que tiene 16 empleados,
algunos de los cuales son hombres y otras mujeres. Para cada empleado se
debe leer el nombre, el sexo, las horas de trabajo y el sueldo por hora.
La primera parte de la impresin debe dar el nombre y el pago de cada
empleado. La segunda parte, el total de pagos para cada sexo, as como el
promedio de los pagos a los hombres y el promedio de los pagos a las
mujeres.
15. Que permita ingresar varios sueldos como valor numrico, verificando si
cada uno de ellos supera los US$ 750.00. El programa termina cuando
ingresemos un valor negativo.
16. Que admita el ingreso de los precios de N productos (entre 1 y 30),
obteniendo el precio promedio, el precio mayor y el precio menor.
17. Que permita imprimir el crecimiento de las clulas de una planta si se sabe
que da a da se obtuvieron los siguientes resultados en centmetros:
3 5 7 10 13 17 21 26 31 ...
1
2
1
2
3
1
2
3
4
1
2
3
1
2
Los pagos se realizarn en forma mensual, amortizando por cada vez un 20%
42
DAET - FATEC
del saldo
Cuando el saldo sea menor a US$ 250, se deber cancelar el ntegro del saldo.
El modelo del reporte a generar es el siguiente :
PRESTAMO:
MES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AMORTIZACIN
2400.00
1920.00
1536.00
1228.80
983.04
786.43
629.15
503.32
402.65
322.12
257.70
206.16
164.93
131.94
105.55
84.44
67.55
54.04
216.00
US$ 12,000.00
INTERES
600.00
480.00
384.00
307.20
245.76
196.61
157.29
125.83
100.66
TOTAL
3000.00
2400.00
1920.00
1536.00
1228.80
983.04
786.43
629.15
503.32
SALDO
9600.00
7680.00
6144.00
4915.20
3932.16
3145.73
2516.58
2013.27
610.61
80.53
64.42
51.54
41.23
32.99
26.39
21.11
16.89
13.51
10.81
402.65
322.12
257.70
206.16
164.93
131.94
105.55
84.44
67.55
226.81
1288.49
1030.79
824.63
659.71
527.77
422.21
337.77
270.22
216.17
43
DAET - FATEC
7.- SUBPROGRAMAS
En este tema se estudia el mecanismo ms importante y bsico de la organizacin y
construccin de los programas,
Un subprograma es un bloque de instrucciones y/o sentencias que tiene nombre
propio y puede ser invocado cuantas veces sea necesario desde el bloque principal
del algoritmo (figura N1) o desde otro subprograma (figura N2)
Figura N 1
Figura N 2
44
DAET - FATEC
o incluso
siendo termino:
termino(x, n) = potencia(x, n)/factorial(n)
En programacin es esencial esta posibilidad de descomponer un
problema en sub-problemas, o un algoritmo en sub-algoritmos. Para ello
conforme se escribe un programa se pueden tambin escribir
subprogramas que resuelven los sub-problemas del programa principal
siendo estos subprogramas soluciones a las que se llama cuando haga
falta en el programa principal
45
DAET - FATEC
Diseo descendente
7.3.- PROCEDIMIENTOS
Un Procedimiento es un subprograma que realiza una tarea
determinada para luego retornar al punto del algoritmo desde donde fue
invocado.
Para llamar a un procedimiento se hace uso del nombre del mismo,
opcionalmente se puede pasar valores si es que el procedimiento
implementa parmetros.
El paso de valores a los parmetros de un procedimiento se puede
hacer por valor y/o referencia.(direccin de memoria) de una variable
Estructura de un procedimiento
Opcional
PROCEDIMIENTO Nombre(Lista_Parametros)
VARIABLES
:
mbito local
INICIO
:
:
Instrucciones
y/o sentencias
FIN-PROCEDIMIENTO
Ejemplo 1
46
DAET - FATEC
mbito global
ENTERO
N
PROCEDIMIENTO Imprime(CADENA Texto, ENTERO Numero)
VARIABLES
Lista de
ENTERO
I
parmetros
INICIO
PARA I 1 HASTA Numero
ESCRIBIR( Texto )
FIN-PARA
FIN-PROCEDIMIENTO
mbito local
INICIO
LEER( N )
Escribir (HOLA, N)
Escribir (MUNDO, 20)
Escribir (ALGORITMOS, 50)
FIN
Ejemplo 2
Implementar un procedimiento que visualice un recuadro
ALGORITMO Recuadro;
PROCEDIMIENTO Estrellas ( )
INICIO
Entero: I
PARA I 1 HASTA 15 HACER
escribir (`*)
FIN-PARA
FIN-PROCEDIMIENTO
INICIO
Estrellas ( )
ESCRIBIR (`Mensajes);
Estrellas ()
FIN
47
DAET - FATEC
Ejemplo 3
Implementar un procedimiento que imprima el mayor valor de 2 nmeros
enteros.
ALGORITMO Ejemplo 2
VARIABLES
ENTERO
A, B
PROCEDIMIENTO ImprimeMayor( ENTERO M, ENTERO N)
INICIO
SI( M > N )ENTONCES
ESCRIBIR( M )
SINO
ESCRIBIR( N )
FIN-SI
FIN-PROCEDIMIENTO
INICIO
LEER ( A, B )
ImprimeMayor( A, B)
FIN
Ejemplo 4
Mediante un algoritmo hallar el permetro y el area usando procedimientos
ALGORITMO ejemplo 4
Variable
Real: X,Y,A,P
PROCEDIMIENTO Geometra (REAL Longitud, REAL Anchura, REAL:
INICIO
rea, REAL Permetro)
rea Longitud * Anchura;
Permetro 2 * (Longitud + Anchura)
ESCRIBIR ('El rea es: ', A)
ESCRIBIR ('El permetro es: ' P)
FIN-PROCEDIMIENTO
INICIO
ESCRIBIR ('Introducir longitud: ')
LEER (X)
ESCRIBIR ('Introducir anchura: ')
LEER (Y)
Geometra (X,Y,A,P); (* Llamada al procedimiento *)
FIN
Ejemplo 5
48
DAET - FATEC
49
DAET - FATEC
Variables
Entero : id_empleado,i,n;
Cadena [40]: nom_empleado :
Real: sal_bruto,salario_neto,tod_ded:
Cadena: resp
PROCEDIMIENTO calcula ( REAL: sal_brut )
Variables
REAL: cc_ss,b_p
INICIO
cc_ss sal_brut * 0.08;
b_p sal_brut * 0.01;
tod_ded c_ss + b_p;
salario_neto sal_brut - tod_ded
FIN-PROCEDIMIENTO
INICIO
ESCRIBIR ('Digite el nmero de empleados a procesar: ')
LEER (n)
ESCRIBIR ('Id. del empleado ',i,' de ',n,' : ')
LEER (id_empleado)
ESCRIBIR ('Nombre: ')
LEER (nom_empleado)
ESCRIBIR ('Salario bruto: ')
LEER (sal_bruto)
calcula(sal_bruto)
ESCRIBIR ('El salario neto de ', nom_empleado , ' es ',salario_neto)
ESCRIBIR ('Sus deducciones fueron ',tod_ded:)
FIN
7.4.- FUNCION
Una funcin es un subprograma que procesa un grupo de instrucciones y/o
sentencias para luego devolver un nico valor, esto es lo que la diferencia
de un procedimiento.
Las funciones pueden contener opcionalmente parmetros.
50
DAET - FATEC
Sintaxis:
Opcional
mbito local
INICIO
:
Instrucciones
y/o sentencias
:
RETORNAR (VALOR)
FIN-FUNCION
Ejemplo 1
Crear una funcin que retorne el cuadrado de un nmero entero
ALGORITMO Ejemplo1
VARIABLES
ENTERO
INICIO
LEER( M )
ESCRIBIR( Cuadrado( M ) )
51
DAET - FATEC
FIN
Ejemplo 2
Crear una funcin que retorne el mayor valor de 2 nmeros enteros
ALGORITMO Ejemplo2
VARIABLES
ENTERO
A, B
SUMA, Cifra
INICIO
SUMA 0
MIENTRAS ( N <> 0 ) HACER
Cifra N MOD 10
SUMA SUMA + Cifra
N N DIV 10
FIN-MIENTRAS
RETORNAR( Suma )
FIN-FUNCION
52
DAET - FATEC
INICIO
LEER( M )
ESCRIBIR( SumaCifras( M ) )
FIN
EJEMPLO 4
Construir un algoritmo empleando una funcin al ingresar un numero en base 10 y
la base a convertir que devuelva como resultado en una cadena al formato
numrico en las siguientes bases:
Binario
Octal
Hexadecimal
ALGORITMO conversion cadena
VARIABLES:
ENTERO
: num_A, base_A
CADENA[20] : resultado
FUNCION conversin _ base ( entero: nun, entero: base): CADENA
VARIABLES
CADENA : carcter, cad_nul, cad_resul
ENTERO: residuo
INICIO.
Cad_resul
MIENTRAS ( nun>0 ) hacer
residuo num MOD base
SI (residuo>=0 Y residuo<9) HACER
Caracter CHAR(residuo+48)
SINO
Caracter CHAR(residuo+55)
FIN-SI
cad_resul carcter+cad_resul
nun nun DIV base
FIN-MIENTRAS
RETORNAR ( cad_resul)
FIN-FUNCION
53
DAET - FATEC
INICIO
Escribir(ingresar numero a convertir )
Leer(nun_A)
Escribir(ingrese la base a convertir)
Leer(base_A)
PROCEDIMIENTO LeerGrados()
INICIO
Escribir('Angulo en grados?: ')
Leer(angulo)
FIN-PROCEDIMIENTO
54
DAET - FATEC
VARIABLE
REAL angRad
INICIO
angRad: angSexa * Pi/180
TanGrados: Sin(angRad)/Cos(angRad)
RETURN (TanGrados)
FIN-FUNCION
INICIO
LeerGrados()
t TanGrados(angulo)
Escribir (t)
FIN
Ejemplo 6
Calcular una serie de Taylor, aplicando procedimiento y funciones, donde la
cantidad de trminos lo determina el usuario al ingresar el valor de n. y el x
Algoritmo ejemplo 6
Variables
ENTERO : term
REAL: Staylor, X
PROCEDIMIENTO Leerterm()
INICIO
Escribir (Ingresar el nmero de trminos de la serie de Taylor:')
Leer (term)
Escribir (Ingresar el valor de X en la serie de Taylor: ')
Leer (X)
FIN-PROCEDIMIENTO
55
DAET - FATEC
INICIO
TXN
RETORNAR (T)
FIN-FUNCION
FUNCION factorial (ENTERO : M):ENTERO
INICIO
SI (M<>0) HACER
RETORNAR (M*(M+1))
SINO
RETORNAR (1)
FIN-SI
FIN-FUNCION
INICIO
Leerterm()
Staylor 0
PARA n 0 HASTA term HACER
Staylor Staylor + exponecial(n) / factorial.(n)
FIN-PARA
Escribir ( Staylor )
FIN
PROBLEMAS PROPUESTOS
1. Desarrollar un algoritmo que devuelva la suma de los elementos de la
siguiente serie :
44
56
DAET - FATEC
JUGOS
[B]
HAMBURGUESA
[C]
POSTRES
OPCION:
Donde:
JUGOS
[A
[B
S/.
4.50
3.00
57
DAET - FATEC
PAPAYA
3.00
PYE DE MANZANA
MOUSSE DE LIMN
CHEESE CAKE
S/.
4.50
4.00
5.00
POSTRES
[A
[B
[C
HAMBURGUESA
[1
[2
[3
[4
[5
[6
SUPER BURGUER
POLLO
CON CHORIZO
CON TOCINO
CRIOLLA
SIMPLE
S/.
9.00
7.50
6.00
6.00
5.50
4.00
AUMENTO
(%)
10
15
20
25
58
DAET - FATEC
16. Que permita ingresar 4 notas. Imprimir el promedio de las 3 notas mas
bajas y el promedio de las 3 notas mas altas.
17. Que ingrese 8 notas para N alumnos. Si se anulan las 2 notas mas bajas,
se pide devolver el promedio.
18. Desarrollar un modulo que ingrese N sueldos. Imprimir el % de los que
ganan menos de 1,000.00 y el % de los que ganan mas de 2,000.00
nuevos soles.
19. Que indique si en un grupo de 5 hermanos, y en base a sus edades,
hubiera mellizos, trillizos, cuatrilizos o quintillizos
59
DAET - FATEC
simples o estticos
ESTRUCTURADOS
arrays (vectores/matrices)
registros
ficheros
conjuntos
cadenas (string)
listas (pilas/colas)
compuestos o dinmicos listas enlazadas
rboles
grafos
Las estructuras estticas son aquellas en las que el tamao de memoria ocupado se
define antes de que el programa se ejecute y no puede modificarse durante la
ejecucin
Las estructuras dinmicas son aquellas en las que no se debe definir previamente el
tamao de memoria
60
DAET - FATEC
a.- ASIGNACIN:
Es darle un valor a un elemento de un vector
Pseudocdigo
A[3] 5
Para la asignacin como para otro procesos se debe recurrir a estructuras
repetitivas (para, mientras o repetir).
Como ejemplo tenemos 3 tipos de vectores que almacenan distintos tipos de
datos en cada una de las siguientes figuras:
A:
18
56
34
A[4]
ndice
A[6]
ndice
A
B
C
D
E
F
B:
Ing. lvaro Enrique Chvez Zubieta
B[5]
10
B[9]
61
C:
DAET - FATEC
ESTHER
FLOR
NOEMI
ERICKA
ROSA
C[2]
ndice
C[5]
62
DAET - FATEC
Ejemplo 1
A cada uno de los 55 elementos del vector CARGA se le debe asignar el valor 0
Algoritmo Ejemplo1
Constante:
A = 1;
B = 55;
Variables
ENTERO: CARGA[1..55]
ENTERO: I
PROCEDIMIENTO asigna ( )
INICIO
PARA I A HASTA B HACER
{* se define el ciclo de 1 a 55 *}
b.- LECTURA/ESCRITURA:
63
DAET - FATEC
EJEMPLO 2
Escriba un algoritmo que, dado un vector de 10 enteros, escriba todos sus
elementos por pantalla. Supongamos que el primer elemento del vector tiene
ndice 1
ALGORITMO EJEMPLO 2
VARIABLES
SE DEFINE EL ARRAY
DE 10 ELEMENTOS
ENTERO: v [110]
ENTERO: i
INICIO
i1
EJEMPLO 3
Escriba un algoritmo que, dado un vector de enteros, cuente los elementos
que estn en el rango [10, 50) y que escriba el resultado por pantalla
ALGORITMO EJEMPLO 3
VARIABLES
ENTERO: v [110]
ENTERO: i ,CUENTA
INICIO
i1
cuenta 0
MIENTRAS i <= 10 HACER
SI v[i] >= 10 Y v[i] < 50 ENTONCES
cuenta cuenta + 1
FINSI
i i+1
64
DAET - FATEC
FIN MIENTRAS
ESCRIBE total
FIN
Ejemplo 4
Ingresar por teclado cada uno de los 5 elementos de un vector de nombre vec. Y
luego leerlos y presentarlos por pantalla en orden inverso al que entraron (de 5 a 1)
Algoritmo EJEMPLO 4
Constantes:
A=1
B=5
VARIABLES
ENTERO: vec[1..5]
ENTERO: I
PROCEDIMIENTO escribir( )
INICIO
PARA I A HASTA B HACER
ESCRIBIR (Ingrese vec[, I , ]: )
LEER ((vec[I])
FIN-PARA
FIN-PROCEDIMIENTO
PROCEDIMIENTO lectura
INICIO
PARA I B HASTA A HACER DE -1
ESCRIBIR (vec[, I ,) = ,vec[I])
FIN-PROCEDIMIENTO
PROCEDIMIENTO salida ( )
Variables
CHAR: H
INICIO
ESCRIBIR ('se termino de asignar el valor de 0 a cada elemento del
vector CARGA)
ESCRIBIR (Presione cualquier tecla ')
LEER (H) {* esta instruccin y la anterior son para dar tiempo para *}
{* ver resultados *}
65
DAET - FATEC
INICIO
Escribir( )
Leer( )
Salida( )
FIN.
c.- RECORRER:
Esta operacin se realiza cuando uno lee el vector, y se aplica tanto cuando se
busca un elemento de un vector o cuando se desea listar el mismo, como lo vimos
en el ejemplo anterior.
d.- ACTUALIZAR:
Aadir: Se denomina as a la operacin de agregar un nuevo, elemento al final del
vector. la nica condicin necesaria para esta operacin consiste en la
comprobacin de espacio libre en memoria.
Ejemplo:
Dado el vector U de k=7 elementos aadir un elemento ms al vector
Algoritmo
I 0
REPETIR
I I +1
HASTA QUE ( U[I] = 0 O i > k)
SI (i <= k) ENTONCES
escribir( ingresar un nuevo elemento del vector)
leer(U[I])
SINO
escribir(No ms lugar)
FIN-SI
e.- BORRAR:
Es eliminar un elemento de un vector se puede hacer de dos maneras una es
reemplazar el elemento por el utilizado como seal. Puede servir pero no es
recomendado en proyectos pequeos. Pero no as en grandes. El otro mtodo
66
DAET - FATEC
67
DAET - FATEC
f.- INSERTAR:
Se debe trabajar sobre un vector ordenado. Consiste en introducir un nuevo
elemento al vector sin que este pierda el orden. Para ello se debe comprobar que
haya lugar libre en el vector, luego de lo cual se deber desplazar hacia bajo los
elementos necesarios como para generar un espacio libre en la posicin adecuada
sin que se pierda el orden.
Algoritmo de inserta (Ordenado creciente)
Pseudocdigo
I 0
Lee ( Aux )
REPETIR
I I +1
HASTA QUE ( U[i] = 0 O I > B)
SI ( I < =B) entonces
I I -1
MIENTRAS (U[i] > Aux)
U[I+1] U[I]
I I -1
FIN-MIENTRAS
U[I+1] Aux
SINO
Escribir ( No hay lugar)
FIN-SI
g.- ORDENACIN:
La ordenacin o clasificacin es, el proceso de clasificar datos en algn orden o
secuencia especfica como creciente o decreciente. Existen varios mtodos de
ellos elegiremos el de intercambio (decantacin).
Algoritmo de ordena (Ordenado creciente)
Pseudocdigo
I 0
REPETIR
I I +1
HASTA QUE ( U[i] = 0 O I > B )
P I -1
68
DAET - FATEC
(intercambiar)
Aux U[J]
U[J] U[J +1]
U[J +1] Aux
fin si
fin-para
fin-para
h.- BSQUEDA:
La bsqueda de un dato dentro de un array consiste en determinar si un elemento
N pertenece o no al conjunto de datos y posicin que el ocupa en el conjunto.
Los distintos tipos de bsqueda se pueden clasificar en:
Bsqueda secuencial
Bsqueda binaria
Bsqueda por transformacin de claves (hash)
En este capitulo solo no se abordara este tema
EJEMPLO 5
Escriba un algoritmo que lea un nmero real del teclado y busque dicho nmero en
un vector de N nmeros reales, donde N es una constante a la que le daremos un
valor cualquiera. Si se encuentra el nmero, se debe escribir por pantalla el ndice
del elemento que lo contiene.
Supongamos que:
69
DAET - FATEC
BOOLEAN: encontrado
INICIO
LEER ( valor)
i1
encontrado FALSO
MIENTRAS ((i<=n) Y (NO encontrado)) HACER
SI a[i] = valor ENTONCES
encontrado VERDADERO
ESCRIBE El valor se ha encontrado en la posicin, i
FINSI
i i+1
FIN MIENTRAS
FIN
EJEMPLO 6
Escriba un algoritmo que busque el valor mximo de los elementos de un vector de
N nmeros reales, donde N es una constante a la que le daremos un valor
cualquiera. El algoritmo debe escribir por pantalla el valor mximo.
Supongamos que:
a. Que el algoritmo no necesita leer el contenido del vector.
ALGOTIRMO EJEMPLO 4 (bsqueda del mximo)
CONSTANTES
n =100
VARIABLES
REAL: a [1 n]
ENTERO: i
REAL: max
INICIO
LEE (valor)
max a[1]
PARA i 2 HASTA n HACER
SI a[i] > max ENTONCES
max a[i]
70
DAET - FATEC
FINSI
FIN PARA
ESCRBE (El valor mximo es, max)
FIN
Variable
Entero: alfa [1..30]
Entero: Gama [1..30]
Entero: Beta [1..40]
Alfa := Gama; {nica expresin vlida}.
Beta := Alfa;
Gama := Beta;.
8.2. - Array bidimensionales (Tablas)
Un array bidimensional (tabla o matriz) es un array con dos ndices, al igual que los
vectores que deben ser ordinales. Para localizar o almacenar un valor en el array se
deben especificar dos posiciones (dos subndices), uno para la fila y otro para la
columna. Los elementos se referencian con el formato:
T [3,4] elemento de la fila 3 y columna 4
7
A[2,5]18
18
A[5,2]3
A[5,7]14
A[7,5]14
14
Mal!!!.. Excede el
primer ndice
71
DAET - FATEC
Para acceder aun dato lo hacemos mediante las estructuras repetitivas comenzando
por cada fila, recorriendo por las columnas donde se desarrolla las mismas
operaciones ya mencionadas en un array unidimensional
Pseudocodigo
inicio
PARA indice1=1 hasta 5 hacer
PARA indice2=1 hasta 7 hacer
Ingresar dato en A[indice1][indice2]
Fin-PARA
Fin-PARA
Fin
Sintaxis de los arrays bidimensionales
N columnas
Ejemplo 7
Calcular el valor promedio de los elementos de una matriz
ALGOTIRMO EJEMPLO 7 (bsqueda del mximo)
CONSTANTE:
n=50
VARIABLES
REAL: a [1 n]
REAL: b [1 n]
ENTERO: i, j, n
REAL: suma , promedio
INICIO
PARA I 1 hasta n
PARA J 1 hasta n
72
DAET - FATEC
leer M(I, J)
fin-PARA
fin-PARA
suma 0
PARA I 1 HASTA n HACER
PARA J 1 HASTA n HACER
suma suma + M(I, J)
FIN-PARA
FIN-PARA
promedio suma / (cantfila * cantcolumna)
Escribir (promedio)
PARA I 1 HASTA n HACER
PARA J 1 HASTA n HACER
Escribir M(I, J)
FIN-PARA
FIN-PARA
FIN
const
ENTERO A [1..5] = (10,20,30,40,50);
const ( vectores )
ENTERO Dias_Por_Mes[l..l2] = (31,28,31,30,31,30,31,31,30,31,30,31);
73
DAET - FATEC
PROBLEMAS PROPUESTOS
1. Calcular el promedio y la desviacin estndar de un conjunto de N nmeros ledos
del teclado.
La desviacin estndar se calcula con la siguiente frmula
de cada da
4. Dado un vector V de N nmeros enteros, cambie cada elemento menor que 10 por
0 y cada elemento mayor que 20 por 1. Encuentre cuntos elementos quedaron sin
cambiar
74
DAET - FATEC
5. Elaborar un algoritmo que capture en una matriz las calificaciones obtenidas por un
grupo de N estudiantes y que realice lo siguiente :
compuesto por 10 enteros, el vector comprimido que resulta estar dado por
Con m =6
7. Desarrollar un algoritmo que lea una matriz cuadrada de tamao n y
determine si se trata de una matriz simtrica o no. Una matriz es simtrica
si los valores de cada fila son iguales los de su columna correspondiente;
por ejemplo la siguiente matriz es simtrica:
75
DAET - FATEC
10. Elabore un algoritmo que lea los datos de una matriz cuadrada de tamao
N y realice las siguientes operaciones:
11. Elabore un algoritmo que lea los datos de una matriz cuadrada de tamao N, y
que intercambie los elementos de la matriz triangular superior con los elementos
correspondientes simtricamente de la matriz triangular inferior.
76
DAET - FATEC
12. Dada una matriz cuadrada de tamao N, encuentre la suma de todos los
elementos que no son de la "periferia" de la matriz.
Por ejemplo
77
DAET - FATEC
78
DAET - FATEC
79