Académique Documents
Professionnel Documents
Culture Documents
Algoritmos
ndice
Qu es un Algoritmo?
Normalmente los algoritmos se asocian con estructuras de datos. Un algoritmo es una secuencia de
instrucciones que realizan una tarea en un periodo de tiempo finito. El algoritmo recibe cero o ms entradas,
produce al menos una salida, consiste en instrucciones claras y poco ambiguas, termina despus de un
nmero finito de pasos, y es lo suficientemente bsico que una persona puede llevar a cabo el algoritmo
utilizando lpiz y papel.
Por el contrario, un programa no es necesariamente finito: el programa, como un servidor Web, podra no
terminar nunca si no hay intervencin externa. Algunos ejemplos de algoritmos asociados con estructuras de
datos son: bsqueda-lineal, ordenacin-de-burbuja, bsqueda-binaria, concatenacin-de-listas-enlazadas, etc.
Cmo se Representa un Algoritmo?
La representacin ms obvia: cdigo fuente Java. Sin embargo escribir cdigo fuente antes de entender
completamente un algoritmo normalmente acaba con errores difciles de encontrar.
Una tcnica para evitar estos errores es utilizar:
o Pseudocdigo
Una alternativa al flowchart es el pseudocdigo: una representacin en modo texto de un
algoritmo que se aproxima al cdigo fuente final. El pseudocdigo es til para una escritura
rpida de representaciones de algoritmos. Como la sintaxis no es lo ms importante, no hay
reglas definidas para escribir pseudocdigo. Considere el siguiente ejemplo:
Inicio
Declarae a,b,sum=0
Leer a, b
Sum=a+b
Imprimir sum
Fin
o Flowchart (diagrama de flujo).
Un flowchart es una representacin visual del flujo de control de un algoritmo. Esta
representacin ilustra las sentencias que se tienen que ejecutar, las decisiones que hay que
tomar, el flujo lgico (para iteraciones y otros propsitos), y terminaciones que indican los
puntos de entrada y salida.
Inicio/fin
Entrada/Salida
Proceso
Dedicin
Lnea de Flujo
Impresora
Pantalla
o DN-S
Diagrama Nassi-Schneiderman
El diagrama N-S, tambin conocido como diagrama de Cahpin, es como un diagrama de flujo
en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se
escriben en cajas y como en los diagramas de flujo, se pueden escribir diferentes acciones en
una caja.
Ejemplo:
DN-S (top-down)
DN-S (Estructurado)
Usando Condicionales (Sentencia Si)
En este ejemplo se declaran tres constantes (Min, Max y Sep). En la primera lnea del cuerpo
del programa se asigna una constante a una variable. En la siguiente, se usa una constante en
una comparacin. Y en la cuarta, la constante Sep interviene en una expresin que se asigna a
una variable.
Se puede hacer una divisin de las constantes en tres clases:
constantes literales (sin nombre)
constantes declaradas (con nombre)
constantes expresin
Constantes literales
Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen
nombre. En el siguiente ejemplo tienes un par de constantes literales (el 3, el 4, y el 3.1416):
VolumenEsfera := 4/3 * 3.1416 * Radio * Radio * Radio;
Constantes declaradas
Tambin llamadas constantes con nombre, son las que se declaran en la seccin const
asignndoles un valor directamente. Por ejemplo:
const
Pi = 3.141592; (* valor real *)
Min = 0; (* entero *)
Max = 99; (* entero *)
Saludo = 'Hola'; (* cadena caract. *)
Constantes expresin
Tambin se declaran en la seccin const, pero a estas no se les asigna un valor directamente,
sino que se les asigna una expresin. Esta expresin se evala en tiempo de compilacin y el
resultado se le asigna a la constante.
Ejemplo: const
N = (Max - Min) div Intervalo;
Min = 0;
Max = 100;
Intervalo = 10;
Centro = (Max - Min) div 2;
o Variables
Una variable es un nombre asociado a un elemento de datos que est situado en posiciones
contiguas de la memoria principal, y su valor puede cambiar durante la ejecucin de un
programa.
Clasificacin de las Variables
Por su contenido
Variables Numricas: Son aquellas en las cuales se almacenan valores numricos,
positivos o negativos, es decir almacenan nmeros del 0 al 9, signos (+ y -) y el punto
decimal.
Ejemplo:
igv = 0.15 pi = 3.1416 costo = 2500
Variables Lgicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos
representan el resultado de una comparacin entre otros datos.
Variables Alfanumricas: Esta formada por caracteres alfanumricos (letras, nmeros y
caracteres especiales).
Ejemplo:
letra = a apellido = Lpez direccin = Av. Libertad #190
Por su uso
Variables de Trabajo: Variables que reciben el resultado de una operacin matemtica
completa y que se usan normalmente dentro de un programa.
Ejemplo:
Suma = a + b /c
Contadores: Se utilizan para llevar el control del nmero de ocasiones en que se realiza
una operacin o se cumple una condicin. Con los incrementos generalmente de uno en
uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando progresivamente.
Toda variable pertenece a un tipo de dato concreto. En la declaracin de una variable se debe
indicar el tipo al que pertenece. As tendremos variables enteras, reales, booleanas, etc. Por otro
lado, distinguimos tres partes fundamentales en la vida de una variable:
Declaracin
Iniciacin
Utilizacin
Declaracin de variables
Esta es la primera fase en la vida de cualquier variable. La declaracin se realiza en la seccin
que comienza con la palabra var. Si quieres ms informacin, puedes ir al apartado que trata
sobre la declaracin de variables en el tema Estructura de un programa.
Iniciacin de variables
Esto no es ms que darle un valor inicial a una variable. As como lo primero que se hace con
una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se hace para evitar posibles
errores en tiempo de ejecucin, pues una variable tiene un valor indeterminado despus de
declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables:
Mediante una sentencia de asignacin
Mediante uno de los procedimientos de entrada de datos (read o readln)
Utilizacin de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que
presenta un mayor abanico de posibilidades. A continuacin tienes unas cuantas:
Ing. Mendoza Corpus, Carlos
Algoritmos
Incrementar su valor:
i := i + 1
Controlar un bucle:
for i:=1 to 10 do ...
Chequear una condicin:
if i<10 then ...
Participar en una expresin:
n := (Max - Min) div i
Diferencias entre ambas
Despus de haber visto cada una por separado, pasemos a explicar las diferencias que existen
entre constantes y variables. A primera vista pudieran parecer conceptos similares, pero
realmente son cosas muy distintas. Y esta distincin viene dada por la posibilidad que tienen las
variables para cambiar de valor.
Principales diferencias:
Las constantes ya reciben un valor inicial en su declaracin
Las variables primero se declaran, luego se inician, y luego se usan
Las constantes, una vez declaradas mantienen su valor durante toda la ejecucin
del programa
En cambio, las variables pueden cambiar su valor tantas veces como deseen
Adems de cambiar su valor, las variables tambin pueden cambiar de tamao en
tiempo de ejecucin (punteros)
o Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis
y nombres de funciones especiales. Por ejemplo:
a + (b + 3) / c
Cada expresin toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de
operadores y operandos. Segn sea el tipo de datos que manipulan, se clasifican las expresiones
en:
Aritmticas
Relacionales
Lgicas
Sentencias simples
Asignacin de variables
Se le asigna un valor a una variable, a travs del smbolo de flecha(<--) que dice que el valor a la derecha
tiene que ser asignado a la variable que est a la izquierda.
ej: a 10
Se asigna un valor 10 a la variable a. Al escribir esta sentencia por primera vez en un algoritmo, da por
entendido su declaracin o creacin.
Comnmente al lado derecho de la flecha, se pueden realizar operaciones aritmticas (+,-,/,*), para que
su resultado se le asigne a la variable. Adems en estas operaciones se puede incluir la misma variable u
otras.
Ing. Mendoza Corpus, Carlos
Algoritmos
Ejemplo:
INICIO
x5
y 10
zx+y
zy*x+7
z x/8 + y/9 + (7 + x/8)
zz+1
z z*z+y*y
x -x + -y + -3
FIN
Diseo de un Algoritmo
Accin 1
Accin 1
.
.
.
Accin 2 .
Accin n Accin 2
Inicio
Entero: b, h, a, p
Leer b, h
a=b*h
p = 2 (b + h)
Escribir rea:, a
Escribir permetro:, p
Fin algoritmo
Ejemplo:
Se trata de calcular el salario neto de un trabajador en funcin del nmero de horas
trabajadas, precio de la hora de trabajo y, considerar unos descuentos fijos, el sueldo bruto
en concepto de impuestos (20 %)
inicio
Inicio
// Calcular salario neto
Declarar nombre, horas
Declarar nombre, horas Declarar prec_hor, sal_brut, imp,
Diagrama N-S
sal_net sal_brut imp
Inicio
Leer
nombre, horas, prec_hor
Fin
sal_brut horas*prec_hor
Escribir
sal_brut, sal_net
Fin
Ejercicios.
Escriba el Pseudocdigo, diagrama de flujo y DN-S.
1. Considere el ejemplo de hacer una taza de t
2. Escriba un algoritmo que lea un valor entero, lo doble, se multiplique por 25 y visualice el
resultado.
3. Disear un algoritmo para calcular el rea y el permetro de un rectngulo
4. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un
grupo de estudiantes.
5. Un profesor prepara tres cuestionarios para una evaluacin final: A, B y C. Se sabe que se
tarda 5 minutos en revisar el cuestionario A, 8 en revisar el cuestionario B y 6 en el C. La
cantidad de exmenes de cada tipo se entran por teclado. Cuntas horas y cuntos minutos
se tardar en revisar todas las evaluaciones?
6. Ingrese un nmero y se visualice su cuadrado.
7. Determinar la hipotenusa de un triangulo rectngulo conocidas las longitudes de los
catetos.
8. Calcule el rea de un triangulo en funcin de las longitudes de sus lados
Estructuras Condicionales
Explicamos las distintas estructuras poniendo ejemplos tanto en diagrama de flujo como en pseudocdigo.
Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al resultado de
esta comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la comparacin se
puede hacer contra otra variable o contra una constante, segn se necesite. Existen tres tipos bsicos, las
simples, las dobles y las mltiples.
Donde:
Si : Indica el comando de comparacin.
Condicin : Indica la condicin a evaluar
Entonces : Precede a las acciones a realizar cuando se cumple la condicin
Instruccin(es) : Son las acciones a realizar cuando se cumple o no la condicin
si no : Precede a las acciones a realizar cuando no se cumple la condicin
Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o ms acciones.
Ejercicios Resueltos:
1. Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un
mensaje indicndolo. Expresarlo en Pseudocdigo y Diagrama de flujos.
2. Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar un mensaje donde
diga si el alumno aprob o reprob el curso. Exprese el algoritmo usando Pseudocdigo y diagrama de
flujos.
INICIO
Declarar Not1, Not2, Not 3 :REAL
LEA Nota1, Nota2, Nota3
Def (Not1 + Not2 + Not3) /3
Si Def < 3 entonces
Escriba Reprob el curso
Si_no
Escriba Aprob el curso
Fin-Si
FIN
3. Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm
enve el mensaje: Persona de altura baja; si la altura est entre 151 y 170 escriba el mensaje: Persona
de altura media y si la altura es mayor al 171 escriba el mensaje: Persona alta. Exprese el algoritmo
usando Pseudocdigo y diagrama de flujos.
INICIO
Definir Altura
ESCRIBA Cul es tu altura?
Leer Altura
Si Altura <=150 entonces
ESCRIBA persona de altura baja
Sino
Si Altura <=170 entonces
ESCRIBA persona de altura media
Sino
Si Altura>170 ENTONCES
ESCRIBA persona alta
Fin-Si
Fin-Si
Fin-Si
FIN
Resolver
Solucionar los siguientes problemas, realizar los diagramas de flujo, pseudocdigo y diagrama N-S e
implementar en DFD
1. Solucionar el problema de ingresar dos nmero e indicar cual es impar y par.
2. Hacer el algoritmo para un programa que calcule:
3. El valor del rea de un tringulo, dada la base y la altura
4. El valor de la base de un tringulo dada la altura y el rea.
5. El valor de la altura de un tringulo dada la base y el rea.
6. Siendo la formula general: area (base*altura)/2
7. De los estudiantes que se matriculan en la UPSP, los ex alumnos pagan 30 soles por curso en el que
se matriculen, mientras que los dems (regulares), pagan 50 soles por curso. Disee el algoritmo
para escribir un programa en el que el usuario introduce los datos del estudiante (ex alumno o
regular) y el nmero de cursos y las salidas sean la categora del estudiante (ex alumno o regular),
nmero de cursos y los costos totales por los cursos a llevar.
8. En la ciudad de Huaraz, una agencia de seguros para automviles asigna costos basados en el sexo y
la edad del conductor. Los varones menores de 25 aos pagan los precios ms altos, 1000 soles. Los
hombres de 25 aos o ms aos pagan 700 soles. Las mujeres de menos de 21 aos pagan 800 soles,
mientras que las mujeres de 21 aos o ms pagan 500 soles. Escribir el algoritmo del programa que
imprima la edad del conductor, sexo, y el pago correspondiente para los clientes de la aseguradora.
9. Escribir el algoritmo para un programa que solicita se le ingrese un nmero. Si el nmero es positivo
debe escribirse el nmero y junto a el positivo (15 POSITIVO). Si el nmero es cero (0 CERO); Si
es negativo debe escribirse el nmero y junto a el negativo (-5 NEGATIVO).
10. Resolver la siguiente ecuacin matemtica para resolver la ecuacin de segundo grado
Ax 2 + Bx + C
Como el mensaje es una cadena de caracteres, no debemos olvidarnos de las comillas simples al inicio y final
de la misma.
Para cargar el DFD solo se copia en una carpeta a una de las unidades y solo se ejecuta el icono cuyo nombre
es DFD Samara, al ejecutar este icono se visualiza la siguiente pantalla:
La insercin se realiza pulsando el botn izquierdo, con lo que tendremos una situacin como la siguiente:
Los puntos azules indican qu objeto se acaba de insertar. Para introducir en la sentencia de salida
el mensaje que queremos imprimir ser necesario EDITAR dicho objeto, haciendo doble clic sobre
el mismo. De este modo se abre una ventana donde podemos dicho mensaje (por ejemplo 'Buenos
das. Dgame un nmero, por favor').
Como el mensaje es una cadena de caracteres, no debemos olvidarnos de las comillas simples al
inicio y final de la misma.
Como el mensaje es una cadena de caracteres, no debemos olvidarnos de las comillas simples al
inicio y final de la misma.
Seguidamente vamos a insertar una sentencia de ENTRADA, para almacenar en una variable el
valor del nmero que nos proporcione el usuario. Para ello pulsaremos el botn correspondiente
Para finalizar, mostraremos al usuario el nmero que ha introducido, para lo cual insertaremos
una nueva sentencia de SALIDA, que editaremos para que muestre el siguiente mensaje:
Tras haber diseado el algoritmo podemos probar a ejecutarlo, al objeto de detectar posibles
errores en l. Para ello utilizaremos los botones de ejecucin, y en particular el botn EJECUTAR o
la tecla F9 que pondr en marcha el algoritmo.
La primera sentencia en ejecutarse ser la de SALIDA, que mostrar en pantalla el mensaje
correspondiente:
Dado que el algoritmo es correcto, procederemos a guardarlo (por ejemplo, con el nombre
entradasalida). La opcin de guardar es similar a la de cualquier aplicacin Windows, por lo
que no merece mayor comentario. nicamente recordar que en general, durante el proceso de
elaboracin de un algoritmo (que puede ser largo) debemos guardar frecuentemente en disco el
diseo, al objeto de prevenir posibles fallos o errores que dejen inutilizado el ordenador y
provoquen la prdida del trabajo realizado.
Lenguaje de Programacin
Un poco de historia
El lenguaje de programacin Pascal es un lenguaje de alto nivel y propsito general (aplicable a una gran
cantidad de aplicaciones diversas) desarrollado por el profesor suizo Niklaus Wirth (Instituto tecnolgico de
Zurich, Suiza). El propsito de Wirth era crear un lenguaje para la enseanza de tcnicas de programacin a
estudiantes universitarios. Pero a medida que pasaban los aos, Pascal se iba convirtiendo en un estndar en
el mundo de la programacin.
Una versin preliminar del lenguaje apareci en 1968 y el primer compilador totalmente completo apareci a
finales de 1970. Desde entonces, muchos compiladores han sido construidos y estn disponibles para
diferentes mquinas. Durante muchos aos, el libro Pascal User Manual and Report , publicado por Wirth y
Kathleen Jensen en 1974, ha servido de facto como estndar de todas las versiones.
Las diferentes versiones ofrecan interpretaciones ligeramente diferentes que impedan la compatibilidad
entre ellas. Por estas razones, diferentes proyectos se iniciaron para producir una definicin estndar del
lenguaje y culminaron en dos estndar: uno de la Internacional Standard Organization (ISO) en 1982 y otro
por un comit conjunto del American National Standards Institute (ANSI) y del Institute of Electrical and
Electronics Engineers (IEEE). Estas dos versiones o definiciones se conocen como ISO Pascal y ANSI/IEEE
Pascal, y difieren en algunos aspectos no especialmente significativos. Sin embargo, una versin no estndar
se ha popularizado considerablemente: Turbo Pascal (marca registrada por Borland International, Inc.). Esta
versin ha contribuido en gran medida a la popularizacin del lenguaje Pascal.
Lenguajes de programacin
Un lenguaje de programacin permite al usuario crear programas que sern entendidos por el ordenador
(directa o indirectamente) con el objetivo de realizar alguna tarea.
A grandes rasgos podemos clasificar los lenguajes de programacin en tres categoras: mquina, bajo nivel
(ensamblador) y alto nivel.
Lenguaje mquina
Los lenguajes mquina son aquellos cuyas instrucciones son directamente entendibles por el ordenador sin la
necesidad de traduccin alguna. Sus instrucciones no son ms que ristras de ceros y unos (bits). Estas
especifican la operacin a realizar, los registros del procesador y celdas de memoria implicados, etc.
Obviamente, este tipo de lenguajes sern fciles de comprender para un ordenador pero muy difciles para el
hombre. Esta razn nos lleva a buscar otro lenguaje para comunicarnos con el ordenador.
Lenguajes de bajo nivel (ensamblador)
La programacin en lenguaje mquina es difcil, por ello se necesitan lenguajes que permitan simplificar este
proceso. Los lenguajes de bajo nivel han sido diseados para este fin.
Estos lenguajes son generalmente dependientes de la mquina, es decir, dependen de un conjunto de
instrucciones especficas del ordenador. Un ejemplo de este tipo de lenguajes es el ensamblador. En l, las
instrucciones se escriben en cdigos alfabticos conocidos como mnemotcnicos (generalmente, abreviaturas
de palabras inglesas).
Las palabras mnemotcnicas son mucho ms fciles de recordar que las secuencias de ceros y unos. Una
instruccin tpica de ensamblador puede ser:
ADD x,y,z
Esta instruccin significara que se deben sumar los nmeros almacenados en las direcciones de memoria x e
y, y almacenar el resultado en la direccin z. Pero an as, a medida que los programas crezcan en tamao y
complejidad, el ensamblador sigue sin ser una buena solucin. Pasemos entonces a los lenguajes de alto
nivel.
Lenguajes de alto nivel (Pascal)
Los lenguajes de alto nivel son aquellos en los que las instrucciones o sentencias son escritas con palabras
similares a las de los lenguajes humanos (en la mayora de los casos, el Ingls). Esto facilita la escritura y
comprensin del cdigo al programador.
Existen muchos lenguajes de alto nivel, por citar algunos:
ADA C
BASIC Modula-2
COBOL Pascal
FORTRAN Java
A continuacin se presenta una instruccin de Pascal:
if (x=y) and (z=w) then write('Esto es una prueba');
Si se tienen unos conocimientos mnimos del Ingls, esta lnea tiene una comprensin muy fcil: "Si el
contenido de x es igual al contenido de y, y el contenido de z es igual al contenido de w, entonces escribe
Esto es una prueba".
Los programas escritos en lenguaje de alto nivel no son entendibles directamente por la mquina. Necesitan
ser traducidos a instrucciones en lenguaje mquina que entiendan los ordenadores. Los programas que
realizan esta traduccin se llaman compiladores, y los programas escritos en lenguajes de alto nivel se
denominan programas fuente.
Programas fuente y objeto
Un programa puede ser definido como un conjunto de instrucciones que pueden someterse como unidad a un
ordenador y utilizarse para dirigir el comportamiento de ste.
Aqu no vamos a profundizar en todos los tipos de programas, ni a realizar una clasificacin exhaustiva.
Solamente mencionaremos los dos tipos que nos interesan en programacin: los programas fuente y los
objeto.
Un programa fuente es aquel que nos permite escribir un algoritmo mediante un lenguaje formal. Por eso al
cdigo desarrollado al programar se le llama cdigo fuente.
Un programa objeto es el resultado de traducir un programa fuente para obtener un lenguaje comprensible
por la mquina.
Traductores de programas
Los traductores son un tipo de programas cuya funcin es convertir el cdigo de un lenguaje en otro. Por
ejemplo un compilador, que traduce cdigo fuente en cdigo objeto. Existen distintos tipos de traductores,
entre ellos destacan:
o Ensambladores
o Preprocesadores
o Intrpretes
o Compiladores
Ensambladores
Es un tipo de traductor que convierte programas escritos en lenguaje ensamblador en programas
escritos en cdigo mquina.
Preprocesadores
Traduce un lenguaje de alto nivel a otro, cuando el primero no puede pasar a lenguaje mquina
directamente.
Intrpretes
Se trata de traductores-ejecutores ya que con cada instruccin realizan un proceso triple de
lectura-traduccin-ejecucin. Son relativamente lentos, pero muy buenos para la depuracin de
programas.
Compiladores
Es el tipo de traductor ms conocido. Se trata de un programa que traduce cdigo fuente escrito
en un lenguaje de alto nivel (Pascal) en cdigo mquina (no siempre). Son ms rpidos que los
intrpretes pero presentan mayor dificultad a la hora de detectar errores.
Estructuras Cclicas
Explicamos las tres posibles estructuras cclicas; Para, mientras, repetir. Complementamos con tres
ejemplos para la correcta asimilacin de estas estructuras.
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es necesario utilizar un mismo
conjunto de acciones que se puedan ejecutar una cantidad especfica de veces. Esta cantidad puede ser fija
(previamente determinada por el programador) o puede ser variable (estar en funcin de algn dato dentro del
programa). Los ciclos se clasifican en:
Ciclos con un Nmero Determinado de Iteraciones
(Para): Son aquellos en que el nmero de iteraciones se conoce antes de ejecutarse el ciclo. La forma
de esta estructura es la siguiente:
DN-S
No
Condicin
Si
Acciones
DN-S
Mientras <condicin>
Acciones
acciones
Condicin V
DN-S
Acciones
Repetir <condicin>
Ejemplo 1:
Realizar un algoritmo que muestre los nmeros de uno en uno hasta diez usando una estructura Para. Exprese
el algoritmo usando Pseudocdigo y diagrama de flujos.
Pseudocdigo Diagrama de Flujos
Ejemplo 2:
Usando una estructura Mientras, realizar un algoritmo que escriba los nmeros de uno en uno hasta 20
Pseudocdigo Diagrama de Flujos
Ejemplo 3:
Inicio
Numero : Entero
Diga un Numero
acciones
Fin
Arreglos
Concepto.
Es un conjunto de datos o una estructura de datos homogneos que se encuentran ubicados en forma
consecutiva en la memoria RAM (sirve para almacenar datos en forma temporal).
Declaracin.
Para declarar un arreglo se especifica el tipo de dato de sus elementos, seguido por el nombre del arreglo y,
finalmente, por el tamao del arreglo entre corchete.
El tamao del arreglo es la cantidad mxima de elementos que pueden guardar.
Es un arreglo de N elementos organizados en una dimensin donde N recibe el nombre de longitud o
tamao del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del
ndice (entre corchetes), el cual indica una posicin en particular del vector. Por ejemplo:
Vec[x]
Donde:
Vec Nombre del arreglo
x Numero de datos que constituyen el arreglo
Para I = 1 a 10
Leer vec[I]
Fin-para
I=1
Repetir
Leer vec[I]
I=I+1
Hasta-que I>10
Un arreglo puede definirse como un grupo o una coleccin finita, homognea y ordenada de elementos. Los
arreglos pueden ser de los siguientes tipos:
De una dimensin.
De dos dimensiones.
De tres o ms dimensiones
Arreglos Unidimensionales
Un arreglo unidimensional es un tipo de datos estructurado que est formado de una coleccin finita
y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos
iguales.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe
proporcionar la direccin base del arreglo, la cota superior y la inferior.
Ejemplos
Ingresar 10 numero a un array definido de la siguiente manera a[10]
Solucin:
Inicio
Declarar x, a[10]
Para x1 hasta 10
Leer a[x]
Fin_para
Fin
Disear un algoritmo que ingrese 30 notas aprobados y que me muestre la nota mayor y el
promedio de todas (Nota>=10.5 y Nota<=20)
Solucin:
Inicio
nota[30], s, may, p
s0
para i1 hasta 30
repetir
Leer nota [i]
hasta (nota[i]>=10.5) y (nota[i]<=20)
s s + nota[i]
si (i=1) entonces
Ing. Mendoza Corpus, Carlos
Algoritmos
may nota[i]
sino
si (nota[i]>may) entonces
may nota[i]
fin _ si
fin _ si
fin _ para
p s/30
mostrar PROMEDIO TOTAL ES,p
mostrar LA NOTA MAYOR ES,may
Fin
Ejercicios Resueltos:
Mostrar promedio,p
fin_si
Si_no
mostrar INGRESE DATOS
fin_si
fin
fin_segn sea
Hasta (opc=3)
fin
2. Disear un algoritmo que ingrese 15 nmeros cualesquiera.
Solucin:
Inicio
num[15]: entero
i: entero
para (i=1; i<=15; i++)
Ingresar num[i]
Fin _ para
Fin
3. Utilizando arreglos, ingresar 15 nmeros y calcular cual es el nmero menor.
Solucin:
Inicio
i, men, Num[15]: entero
para (i=1; i<=15; i++)
Ingresar Num[i]
si (i=1) entonces
men num[i]
sino
si (Num[i]< men) entonces
menor Num[i]
Fin _ si
Fin _ si
Fin _ para
Fin
Fin _ para
Si (c = 0) entonces
Mostrar NMEROS IGUALES
Si_no
mostrar p,c
Fin _ si
si_no
Mostrar An no ingresar datos
Fin _ si
Hasta opc = 3
Fin
Si (b>a) entonces
mostrar b mayor
Si_no
Si (a=b) entonces
Mostrar son iguales
Fin _ si
Fin _ si
Fin _ si
Fin
7. Ingresar un nmero positivo y mostrar cual es su mitad.
Solucin:
Inicio
Ingresar N
repetir
pedir N hasta que N>0
N=N/2
Mostrar La mitad es N/2
Fin _ repetir
Fin
8. Ingresar un nmero par y mostrar sus divisores; el nmero par debe ser positivo.
Solucin:
Inicio
n, i, c 0: entero
repetir
Ingresar n
Hasta (n>0) y (n mod 2=0)
Para (i=1; i<=n; i++)
si (n mod i=0) entonces
c c+1
Mostrar i
Fin _ si
Fin _ para
Mostrar Cantidad de divisores
Fin
9. Ingresar 5 nmeros negativos y calcular su media aritmtica.
Solucin:
Inicio
Repetir
Ingresar n
Hasta (n<0 y n mod 2=0)
c c+1
divisor[c] x
Fin _ si
hasta (c=s)
Para (i=1; i<=5; i++)
s s + divisor[i]
Fin _ para
Mostrar EL PROMEDIO ES, p
Mostrar LA SUMA ES, s
Fin
13. Almacenar en un arreglo todos los nmeros primos que se encuentren entre 1 y 40.
Solucin:
Inicio
Para (i=2; i<=39; i++)
d0
Para (j=1; j<=i; j++)
Si (i mod j=0) entonces
d d+1
Fin _ si
Fin _ para
Si (d=2) entonces
c c+1
primo[c]+ i
Fin _ si
Fin _ para
Fin
14. Controlar el siguiente men:
Pares: ingresar 35 nmeros pares negativos y mostrar el valor absoluto del promedio.
Impares: Ingresar 10 nmeros impares positivos que sean dgitos para luego determinar el
promedio de los mismos.
Salir: En esta opcin Ud. deber confirmar si desea abandonar la ejecucin del algoritmo.
Solucin:
Inicio
num[35], opc, i : entero
s, p : entero
res : caracter
Repetir
Mostrar 1.Pares
Mostrar 2.Impares
Mostrar 3. Salir
Repetir
Ingresar opc
Hasta (opc>=1) y (opc<=3)
Segn _ sea opc hacer
1. Inicio
Para (i=1; i<=35; i++)
Repetir
Ingresar num[i]
Hasta (num[i] mod 2=0) y (num[i]<0)
s s+num[i]
Fin _ para
p (s/35)*-1
Mostrar Valor absoluto, p
Fin
2 Inicio
para(i=1; i<=10; i++)
repetir
Ingresar num[i]
hasta(num[i] mod 2=1) y (num[i]>0) y (num[i]<10)
s s+num[i]
fin _ para
p s/10
Mostrar promedio, p
Fin
3 Inicio
Repetir
Ingresar Desea salir (S/N) Res
Hasta (res=S) o (res=N)
si (res=N) entonces
opc 0
Fin _ si
Fin
Fin _ segn _ sea
Hasta opc=3
Fin
15. Controlar las siguientes opciones del men:
Pares Impares: En esta opcin Ud. Deber ingresar 30 nmeros pares e impares en forma
consecutiva, donde necesariamente el primer nmero deber ser un numero par luego un
impar y as intercaladamente.
Impares Pares: Ingresar 30 nmeros impares pares en forma intercalada empezando con
un impar.
Mostrar: En esta opcin Ud. deber mostrar la suma de los nmeros pares ingresados en la
opcin A o B, tambin deber el algoritmo indicar cual de las dos opciones est mostrando
Ud. Ya sea A o B.
Salir.
NOTA: Ud. deber trabajar solamente con un arreglo de 30 nmeros.
Solucin:
Inicio
num[30]: entero
i, ind, s: entero
opc: caracter
Repetir
Mostrar A : Pares Impares
Mostrar B : Impares Pares
Mostrar C : Mostrar
Mostrar D : Salir
Repetir
Ingresar opc
Hasta (opc=A) o (opc=B) o (opc=C) o (opc=D)
segn _ sea opc hacer
A : Inicio
ind 1
Para (i=1; i<=30; i++)
Si (i mod 2=0) entonces
Repetir
Ingresar num[i]
Hasta (num[i] mod 2<>0)
Si_no
Repetir
Ingresar num[i]
Hasta (num[i] mod 2=0) y (num[i]<>0)
Fin _ si
Fin _ para
Fin
B : Inicio
Ind 2
Para (i=1; i<=30; i++)
si (i mod 2=0) entonces
Repetir
Ingresar Num[i]
hasta (Num[i] mod 2=0) y (Num[i]<>0)
si_no
Repetir
Ingresar Num[i]
Hasta (Num[i] mod 2<>0)
Fin _ si
Fin _ para
Fin
C : Inicio
Si (ind =0) entonces
Mostrar An no ingresar datos
Si_no
Si (ind =1) entonces
Mostrar Resultado opcin 1
Si_no
Mostrar Resultado opcin 2
Fin _ si
S0
Para (i=1; i<=30; i++)
Si (Num[i] mod 2=0) entonces
S S+Num[i]
Fin _ si
Fin _ para
Mostrar S
Fin _ si
fin
fin _ segn _ sea
Hasta (opc=D)
fin
16. Ingresar un nmero que tenga 10 dgitos, donde cada dgito debe de ser almacenado en una posicin del
arreglo.
Solucin:
Inicio
N[10] : entero
i : entero
Para (i = 1; i <= 10; i ++)
si (i=1) entonces
Repetir
Ingresar N[i]
Hasta (N[i]>0) y (N[i]<10)
Si_no
Repetir
Ingresar N[i]
Hasta (N[i]>=0) y (N[i]<10)
fin_si
fin_para
Fin
17. Almacenar en un arreglo los 5 primeros nmeros primos positivos, para luego mostrar cual es el tercer
nmero primo calculado.
Solucin:
Inicio
p[5] : entero
c 0, cp0, d, i : entero
repetir
c=c+1
d=0
para (i = 1; i <= c; i ++)
si (c mod i = 0) entonces
d=d+1
fin_si
fin_para
si (d=2) entonces
cp=cp+1
p[cp]=c
fin_si
Hasta (cp=5)
Mostrar p[3]
fin
Escribir un algoritmo que permita ingresar una frase y luego la descomponga en sus palabras
imprimindolas en lneas diferentes ejm : Estructura De Datos Estructura De Datos
Solucin:
Inicio
cad[20] : carcter
i, L : entero
Ingresar cad [i]
L longitud (cad)
Para ( i = 0; i <= L-1; i++)
Mostrar cad [i]
Si (cad [i] = ) entonces
saltar lnea
fin_si
fin_para
Fin
Arreglos Bidimensionales (matrices) :
Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y
homogneo. El acceso a ellos tambin es en forma directa por medio de un par de ndices.
Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con
filas y columnas. La primera dimensin del arreglo representa las columnas, cada elemento contiene
un valor y cada dimensin representa una relacin
La representacin en memoria se realiza de dos formas: almacenamiento por columnas o por
renglones.
Unidimensional: Bidimensional:
Nombre [10]: tipo Nombre [fila] [columna] : tipo
Num [10]: entero Num [10] [10] : entero
Ingresar Ingresar
Para (i =1; i 10; i ++) Para (i = 1; i 10; i ++ )
Ingresar Num [i] Para (j = 1; j 10; j ++)
Fin_para Ingresar Num [i] [j]
Fin Fin_para
Fin_para
Fin
Ejercicios Resueltos
1. Disear un algoritmo que permita ingresar una matriz de orden n donde todos los elementos de
dicha matriz sean nmeros naturales.
Inicio
Num [8] [8]: entero
i, j, N :entero
Repetir
Ingresar N
Hasta (N > 1 y N 8)
Para (i = 1; i N; i ++)
Para (j = 1; j N; j ++)
Repetir
Ingresar Num [i] [j]
Hasta (Num [i] [j] 0)
Fin_para
Fin_para
Fin
2. Disear un algoritmo que permita ingresar 35 nmeros impares en una matriz de orden n x m.
Inicio
Num [35] [35]: entero
i, j, N, M: entero
Repetir
Ingresar N, M
Hasta (M x N = 35 y M > 0)
Para (i = 1; i M; i ++)
Para (j = 1; j N; j ++)
Repetir
Ingresar Num [i] [j]
Hasta (Num [i ] [j] mod 2 < > 0)
Fin_para
Fin_para
Fin.
3. Ingresar 15 nmeros negativos en una matriz de orden mxn.
Inicio
M[15][15]: entero
i, j, m, n: entero
repetir
Ingresar m, n
hasta (m + n =15) y (m>0)
Ing. Mendoza Corpus, Carlos
Algoritmos
Fin _ para
para (i=1; i<=N; i++)
para (j=1; j<=N; j++)
si i+j=N+1 entonces
S S+Num[i][j]
Fin _ si
Fin _ para
Fin _ para
Mostrar Diagonal S, S
Fin
6. Disear un algoritmo que permita almacenar en un arreglo los impares que sean dgitos cuando i + j
sea par, para el caso que i + j no sea par usted deber ingresar cualquier nmero negativo.
Inicio
M: entero
i, j, N: entero
para i=1 hasta N
para j=1 hasta N
si (i + j mod 2=0)
repetir
Leer Ingresar nmero, N
hasta que N>0
M[i][j] =N
sino
repetir
Leer Ingresar nmero, N
hasta que N<0
M[i][j] =N
Fin _ si
Fin _ para
Fin _ para
Fin
* 0 * 0 * 0 * 0 * 0 * * 0 * 0 * 0 *
* 0 * 0 * 0 0 * 0 * 0 * 0 * 0 0 * 0
* 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 *
* 0 * 0 * 0 0 * 0 * 0 * 0 * 0
* 0 * 0 * 0 * 0 * 0 *
* 0 * 0 * 0 N=5
N=6
* 0 * 0 * 0 *
* 0 * 0 0 * 0
* 0 * 0 * 0 *
* 0 * 0
N=4 N=3
Inicio
char Num[20][20];
int n, i, j, C=0;
repetir
Mostrar Ingresar N:;
Mostrar N;
hasta (N<=0 | | N>=20)
para (i=0; i<=N-1; i++)
para (j=0; j<=N-1; j++)
si (C=0) entonces
Num[i][j]=*
C=1;
sino
Num[i][j]=0
C=0;
Fin _ si
Fin _ para
Fin _ para
para (i=0; i<=N-1; i++)
para (j=0; j<=N-1; j++)
Mostrar Num[i][j]
Fin _ para
Fin _ para
Fin
Arreglos Multidimensionales
Este tambin es un tipo de dato estructurado, que est compuesto por n dimensiones. Para hacer
referencia a cada componente del arreglo es necesario utilizar n ndice, uno para cada dimensin
Un array puede ser definido de res dimensiones, cuatro dimensiones, hasta de n-dimensiones.
En general, un array de n- dimensiones requiere que los valores de n-ndices puedan ser
especificados a fin de identificar un elemento individual del array. Si cada componente de un array
tiene n-ndices, el array se dice que es solo de n-dimensiones.
Ejemplo: Mediciones diarias de temperatura
Punto
Tiempo 1 2 3
Escritura
Consiste en asignarle un valor a cada elemento del arreglo.
La escritura se realiza de la siguiente manera:
Para i 1 hasta n
arreglo[i] x
Fin_para
Asignacin
Ing. Mendoza Corpus, Carlos
Algoritmos
No es posible asignar directamente un valor a todo el arreglo, por lo que se realiza de la manera
siguiente:
Para i 1 hasta n
arreglo[i] algn_valor
Fin_para
Actualizacin
Dentro de esta operacin se encuentran las operaciones de eliminar, insertar y modificar datos. Para
realizar este tipo de operaciones se debe tomar en cuenta si el arreglo est o no ordenado.
Para arreglos ordenados los algoritmos de insercin, borrado y modificacin son los siguientes:
Insertar.
Si i< mensaje (arreglo contrario caso En arreglo[i] valor i i+1 entonces>
Borrar.
Si n>=1 entonces
i1
Encontrado falso
Mientras i<=n y encontrado=falso
Si arreglo[i] = valor_a_borrar entonces
encontrado verdadero
n n -1
Para k desde i hasta n
arreglo[k] arreglo[k-1]
fin
Si_no
i i+1
Fin
Fin
Si encontrado=falso entonces
Mensaje (valor no encontrado)
Modificar.
Si N>=1 entonces
i1
Encontradofalso
Mientras i<=N y encontrado=false hacer
Si arreglo[i]=valor entonces
arreglo[i] valor_nuevo
encontradoverdadero
Si_no
ii+1
fin
Fin_Minetras
Fin
Ordenaciones en Arreglos
La importancia de mantener nuestros arreglos ordenados radica en que es mucho ms rpido tener
acceso a un dato en un arreglo ordenado que en uno desordenado.
Existen muchos algoritmos para la ordenacin de elementos en arreglos, enseguida veremos algunos
de ellos.
Seleccin Directa
Este mtodo consiste en seleccionar el elemento ms pequeo de nuestra lista para
colocarlo al inicio y as excluirlo de la lista.
Para ahorrar espacio, siempre que vayamos a colocar un elemento en su posicin correcta lo
intercambiaremos por aquel que la est ocupando en ese momento.
El algoritmo de seleccin directa es el siguiente:
Inicio
{Llenar el vector}
Para i0 hasta tam-1
mini
Para ji+1 hasta tam
Si A[j]<A[min] entonces
min j
Fin_si
tempA[i]
A[i] A[min]
A[min] temp
Fin_para
Fin_para
Fin
Bsquedas en Arreglos
Una bsqueda es el proceso mediante el cual podemos localizar un elemento con un valor especfico
dentro de un conjunto de datos. Terminamos con xito la bsqueda cuando el elemento es
encontrado.
A continuacin veremos algunos de los algoritmos de bsqueda que existen.
Bsqueda Secuencial
A este mtodo tambin se le conoce como bsqueda lineal y consiste en empezar al inicio
del conjunto de elementos, e ir a travs de ellos hasta encontrar el elemento indicado
hasta llegar al final de arreglo.
Este es el mtodo de bsqueda ms lento, pero si nuestro arreglo se encuentra
completamente desordenado es el nico que nos podr ayudar a encontrar el dato que
buscamos.
ind 1
encontrado falso
Mientras no encontrado y ind < N hacer
Si A[ind] = valor_buscado entonces
encontrado verdadero
Si_no
ind ind +1
Fin_si
Fin_Mientras
Si encontrado = verdadero entonces
Escribir El elemento se encuentra en la posicin, mitad
fin_Si
Si primero > ultimo entonces
Escribir El elemento no se encuentra en el arreglo
fin_Si
Bsqueda Binaria
Las condiciones que debe cumplir el arreglo para poder usar bsqueda binaria son que el
arreglo este ordenado y que se conozca el nmero de elementos.
Este mtodo consiste en lo siguiente: comparar el elemento buscado con el elemento
situado en la mitad del arreglo, si tenemos suerte y los dos valores coinciden, en ese
momento la bsqueda termina. Pero como existe un alto porcentaje de que esto no ocurra,
repetiremos los pasos anteriores en la mitad inferior del arreglo si el elemento que
buscamos resulto menor que el de la mitad del arreglo, o en la mitad superior si el elemento
buscado fue mayor.
La bsqueda termina cuando encontramos el elemento o cuando el tamao del arreglo a
examinar sea cero.
Leer valor_buscado;
encontrado falso
primero 0
ultimo N-1
Mientras primero <= ultimo y no encontrado hacer
mitad (primero + ultimo)/2
Si arreglo[mitad] = valor_buscado entonces
encontrado verdadero
si_no
Si arreglo[mitad] > valor_buscado entonces
ultimo mitad - 1
si_no
primero mitad + 1
fin_Si
fin_Si
fin_Mientras
Si encontrado = verdadero entonces
Escribir El elemento se encuentra en la posicin, mitad+1
fin_Si
Si primero > ultimo entonces
Escribir El elemento no se encuentra en el arreglo
fin_Si
Clases y Objetos
Unas definiciones clsicas, antes de nada.
Clase
Una clase define un miembro real o una entidad abstracta. Es el tipo o clasificacin de datos. Una clase
define el comportamiento y atributos de un grupo de objetos de caractersticas similares.
Objeto
Un objeto es una instancia o variable de una clase. Se dice que pertenece a la clase. Un objeto se distingue de
otros miembros de la clase por sus atributos.
Clases Relacionadas
Una clase describe un conjunto de objetos con un comportamiento comn y atributos relacionados.
Probablemente a estas alturas de la lectura la clase coche resulte ya pesada, as que se hace necesario un
cambio de aires y utilizar otra clase de objetos.
La clase Pelota es la clase padre (o base, o superclase) en la jerarqua de abajo. Sus mtodos y atributos son
heredados por las clases derivadas (hijas o subclases). Para los objetos de las clases derivadas no es evidente
si los mtodos son nativos a Rugby o Ftbol, o si han sido derivados de una clase de nivel superior.
Ftbol es una clase de Pelota. Ftbol tiene todos los atributos y operaciones de Pelota. No obstante, la clase
Ftbol ha ocultado (hecho privada) la operacin desinflar (sacndola del interfaz pblico) y sobrecargando el
mtodo lanzar con una implementacin apropiada para el ftbol.
La herencia es una forma de especializacin en la que las clases hijas son refinadas para tener el
comportamiento y atributos adecuados para la aplicacin de que se trate. Al poder las clases derivadas aadir,
redefinir y ocultar miembros, la herencia se convierte en reusabilidad programable.
Otra razn para redefinir un mtodo es que la clase base proporcione una implementacin no ptima. A la luz
del contexto en que se usen, las subclases pueden proporcionar una implementacin ptima. Por ejemplo,
mejores algoritmos y tcnicas de almacenamiento pueden ser posibles en determinadas clases derivadas.
Modelado con Objetos
Los problemas se pueden modelar en los trminos especficos del dominio. Una de las ventajas de la
aproximacin orientada a objetos es que permite que el problema sea representado en trminos especficos
del dominio. Esto permite a los diseadores construir modelos que se proyectan directamente en el problema
de la aplicacin.
Sistema escuela
Clase Libro
Clase Pizarra
Clase Tiza
Clase Diploma
Clase Borrador
La anterior una ventana habitual y la siguiente una ventana especial y particular de nuestra visin del interfaz.
MODULARIDAD
Mdulo
Un mdulo que se supone que representa una funcin lgica es una secuencia lxicamente contina de
instrucciones que se encuentra limitado por elementos de fronteras y adems se caracteriza por disponer de
un nombre o identificador
Es aqul que est constituido por una o varias instrucciones fsicamente contiguas y lgicamente
encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes
puntos de un programa.
Segmento
El segmento a diferencia del mdulo se caracteriza porque no dispone de un nombre o identificador
Procedimientos
Un procedimiento o sub rutina, es un sub programa que ejecuta un proceso especfico. Ningn valor esta
asociado con el nombre del procedimiento, por consiguiente no puede ocurrir en una expresin. Un
procedimiento se llama escribiendo su nombre Ejm. SORT para indicar que un procedimiento denominado
SORT se va a usar.
Cuando se invoca el procedimiento los pasos que los define se ejecuta y a continuacin se devuelve el control
al programa que le llam.
Procedimiento Vs Funcin
Los procedimientos y funciones son sub programas, cuyo diseo y misin son similares, sin embargo existen
unas diferencias esenciales entre ellos:
1. Un procedimiento es llamado desde el algoritmo o programa principal, mediante su nombre y
una lista de parmetros actuales o bien con la instruccin llamar_a (call). Al llamar al
procedimiento se detiene momentneamente el programa que se est realizando y el control
pasa al procedimiento llamado, despus de que las acciones del procedimiento se ejecutan, se
regresa a la accin inmediata siguiente a la que se llam.
2. Las funciones devuelven un valor, los procedimientos pueden devolver 0, 1 n valores y en
forma de lista de parmetros.
3. El procedimiento se declara igual que la funcin, pero su nombre no est asociado a ninguno de
los resultados que obtiene.
Funciones
Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que sustituir a la
funcin en el punto de invocacin (las funciones devuelven un resultado).
Cada funcin se evoca utilizando su nombre en una expresin con los argumentos actuales o reales
encerrados entre parntesis.
Para hacer una referencia a una funcin se invoca mediante un nombre y en caso de existir, una lista de
parmetros actuales necesarios (argumentos). Los argumentos deben coincidir en cantidad, tipo y orden con
los de la funcin que fue definida. La funcin devuelve un valor nico.
Las funciones a que se hace referencia, se conocen como funciones de usuario puesto que son definidas por
l mismo y permiten su uso en forma idntica a las funciones estndares.
Para coordinar e iniciar el procesamiento, se utiliza un mdulo principal que es colocado al final del
algoritmo.
Una llamada a la funcin implica los siguientes pasos:
1. A cada parmetro formal se le asigna el valor real de su correspondiente parmetro actual.
2. Se ejecuta el cuerpo de acciones de la funcin.
3. Se devuelve el valor de la funcin al nombre de la funcin y se retorna al punto de llamada.
Declaracin de funciones
funcin nombre_funcin (par1, par2,par3,...) : tipo_del_resultado
Inicio
accin1
accin2
:nombre_funcin Resultado_Obtenido
Fin
Donde:
par1,par2 .... Lista de parmetros formales o argumentos.
Ejemplo:
Obtener el sexto carcter de un nombre y si dicho carcter no existe, se asumir un asterisco como tal.
Funcin SEXTO(n:string):carcter
Inicio
Si longitud(n) >= 6 entonces
SEXTO Subcadena(n,6,1)
Si_noen caso contrario
SEXTO *
Fin
Donde:
Paso De Parmetros
Existen diferentes mtodos para el paso de parmetros a subprogramas, un mismo programa puede producir
diferentes resultados bajo diferentes sistemas de paso de parmetros.
Los parmetros se clasifican de la siguiente manera:
1. Entradas: Las entradas proporcionan valores desde el programa que llama y que se utilizan
dentro de un procedimiento. En los subprogramas funcin las entradas son los argumentos en el
sentido tradicional.
2. Salidas: Las salidas producen los resultados del subprograma; de nuevo si se utiliza el caso
una funcin, mientras que con procedimientos pueden calcularse cero, una o varias salidas.
3. Entradas/Salidas: Un solo parmetro se utiliza para mandar argumentos a un programa y para
devolver resultados.
Los mtodos ms empleados para realizar el paso de parmetros son:
Paso por valor (parmetro valor).
Se utiliza en muchos lenguajes de programacin (pascal, basic, modula-2, algol, etc), debido a su
analoga con los argumentos de una funcin, donde los valores se proporcionan en el orden de
clculo de resultados. Los parmetros se tratan como variables locales y los valores iniciales se
proporcionan copiando los valores de los correspondientes argumentos.
Los parmetros formales (locales a la funcin), reciben como valores iniciales los valores de los
parmetros actuales y con ello se ejecutan las acciones descritas en el subprograma.
La llamada por valor no devuelve informacin al programa que llama.
Paso por referencia o direccin (parmetro variable).
Se utiliza cuando se requiere que ciertos parmetros sirvan como parmetros de salida, es decir,
devuelvan los resultados a la unidad o programas que llama. La unidad que llama pasa a la unidad
llamada la direccin del parmetro actual (que est en el mbito de la unidad llamante). Una
referencia al correspondiente parmetro formal se trata como una referencia a la posicin de
memoria, cuya direccin se ha pasado. Entonces una variable pasada como parmetro real es
compartida, es decir, se puede modificar directamente por el subprograma. Si el parmetro actual es
una expresin, el subprograma recibe la direccin de la posicin temporal que contiene el valor de la
expresin.
Arquitectura modular:
La arquitectura es el elemento estable ante los cambios en el ciclo de vida de los mdulos; la clave
est en separar interfaces de implementaciones.
La separacin entre interfaces e implementacin:
- Asla de los cambios.
- Sirve de mecanismo (compilable) de unin entre arquitectura e implementacin.
Interfaces Implementacin
Arquitectura
Ing. Mendoza Corpus, Carlos
Algoritmos
RECURSIVIDAD
Puede definirse un programa en trminos recursivos, como una serie de pasos bsicos, o paso base (tambin
conocido como condicin de parada), y un paso recursivo, donde vuelve a llamarse al programa. En un
computador, esta serie de pasos recursivos debe ser finita, terminando con un paso base. Es decir, a cada paso
recursivo se reduce el nmero de pasos que hay que dar para terminar, llegando un momento en el que no se
verifica la condicin de paso a la recursividad. Ni el paso base ni el paso recursivo son necesariamente
nicos.
Por otra parte, la recursividad tambin puede ser indirecta, si tenemos un procedimiento P que llama a otro Q
y ste a su vez llama a P. Tambin en estos casos debe haber una condicin de parada.
Existen ciertas estructuras cuya definicin es recursiva, tales como los rboles, y los algoritmos que utilizan
rboles suelen ser en general recursivos.
Recursividad
El concepto de recursividad es muy importante en la programacin funcional, y se puede definir Como el
proceso de resolver un problema reducindolo a uno ms subproblemas que son idnticos en su estructura
al problema original y ms simple de resolver.
Una vez que sea subdividido el problema original, se utilizar la misma tcnica de descomposicin para
subdividir cada uno de estos subproblemas en otros que son menos complejos, hasta que los subproblemas
llegan a ser tan simples que se pueden resolver sin realizar ms subdivisiones, y la solucin general del
problema se obtiene juntando todos los componentes resueltos.
Una funcin o procedimiento que se puede llamar a s misma se llama recursivo. La recursividad es una
herramienta muy potente en algunas aplicaciones, sobre todo de clculo. La recursin puede ser utilizada
como una alternativa a la repeticin o estructura repetitiva.
La razn de que existan lenguajes que admitan la recursividad se debe a la existencia de estructuras
especficas tipo pilas (stack) para este tipo de procesos y memorias dinmicas.
La recursividad es una manera elegante, intuitiva y concisa de plantear una solucin, y es uno de los pilares
de la programacin funcional. Pero no quiere decir que sea un sistema eficiente, es decir, que el nmero de
operaciones que hay que hacer sea inferior que si se utiliza otra forma de resolverlo, como seria mediante una
estructura repetitiva. Al contrario la recursividad es cara y exige un mayor procesamiento.
Ejemplo:
//Funcin Fibonacci recursiva
FIB (X):
Inicio_Fibonacci
Si (X = 0 X = 1) entonces
FIB = X
Si no
FIB = FIB (X-1) + FIB (X-2)
Fin_si
Fin_Fibonacci