Escolar Documentos
Profissional Documentos
Cultura Documentos
PROGRAMA
ALGORITMO
DIAGRAMA
TIPOS DE DIAGRAMA
ESTRUCTURAS
SENTENCIAS
VARIABLES
CONSTANTES
OPERACIONES
OPERADORES MATEMATICOS
OPERADORES RELACIONALES
OPERADORES LÓGICOS
PRIORIDAD DE LAS OPERACIONES
USO DE PARENTESIS EN LAS EXPRESIONES
“Los muertos son los únicos que conocen el final de una guerra. “ Platón.
CONCEPTOS BASICOS
FUENTE: Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm
Definición de computadora
Una computadora es una máquina electrónica digital capaz de procesar información y producir
datos de salida para lo cual requiere de ciertos datos de entrada. El término digital alude al
hecho de que la información almacenada y procesada por la computadora esta representada
mediante códigos númericos binarios formados por ceros y unos ( 0 y 1 ) conocidos como bits.
Lo sorprendente de las computadoras es que pueden realizar operaciones complejas cuando
sus circuitos electrónicos solo pueden comparar dos bits o cambiar un bit de 0 a 1. ¿Como es
esto posible?, pues debido a las altas velocidades con que se ejecutan estas operaciones
sencillas.
Datos e información
Para los informáticos hay una diferencia entre datos e información. Dato vendría a ser la
representación de algún hecho, concepto o entidad real, es la materia prima de la información.
Información vendría a ser el resultado del procesamiento de los datos. Para este curso no
haremos distinción entre dato e información sino que hablaremos de datos de entrada y datos
de salida.
Un sistema de procesamiento de la información involucra tres componentes: datos de entrada,
procesador y datos de salida. El procesador transforma los datos de entrada en datos de salida
ejecutando intrucciones precisas y detalladas que se denominan programas.
El Hardware y el software
Una computadora esta compuesta por dos elementos fundamentales: Hardware y Software.
INTRODUCCIÓN A LA ALGORITMIA
Fuente: Sitio
Algoritmo: Es un conjunto determinado de instrucciones que, al seguirse, desempeñan una
tarea particular.
Debe satisfacer los siguientes criterios:
· Entrada: Se le brindan los datos con los cuales trabajar.
· Salida: Se obtiene un valor o un efecto al finalizar.
· Definición Clara: No puede haber instrucciones ambiguas.
· Limitación de Alcance: El algoritmo debe terminar en un número finito de pasos.
· Eficiencia: Se busca la solución en la menor cantidad de pasos posibles utilizando la
menor cantidad de recursos posibles.
La creación de programas tiene los siguientes pasos:
· Obtención de requisitos: Se debe comprender cual es la información recibida (entrada) y
cual es el resultado que se espera (salida) del programa.
· Concepción: Buscar una forma de resolver el problema.
· Análisis: Pensar en otras formas de resolver el problema y refinar la que parezca mejor.
· Verificación: Comprobación del programa, test, depuración, corrección de errores .
PROGRAMA
Conjunto de instrucciones escritas en secuencia, con miras a efectuar una determinada tarea de manera eficiente.
ALGORITMO
Es la descripción detallada, de todos los pasos que deben seguirse, para efectuar un determinado cometido.
En una receta de cocina, a mas de los ingredientes necesarios para preparar un determinado manjar, se hace
una reseña de la secuencia en la que debe prepararse el plato en cuestión, por consiguiente, esto es también un
algoritmo.
En Informática, a través de los algoritmos, se resuelven los diferentes problemas que se nos presentan de
manera cotidiana y que forman parte de dicho contexto. Es imperativo el correcto aprendizaje y uso de esta
poderosa herramienta para implementar aplicaciones y para facilitar al programador la lógica necesaria para la
resolución de problemas.
Con relación al origen de la palabra, deriva del nombre de un gran matemático árabe, llamado Mohamed Al
Kowarizmi , que alrededor del año 800 d.c. Luego, Fibonacci tradujo sus obras al latín, y por consiguiente se
habló en primera instancia de la palabra algoritmus, que finalmente se transformó en algoritmo que es el término
utilizado en la actualidad.
Para idear un algoritmo se debe hacer un análisis previo del problema a ser resuelto, luego se debe hallar un
camino o metodología que nos permita resolver el problema, y todos los pasos en riguroso orden y secuencia son
los que finalmente constituyen el algoritmo propiamente dicho.
Dicho de otro modo, para solucionar un problema, se debe diseñar un algoritmo que lo haga, por consiguiente, no
debemos perder de vista, que los pasos para resolver un problema, sería:
1) Diseñar el algoritmo :Como veremos más adelante, para el efecto se debe utilizar algunas de las herramientas
recomendadas para el efecto (Pseudocódigo en nuestro caso, o diagrama de flujo o diagrama N -S).
Podemos inferir que el diseño del algoritmo nada tiene que ver con un lenguaje determinado ni tampoco con la computadora
en la que se ejecutará el programa, y en este material se utilizará el pseudocódigo como herramienta de diseño de
algoritmos el cual a su vez se basa en el español estructurado, que es nuestra lengua materna y por ende el idioma que
mejor comprendemos.
Con el objeto de ampliar nuestra perspectiva con relación a los algoritmos, podemos acotar que deben reunir las
siguientes características:
1) Exacto y preciso, de modo tal que no queden dudas sobre la secuencia y el orden a seguirse
2) Claramente explicado
3) Tener un principio y un fin
AUTORES. LIC. CESAR
El esquema a seguirse seria entonces:
CALASTRA Y LIC.
1) Entrada : Se alimenta con datos a la computadora SILVANA DE CALASTRA
2) Proceso : Se desarrolla la estrategia (EDICIÓN DE CORTESÍA)
3) Salida : El computador emite información
DISEÑO DE UN ALGORITMO
La forma más eficiente de diseñar algoritmos, es la que se conoce con el nombre de “divide y vencerás”, que
consiste en dividir el problema en partes más pequeñas que podrían denominarse sub-problemas, y a su vez
cada sub-problema puede ser nuevamente desglosado en otros sub-problemas. El siguiente paso consiste en ir
analizando cada parte para volverlo más eficiente, vale decir ir efectuando “refinamientos” y “depuraciones”
sucesivas.
Se debe hacer notar con meridiana claridad que, cada problema presentado al programador es por lo general
diferente a problemas anteriores y por lo tanto no se puede “mecanizar” el proceso de elaborac ión de los
algoritmos y sugerir soluciones similares a problemas de naturaleza diferente. Esto a su vez naturalmente exige al
máximo la capacidad de análisis, el ingenio y la creatividad del individuo responsable de idear soluciones.
En algunos casos, una vez efectuado el análisis del problema, es factible a priori preparar una estrategia de
solución simple y directa, y en estas circunstancias lo que estamos haciendo es utilizar un mecanismo conocido
con el nombre de “fuerza bruta”, que si bien nos permite resolver el problema, puede no ser la mejor solución y
por ende disminuir el grado de eficiencia del programa. Por lo tanto no recomendamos esta estrategia como
alternativa final, sino mas bien como una forma de aproximarse mejor a la solución definitiva.
Por consiguiente, sugerimos nuevamente no dejar de lado la estrategia “divide y vencerás”, que no siempre se
puede aplicar como estrategia definitiva, pues se dan casos que exigen otra visión.
Así por ejemplo, no podemos dejar de mencionar al mecanismo de la recursividad (la función se autoinvoca y se
debe prever una condición de fin para terminar su ejecución) para problemas concretos de índole matemático,
tales como números fibonacci o cálculo de factoriales.
Tampoco podemos dejar de mencionar, una alternativa conocida con el nombre de solución voraz, para lo cual es
condición imperativa contar ya con alternativas pre-establecidas. A modo de ejemplo, podemos mencionar la
estrategia a utilizarse para dar un vuelto a un cliente, utilizando la menor cantidad posible de monedas, por lo
tanto si el cliente hace una compra por valor de 5.200 (cinco mil doscientos) guaraníes y paga con un billete de
Gs. 50.000 (cincuenta mil) guaraníes., se debe evaluar cual es el billete de mayor denominación que se
necesitará, así como también cantidad de billetes necesarios y así sucesivamente.
Además haremos mención a otra metodología conocida con el nombre de programación dinámica, en la que se
define una secuencia de decisiones, ideal para establecer series de ecuaciones, con el objeto de definir a través
de soluciones particulares, una solución general única.
Nació en Pisa (Italia). Su nombre FIBONACCI como más se lo conoce, es simplemente una contracción de filius Bonaccio
(hijo de Bonaccio).
Fue mas bien educado en el norte de Africa y de pequeño realizó muchísimos viajes acompañando a su padre que tenía un
rango diplomático.
De esta manera al ser educado por maestros árabes, estos le transmitieron sus conocimientos heredados a su vez de los
hindúes y de los griegos.
Publicaciones
Liber Abaci : Publicado en el año 1202, en la que transmite conceptos importantes de aritmética y álgebra, e introduce los números
arábigos en Europa, llevando a cabo una encendida defensa de la superioridad numérica de los números árabes y menciona al cero ( 0 ),
que era prácticamente ignorado en Europa.
Prácticas de Geometría : Publicado en el año 1220, que como su nombre lo dice se plantea cuestiones inherentes a la geometría e incluso
a la trigonometría.
Liber Quadratorum . Data probablemente del año 1225, y allí plantes aproximaciones a raíces cúbicas.
En una granja hay, al principio del año, una pareja de conejos que acaban de nacer. Al cabo de dos meses, esta pareja está prepa rada
para reproducirse. Produce cada mes una pareja de conejos que, al cabo de dos meses, está a su vez, preparada para empezar a
reproducirse, dando otra pareja cada mes. ¿Cuál es el número de parejas de conejos en la granja el día quince de cada mes del año?
El problema se resuelve tomando como los dos primeros componentes de la serie como uno, vale decir:
1 1 2 3 5 8 13 21 34 ...............
REPRESENTACIÓN DE ALGORITMOS
Para la sistematización de los algoritmos, se utilizan en Informática, diferentes herramientas, entre las cuales podemos
mencionar :
PSEUDOCODIGO Pasos para resolver un problema: a) Esbozar el
DIAGRAMA DE FLUJO algoritmo b) Codificar el algoritmo a través de un
lenguaje de alto nivel c) Ejecutar el programa en el
DIAGRAMA NASSI SCHNEIDERMAN
computador.
DIAGRAMA WARNIER ORR
DIAGRAMA
Es la representación a través de símbolos gráficos, de los pasos que deben seguirse para codificar a posteriori un
programa, en algún lenguaje de alto nivel..
TIPOS DE DIAGRAMA
A) DIAGRAMA DE FLUJO
Es recomendable para lenguajes lineales (BASIC, FORTRAN IV, COBOL, etc.).
Sus símbolos son OTRA DEFINICION DE
ALGORITMO
INICIO / FIN FUENTE
Sitio:
http://www.geocities.c
LECTURA / ENTRADA om/david_ees/Algorit
mia/curso.htm
Un Algoritmo es un
conjunto ordenado y
CALCULO / PROCESO finito de pasos o
instrucciones que
conducen a la solución
de un problema. La
naturaleza de los
DECISION / CONDICION problemas varían con
el ámbito o con el
contexto donde estan
planteados; así,
SALIDA / IMPRESIÓN existen problemas
matemáticos,
químicos, filosóficos,
etc
CONECTOR
DECISION / CONDICION
ITERACION
MOHAMMED AL-
KHOWARIZMI
(PADRE DE LA
ALGORITMIA)
LLAVES
(N)
ITERACION
0 FALSO
CONDICION
1 VERDADERO
D) PSEUDOCODIGO
INSTRUCCIONES
FINPARA
B) DESDE C = 1 HASTA 20
INSTRUCCIONES
FINDESDE
C) REPETIR
C=C+1
MIENTRAS C <> 20
3) Estructuras de Selección
Implica que el programa debe evaluar previamente una condición y de acuerdo al resultado de dicha evaluación
se bifurca hacia una u ora dirección.
A su vez se subdividen en :
a) Selección Simple
He aquí su esquema normal :
SI C > 50 ORIGEN DE LA PALABRA ALGORITMO
FINSI
FINSI
B) SENTENCIAS
En general las sentencias, se clasifican en :
1) De entrada
Sirven para ingresar datos, lo cual normalmente se hace a través del tec lado.
En pseudocódigo, se utiliza para el efecto la sentencia LEER.
Ejemplos :
LEER A
LEER X, Y, Z
LEER R1, U3, KH22
LEER A1$, G$, B$
En estos ejemplos A, X, Y, Z, R1, U3, KH22 son variables numéricas, y por lo tanto se definen para ingresar
dígitos numéricos.
Sin embargo, A1$, G$, B$, son variables alfanuméricas, y por consiguiente se utilizan para ingresar dígitos
numéricos, caracteres alfabéticos y caracteres especiales (+ * - / ñ $ % & ( \, etc.)
2) De salida
Su función básica es la de emitir información.
Normalmente, para el efecto se utiliza la sentencia IMPRIMIR.
Ejemplos :
IMPRIMIR R1
IMPRIMIR X * 3
IMPRIMIR “RESULTADO FINAL ES : “ , S2
3) De asignación
Consiste en almacenar constantes, resultados de operaciones matemáticas, o variables, en una variable de
resultado.
Ejemplos :
Z1 = 45
R2 = 12 * 10
M1 = Z4 + 15
C) VARIABLES
Cada lenguaje maneja su propio juego de variables.
En la algoritmia pura, básicamente se definen dos grandes tipos de variables, que son :
1) Numéricas
Se definen para almacenar dígitos numéricos.
Ejemplos de nombres de variables :
A
B3
MH12
NK6
2) Alfanuméricas
Se definen para almacenar dígitos numéricos, caracteres alfabéticos e incluso caracteres especiales.
Con las variables alfanuméricas, no se pueden efectuar operaciones matemátic as tales como adición, sustracción,
multiplicación, división, exponenciación.
Ejemplos de nombres de variables alfanuméricas :
A$
B3$
MH$
D) CONSTANTES
Normalmente se subdividen en :
1) Numéricas
Representan valores numéricos.
Una constante numérica solo puede coaligarse con una variable numérica.
Ejemplos :
A = 12 (A es la variable numérica y 12 es la constante)
C3 = M – 4 (C3 y M son variables numéricas, y 4 es la constante)
D6 = C3 / 5.4 (D6 y C3 son variables numéricas, y 5.4 es la constante)
2) Alfanuméricas
Representan números, caracteres alfabéticos y caracteres especiales.
Deben representarse entre comillas.
Ejemplo :
A$ = “HOLA” (A$ es la variable y “HOLA” es la constante)
E) OPERACIONES
Las operaciones que se pueden efectuar en una computadora son :
Adición
Sustracción
Multiplicación
División
Exponenciación
F) OPERADORES MATEMATICOS
Los operadores matemáticos son :
+ (Mas) SUMA
- (Menos) RESTA
* (Asterisco) MUTIPLICACION
/ (Barra Común) DIVISION
^ (Circunflejo) EXPONENCIACION
No es posible efectuar de manera directa una operación de radicación, sin embargo, es perentorio hacer notar que, la
exponenciación y la radicación son operaciones inversas.
G) OPERADORES RELACIONALES
Son los siguientes :
> MAYOR QUE
< MENOR QUE
>= MAYOR O IGUAL QUE AUTORES. LIC. CESAR
<= MENOR O IGUAL QUE CALASTRA Y LIC.
= IGUAL QUE SILVANA DE CALASTRA
<> DIFERENTE A (EDICIÓN DE CORTESÍA)
Ejemplos :
SI A > 10
SI B = 12
SI Z < X
SI R >= 145
SI M <> 0
H) OPERADORES LOGICOS
Los operadores lógicos son :
1) OPERADOR LOGICO Y
Implica que se unen dos o mas condiciones a través de este operador.
Para evaluar la salida que se produce al juntar dos o más condciones se utiliza la siguiente tabla de verdad.
En síntesis, para que dos o más condiciones unidas a través de Y, produzca una salida V(erdadera), todas las
condiciones evaluadas deben ser verdaderas.
Ejemplos :
Si B > 20 Y B < 50
FINSI
Si B tiene un valor 30, entonces esto dará una salida V(erdadera), pues la primera condición B > 20 es
V(erdadera) y la segunda B < 50 también es V(erdadera).
Sin embargo al asignarle a B un valor de 60, esto dará una salida F(alsa), pues la primera condición B > 20 es
V(erdadera) pero la segunda condición B < 50 es F(alsa).
2) OPERADOR LOGICO O
Implica que se unen dos o más condiciones a través de este operador.
Para evaluar la salida que se produce al juntar dos o más condiciones se utiliza la siguiente tabla de verdad.
En síntesis, para que dos o más condiciones unidas a través de O, produzca una salida V(erdadera), todas las
condiciones evaluadas deben ser verdaderas, o por lo menos solo una de ellas.
Ejemplos :
Si B < 20 o B > 50
FINSI
Si B tiene un valor 30, entonces esto dará una salida F(alsa), pues la primera condición B< 20 es F(alsa) y
lasegunda B > 50 también es F(alsa).
Sin embargo al asignarle a B un valor de 60, esto dará una salida V(erdadera), pues aunque la primera condición
B < 20 es F(alsa) la segunda condición B > 50 es V(erdadera).
3) OPERADOR LOGICO NO
La negación NO normalmente se combina con los operadores de relación tales como > , < ; =.
A consecuencia de ello, se forman combinaciones tales como NO >, NO <, NO =, etc.
I) PRIORIDAD DE LAS OPERACIONES
La prioridad de las operaciones matemáticas son las siguientes
Suma, resta
Multiplicación , división
Exponenciación
J) EXPRESIONES Y USO DE PARENTESIS
Teniendo en cuenta lo mencionado en el punto I, para la siguiente expresión:
R = A / 5 + T * 3 – 14 / 2
Es posible, cambiar el orden en la prioridad de las operaciones, a través del uso de paréntesis, de la siguiente forma :
R = (A / 5) + (T * 3) – (14 / 2)
Una definición informal (no se considera aquí una definición formal, aunque existe): conjunto
finito de reglas que dan una secuencia de operaciones para resolver todos los problemas de un
tipo dado. De forma más sencilla, podemos decir que un algoritmo es un conjunto de pasos que
nos permite obtener un dato.
· Efectividad: se entiende por esto que una persona sea capaz de realizar el algoritmo
de modoPOR
PREPARADO exacto
LIC.yCESAR
sin ayuda de una máquina
CALASTRA en un lapso
& LIC. SILVANA DEde tiempo finito.
CALASTRA 9
A menudo los algoritmos requieren una organización bastante compleja de los datos, y
es por tanto necesario un estudio previo de las estructuras de datos fundamentales.
Dichas estructuras pueden implementarse de diferentes maneras, y es más, existen
algoritmos para implementar dichas estructuras. El uso de estructuras de datos
adecuadas pueden hacer trivial el diseño de un algoritmo, o un algoritmo muy
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
FIN
3) Dado el siguiente ejercicio con operador lógico Y, determinar el valor de la variable X, en el momento de la
impresión:
INICIO M X
SI ( M > 10 ) Y ( M < 20 ) 13 ___
X = M + 20 8 ___
SINO 30 ___
X=M–5 20 ___
FINSI 15 ___
IMPRIMIR X
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 10
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
Después de quemar una vela sobra un poco de cera. Con seis sobrantes se puede hacer otra vela
igual a la original.
- Clasificación de algoritmos
* Algoritmo determinista: en cada paso del algoritmo se determina de forma única el siguiente
paso.
* Algoritmo no determinista: deben decidir en cada paso de la ejecución entre varias
alternativas y agotarlas todas antes de encontrar la solución.
Todo algoritmo tiene una serie de características, entre otras que requiere una serie de recursos, algo que es fundamental
considerar a la hora de implementarlos en una máquina. Estos recursos son principalmente:
· El tiempo: período transcurrido entre el inicio y la finalización del algoritmo.
· La memoria: la cantidad (la medida varía según la máquina) que necesita el algoritmo para su ejecución.
Los ejercicios detallados a continuación, tienen por objetivo, permitir al lector una acabada comprensión de los
diferentes tipos de sentencias, las diversas operaciones y operadores matemáticos que se pueden utilizar, variables de
entrada y de resultado, etc.
Todos ellos fueron desarrollados en estructuras lineales o de secuencia y con variables numéricas exclusivamente.
En las estructuras lineales o secuenciales, las órdenes se ejecutan en el mismo orden en que fueron escritas, sin que
se produzcan bifurcaciones.
1) Introducir un número cualquiera, multiplicarlo por tres e imprimir el resultado.
R Variable de resultado
X Variable numérica de entrada
COMPLETE EL VALOR QUE TENDRA R
INICIO DESC. DEL PSEUDOCODIGO X R
R=0 Se inicializa R 20 ___
LEER X Se ingresa el valor X 15 ___
R=X*3 Se efectua multiplicación 11 ___
IMPRIMIR R Se imprime resultado (R) 40 ___
FIN
PRUEBA DE ESCRITORIO
SI X = 6 SI X = 10
Se ejecuta la orden R = X * 3 Se ejecuta la orden R = X * 3
Se imprimirá R = 18 Se imprimirá R = 30
INICIO
Se ingresan M y N
LEER M.N VARIABLES DE ENTRADA
IMPRIMIR M, N Se imprimen los valores ingresados MyN
N=M-N Se resta M con N y se almacena en N
Se resta M con N y se almacena en M
M=M–N
Se suman M y N y se almacena en N
N=M+N
IMPRIMIR M, N Se imprimen M y N
FIN
PRUEBA DE ESCRITORIO
M = 35 , N = 20
En el primer calculo N = M – N, el valor de N es 15
En el segundo calculo M = M – N, el valor de M es 20.
En el tercer calculo, N = M + N, el valor de N es 35, con lo
cual finaliza el proceso de transferencia.
Matemático y astrónomo árabe miembro de la "Casa de la sabiduría" fundada en Bagdad, la ciudad de las Mil y
una noches, por el califa Al-Mamun (809-833), en la que trabajaron sabios judíos y cristianos procedentes de
Siria, Irán y Mesopotamia. Escribió varios libros de astronomía, uno de álgebra y otro sobre aritmética (traducidos
al latín en el s. IX por Adelardo de Bath y Roberto de Chester), en el que hace una exposición exhaustiva del
sistema de numeración hindú. Este sistema se empezó a conocer como «el de Al-Khowarizmi» y, por las
deformaciones que tuvo, bien por transmisión o por traducción, llegó a la palabra «algorismi», «algorismo» o
«algoritmo». Actualmente el término algoritmo significa procedimientos operativos que permiten resolver cualquier
problema de un determinado tipo. Sin duda se debe a Al-Khowarizmi el hecho de que la palabra algoritmo se
haya convertido en palabra de uso común en todos los idiomas, especialmente en el campo de las matemáticas y
de la informática.
La resolución de la ecuación de segundo grado aparece en los trabajos de Al-Jwarizmi utilizando un método
geométrico cuyo fundamento es la formación de cuadrados. En esencia coincide con el actual método general.
OTROS SITIOS EN INTERNET DONDE HALLARAS MAS INFORMACION SOBRE ESTE GENIO
1) http://www.tareasya.com/noticia.asp?noticia_id=4600
2) http://www.terra.es/personal/jftjft/Historia/Terminos.htm
http://centros5.pntic.mec.es/~francesd/Mohamed.htm
Una estructura secuencial es aquella en la que las instrucciones están una a continuación de la otra
siguiendo una secuencia única, sin cambios de ruta. La estructura secuencial tiene una entrada y una
salida.
ESTRUCTURAS DE SELECCIÓN
SIMPLES
DOBLES
MULTIPLES
AUXILIARES
FUNCION ENT( )
FUNCION MOD( )
De los 1001 cabos se puede hacer 166 velas completas, dejando aparte cinco sobrantes.
Después de quemar las 166 velas se tendrán 166 cabos, más los cinco sobrantes del inicio son 171 cabos.
De éstos se puede hacer 28 velas, dejando aparte tres sobrantes.
Tras quemar las 28 velas se tiene 28 cabos, que sumados a los otros tres son 31. De éstos se puede hacer 5
velas, dejando aparte un sobrante.
Al quemar las cinco velas se tendrá cinco cabos, más el otro sobrante, son seis. De éstos se puede hacer una
vela más.
Así se habrán hecho 166 + 28 + 5 + 1 = 200 velas.
EJERCICIO MENTAL NRO. TRES
Aura y Aurelia son hermanas. Aurora es la hija de Aura, y es 12 años más joven que su tía. Aura
tiene el doble de edad que Aurora. Hace cuatro años Aura tenía la misma edad que Aurelia tiene
ahora, y Aurelia tenía el doble de la edad de su sobrina tenía entonces.
¿Cuántos años tiene Aurora?
. VER RESPUESTA AL DORSO DE INICIO DE CAPITULO CUATRO
Clasificación de problemas
ESTRUCTURAS DE SELECCIÓN
Las estructuras de selección se utilizan para bifurcar el programa hacia uno u otro punto, dependiendo del
resultado de la evaluación.
En los lenguajes lineales, se utilizaba la instrucción GOTO, para bifurcar un programa hacia una u otra parte
del programa.
Sin embargo, en el pseudocódigo, que normalmente se utiliza como paso previo a la codificación de lenguajes
estructurados, no es posible utilizar la instrucción GOTO, pues estos software carecen de esa sentencia, por
consiguiente se lo utiliza de otro modo, pero con el mismo objetivo de los lenguajes lineales.
A modo de ejemplo, si el lector se dirige por la ruta 1, luego de la localidad de San Patricio, el mismo debe
decidir si se dirige hasta la ciudad de Encarnación o hasta la ciudad de Ayolas, pues la ruta se bifurca hacia
ambos puntos, y al llegar a ese lugar el mismo debe decidir hacia donde se dirigirá.
Salvando la distancia, y sin ser muy maximalista, en un programa de computación, eso equivaldría a una
estructura de selección.
1) Introducir un número.
Determinar si el mismo es positivo, y en caso afirmativo, imprimir el mensaje : “EL NUMERO ES POSITIVO”.
X Variable de entrada
INICIO QUE SE IMPRIMIRA DE ACUERDO
LEER X AL VALOR DE X ?
SI X > 0 X
IMPRIMIR “EL NUMERO ES POSITIVO” -10 _________
FINSI 10 _________
FIN
PRUEBA DE ESCRITORIO
Si X = 20
Se imprimirá el mensaje en cuestión, pues se cumple la condición evaluada (SI X > 0).
Si X = -15
No se imprimirá ningún tipo de mensaje, pues la condición evaluada no se cumple, y no se prevé
ninguna salida cuando la condición no se cumple.
OBSERVACION MUY IMPORTANTE :
La forma más directa, sencilla y eficiente, de determinar si un número es positivo, es preguntando si el mismo es mayor a
cero.
No debemos olvidar que el número cero, es neutro, vale decir que no es positivo ni negativo.
Hacemos notar que, en el presente ejercicio estamos utilizando una estructura de selección simple, con una sola salida.
Por consiguiente, si no se cumple la condición evaluada, el algoritmo finaliza sin imprimir ningún tipo de mensaje.
2) Introducir cinco números cualesquiera al mismo tiempo.
Determinar e imprimir el menor número de la serie.
A,B,C,D,E Variables de entrada
OBSERVACION: La estrategia consiste en capturar el primer valor como
ME Auxiliar de Menor
INICIO supuesto menor y luego ir comparando con las demás variables.
ME = 0
LEER A,B,C,D,E
A es en teoría el menor QUE VALOR TENDRA ME ?
ME = A
Si B es menor a ME, el
SI B < ME
nuevo menor es B. A B C D E ME
ME = B
10 25 2 35 50
FINSI
Si C es menor a ME, el 50 60 5 15 20
SI C < ME
nuevo menor es C. 78 -10 -5 22 35
ME = C
FINSI -41 55 60 41 12
Si D es menor a ME, el
SI D < ME
nuevo menor es D.
ME = D
FINSI EL METODO UTILIZADO SE
Por último, si E es CONOCE CON EL NOMBRE DE
SI E < ME
menor a ME, el nuevo
ME = E COMPARACIONES SUCESIVAS.
menor es E.
FINSI
IMPRIMIR ME
FIN
PRUEBA DE ESCRITORIO
La variable auxiliar ME, se utiliza para almacenar el menor numero de la serie.
Se presupone que el primer número A, es el menor de los cinco, y se lo almacena para el efecto en la variable auxiliar
ME. luego a través de comparaciones sucesivas, se determina el menor de la serie.
Para A = 15 B = 19 C = 10 D = 22 E = 27
En primera instancia se almacena la variable A o sea 15 en la variable ME.
Luego se pregunta SI B < ME, y como B tiene asignado el valor 19 y ME el
valor 15, no se produce ninguna variación.
Luego se pregunta SI C < ME, como C tiene almacenado el valor 10, lo cual es menor a ME, que tiene almacenado el
valor 15, entonces se produce un cambio de valores, y el nuevo valor de ME es 10.
En las siguientes comparaciones, ya no se producen cambios, y al final al ejecutarse la instrucción IMPRIMIR ME,
finalmente se imprime 10.
INICIO INICIO
R=0 R=0
LEER K Si se cumple la LEER K
SI K > 50 condición K se SI K > 50
R = K + 10 suma con 10 R = K + 10
IMPRIMIR R SINO
SINO R=K+5
R=K+5 De lo contrario FINSI
IMPRIMIR R K se suma con IMPRIMIR R
FINSI 5 FIN
FIN
PRUEBA DE ESCRITORIO
Si K = 60
La evaluación K > 50, saldrá como V(erdadera), y por lo tanto se ejecutará la instrucción R = K + 10, y por lo
tanto el valor de R será finalmente 70, lo cual se imprimirá finalmente.
Si K = 25
La evaluación K > 50, será F(alsa), y por dicho motivo se ejecutará la sentencia R = K + 5, por consiguiente el
valor de R será 30, lo cual se imprimirá finalmente.
OBSERVACION
En la alternativa dos, se optimizó el algoritmo, pues la sentencia de salida IMPRIMIR R , se ejecuta una sola
vez.
Esto es posible debido a que en este caso se ha definido una variable de resultado única.
Sin embargo si se definían dos variables de resultado, necesariamente la impresión de dichas variables de
resultado debían efectuarse por separado.
7) Introducir un número cualquiera.
Si es mayor a treinta y menor a cincuenta, sumarle a dicho número la constante cinco, e imprimir el resultado .
Si el número es mayor a treinta pero no es menor a cincuenta, sumarle seis e imprimir el resultado.
Si el número no es mayor a treinta, sumarle al mismo la constante veinte e imprimir el resultado.
X Variable de Entrada
S Variable de Resultado
INICIO QUE VALOR TENDRA LA VARIABLE S ?
S=0 X S
LEER X 20
SI X > 30 40
SI X < 50 60
S = X + 5 10
SINO 75
S = X + 6
FINSI
SINO
S = X + 20
FINSI
IMPRIMIR S
FIN
PRUEBA DE ESCRITORIO
SI X = 40 , el resultado será 45, pues se cumple la primera evaluación
X > 30 y también la segunda X < 50, y se ejecuta la sentencia
S = X + 5.
Las estructuras de selección, ayudan al programador a desmenuzar los programas en secciones más pequeñas.
Además, de esta manera se facilita enormemente la toma de decisiones, acciones estas que se ejecutan de forma
cotidiana en los programas de aplicación.
SIMPLES
DOBLES
MÚLTIPLES
LAS VARIABLES AUXILIARES
Normalmente, se utilizan para almacenamiento temporal de información, aunque sus usos y aplicaciones son muy
variados, razón por la cual es un tanto difícil, establecer una definición única.
Se ha utilizado esta muy útil herramienta, en los ejercicios dos, tres y cuatro del presente capítulo, y en todos esos
casos como variable de almacenamiento temporal de información.
Sin embargo, es imperativo hacer notar una vez más que, su uso es muy amplio y variado, por lo cual no es
conveniente intentar una definición muy restrictiva.
FUNCION ENT( )
Devuelve el resto o residuo de una división, y se lo utilizó en este capítulo, en el ejercicio seis, para saber si un
número positivo es par o no, como una alternativa de la función ENT.
EJERCICIOS PROPUESTOS
( RESUELTOS EN EL APENDICE A)
1) Introducir un número cualquiera.
Si el mismo es menor a diez, multiplicarlo por dos e imprimir el resultado.
De lo contrario, restar cinco e imprimir el resultado.
2) Introducir tres números cualesquiera.
Determinar e imprimir el número medio.
(El número medio es aquel que no es el mayor ni el menor).
3) Introducir un número cualquiera.
Si el número es menor a cuarenta, sumarle la constante ocho e imprimir el resultado.
De lo contrario, multiplicar el número por la constante cuatro e imprimir el resultado.
4) Introducir un número cualquiera.
Si es mayor a quince y menor a cuarenta, multiplicar dicho número por la constante tres, e imprimir el resultado.
Si el número no es mayor a quince, sumarle al mismo la constante treinta e imprimir el resultado.
5) Introducir un número cualquiera.
Si es mayor a cien y menor a doscientos, multiplicar dicho número por la constante cuatro, e imprimir el
resultado.
Si el número no es mayor a cien, sumarle al mismo la constante treinta e imprimir el resultado.
6) Introducir un número cualquiera.
Validar si es mayor a diez, y en caso afirmativo, determinar si el mismo es múltiplo de siete. En caso de ser
múltiplo de siete, multiplicar el número por dos, y luego sumarle tres a ese resultado, y luego imprimirlo; en caso
de no ser múltiplo de siete, restarle tres al número e imprimir el resultado.
En caso de no ser mayor a diez, imprimir el mensaje “ERROR”.
7) Introducir un número cualquiera.
Si es mayor a 29,
Si es múltiplo de 2
Si es múltiplo de 10
Multiplicar el número por cuatro e imprimir el resultado
En caso, contrario
Sumar cinco al número e imprimir el resultado
En caso de no ser múltiplo de 2,
Restar diez al número e imprimir el resultado
Si no es mayor a 20,
Imprimir el mensaje “ERROR”.
EJERCICIOS PROPUESTOS
( A SER RESUELTOS POR EL LECTOR)
1) Introducir un número cualquiera.
Si el mismo es menor a quince, multiplicarlo por tres e imprimir el resultado.
De lo contrario, restar diez e imprimir el resultado.
2) Introducir un número cualquiera.
Si el número es menor a sesenta, sumarle la constante veinte e imprimir el resultado.
De lo contrario, multiplicar el número por la constante tres e imprimir el resultado.
3) Introducir un número cualquiera.
Si es mayor a veinte y menor a ochenta, multiplicar dicho número por la constante cinco, e imprimir el resultado .
Si el número no es mayor a veinte, sumarle al mismo la constante veinte e imprimir el resultado.
4) Introducir un número cualquiera.
Si es mayor a cincuenta y menor a cien, multiplicar dicho número por la constante cinco, e imprimir el resultado.
Si el número no es mayor a cincuenta, sumarle al mismo la constante cuarenta e imprimir el resultado.
5) Introducir un número cualquiera.
Validar si es mayor a veinte, y en caso afirmativo, determinar si el mismo es múltiplo de nueve. En caso de ser
múltiplo de nueve, multiplicar el número por tres, y luego sumarle cinco a ese resultado, y luego imprimirlo; en
caso de no ser múltiplo de nueve, restarle cinco al número e imprimir el resultado.
En caso de no ser mayor a veinte, imprimir el mensaje “ERROR”.
6) Introducir un número cualquiera.
Si es mayor a 40,
Si es múltiplo de 3
Si es múltiplo de 5
Multiplicar el número por cinco e imprimir el resultado
En caso, contrario
Sumar diez al número e imprimir el resultado
En caso de no ser múltiplo de 3,
Restar veinte al número e imprimir el resultado
Si no es mayor a 40, AUTORES. LIC. CESAR
Imprimir el mensaje “ERROR”. CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)
OPERADORES LÓGICOS
O
Y
NO
Hay cinco animales, que pueden ser perros o lobos. Por alguna razón pueden hablar; los perros
siempre dicen la verdad, y los lobos siempre mienten. El primer animal dice que el segundo es un
perro. El tercero dice que el cuarto es un lobo. El quinto dice que el primero es un perro. El segundo
dice que el tercero es un lobo. El cuarto dice que el segundo y el quinto son de especies diferentes.
¿Cuántos lobos y cuántos perros hay en este grupo?
(VER RESPUESTA AL DORSO DEL INICIO DEL CAPITULO CINCO)
SI Z = 35 y L = 110
La primera evaluación ( (Z<20) O (Z>40) ), es F(alsa).
La segunda evaluación ( (L<100) O (L>130) ), es F(alsa).
Ambas evaluaciones están a su vez unidas por el operador lógico Y, y al ser falsa la primera evaluación Y falsa
la segunda, entonces se ejecuta la instrucción P = Z - L, y el valor de P es - 75.
INICIO
T=0
LEER M, N QUE VALOR TENDRA T?
T=M+N M N T
SI (T > 50) Y ( M > 10 ) Y ( N MOD 3) = 0 40 20 ___
T=N*2 45 15 ___
SINO 30 10 ___
T=M*5 50 21 ___
FINSI 20 25 ___
IMPRIMIR T
FIN
PRUEBA DE ESCRITORIO
Para M = 49 y N = 18.
El primer cálculo T = M + N, arrojará el siguiente resultado: 67.
Ya en la selección, la primera evaluación ( T > 50 ), producirá una salida Verdadera.
Luego, la segunda evaluación ( M > 10 ), producirá también una salida Verdadera.
Por último, la tercera evaluación, ( N MOD 3 ) = 0, produce una salida Verdadera.
Al ser las tres evaluaciones Verdaderas, se ejecuta el cálculo T = N * 2, cuyo resultado final es 36.
Para M = 49 y N = 17.
El primer cálculo T = M + N, arrojará el siguiente resultado: 66.
Ya en la selección, la primera evaluación ( T > 50 ), producirá una salida Verdadera.
Luego, la segunda evaluación ( M > 10 ), producirá también una salida Verdadera.
Por último, la tercera evaluación, ( N MOD 3 ) = 0, produce una salida Falsa.
Al ser la tercera evaluación Falsa, se ejecuta el cálculo T = M * 5, cuyo resultado final es 245.
INICIO
T=0
LEER M, N QUE VALOR TENDRA T?
T=M+N M N T
SI (T > 50) O ( M > 10 ) O ( N MOD 3) = 0 41 20 ___
T=N*2 46 15 ___
SINO 31 10 ___
T=M*5 51 21 ___
FINSI 20 25 ___
IMPRIMIR T
FIN
PRUEBA DE ESCRITORIO
Para M = 49 y N = 18.
El primer cálculo T = M + N, arrojará el siguiente resultado: 67.
Ya en la selección, la primera evaluación ( T > 50 ), producirá una salida Verdadera.
Luego, la segunda evaluación ( M > 10 ), producirá también una salida Verdadera.
Por último, la tercera evaluación, ( N MOD 3 ) = 0, produce una salida Verdadera.
Al ser las tres evaluaciones Verdaderas, se ejecuta el cálculo T = N * 2, cuyo resultado final es 36.
Para M = 49 y N = 17.
El primer cálculo T = M + N, arrojará el siguiente resultado: 66.
Ya en la selección, la primera evaluación ( T > 50 ), producirá una salida Verdadera.
Luego, la segunda evaluación ( M > 10 ), producirá también una salida Verdadera.
Por último, la tercera evaluación, ( N MOD 3 ) = 0, produce una salida Falsa.
Al ser la tercera evaluación Falsa, pero las dos primeras verdaderas, se ejecuta el cálculo T = N * 2, cuyo resultado final es
34.
EJERCICIOS PROPUESTOS
( A SER RESUELTOS POR EL LECTOR )
EL HARDWARE DE LA COMPUTADORA
FUENTE: Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm
Daremos aquí una breve descripción de las partes fundamentales del hardware sin entrar en detalles internos. Sin hacer
distinción de tamaños, cualquier computadora, puede descomponerse físicamente en cuatro partes fundamentales:
Procesador (llamado también Unidad Central de Proceso o CPU, del inglés, Central Processing Unit).
Memoria principal
Dispositivos de entrada y salida E/S.
Memoria auxiliar
Procesador o Unidad Central de Proceso
El procesador es el cerebro de la computadora, el responsable de mantener en funcionamiento coordinado todas las partes
de la computadora ejecutando instrucciones precisas y detalladas que son los programas. El procesador esta compuesto
de dos partes fundamentales que son: La Unidad Aritmética-Lógica y la Unidad de Control.
La Unidad Aritmética-Lógica, es la responsable de efectuar operaciones aritméticas (suma, resta, multiplicación y
división) y operaciones lógicas (comparaciones booleanas).
La Unidad de Control, es la responsable de la sincronización de todas las actividades de la computadora. Decide cuando
se obtendrán datos de los dispositivos de entrada para ser llevados a la memoria, cuando se efectuarán cálculos con los
datos almacenados en la memoria y cuando se llevarán datos de la memoria a los dispositivos de salida.
Memoria principal
La memoria principal es el espacio donde se almacenan los datos e instrucciones que se requieren para la realización de
un proceso. En caso que los datos e instrucciones no quepan integramente en la memoria principal, entonces serán
cargados hacia ella por etapas, pero en todo caso, cualquier operación se realiza en base al contenido actual de la
memoria principal. A la memoria principal se la conoce también como memoria RAM (Random Access Memory,
Memoria de Acceso Aleatorio).
Las características más relevantes de la memoria principal son las siguientes
La memoria principal es un espacio de almacenamiento temporal por lo que los datos no guardados en un medio de
almacenamiento permanente se pierden al apagar la computadora o al salir un programa de la memoria
Esta íntimamente ligada al procesador por lo que el acceso a la memoria principal es muy rápido lo que le permite al
procesador acceder a la memoria principal millones de veces por segundo .
La unidad más pequeña de memoria es el bit. Un bit puede almacenar un sólo dígito binario, 0 ó 1. Le sigue a esto el
byte, que esta compuesto de 8 bits. Un byte tiene la capacidad de almacenar un carácter de información. En cambio para
almacenar información numérica se requiere de mayor memoria que puede ser 2, 4 e incluso 8 bytes consecutivos,
dependiendo del tipo de dato numérico.
Dispositivos de entrada/salida (E/S)
También conocidos como periféricos de E/S. Estos dispositivos permiten comunicar la computadora con el usuario
permitiendo el ingreso de datos a la computadora (dispositivos de entrada) y la salida de información de la computadora
(dispositivos de salida). Es decir, los dispositivos de E/S son una interfaz entre el usuario y la computadora
Memoria auxiliar
Son dispositivos en los que se puede almacenar datos y programas de forma permanente. Entre los dispositivos mas
comunes de este tipo tenemos: los discos duros y los discos flexibles. Existen otros dispositivos de almacenamiento
permanente como las unidades de cinta magnética, los discos compactos, los discos ópticos, etc.
CONTADOR MANUAL
CONTADOR AUTOMATICO
ESTRUCTURA PARA - FIN PARA
ESTRUCTURA DESDE – FINDESDE
ESTRUCTURA REPETIR – HASTA
ESTRUCTURA MIENTRAS – FINMIENTRAS
ESTRUCTURA HACER - MIENTRAS
A Laura le gusta decorar su casa con velas, y enciende varias de diferente color para cada día de la
semana. El lunes enciende verdes, el martes azules, el miércoles amarillas, el jueves anaranjadas,
el viernes púrpuras, el sábado rojas, y el domingo blancas. Es bien sabido que una semana separa
la Navidad de Año Nuevo, así que les corresponden el mismo día de la semana. Por esa razón Laura
compra más velas de un mismo color, dependiendo del día de la semana que corresponde a ambas
celebraciones, para iluminar su casa. En una ocasión compró velas verdes para Navidad, pero ese
mismo año compró velas rojas para Año Nuevo.
¿Por qué eligió Laura colores diferentes para Navidad y Año Nuevo?
(VER RESPUESTA AL DORSO DE INICIO DEL CAPITULO SEIS)
EL SOFTWARE
FUENTE: Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm
El Software es el conjunto de datos y programas que usa la computadora y se guardan en algún dispositivo del hardware
como, por ejemplo, un disco duro. El software es intangible (usted no lo puede tocar). Suponga que tiene un disco flexible
conteniendo un programa, cuando usted borra el programa los átomos y moléculas del disco son los mismos que antes, pero
ahora el programa ya no está. Se ha removido algo intangible sin alterar el medio tangible en el que estaba almacenado .
Un programa es un conjunto detallado de instrucciones que instruyen al procesador para realizar determinados procesos.
Los datos pueden ser cualquier información que necesite el programa: carácteres, números, imágenes, etc. Para efectos de la
memoria de la computadora (principal y secundaria) no hay ninguna distinción entre programas y datos.
Software específico o de aplicación
Son programas que tienen una aplicación específica tales como la preparación de nóminas, procesamiento de texto,
procesamiento de imágenes, procesamiento de audio, etc.
Es decir, son programas que responden a una necesidad concreta y que ayudan a las persona a realizar sus trabajos. El
mercado del software esta lleno de software de aplicación. Algunos programas de aplicación conocidos son: Microsoft
Word, Microsoft Excel, Microsoft Power Point, Adobe Photoshop, Corel Draw, WinZip, Internet Explorer, etc.
Software de sistema
Son programas indispensables para el funcionamiento de la computadora. Estos programas son, básicamente, el sistema
operativo, los compiladores e intérpretes y los programas de utilidad.
El sotware de sistema más importante es el sistema operativo. El sistema operativo es una colección compleja de muchos
programas y es el encargado de coordinar el funcionamiento de los componentes hardware y software de un sistema de
cómputo. El sistema operativo es responsable de iniciar la ejecución de otros programas proporcionando los recursos
necesarios. Cuando un programa esta en ejecución, el sistema operativo maneja los detalles del hardware para dicho
programa.
Por ejemplo, cuando desde un programa procesador de textos, como Microsoft Word, usted decide guardar el documento
que ha elaborado, es el sistema operativo el encargado de almacenar el documento como un archivo en el disco duro o disco
flexible, según haya elegido. Así pues, entre muchas otras cosas, el sistema operativo se encarga del almacenamiento y
recuperación de archivos. Los sistemas operativos pueden ser: monousuarios (un sólo usuario) y multiusuarios diferentes
usuarios), atendiendo al número de usuarios y monocarga (una sóla tarea) o multitarea (múltiples tareas), atendiendo al
número de tareas (procesos) que puede realizar simultáneamente
Los sistemas operativos modernos normalmente vienen con una interfaz gráfica de usuario que permite a los usuarios
interactuar fácilmente con el sistema operativo mediante menús, íconos, el mouse y el teclado. Como ejemplos de sistemas
operativos tenemos los siguientes: Unix, Windows 98, Windows NT, Linux, Solaris y System7.
ITERACIONES O CICLOS
CONTADOR
Es una variable auxiliar creada por el programador que se incrementa de un modo constante, un número finito de
veces.
El contador puede incrementarse:
a) En forma manual, lo cual significa que dicho incremento debe ser indicado de forma taxativa en el programa.
Ejemplo :
Z =Z+1 (Z se incrementa de uno en uno)
C=C+1 (C se incrementa de uno en uno)
b) En forma automática, para lo cual generalmente se le asignan tres parámetros que son el valor inicial del mismo,
el valor final, y por último el incremento, el cual es opcional si dicho incremento será de uno en uno.
Ejemplo :
PARA C = 1 HASTA 10
(INSTRUCCIONES)
FINPARA
En este caso al obviarse el último parámetro que es el incremento, se asume que dicho incremento será de uno en
uno.
(INSTRUCCIONES)
FINPARA
En este ejemplo, el valor inicial de Z es 2, el valor final es 20 y como su incremento es de dos en dos, Z irá tomando
los valores 2, 4, 6, 8, 10, 12, 14, 16, 18, 20.
ACUMULADOR
Es una variable que acumula valores, que a su vez son el producto de un proceso repetitivo y finito de sumas
sucesivas.
IMPRIMIR AC IMPRIMIR AC
FIN FIN AUTORES. LIC. CESAR
CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)
PRUEBA DE ESCRITORIO
La iteración MIENTRAS C <> 8, indica que todo lo escrito entre dicha orden y la orden FINMIENTRAS, se
repetirá en este caso ocho veces, es decir ese segmento de programa se repetirá ocho veces.
Si X = 4 , C=C+1 implica que C almacenará el valor 1, y al ejecutarse la orden AC = AC + X, AC almacenará el
valor de X que es 4. Luego, como C aún no llegó a su valor final que es 8, el programa ejecutará nuevamente la
orden :
LEER X, y suponiendo que el valor de X es 7, entonces al ejecutarse la orden C= C+1, el valor actual de C es 2,
y el valor de AC es 11, pues a su valor anterior que era 4 se le debe agregar el valor 7, lo cual es 11.
Para X = 9, C = 3, AC = 20
Para X = 6, C = 4, AC = 26
Para X = 10, C = 5, AC = 36
Para X = 15, C = 6, AC = 51
Para X = 12, C = 7, AC = 63
Para X = 20, C = 8, AC = 83
Al llegar C al valor 8, se rompe el proceso de iteración y ese segmento del programa que se ha repetido ocho
veces, finaliza.
Luego se ejecuta la orden IMPRIMIR AC, el cual tiene almacenado el valor final de la suma de los 8 números,
que es 83, vale decir que la suma total de los 8 números ( 4 + 7 + 9 + 6 + 10 + 15 + 12 + 20 ) introducidos está
almacenado en el acumulador AC.
SEGMENTO DE PROGRAMA QUE SE
ALTERNATIVA TRES
REPITE 8 VECES
INICIO
AC = 0
C=0 QUE VALOR TENDRA AC?
X C AC
REPETIR 18
LEER X 12
C=C+1
15
AC = AC + X
20
HASTA C = 8
19
IMPRIMIR AC 25
FIN 30
16
ALTERNATIVA CUATRO
PARA C = 1 HASTA 8
LEER X
AC = AC + X
FINPARA
IMPRIMIR AC
FIN
OBSERVACION
1) En las tres primeras alternativas necesariamente el contador manual C debe ser incrementado a través de
la instrucción C = C + 1.
2) En la alternativa cuatro, sin embargo no es necesario escribir la instrucción C = C + 1, pues el incremento
se efectúa en forma automática, desde el momento que se establecen los parámetros para la variable C (
PARA C = 1 HASTA 8 ).
3) No podemos dejar de hacer mención a la estructura de iteración
DESDE
(INSTRUCCIONES)
FINDESDE
La misma es muy parecida a la estructura utilizada en la alternativa cuatro, la única diferencia es que en
lugar de PARA – FIN PARA, se utiliza DESDE – FINDESDE.
INICIO INICIO
AC = 0 AC = 0 QUE VALOR TENDRA AC?
C=0 C=0 X C AC
5
MIENTRAS C <> 7 HACER -4
LEER X LEER X -8
C=C+1 C=C+1 4
SI X > 0 SI X > 0 -6
AC = AC + X AC = AC + X 10
FINSI FINSI -14
FINMIENTRAS MIENTRAS C <> 7
IMPRIMIR AC IMPRIMIR AC
FIN FIN
PRUEBA DE ESCRITORIO
X C AC
5 1 5
4 2 9
- 10 3 9
3 4 12
-13 5 12
8 6 20
10 7 30
OBSERVACION
Como pudo notarse cuando el valor de X es –10, el valor de AC, no sufre ninguna variación, pues de acuerdo al
planteamiento del algoritmo, solo se debían acumular los números X positivos.
Por consiguiente, ocurre lo propio cuando el valor de X es -13, pues el valor de AC, en ese momento del
proceso, seguía siendo 12.
Finalmente el valor último de AC es 30, lo cual representa la suma total de todos los números positivos de la
serie de siete números.
ALTERNATIVA TRES
ALTERNATIVA CUATRO
INICIO INICIO
AC = 0 AC = 0
C =0 C=0
CN = 0 CN = 0
PRUEBA DE ESCRITORIO
X C AC CN
5 1 0 0
10 2 0 0
-4 3 -4 1
12 4 -4 1
-6 5 -10 2
20 6 -10 2
-5 7 -15 3
OBSERVACION
Cuando los valores de X son positivos o ceros, el valor de AC y CN, no sufre ningún tipo de variación.
Sin embargo, al introducirse valores negativos, esto incide directamente en las variables AC (Acumulador de
números negativos), y CN (Contador de números negativos).
ALTERNATIVA TRES
PARA C = 1 HASTA 7
LEER X QUE VALOR TENDRA N AC Y CN ?
SI X < 0 X C CN AC
AC = AC + X -14
CN = CN + 1 17
FINSI -20
FINPARA -30
74
IMPRIMIR AC, CN 44
FIN -15
4) Introducir diez números cualesquiera de uno en uno.
Determinar e imprimir suma de números pares..
X Variable de Entrada
SP Suma de Números Pares SEGMENTO DE PROGRAMA QUE SE
C Contador que controla que se introduzcan los diez REPITE
números10 VECES
ALTERNATIVA UNO ALTERNATIVA DOS
INICIO INICIO
SP = 0 SP = 0
C =0 C=0
IMPRIMIR SP IMPRIMIR SP
FIN FIN
PRUEBA DE ESCRITORIO
X ( X MOD 2 ) C SP
7 1 1 0
10 0 2 10
15 1 3 10
12 0 4 22
4 0 5 26
9 1 6 26
6 0 7 32
21 1 8 32
41 1 9 32
18 0 10 50
OBSERVACION
Para lo que hubiere lugar, hacemos notar que la función MOD, devuelve el resto de la división.
En nuestro caso particular, todos los números X introducidos, se dividen por dos, y si el resto devuelto por MOD
es cero, el número es par.
ALTERNATIVA TRES
REPETIR
LEER X
C=C+1
Si ( X MOD 2 ) = 0
SP = SP + X
FINSI
HASTA C = 10 SEGMENTO DE PROGRAMA
QUE SE REPITE 10 VECES
IMPRIMIR SP
FIN
ALTERNATIVA CUATRO
INICIO
SP = 0
EVALUAR EL VALOR DE X MOD 2, Y
LUEGO DETERMINAR EL VALOR DE SP
PARA C = 1 HASTA 10
LEER X C X X MOD 2 SP
SI ( X MOD 2 ) = 0 5
SP = SP + X 6
FINSI 17
FINPARA 10
11
IMPRIMIR SP
8
FIN
21
14
ALTERNATIVA CINCO ALTERNATIVA SEIS
19
INICIO INICIO 30
SP = 0 SP = 0
C =0 C=0
MIENTRAS C <> 10 HACER
LEER X LEER X
C=C+1 C=C+1
Si (X/2) = ENT (X/2) SI (X/2) = ENT (X/2)
SP = SP + X SP = SP + X
FINSI FINSI
FINMIENTRAS MIENTRAS C <> 10
IMPRIMIR SP IMPRIMIR SP
FIN FIN
PRUEBA DE ESCRITORIO
X X/2 ENT (X / 2) C SP
7 3.5 3 1 0
10 5 5 2 10
15 7.5 7 3 10
12 6 6 4 22
4 2 2 5 26
9 4.5 4 6 26
6 3 3 7 32
21 11.5 11 8 32
41 20.5 20 9 32
18 9 9 10 50
ALTERNATIVA SIETE
ALTERNATIVA OCHO
INICIO
INICIO
SP = 0
SP = 0
C =0
C = 0
REPETIR
PARA C = 1 HASTA 10
LEER X
LEER X
C=C+1
SI (X/2) = ENT (X / 2)
Si (X / 2) = ENT (X / 2)
SP = SP + X
SP = SP + X
FINSI
FINSI
FINPARA
HASTA C = 10
IMPRIMIR SP
IMPRIMIR SP
FIN
FIN
C VALDRA : ____
SP VALDRA : ____
7 1 1 1
10 0 2 1
15 1 3 2
12 0 4 2
4 0 5 2
9 1 6 3
6 0 7 3
21 1 8 4
41 1 9 5
18 0 10 5
ALTERNATIVA TRES
EVALUAR EL VALOR DE X MOD 2, Y
LUEGO DETERMINAR EL VALOR DE CI
INICIO
CI = 0
C =0 C X X MOD 2 CI
REPETIR 20
LEER X 10
C=C+1 11
SI ( X MOD 2 ) <>0 24
CI = CI + 1 13
FINSI 18
HASTA C = 10 40
IMPRIMIR CI 19
FIN 60
80
PRUEBA DE ESCRITORIO
X X/2 ENT (X / 2) C CI
7 3.5 3 1 1
10 5 5 2 1
15 7.5 7 3 2
12 6 6 4 2
4 2 2 5 2
9 4.5 4 6 3
6 3 3 7 3
21 11.5 11 8 4
41 20.5 20 9 5
18 9 9 10 5
COMPILADORES E INTÉRPRETES
FUENTE : Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm
Los compiladores e intérpretes son programas traductores que traducen un
programa escrito en un determinado lenguaje de programación al lenguaje
máquina que es el lenguaje del procesador. Cada lenguaje de programación tiene
su propio compilador o intérprete.
Lenguajes máquina.
ALTERNATIVA CUATRO
INICIO
C =0 EVALUAR X MOD 2, Y LUEGO DETERMINAR EL VALOR
CI = 0 FINAL DE CP, SP, CI Y SI
SI = 0
CP = 0 C X XMOD2 CP SP CI SI
SP = 0 21
REPETIR 23
LEER X 17
C=C+1 30
SI (X MOD 2) = 0
31
CP = CP + 1
12
SP = SP + X
18
SINO
CI = CI + 1 41
SI = SI + X 50
FINSI 60
HASTA C = 10
IMPRIMIR CP, SP, CI, SI
FIN
OBSERVACION
Además de la función MOD, utilizada en este caso, es posible resolver el
problema utilizando para el efecto la función ENT , la cual a su vez
fue utilizada en los casos anteriores.
7) Introducir un número entero positivo.
Determinar e imprimir el factorial de dicho número.
X Variable de Entrada SI X = 6, QUE VALOR TENDRA
F Variable de resultado de factorial F?
K Contador a través del cual se calculará el factorial X K F
ALTERNATIVA UNO 6
INICIO
F=1
LEER X
PARA K = 1 HASTA X
F=F*K
FINPARA
IMPRIMIR F
FIN
PRUEBA DE ESCRITORIO
4! = 1 x 2 x 3 x 4 = 24
La estrategia para determinar el valor del factorial de X, consiste en crear un contador K cuyo valor inicial sea 1,
hasta llegar al valor de X, e ir aprovechando los valores del contador K, para multiplicarlo por F.
X K F=F*K
4 1 1
2 2
3 6
4 24
OBSERVACION
El valor inicial de F necesariamente debe ser 1, pues dentro de la iiteración se ejecuta X veces el cálculo F = F
* X, y por dicho motivo, el valor inicial de F no puede ser 0, ya que de esa manera dichos cálculos tendrán
siempre como resultado el valor 0.
ALTERNATIVA DOS
INICIO
F=1 CUAL SERA EL VALOR FINAL DE F ?
K=0 X F
LEER X 5
MIENTRAS K <> X 6
K=K+1 4
F=F*K
FINMIENTRAS
IMPRIMIR F
FIN
ALTERNATIVA TRES
ALTERNATIVA CUATRO
INICIO
F=1
K=0 AUTORES. LIC. CESAR
LEER X CALASTRA Y LIC.
REPETIR SILVANA DE CALASTRA
K=K+1 (EDICIÓN DE CORTESÍA)
F=F*K
HASTA K = X
IMPRIMIR F
FIN
8) Generar en forma automática los diez primeros números FIBONACCI.
OBSERVACION : Los números FIBONACCI, son una sucesión muy interesante de números, en la que el número
actual es la suma de los dos anteriores, y así sucesivamente.
Por definición, los dos primeros números fibonacci son uno (1).
F1 Auxiliar para primer fibonacci
F2 Auxiliar para segundo fibonacci
AC Acumulador temporal de fibonacci generado previamente
C Contador de números fibonacci
ALTERNATIVA UNO
OBSERVACION
En la parte superior del pseudocódigo, antes de entrar a la iteración, se inicializan los auxiliares F1 y F2, con el valor 1,
y se los imprime, pues por definición los dos primeros números fibonacci, son uno (1).
La iteración C, finaliza con el valor 8, pues antes de comenzar a ejecutarse esta parte del proceso, ya se han impreso
los dos primeros números fibonacci, y por consiguiente ya nada mas quedan ocho números por generarse.
Ya dentro de la iteración C, se utiliza al auxiliar AC, como almacenamiento temporal de cada número fibonacci que se
genera en ese segmento del proceso, y luego se lo imprime como tal.
Una vez impreso, el valor de F2 se transfiere a F1, y el de AC a F2, para volver a repetirse este segmento del proceso,
una y otra vez, hasta llegar al límite superior y finalizar la iteración.
ALTERNATIVA DOS
INICIO
C=0
AC = 0
F1 = 1
F2 = 1
IMPRIMIR F1, F2
MIENTRAS C <> 8
C=C+1
AC = F1 + F2
IMPRIMIR AC
F1 = F2
F2 = AC
FINMIENTRAS
FIN
ALTERNATIVA TRES
INICIO
C=0
AC = 0
F1 = 1
F2 = 1
IMPRIMIR F1, F2
REPETIR
C=C+1
AC = F1 + F2
IMPRIMIR AC
F1 = F2
F2 = AC
HASTA C = 8
FIN
ALTERNATIVA CUATRO
INICIO
C=0
AC = 0
F1 = 1
F2 = 1
IMPRIMIR F1, F2
HACER
C=C+1
AC = F1 + F2
IMPRIMIR AC
F1 = F2
F2 = AC
MIENTRAS C <> 8
FIN
9)
AUTORES. LIC. CESAR
CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)
X Variable de entrada
MAY Auxiliar de mayor
C Contador a través del cual se controla el ingreso de los números
ALTERNATIVA UNO
OBSERVACION
Este método se conoce con el nombre de doble lectura, pues antes de ingresar a la iteración, se hace una primera
lectura del valor X, y se lo almacena en el auxiliar MAY, cuya misión es contener el mayor valor de la serie.
Por dicha razón, la iteración C, tiene como límite a la constante 8, pues antes de ingresar a ella, ya se ha efectuado una
lectura previa del valor X.
Una vez dentro de la iteración, se va leyendo el valor X, y a medida que esto se efectúa, se va comparando con el
auxiliar MAY, y en caso de ser el valor X, mayor al auxiliar MAY, se asigna al auxiliar MAY, el valor del número X leido,
para de esa forma cumplirse con el objetivo propuesto.
Otra alternativa que se puede emplear para resolver el presente problema, es a través del uso de bandera o señal, lo
cual se verá más adelante.
ALTERNATIVA DOS
INICIO
C=0 QUE VALOR TENDRA MAY?
LEER X X C MAY
MAY = X 15
MIENTRAS C <> 8 12
LEER X 31
C=C+1 88
SI X > MAY 19
MAY = X 33
FINSI 45
FINMIENTRAS 52
IMPRIMIR MAY 61
FIN
ALTERNATIVA TRES
INICIO
C=0 QUE VALOR TENDRA MAY?
LEER X X C MAY
MAY = X 84
REPETIR 91
LEER X 17
C=C+1 25
SI X > MAY 36
MAY = X 99
FINSI 42
HASTA C = 8 66
IMPRIMIR MAY 87
FIN
ALTERNATIVA CUATRO
INICIO
C=0
LEER X
MAY = X
HACER
LEER X
C=C+1
SI X > MAY
MAY = X
FINSI
MIENTRAS C <> 8
IMPRIMIR MAY
FIN
10) Introducir dos números enteros positivos.
Determinar e imprimir el producto de ambos números, utilizando para el efecto el método de sumas sucesivas.
OBSERVACION
Para X = 3, Y = 6, el contador C debe finalizar al llegar al valor 6, pues el pseudocódigo, debe sumar 6 veces (Y
veces) el valor de X ( 3 ), y a medida que la iteración se va ejecutando, el valor de X, se va almacenando en el
acumulador AC, que al final contendrá el producto de X multiplicado por Y.
También se puede alterar la orden AC = AC + X, y suplantarlo por la instrucción siguiente : AC = AC + Y.
En ese caso, la iteración PARA C = 1 HASTA Y, necesariamente debe ser reemplazada por la orden PARA C = 1
HASTA X, pues de lo contrario el resultado del proceso emitirá información erróneo.
ALTERNATIVA DOS
ALTERNATIVA TRES
INICIO QUE VALOR TENDRA AC, PARA X=10 , Y = 4
AC = 0
C=0 C AC
LEER X, Y
REPETIR
C=C+1
AC = AC + X
HASTA C = Y
IMPRIMIR AC
FIN
ALTERNATIVA CUATRO
INICIO
AC = 0 QUE VALOR TENDRA AC, PARA X=15 , Y = 3
C=0
LEER X, Y C AC
HACER
C=C+1
AC = AC + X
MIENTRAS C <> Y
IMPRIMIR AC
FIN
11) Introducir dos números enteros positivos.
Determinar e imprimir el cociente de ambos, utilizando para el efecto el método de restas sucesivas.
Se presupone que la primera variable es mayor a la segunda.
A Variable de entrada (Dividendo)
B Variable de entrada (Divisor)
C Contador que se incrementa cada vez que se efectúa una resta y que
finalmente será el cociente de la división
R Resto
ALTERNATIVA UNO
INICIO
C=0
R=0 A R B C
LEER A, B 7 2
R=A
MIENTRAS R >= B
R=R–B
C=C+1
FINMIENTRAS
IMPRIMIR C, R
FIN
M N
20 5
15 5
10 5
5
Como M > N, se va efectuando un proceso de restas sucesivas ( M=M-N), que finaliza cuando M llega al valor de N,
pues la iteración se ejecuta de acuerdo al siguiente parámetro : MIENTRAS M <> N.
PRUEBA DE ESCRITORIO ( N > M)
M N
5 20
5 15
5 10
5 5
Como N > M, se va efectuando un proceso de restas sucesivas ( N=N-M), que finaliza cuando N llega al valor de M,
pues la iteración se ejecuta de acuerdo al siguiente parámetro : MIENTRAS M <> N.
13) Generar e imprimir en forma automática todos los números pares comprendidos entre 10 y 30.
C Contador cuyo valor inicial es 10, que se incrementará de dos en dos hasta
llegar al valor 30
ALTERNATIVA UNO AUTORES. LIC. CESAR
INICIO CALASTRA Y LIC.
PARA C = 10 HASTA 30 INCREMENTO 2 SILVANA DE CALASTRA
IMPRIMIR C
(EDICIÓN DE CORTESÍA)
FINPARA
FIN
PRUEBA DE ESCRITORIO
C
10
12
14
16
18
20
22
24
26
28
30
OBSERVACION
El pseudocódigo va tomando los valores de C, que inicialmente tiene el valor 10, y luego se va incrementado de 2 en 2,
hasta llegar al valor final que es 30,
ALTERNATIVA DOS
INICIO
C=8
MIENTRAS C <> 30
C=C+2
IMPRIMIR C
FINMIENTRAS
FIN
14) Introducir un número entero que represente un sueldo.
Validar que dicho sueldo sea mayor a 500000.
Determinar e imprimir cantidad de billetes y monedas necesarias en guaraníes (moneda nacional), para abonar dicho
salario.
S Sueldo
C100000 Cont. de billetes de Gs. 100.000 C100 Cont. de monedas de Gs. 100
ITERACIONES DOBLES
(UNA DENTRO DE OTRA)
EJERCICIOS DE APLICACION
"Sea esta la regla de nuestra vida: decir lo que sentimos, sentir lo que decimos.
En suma, que la palabra vaya de acuerdo con los hechos." Séneca
Aunque haya siete días entre Navidad y Año Nuevo, esta última celebración está en el año siguiente. Laura
compró velas rojas para Año Nuevo, y ese mismo año, 51 semanas después, compró velas verdes para
Navidad
Los lenguajes de alto nivel son lenguajes humanizados en los que las instrucciones se escriben utilizando frases del inglés
cotidiano (o una mezcla de inglés y otro idioma) y contienen notaciones matemáticas de uso común, facilitando así el
aprendizaje del lenguaje y la escritura de programas. Cada instrucción en un lenguaje de alto nivel equivale a muchas
instrucciones en lenguaje máquina.
Por ejemplo, la instrucción:
C = A + B;
Es el equivalente, en Java, de las tres instrucciones escritas en ensamblador en el punto 1.3.2. Note la reducción en el
número de instrucciones y el parecido con una expresión matemática común.
Existen muchos lenguajes de alto nivel entre los que podemos mencionar los siguientes: C, C++, Java, Pascal, Eiffel,
Clipper, Ada, Smalltalk, Visual Basic, etc.
Al programa escrito en un lenguaje de programación de alto nivel se conoce como código fuente o programa fuente.
ITERACIONES ANIDADAS
Consiste en definir una iteración de mayor prevalencia, y dentro de la misma a su vez especificar una o más iteraciones
que estarán subordinadas a la primera de ellas.
Sea cual fuere el caso, es absolutamente imperativo tener bien en claro, que dentro del contexto d e dos o más iteraciones
anidadas, la primera iteración en ser especificada debe ser la última en ser finalizada, la segunda iteración en ser delimitada
es la primera en finalizar y así sucesivamente.
A los efectos de arrojar más luz en este intrincado juego de palabras, creemos necesario, explicarlo mejor con el siguiente
sencillo ejemplo:
INICIO
_______________ ITERACION DE MAYOR
_______________ INSTRUCCIONES PREVALENCIA
_______________
PARA K = 1 HASTA 3
PARA N = 1 HASTA 5
__________________
__________________ INSTRUCCIONES
__________________
FINPARA
FINPARA
_______________
_______________ INSTRUCCIONES
_______________
FIN
La iteración K, inicialmente vale 1 (uno) y luego ingresamos a la iteración N, que comienza con el valor 1, y luego se
incrementa al valor 2, y así sucesivamente. Vale decir que mientras K, permanece con el valor 1, N va incrementándose
desde su valor inicial a su valor final.
Luego, K se incrementa al valor 2, y N nuevamente comienza a reciclarse desde su valor inicial 1 a su valor final 5.
Posteriormente, K se incrementa a su valor final 3, y la iteración N, se inicia con el valor 1 hasta llegar a su límite final que
es cinco, para de esa manera concluir ambas iteraciones.
Vale decir, que las instrucciones ubicadas dentro de ambas iteraciones, en realidad se ejecutarán (K) * (N) veces, o sea (3)
* (5) veces.
Todo lo más arriba manifestado, podríamos graficarlo de la siguiente manera:
K N
1 1
2
3
4
5
2 1
2
3
4
5
3 1
2
3
4
5
Nótese, como cuando K permanece con el valor 1, el contador N, se incrementa de uno en uno hasta finalizar.
Luego, K se incrementa al valor 2, la iteración N, se inicia nuevamente con el valor 1 hasta llegar a su límite que es 5.
Finalmente, K llega a su límite superior que es 3, y N, comienza nuevamente desde el valor 1 hasta su límite 5, para
concluir ambas iteraciones anidadas.
PSEUDOCODIGO
INICIO
N es la cantidad de números X, a ingresarse.
HACER
LEER N La iteración independiente definida en este segmento del programa, tiene
MIENTRAS ( N <= 0 ) como objetivo evitar que se ingrese como válido un valor para N, que sea
negativo o cero.
PARA K = 1 HASTA N
I P
HACER X es la variable de entrada, cuyo factorial se calculará a través de la
TR
LEER X iteración I. Esta iteración HACER – MIENTRAS tiene como objetivo
EI
MIENTRAS ( X <= 0 ) evitar que se ingrese como válido un número X, negativo o cero.
RN
F=1
AC
PARA I = 1 HASTA X
CI
F=F*I ITERACION I QUE ESTA ANIDADA A
I P
FINPARA ITERACION K
OA
IMPRIMIR "EL FACTORIAL DE “ X “ ES “ F
NL
FINPARA
FIN
OBSERVACION MUY IMPORTANTE
La iteración K tiene como objetivo fundamental controlar el ingreso de los N números X, cuyo factorial deseamos calcular.
A su vez la iteración I tiene como misión calcular el factorial de cada número X ingresado.
PRUEBA DE ESCRITORIO
Suponiendo que N será igual a 3, he aquí la prueba de escritorio correspondiente:
N K X I F
3 1 4 1 1
2 2
3 6
4 24
2 3 1 1
2 2
3 6
3 7 1 1
2 2
3 6
4 24
5 120
6 720
7 5040
INICIO
HACER
LEER N
MIENTRAS ( N <= 0 )
PARA K = 1 HASTA N
HACER
LEER X
MIENTRAS ( X <= 0 )
F=1
MIENTRAS I <= X
F=F*I
I =I+1
FINPARA
Para N = 4.
N K X I F
4 1 5
2 6
3 4
4 8
PSEUDOCODIGO
INICIO
HACER
Esta iteración se utiliza para no permitir el ingreso de un número N,
LEER N
negativo o cero
MIENTRAS ( N <= 0 )
I P PARA K = 1 HASTA N
T R HACER
E I LEER X, Y
R N MIENTRAS (( X <= 0 ) O (Y <= 0))
A C AC = 0
C I ITERACION ANIDADA A K, CUYO OBJETIVO ES
PARA I = 1 HASTA X
I P CALCULAR EL PRODUCTO DE X POR Y
AC = AC + Y
OA FINPARA
NL IMPRIMIR "EL PRODUCTO DE” X “POR” Y “ES” AC
FINPARA
FIN
PRUEBA DE ESCRITORIO
Para N = 4
N K X Y I AC
4 1 3 10 1 10
2 20
3 30
2 4 5 1 5
2 10
3 15
4 20
3 2 50 1 50
2 100
4 7 3 1 3
2 6
3 9
4 12
5 15
6 18
7 21
INICIO
HACER
LEER N
MIENTRAS ( N <= 0 )
AUTORES. LIC. CESAR
PARA K = 1 HASTA N
CALASTRA Y LIC.
HACER SILVANA DE CALASTRA
LEER X, Y (EDICIÓN DE CORTESÍA)
MIENTRAS (( X <= 0 ) O (Y <= 0))
AC = 0
I=0
MIENTRAS I <= X
I=I+1
AC = AC + Y
FINMIENTRAS
FINPARA
FIN
Para N = 4
N K X Y I AC
4 1 3 15 1
2
3
2 4 25 1
2
3
4
3 2 400 1
2
4 7 9 1
2
3
4
5
6
7
X Variable de entrada
N Cantidad de pares de números a introducirse
K Iteración que controla que se introduzcan N números X de uno en uno
I Iteración que ejecuta las restas sucesivas y que inicialmente es un clon (copia) de X
PSEUDOCODIGO
INICIO
N=0
MIENTRAS ( N <= 0 )
LEER N
FINMIENTRAS
PARA K = 1 HASTA N
MIENTRAS ( X <= 0 )
I P
LEER X
T R
FINMIENTRAS
E I
I=X
R N
MIENTRAS ( I >= 2 )
A C
I=I-2
C I
FINMIENTRAS
I P
SI ( I = 0 )
O A
IMPRIMIR "EL NUMERO ” X “ES PAR”
N L
SINO
IMPRIMIR "EL NUMERO “ X “ES IMPAR”
FINSI
FINPARA
FIN
PRUEBA DE ESCRITORO
Para N = 5
N K X I
4 | 7 7
5
3
2
1
2 10 10
8
6
4
2
0
3 9 9
7
5
3
1
4 14 14
12
10
8
6
4
2
0
PSEUDOCODIGO
INICIO
MIENTRAS ( N <= 0 )
LEER N
FINMIENTRAS
PARA K = 1 HASTA N
MIENTRAS (( DIVIDENDO <= 0) O (DIVISOR <= 0) O (DIVISOR > DIVIDENDO))
I P
LEER DIVIDENDO, DIVISOR
T R
FINMIENTRAS
E I
I = DIVIDENDO
R N
CONTADOR = 0
A C
MIENTRAS ( I >= DIVISOR ) ITERACION ANIDADA A K, CUYA MISION
C I
I = I - DIVISOR ES CALCULAR EL COCIENTE.
I P
CONTADOR = CONTADOR + 1
O A
FINMIENTRAS
N L
SI ( I = 0 )
IMPRIMIR "EL COCIENTE DE “ DIVIDENDO “DIVIDIDO POR “ DIVISOR “ES “CONTADOR
SINO
IMPRIMIR "EL COCIENTE DE “ DIVIDENDO “DIVIDIDO POR “ DIVISOR “ES “CONTADOR
IMPRIMIR "EL RESTO ES " I
FINSI
FINPARA
FIN
PRUEBA DE ESCRITORIO
N=4
N=4
2 30 31 4
3 200 200 50
4 49 49 10
PSEUDOCODIGO
INICIO
X=0
MIENTRAS ( N <= 0 )
LEER N
FINMIENTRAS
PARA K = 1 HASTA N AUTORES. LIC. CESAR
MIENTRAS ( X <= 0 ) CALASTRA Y LIC.
LEER X SILVANA DE CALASTRA
FINMIENTRAS
(EDICIÓN DE CORTESÍA)
R=0
PARA T = 1 HASTA 10
R=X*T
IMPRIMIR R
FINPARA
FINPARA
FIN
PRUEBA DE ESCRITORIO
N=3
N K X T R
3 1 8 1 8
2 16
3 24
4 32
5 40
6 48
7 56
8 64
9 72
10 80
2 6 1 6
2 12
3 18
4 24
5 30
6 36
7 42
8 48
9 54
10 60
3 4 1 4
2 8
3 12
4 16
5 20
6 24
7 28
8 32
9 36
10 40
A través de las iteraciones anidadas se pueden resolver numerosos problemas que se presentan en aplicaciones de uso
cotidiano, y como pudo notarse claramente dependiendo de los casos, se pueden combinar dif erentes estructuras de
iteración, la una dentro de la otra.
1) Calcular e imprimir en forma automática, el factorial de todos los números comprendidos entre 2 inclusive y 6 inclusive.
2) Calcular e imprimir en forma automática, la tabla de multiplicar (del uno al diez) de los cuatro primeros números
naturales.
3) Calcular e imprimir en forma automática, todos los números pares comprendidos entre 2 inclusive y 20 inclusive.
Utilizar para el efecto, el método de restas sucesivas.
EJERCICIOS PROPUESTOS
( A SER RESUELTOS POR EL LECTOR )
1) Calcular e imprimir en forma automática, el factorial de todos los números comprendidos entre 10 inclusive y 20
inclusive.
2) Calcular e imprimir en forma automática, la tabla de multiplicar (del uno al diez) de los números comprendidos entre 20
inclusive y 30 inclusive.
3) Calcular e imprimir en forma automática, todos los números pares comprendidos entre 100 inclusive y 200 inclusive.
Utilizar para el efecto, el método de restas sucesivas.
Antes de terminar el curso lectivo, cuatro estudiantes discutían sus probables calificaciones finales. Ésto es lo
que dijeron:
Jacobo: Todos tendremos calificaciones diferentes. Si yo gano un 10, Lucía tendrá un 7.
Julia: Si Lucía gana un 8, entonces Jacobo tendrá un 7. Aún así Jacobo tendrá mejor calificación que Pablo.
Lucía: Si Julia no obtiene un 10, entonces Jacobo tendrá un 8. Si yo obtengo un nueve, entonces Pablo no
tendrá un 7.
Pablo: Si Lucía recibe un 10, entonces yo tendré un 9. Si Julia no obtiene un 9, yo tampoco.
Al terminar las clases se entregaron las calificaciones, y los cuatro alumnos fueron aprobados. Curiosamente,
los resultados concordaban con sus ideas anteriores.
Bandera o Señal : Es una variable auxiliar creada por el programador, que generalmente adquiere solo dos estados (0)
cero o (1) uno.
Normalmente su valor inicial es cero (0) y cuando cambia de estado a uno (1) es para indicar que se ha producido una
determinada situación que debía ser evaluada.
En la mayoría de los casos una bandera que inicialmente está en cero al cambiar de estado a uno, ya permanece con ese
valor final durante todo el proceso, aunque sin embargo, en algunas ocasiones el valor de una bandera va variando de
estado de cero a uno y de uno a cero, y así sucesivamente de acuerdo a las circunstancias.
EJERCICIOS DE APLICACION
OBSERVACION
En los cuatro primeros números de la prueba de escritorio, la bandera permanece en est ado cero, pues los mismos
son impares.
El quinto número ingresado ( 8 ) es par, y por consiguiente la bandera cambia de estado cero a estado uno.
En los números subsiguientes, cada vez que se detecta un número par, se hace la comparación pertinent e con relación al
auxiliar ME, para de esa manera almacenar el número par menor de la serie.
3)Introducir un número entero positivo.
Determinar si el mismo es primo o no e imprimir el mensaje correspondiente.
X Variable de entrada
B Bandera
C Iteración que controla si el número es primo o no
INICIO
DETERMINAR SI X ES PRIMO O NO, SI X=29
B=0
X C X/C ENT(X/C) B
LEER X
PARA C = 2 HASTA ENT( SQR(X) )
SI X / C = ENT ( X / C )
B=1
FINSI
FINPARA
SI B = 1
IMPRIMIR X “NO ES PRIMO”
SINO
IMPRIMIR X “ES PRIMO”
FINSI
FIN
PRUEBA DE ESCRITORIO (CUANDO X ES PRIMO)
X C X/C ENT(X / C) B
17 2 8.5 8 0
3 5.66 5 0
4 4.25 4 0
PRUEBA DE ESCRITORIO (CUANDO X NO ES PRIMO)
X C X/C ENT(X / C) B
16 2 8 8 1
3 5.66 5 1
4 4 4 1
OBSERVACION
En la primera prueba de escritorio, demostramos que X es primo pues al dividir el valor de X (17) por todos los factores
comprendidos entre 2 y la parte entera de la raiz cuadrada de 17, que es 4, el valor de B, permanece inalterable como cero.
En la segunda prueba de escritorio, demostramos que X, cuyo valor es 16, no es primo pues al dividir por los factores 2 y 4,
la bandera se pone al valor uno, y basta que la bandera se ponga en dicho valor, solo una vez , para que el número no sea
primo.
4) 3)Generar e imprimir en forma automática todos los números primos comprendidos entre dos inclusive y mil inclusive
B Bandera
K Iteración que genera los números comprendidos entre dos y mil
C Iteración que controla si el número es primo o no
INICIO
PARA K =2 HASTA 1000
B=0
PARA C = 2 HASTA ENT( SQR(K) ) AUTORES. LIC. CESAR
SI K / C = ENT ( K / C ) CALASTRA Y LIC.
B=1 SILVANA DE CALASTRA
FINSI
(EDICIÓN DE CORTESÍA)
FINPARA
SI B = 0
IMPRIMIR K
FINSI
FINPARA
FIN
OBSERVACION
Se define una iteración K que va tomando los valores 2, 3, 4, 5, 6, 7 hasta 1000.
A medida que K, va generando los valores más arriba citados, se i ngresa en todos los casos a la iteración C, que está
anidada dentro de la iteración K, por consiguiente cuando K vale 2, a través de la iteración C, se evalúa si el mismo es
primo o no, luego cuando K vale 3, se ingresa nuevamente a la iteración C, para evaluar si el mismo es primo o no y así
sucesivamente.
X Variable de entrada
B Bandera
C Contador que controla que se introduzcan diez números
CV Contador de veces que cuenta la cantidad de veces que a un
número positivo le sigue otro número negativo
INICIO
B=0 QUE VALOR TENDRA CV ?
CV = 0 C X B CV
PARA C = 1 HASTA 10 12
LEER X 0
SI X > 0 0
B=1 20
FINSI -15
SI X = 0 -15
B=0 0
FINSI 35
SI X < 0
-66
SI B = 1
12
B =0
CV = CV + 1
FINSI
FINSI
FINPARA
IMPRIMIR CV
FIN
PRUEBA DE ESCRITORIO
C X B CV
1 5 1 0
2 0 0 0
3 -4 0 0
4 7 1 0
5 -9 0 1
6 10 1 1
7 0 0 1
8 -8 0 1
9 10 1 1
10 -3 0 2
PRUEBA DE ESCRITORIO
C X B CV
1 5 1 0
2 10 1 0
3 -14 0 0
4 15 1 0
5 0 0 1
6 -4 0 1
7 0 0 1
8 20 1 1
9 0 0 2
10 -41 0 2
11 12 1 2
12 -45 0 2
DEFINICION DE VECTOR
CARGA DE VECTOR
IMPRESIÓN DE VECTOR
EJERCICIOS DE APLICACION
A, E, F, H, I, K, L, M
ARRAYS UNIDIMENSIONALES
VECTORES
Un vector es una estructura de almacenamiento de datos lineal, que reside en la memoria interna del computador, en
el cual la información debe ser cargada durante el proceso.
Dicha información desaparece una vez que finaliza la ejecución del programa que lo utiliza, y por lo tanto en la
siguiente ejecución del mismo programa, el vector debe ser nuevamente cargado, y así sucesivamente.
Desde ese punto de vista, tiene una enorme desventaja comparativa con los archivos, pues con dichas herramientas,
la información puede ser reprocesada una y otra vez, ya sea modificándola, agregándole nuevos registros o incluso
eliminando registros.
Sin embargo, existen innumerables aplicaciones en las cuales es recomendable el uso de vectores en lugar de
archivos permanentes.
CARACTERISTICAS
1) Debe tener un nombre propio con el cual identificarlo en los procesos.
2) Debe contar con un subíndice, a los efectos de permitir el reconocimiento
individual de cada elemento que lo compone.
3) Debe tener un dimensionamiento previo, con lo cual se conoce de antemano la cantidad de elementos que lo
componen.
Normalmente, todo vector una vez que ha sido dimensionado, necesariamente debe conservar dicha situación durante
todo el proceso, y por consiguiente, el vector ya no puede ser redimensionado.
Al dimensionarse un vector, el computador crea un espacio de memoria en la que se almacenará la información, y la
manera mas eficiente de cargar y recorrer un vector, es utilizando iteraciones automáticas que hacen las veces de sub-
índices.
Todo lo dicho hasta ahora, podría ser mejor comprendido a través del siguiente gráfico en el que se dimensiona un
vector V de siete elementos, a consecuencia de lo cual se crea el espacio de memoria para procesar dicho vector.
V(1) V(2) V(3) V(4) V(5) V(6) V(7)
Nótese como cada elemento, tiene una numeración única y diferente, con lo cual se puede individualizar ( v(1), v(2),
v(3), etc.) a cada elemento del vector.
Además, para la carga y recorrido del vector, sería mucho más sencillo, definir una iteración automática, como la
siguiente:
PARA K = 1 HASTA 7, de modo a utilizar los valores de K, como subíndice del vector.
EJERCICIOS
1) Cargar e imprimir un vector de siete elementos.
Determinar e imprimir la suma total de todos sus elementos.
V Nombre del vector
K Iteración que se define como subíndice del vector
S Acumulador en donde se guardará la suma de los elementos
INICIO
DIM V(7) QUE VALOR TENDRA S?
S=0 K VECTOR V VALORES S
PARA K = 1 HASTA 7 V( ) 12
LEER V(K) V( ) 10
S = S + V(K) V( ) 19
FINPARA V( ) 18
PARA K = 1 HASTA 7 V( ) 21
IMPRIMIR V(K) V( ) 23
FINPARA V( ) 24
IMPRIMIR S
FIN
PRUEBA DE ESCRITORIO
K VECTOR V VALORES S
CARGADOS
1 V(1) 4 4
2 V(2) 6 10
3 V(3) 2 12
4 V(4) 5 17
5 V(5) 10 27
6 V(6) 8 35
7 V(7) 7 42
OBSERVACION
Nótese la manera en que se utiliza los valores de K como subíndices del vector, y a medida que el valor de la variable K,
aumenta de uno en uno, se va almacenando información dentro de cada elemento del vector, y paralelamente se va
acumulando en la variable S.
La segunda iteración K, se utiliza para imprimir la información cargada en la primera iteración.
En realidad, ya en la primera iteración se podía imprimir el vector, pero con el objetivo de mejorar la visualización y
presentación del vector, es recomendable definir una iteración exclusiva para recorrer el vector elemento por elemento e
imprimirlo.
PRUEBA DE ESCRITORIO
PRUEBA DE ESCRITORIO
INICIO
DIM V(12) QUE VALORES TENDRAN MA Y POS ?
B =0 B K VALORES MA POS
MA = 0 14
POS = 0 20
PARA K = 1 HASTA 12 12
LEER V(K) 19
Si B = 0 31
B=1 15
MA = V(1) 23
POS = 1 45
SINO
41
SI V(K) > MA
39
MA = V(K)
35
PÓS = K
FINSI 37
FINSI
FINPARA
PARA K = 1 HASTA 12
IMPRIMIR V(K)
FINPARA
IMPRIMIR MA, POS
FIN
PRUEBA DE ESCRITORIO
B K V(K) VALORES MA POS
0 1 V(1) 4 4 1
1 2 V(2) 10 10 2
1 3 V(3) 6 10 2
1 4 V(4) 8 10 2
1 5 V(5) 3 10 2
1 6 V(6) 35 35 6
1 7 V(7) 26 35 6
1 8 V(8) 24 35 6
1 9 V(9) 29 35 6
1 10 V(10) 31 35 6
1 11 V(11) 45 45 11
1 12 V(12) 9 45 11
PRUEBA DE ESCRITORIO
K V(K) VALORES SP CP SN CN
1 V(1) 4 4 1 0 0
2 V(2) 10 14 2 0 0
3 V(3) -6 14 2 -6 1
4 V(4) 8 22 3 -6 1
5 V(5) -3 22 3 -9 2
6 V(6) -35 22 3 -44 3
7 V(7) 26 48 4 -44 3
8 V(8) 24 72 5 -44 3
9 V(9) 29 101 6 -44 3
10 V(10) -31 101 6 -75 4
11 V(11) -45 101 6 -120 5
12 V(12) 9 110 7 -120 5
K V(K) VALORES SP CP SN CN
V(1) 12
V(2) 20
V(3) -15
V(4) 0
V(5) -17
V(6) 25
V(7) -31
V(8) 40
V(9) -16
V(10) 0
V(11) 50
V(12) -36
INICIO
Z = 12
DIM V(12)
PARA K = 1 HASTA 12
LEER V(K)
FINPARA
PARA K = 1 HASTA 12
IMPRIMIR V(K)
FINPARA
AUX = V(12)
MIENTRAS ( Z >= 2)
V(Z) = V( Z - 1)
Z=Z–1
FINMIENTRAS
V(1) = AUX
PARA K = 1 HASTA 12
IMPRIMIR V(K)
FINPARA
FIN
OBSERVACION MUY IMPORTANTE
Queremos extraer la parte medular del ejercicio a los efectos de hacer un seguimiento:
AUX = V(12) Nótese que antes de iniciarse la iteración, se almacena el último elemento del
MIENTRAS ( Z >= 2) vector en el auxiliar AUX, de manera tal que no se pierda dicho valor.
V(Z) = V( Z - 1)
Z=Z–1
FINMIENTRAS
V(1) = AUX Finalmente, el contenido de AUX se almacena en el primer elemento del vector
En la iteración, en primer lugar se ejecuta el siguiente cálculo :
V(Z) = V ( Z – 1 ) Por consiguiente como la primera vez Z, vale 12, en realidad
lo que se hace es : V(12) = V(11), luego se efectúa
:
Z=Z–1 De esa manera, z baja del valor 12 al valor 11, y luego se
vuelve a ejecutar la orden V(Z) = V(Z-1),o sea que
V(11) = V(10), y así sucesivamente.
20 45 12 50 15 85 55 95 90 82 98 66
45 12 50 15 85 55 95 90 82 98 66 20
Nótese como el primer elemento del vector original que es 20, se inserta en el último lugar del vector resultante una vez
producido el desplazamiento de cada elemento del vector original un lugar hacia la izquierda.
PSEUDOCODIGO
INICIO
Z=1
DIM V(12)
PARA K = 1 HASTA 12
LEER V(K)
FINPARA AUTORES. LIC. CESAR
PARA K = 1 HASTA 12
CALASTRA Y LIC.
IMPRIMIR V(K)
FINPARA SILVANA DE CALASTRA
AUX = V(1) (EDICIÓN DE CORTESÍA)
MIENTRAS ( Z <= 11)
V(Z) = V( Z + 1)
Z=Z+1
FINMIENTRAS
V(12) = AUX
PARA K = 1 HASTA 12
IMPRIMIR V(K)
FINPARA
FIN
OBSERVACION MUY IMPORTANTE
Al igual que en el ejercicio anterior, haremos un análisis de la parte más importante del ejercicio.
AUX = V(1) Nótese que antes de iniciarse la iteración, se almacena el primer elemento del
MIENTRAS ( Z <= 11) vector en el auxiliar AUX, de manera tal que no se pierda dicho valor.
V(Z) = V( Z + 1)
Z=Z+1
FINMIENTRAS
V(12) = AUX Finalmente, el contenido de AUX se almacena en el último elemento del vector
En la iteración, en primer lugar se ejecuta el siguiente cálculo :
V(Z) = V ( Z + 1 ) Por consiguiente como la primera vez Z, vale 1, en realidad
lo que se hace es : V(1) = V(2), luego se efectúa :
20 12 30 25 15 28 17 35 31 40 36 42
42 36 40 31 35 17 28 15 25 30 12 20
PSEUDOCODIGO
INICIO
Z = 0, C = 12
DIM V(12), A(12)
PARA K = 1 HASTA 12
LEER V(K)
FINPARA
PARA K = 1 HASTA 12
IMPRIMIR V(K)
FINPARA
PARA K = 1 HASTA 12
IMPRIMIR A(K)
FINPARA
FIN
En este segmento del programa, se efectúa el proceso de inversión del vector V, que se carga en primera instancia al vector
A, que es el vector resultante.
En síntesis, Z se utiliza como subíndice del vector A y C, se utiliza como subíndice del vector V, por dicho motivo Z aumenta
en forma constante de uno en uno mientras que C, disminuye del mismo modo.
Z Subíndice auxiliar utilizado para recorrer los seis primeros elementos del
Vector
K Subíndice auxiliar utilizado para recorrer los seis últimos elementos del
Vector
INICIO
Z=1
K = 12
AUX = 0
DIM V(12)
PARA I = 1 HASTA 12
LEER V(I)
FINPARA
PARA I = 1 HASTA 12
IMPRIMIR V(I)
FINPARA
En este segmento del programa se
MIENTRAS ( Z <= 6) efectúa el proceso de inversión.
AUX = V(Z) En primera instancia se almacena,
V(Z) = V(K) el primer elemento del vector en un
V(K) = AUX auxiliar(AUX=V(Z)), luego se trans-
K=K–1 fiere el último elemento del vector
Z=Z+1 al primer elemento (V(Z) = V(K)),
FINMIENTRAS y por último, se transfiere el ele-
mento almacenado en el auxiliar al
PARA K = 1 HASTA 12 último elemento, y así sucesiva-
IMPRIMIR V(K) mente(V(K)=AUX). El decremento
FINPARA de C, permite recorrer el vector des-
FIN de el duodécimo elemento al sépti-
mo, y el incremento de Z, es para
recorrer el vector desde el primer
elemento al sexto.
AUTORES. LIC. CESAR
CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)
I V(I) S A(I)
1 5 5 5
2 3 8 8
3 4 12 12
4 10 22 22
5 6 28 28
6 12 40 40
7 2 42 42
8 9 51 51
9 3 54 54
10 60 114 114
11 13 127 127
12 10 137 137
I V(i) S A(i)
-14
-15
32
-41
15
20
-35
50
-38
45
39
-19
A Primer vector
CREAR EL VECTOR C
V Segundo Vector
C Tercer Vector
I A(I) V(I) C(I)
I Subíndice de los vectores A y V
15 60
Z Subíndice del vector C
INICIO 14 41
Z=0 13 58
DIM A(12), V(12), C(24) 12 42
PARA I = 1 HASTA 12 21 43
LEER A(I), V(I) 30 57
Z=Z+1 28 55
C(Z) = A(I) 29 54
Z=Z+1 25 44
C(Z) = V(I) 24 49
FINPARA 23 59
PARA I = 1 HASTA 12 17 46
IMPRIMIR A(I)
FINPARA
PARA I = 1 HASTA 12
IMPRIMIR V(I)
FINPARA
PARA I = 1 HASTA 24
IMPRIMIR C(I)
FINPARA
FIN
PRUEBA DE ESCRITORIO
I A(I) V( I) C(Z)
1 5 7 C(1) 5 C(13) 2
2 3 8 C(2) 7 C(14) 42
3 4 12 C(3) 3 C(15) 9
4 10 22 C(4) 8 C(16) 51
5 6 28 C(5) 4 C(17) 3
6 12 40 C(6) 12 C(18) 54
7 2 42 C(7) 10 C(19) 14
8 9 51 C(8) 22 C(20) 32
9 3 54 C(9) 6 C(21) 13
10 14 32 C(10) 28 C(22) 29
11 13 29 C(11) 12 C(23) 10
12 10 19 C(12) 40 C(24) 19
2 5 3 9 8
D ( Z ) = V(I) VECTOR D
2 5 3 9 8
FINPARA
PARA I = 1 HASTA 5 Se carga el vector A, y a medida que se lo carga
LEER A(I) se van tansfiriendo sus valores al vector D
Z=Z+1 VECTOR A
D ( Z ) = A(I)
4 6 1 7 5
VECTOR D
FINPARA
2 5 3 9 8 4 6 1 7 5
PARA I = 1 HASTA 15
IMPRIMIR D(I)
FINPARA
FINPARA REALIZA TU PROPIA PRUEBA DE ESCRITORIO
VECTOR V
8 3 6 5 1
VECTOR D
VECTOR A
4 9 2 8 7
VECTOR D
VECTOR C
4 6 8 1 5
VECTOR D
K V(K) S
1 55
2 62
3 32
4 21
5 25
6 -60
7 19
8 45
9 95
10 90
17) Dimensionar un vector de 45 elementos. Cargar datos en sus primeros 30 elementos, de modo tal que sus últimos 15
elementos queden sin información. Imprimir dicho vector (solo la parte cargada).
Luego cargar un segundo vector de 15 elementos.
Seguidamente desplazar los elementos del primer vector que se encuentran entre las posiciones 16 y 30 del mismo, a las
posiciones 31 y 45. Luego insertar en dicho vector, más específicamente entre las posiciones 16 y 30, los datos que se
cargaron en el segundo vector. Imprimir los dos vectores.
A Primer Vector
B Segundo Vector
K Contador Automático
En la primera parte, se cargarel vector A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
4 10 15 20 18 16 13 14 30 28 26 25 50 49 41 43 33 35 34 39 37 70 52 68 54 66 55 67 58 64
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 (VECTOR A)
Luego se transfiere la información que está entre las posiciones 15,16,17 a las posiciones 31,32,33 y así sucesivamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
4 10 15 20 18 16 13 14 30 28 26 25 50 49 41 43 33 35 34 39 37 70 52 68 54 66 55 67 58 64
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
43 33 35 34 39 37 70 52 68 54 66 55 67 58 64
Se transfiere al primer vector entre las posiciones 16 y 30 desde las posiciones 1 al 15 del segundo vector.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
4 10 15 20 18 16 13 14 30 28 26 25 50 49 41 90 99 98 94 97 92 96 89 81 88 87 85 94 93 27
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
43 33 35 34 39 37 70 52 68 54 66 55 67 58 64
INICIO
DIM A(45), B(15)
PARA K=1 HASTA 30 Se carga los primeros 30 elementos del vector A
LEER A(K)
FINPARA
PARA K=1 HASTA 30
IMPRIMIR A(K) Se imprime el vector A
FINPARA
PARA K=1 HASTA 15 Se carga el vector B (o sea el segundo vector)
LEER B(K)
FINPARA Se trasfiere a las posiciones 31,32, 33 y así sucesivamente, desde las
PARA K=31 HASTA 45 posiciones 16,17,18 y así sucesivamente.
A(K)=A(K – 15)
FINPARA
PARA K=16 HASTA 30 Se trasfiere al primer vector entre las posiciones 16 y 30 desde las
A(K)=B(K-15) posiciones 1 al 15 del segundo vector.
FINPARA
PARA K=1HASTA 45
IMPRIMIR A(K)
FINPARA
PARA K=1 HASTA 15 SE IMPRIMEN AMBOS VECTORES
IMPRIMIR B(K)
FINPARA
FIN
AUTORES. LIC. CESAR
CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)
N y T.
Esta serie de letras está formada por las que se escriben únicamente con trazos rectos.
Luisa tiene dos relojes de arena para hervir huevos. En uno la arena tarda siete minutos en caer por
completo. En el otro tarda once minutos. Un día Luisa quiso hervir los huevos durante quince minutos y puso
a correr los dos relojes al mismo tiempo. Cuando terminó de correr el de siete minutos, puso los huevos en
el agua hirviendo. Cuatro minutos después el de once minutos terminó de correr. Como los huevos ya habían
estado en el agua cuatro minutos, invirtió de inmediato el reloj de once minutos, con lo que pudo contar
quince minutos. En total utilizó veintidós minutos en el proceso.
¿Cómo puede Luisa usar menos tiempo para poder hervir los huevos por quince minutos usando
los mismos relojes?
ORDENAMIENTO DE VECTORES
La acción de ordenar un vector es lo mismo que clasificar sus elementos en orden ascendente que es lo normal, o de lo
contrario en orden descendente.
La operación de ordenar información, ya sea a través de vectores o archivos, generalmente insume la mayor parte del
tiempo de los ordenadores actuales.
Por consiguiente, a los efectos de optimizar dichos ordenamientos, estudiaremos algunos de los algoritmos de clasificación
más utilizados comúnmente.
Los métodos de ordenamiento de vectores generalmente utilizados son:
1) Método de intercambio o burbuja
Consiste en comparar el elemento actual con el siguiente, y así sucesivamente, y en cada comparación efectuada si el
elemento actual es mayor al elemento siguiente, a través de un auxiliar se permuta el valor del elemento actual con el
elemento siguiente.
A su vez se subdivide en:
a) Con Doble Iteración Anidada
La primera iteración es para recorrer todo el vector, y la segunda iteración se inicia de acuerdo al valor actual
de la primera iteración y finaliza con el penúltimo elemento.
b) Con Bandera o Señal
El vector se recorre tantas veces como sea necesario, hasta ordenarlo totalmente.
Dicho proceso finaliza cuando la bandera cuyo valor inicial es 0, no varía de estado, con lo cual se asume
que el vector ya ha quedado ordenado.
2) Método de Inserción
También se lo conoce con el nombre del jugador de cartas, pues utiliza el mismo principio, en el sentido de que se va
insertando cada elemento del vector en el lugar que le corresponde estar.
3) Método de Selección
En primera instancia, se selecciona el menor elemento del vector y se lo coloca en la primera posición del mismo, y el
elemento que se hallaba en dicha posición se ubica en el lugar donde se hallaba e l elemento menor.
Luego, se coloca el segundo menor elemento en la segunda posición y así sucesivamente.
EJERCICIOS
1) Cargar e imprimir un vector de orden N.
Ordenarlo en forma secuencial ascendente, y luego imprimirlo nuevamente.
Utilizar para el efecto el método de intercambio con doble iteración anidada.
INICIO
AUX = 0
LEER N
DIM V(N)
PARA Z = 1 HASTA N
LEER V(Z)
FINPARA
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
PARA I = 1 HASTA N – 1
PARA K = 1 HASTA N – 1
SI V(K) > V(K+1) El intercambio de valores se
AUX = V(K) efectúa en esta parte del
V(K) = V(K + 1) programa. Si el elemento
V(K+1) = AUX actual es mayor al siguiente
FINSI se permutan los valores
FINPARA
FINPARA
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
FIN
INICIO
LEER N
DIM V(N)
PARA Z = 1 HASTA N
LEER V(Z)
FINPARA
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
PARA I = 1 HASTA N –1
AUX = V ( I )
K=I
PARA J = I + 1 HASTA N AUTORES. LIC. CESAR
SI V ( J ) < AUX CALASTRA Y LIC.
AUX = V ( J ) SILVANA DE CALASTRA
K=J (EDICIÓN DE CORTESÍA)
FINSI
FINPARA
V(K)=V(I)
V ( I ) = AUX
FINPARA
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
FIN
BUSQUEDA EN VECTORES
El proceso de búsqueda de información en un vector, tiene como objetivo básico determinar si un elemento X, forma parte
del vector o no.
TIPOS DE BUSQUEDA
1) Búsqueda Secuencial
Se recorre el vector desde el primer elemento, y a medida que se efectúa dicho recorrido, se lo compara con el elemento X
que se desea hallar.
2) Búsqueda Binaria
El vector necesariamente debe estar ordenado en forma secuencial ascendente.
En primera instancia, se analiza el elemento central del vector, y obviamente si este es el elemento buscado, finaliza el
proceso de búsqueda.
De lo contrario, se analiza si el elemento X, se encuentra en la primera o en la segunda mitad del vector.
Si se encuentra en la primera mitad del vector, dicha mitad se vuelve a subdividir en dos, y así sucesivamente.
Si el número X, se encuentra en la segunda mitad, se vuelve a subdividir dicha mitad en dos partes, y así sucesivamente
hasta localizar el elemento buscado, siempre que el número X buscado forme parte del vector.
La búsqueda binaria es mucho más eficiente que la búsqueda secuencial, sin embargo tiene la desventaja de que el vector
debe estar necesariamente ordenado.
Por consiguiente, si se desea buscar un elemento X, en un vector determinado, siempre que dicho vector no tenga muchos
elementos, es recomendable utilizar el método de búsqueda secuencial en cualquiera de sus vertientes.
Sin embargo, si el vector tiene muchos elementos almacenados en memoria, creemos conveniente utilizar el método de
búsqueda binaria, a pesar de que el método de marras, exige que el vector esté previamente ordenado.
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 100
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
METODO TRES
BUSQUEDA BINARIA
N Cantidad de elementos del vector
V Nombre del vector
AUX Auxiliar que se utiliza para efectuar el intercambio de elementos
I Iteración principal utilizada en el módulo de intercambio
K Iteración anidada a la iteración I
Z Iteración utilizada para cargar e imprimir el vector
X Elemento a ser buscado en el vector
MAYOR Auxiliar donde se almacena inicialmente el valor de N
MENOR Auxiliar donde se almacena inicialmente el valor del primer subíndice
MEDIO Auxiliar donde se almacena el promedio inicial de mayor y menor
INICIO
AUX = 0
LEER N
DIM V(N)
PARA Z = 1 HASTA N
LEER V(Z)
FINPARA
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
PARA I = 1 HASTA N – 1
PARA K = 1 HASTA N – 1
SI V(K) > V(K+1) El intercambio de valores se
AUX = V(K) efectúa en esta parte del
V(K) = V(K + 1) programa. Si el elemento
V(K+1) = AUX actual es mayor al siguiente
FINSI se permutan los valores
FINPARA
FINPARA
LEER X
MENOR = 1
MAYOR = N
MEDIO = ( ( MENOR + MAYOR ) / 2)
MIENTRAS MENOR < = MAYOR Y V(MEDIO) <> X
SI X < V(MEDIO)
MAYOR = MEDIO – 1
SINO
MENOR = MEDIO + 1
FINSI
MEDIO = ENT ( ( MENOR + MAYOR) / 2 )
FINMIENTRAS
SI X = V(MEDIO)
IMPRIMIR “SE ENCONTRO ELEMENTO EN POSICION” MEDIO
SINO
IMPRIMIR “ELEMENTO BUSCADO NO EXISTE EN EL VECTOR”
FINSI
FIN
OBSERVACION
En primera instancia se debe ordenar el vector en forma secuencial ascendente, luego se inicia la búsqueda en el mismo,
para lo cual se lo divide en dos mitades, luego una de las mitades se vuelve a subdividir en otras dos mitades, y así
sucesivamente hasta finalizar la búsqueda, que a su vez puede ser exitosa o no.
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 102
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
INICIO
AUX = 0
LEER N
DIM V(N)
PARA Z = 1 HASTA N
LEER V(Z)
FINPARA
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
PARA I = 1 HASTA N – 1
PARA K = 1 HASTA N – 1
SI V(K) > V(K+1) El intercambio de valores se
AUX = V(K) efectúa en esta parte del
V(K) = V(K + 1) programa. Si el elemento
V(K+1) = AUX actual es mayor al siguiente
FINSI se permutan los valores
FINPARA
FINPARA
SI N/2 = ENT(N/2)
MEDIO1 = N/2
MEDIO2 = (N/2) + 1
MEDIANA = ( ( V(MEDIO1) + V(MEDIO2) ) / 2 )
SINO
MEDIO = ( ENT ( N / 2 ) ) + 1 )
MEDIANA = V ( MEDIO )
FINPARA
IMPRIMIR MEDIANA
FIN
AUTORES. LIC. CESAR
CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 103
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 104
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 105
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
ALGORITMOS DE BÚSQUEDA
FUENTE : Internet
Cuestiones generales
La búsqueda de un elemento dentro de un array es una de las operaciones más
importantes en el procesamiento de la información, y permite la recuperación de datos
previamente almacenados. El tipo de búsqueda se puede clasificar como interna o
externa, según el lugar en el que esté almacenada la información (en memoria o en
dispositivos externos). Todos los algoritmos de búsqueda tienen dos finalidades:
Determinar si el elemento buscado se encuentra en el conjunto en el que se busca.
Si el elemento está en el conjunto, hallar la posición en la que se encuentra.
En este apartado nos centramos en la búsqueda interna. Como principales algoritmos de búsqueda en arrays
tenemos la búsqueda secuencial, y la binaria.
Búsqueda secuencial
Consiste en recorrer y examinar cada uno de los elementos del array hasta encontrar el o los elementos buscados,
o hasta que se han mirado todos los elemtos del array.
for(i=j=0;i<N;i++)
if(array[i]==elemento)
{
solucion[j]=i;
j++;
}
Este algoritmo se puede optimizar cuando el array está ordenado, en cuyo caso la condición de salida cambiaría
a:
for(i=j=0;array[i]<=elemento;i++)
o cuando sólo interesa conocer la primera ocurrencia del elemento en el array:
for(i=0;i<N;i++)
if(array[i]==elemento)
break;
En este último caso, cuando sólo interesa la primera posición, se puede utilizar un centinela, esto es, dar a la
posición siguiente al último elemento de array el valor del elemento, para estar seguro de que se encuentra el
elemento, y no tener que comprobar a cada paso si seguimos buscando dentro de los límites del array:
array[N]=elemento;
for(i=0;;i++)
if(array[i]==elemento)
break;
Si al acabar el bucle, i vale N es que no se encontraba el elemento. El número medio de comparaciones que hay
que hacer antes de encontrar el elemento buscado es de (N+1)/ 2.
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 106
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 107
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
“La ignorancia es la noche de la mente, pero una noche sin luna y sin estrellas”.
Confucio.
Luisa puede colocar los huevos en el agua hirviendo y poner a correr los dos relojes al mismo tiempo.
Cuando en el pequeño, de siete minutos, cae toda la arena, se invierte de inmediato. Cuando termina el de
once minutos se vuelve a invertir el de siete minutos. Como habrá estado corriendo durante cuatro minutos,
serán otra vez cuatro minutos para que la arena vuelva a caer. Así serán cuatro minutos más que los once
minutos del reloj mayor. De esta manera Luisa utilizará quince minutos exactos.
Para utilizar este algoritmo, el array debe estar ordenado. La búsqueda binaria consiste en dividir el array por su elemento
medio en dos subarrays más pequeños, y comparar el elemento con el del centro. Si coinciden, la búsqueda se termina. Si el
elemento es menor, debe estar (si está) en el primer subarray, y si es mayor está en el segundo. Por ejemplo, para buscar el
elemento 3 en el array {1,2,3,4,5,6,7,8,9} se realizarían los siguientes pasos:
Se toma el elemento central y se divide el array en dos:
{1,2,3,4}-5-{6,7,8,9}
Como el elemento buscado (3) es menor que el central (5), debe estar en el primer subarray: {1,2,3,4}
Se vuelve a dividir el array en dos:
{1}-2-{3,4}
Como el elemento buscado es mayor que el central, debe estar en el segundo subarray: {3,4}
Se vuelve a dividir en dos:
{}-3-{4}
Como el elemento buscado coincide con el central, lo hemos encontrado.
Si al final de la búsqueda todavía no lo hemos encontrado, y el subarray a dividir está vacio {}, el elemento no se encuentra en
el array. La implementación en C sería:
int desde,hasta,medio,elemento,posicion; // desde y
// hasta indican los límites del array que se está mirando.
int array[N];
// Dar valor a elemento.
for(desde=0,hasta=N-1;desde<=hasta;)
{
if(desde==hasta) // si el array solo tiene un elemento:
{
if(array[desde]==elemento) // si es la solucion:
posicion=desde; // darle el valor.
else // si no es el valor:
posicion=-1; // no está en el array.
break; // Salir del bucle.
}
medio=(desde+hasta)/2; // Divide el array en dos.
if(array[medio]==elemento) // Si coincide con el central:
{
posicion=medio; // ese es la solución
break; // y sale del bucle.
}
else if(array[medio]>elemento) // si es menor:
hasta=medio-1; // elige el array izquierda.
else // y si es mayor:
desde=medio+1; // elige el array de la derecha.
}
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 108
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
ARRAYS BIDIMENSIONALES
MATRICES
Se compone de filas y columnas.
Los elementos que están en sentido horizontal, se llaman filas y los de sentido vertical, son las columnas.
EJEMPLO Matriz (1 , 3 )
DIA-
GONAL DIAGONAL
SECUNDARIA
PRINCI-
PAL
F I L A S COLUMNAS
La fila inicial es 1 al igual que la columna inicial, por consiguiente el elemento inicial seria :
MATRIZ ( 1 , 1 )
FILA COLUMNA
MATRIZ CUADRADA
Es aquella en la cual el numero de filas es igual al numero de columnas, tal como se ve en el ejemplo.
PROCESAMIENTO DE MATRIZ
A los efectos de facilitar la carga, recorrido o impresión de una matriz, es conveniente definir dos iteraciones
automáticas anidadas, en donde la primera iteración es para referenciar las filas, y la segunda para las
columnas.
EJERCICIOS DE APLICACION
1) Cargar e imprimir una matriz de orden 3x3.
Además, calcular e imprimir la suma de todos los elementos de la matriz.
M Nombre de la matriz
F Iteración que controla las filas de la matriz
C Iteración que controla las columnas de la matriz
AC Acumulador que se utiliza para sumar todos los elementos de la matriz
MATRIZ M
15 25 10
12 20 30
40 35 50
AC = 237
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 109
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PSEUDOCODIGO
INICIO
AC = 0
DIM M(3,3) QUE VALOR TENDRA AC ?
PARA F = 1 HASTA 3 F C M(F,C) VALORES AC
PARA C = 1 HASTA 3 1 1 M(1,1) 12
LEER M(F,C) 2 M(1,2) 10
AC = AC + M(F,C) 3 M(1,3) -4
FINPARA 2 1 M(2,1) 20
FINPARA 2 M(2,2) 30
PARA F = 1 HASTA 3 3 M(2,3) 25
PARA C = 1 HASTA 3 3 1 M(3,1) -10
IMPRIMIR M(F,C) 2 M(3,2) 22
FINPARA 3 M(3,3) 19
FINPARA
IMPRIMIR AC
FIN
2) Cargar e imprimir una matriz de orden 2 * 3.
Determinar e imprimir suma de elementos cuyo contenido sea múltiplo de 3.
M Nombre de la matriz
F Iteración que controla las filas de la matriz
C Iteración que controla las columnas de la matriz
AC Acumulador que se utiliza para sumar todos los elementos de la matriz
cuyo contenido sea múltiplo de tres
MATRIZ M
15 10 20
12 9 40
AC = 36
PSEUDOCODIGO
INICIO
AC = 0
DIM M(2,3)
PARA F = 1 HASTA 2
PARA C = 1 HASTA 3
LEER M(F,C)
SI M(F,C) / 3 = ENT ( M(F,C) / 3 )
AC = AC + M(F,C)
FINSI
FINPARA AUTORES. LIC. CESAR
FINPARA CALASTRA Y LIC.
PARA F = 1 HASTA 2 SILVANA DE CALASTRA
PARA C = 1 HASTA 3 (EDICIÓN DE CORTESÍA)
IMPRIMIR M(F,C)
FINPARA
FINPARA
IMPRIMIR AC
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 110
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
10 15 5 20
12 13 9 11
21 35 42 52
AC = 50
PSEUDOCODIGO
INICIO
AC = 0
DIM M(3,4)
PARA F = 1 HASTA 3
PARA C = 1 HASTA 4
LEER M(F,C)
SI F = 1
AC = AC + M(F,C)
FINSI
FINPARA
FINPARA
PARA F = 1 HASTA 3
PARA C = 1 HASTA 4
IMPRIMIR M(F,C)
FINPARA
FINPARA
IMPRIMIR AC
FIN
4) Cargar e imprimir una matriz de orden 5 * 4.
Determinar e imprimir suma de elementos que se hallan en la primera fila y en la tercera fila.
MATRIZ M
10 15 5 20
12 13 9 11
40 30 60 50
19 22 25 33
21 35 42 52
AC = 230
PSEUDOCODIGO
INICIO
AC = 0
DIM M(5,4)
PARA F = 1 HASTA 5
PARA C = 1 HASTA 4
LEER M(F,C)
FINPARA AUTORES. LIC. CESAR
FINPARA CALASTRA Y LIC.
PARA C = 1 HASTA 4 SILVANA DE CALASTRA
AC = AC + M(1,C) + M(3,C)
(EDICIÓN DE CORTESÍA)
FINPARA
PARA F = 1 HASTA 5
PARA C = 1 HASTA 4
IMPRIMIR M(F,C)
FINPARA
FINPARA
IMPRIMIR AC
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 111
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
MATRIZ ORIGINAL
10 15 5
12 13 9
40 30 60
19 22 25
81 82 85
21 35 42
MATRIZ RESULTANTE
10 15 5
12 13 9
22 28 14
0 0 0
81 82 85 LA CUARTA FILA
21 35 42 SE PONE A CERO
PSEUDOCODIGO
INICIO
DIM M(6,3)
PARA F = 1 HASTA 6
PARA C = 1 HASTA 3
LEER M(F,C)
FINPARA
FINPARA
PARA F = 1 HASTA 6
PARA C = 1 HASTA 3
IMPRIMIR M(F,C)
FINPARA
FINPARA AUTORES. LIC. CESAR
PARA C = 1 HASTA 3 CALASTRA Y LIC.
M ( 3 , C ) = M ( 1, C ) + M ( 2 , C ) SILVANA DE CALASTRA
M(4,C) =0 (EDICIÓN DE CORTESÍA)
FINPARA
PARA F = 1 HASTA 6
PARA C = 1 HASTA 3
IMPRIMIR M(F,C)
FINPARA
FINPARA
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 112
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
ELEMENTO MAYOR
INICIO
DIM M(4,5)
DIM V(5)
MAYOR = 0
B=0
PARA F = 1 HASTA 4
PARA C = 1 HASTA 5
LEER M(F,C)
FINPARA
FINPARA
PARA C = 1 HASTA 5
V ( C ) = M ( 2, C )
FINPARA
PARA F = 1 HASTA 4
PARA C = 1 HASTA 5
AUTORES. LIC. CESAR
IMPRIMIR M(F,C)
FINPARA CALASTRA Y LIC.
FINPARA SILVANA DE CALASTRA
PARA C = 1 HASTA 5 (EDICIÓN DE CORTESÍA)
SI B = 0
B=1
MAYOR = V ( C )
SINO
SI V(C) > MAYOR
MAYOR = V ( C )
FINSI
FINSI
IMPRIMIR V ( C )
FINPARA
IMPRIMIR MAYOR
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 113
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
MATRIZ ORIGINAL
10(1,1) 15 20 29
12 13(2,2) 16 27
40 30 50(3,3) 75
19 22 95 85(4,4)
OBSERVACION
Nótese como la fila coincide con la columna en los elementos que se hallan en la diagonal principal
PSEUDOCODIGO
INICIO
DIM M(4,4)
AC = 0
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
LEER M(F,C)
SI F = C
AC = AC + M(F,C)
FINSI
FINPARA
FINPARA
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
IMPRIMIR M(F,C)
FINPARA
FINPARA
IMPRIMIR AC
FIN
METODO DOS
PSEUDOCODIGO
INICIO
DIM M(4,4)
AC = 0
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
LEER M(F,C)
FINPARA
FINPARA
FINPARA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 114
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
MATRIZ ORIGINAL
10 15 20 29(1,4)
12 13 16(2,3) 27
40 30(3,2) 50 75
19(4,1) 22 95 85
OBSERVACION
Nótese como la suma de la fila con la columna siempre da como resultado la constante cinco en los elementos que se
hallan en la diagonal secundaria.
PSEUDOCODIGO
INICIO
DIM M(4,4)
AC = 0
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
LEER M(F,C)
SI F + C = 5
AC = AC + M(F,C)
FINSI
FINPARA AUTORES. LIC. CESAR
FINPARA CALASTRA Y LIC.
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4 SILVANA DE CALASTRA
IMPRIMIR M(F,C) (EDICIÓN DE CORTESÍA)
FINPARA
FINPARA
IMPRIMIR AC
FIN
METODO DOS
INICIO
DIM M(4,4)
AC = 0
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
LEER M(F,C)
FINPARA
FINPARA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 115
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 116
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 117
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PSEUDOCODIGO
INICIO
DIM M(6,6)
PARA F = 1 HASTA 6
PARA C = 1 HASTA 6
LEER M(F,C)
FINPARA
FINPARA
PARA F = 1 HASTA 6
PARA C = 1 HASTA 6
IMPRIMIR M(F,C)
FINPARA
FINPARA
R=2 R, se utiliza como valor inicial de Z, valor inicial 2, valor final 6
B=6 B, se utiliza para subindizar las filas, valor inicial 6, valor final 2
MIENTRAS ( B >= 2 )
PARA ( Z = R HASTA 6 )
M (B,Z)=1
FINPARA
R=R+1 AUTORES. LIC. CESAR
B=B-1
FINMIENTRAS CALASTRA Y LIC.
PARA F = 1 HASTA 6 SILVANA DE CALASTRA
PARA C = 1 HASTA 6 (EDICIÓN DE CORTESÍA)
IMPRIMIR M(F,C)
FINPARA
FINPARA
FIN
14) Cargar e imprimir una matriz de orden 6 * 6.
Sumar todos los elementos que se encuentran en filas impares y que además sean múltiplos de tres.
Imprimir dicha suma.
METODO UNO
INICIO
DIM M(6,6)
AC = 0
PARA F = 1 HASTA 6
PARA C = 1 HASTA 6
LEER M(F,C)
SI ( F / 2 <> ENT ( F / 2 ) Y ( M(F,C) / 3 = ENT(M(F,C)/3))
AC = AC + M(F,C)
FINSI
FINPARA Se evalúa si F (fila) es impar y si el contenido
FINPARA de la matriz es múltiplo de tres
PARA F = 1 HASTA 6
PARA C = 1 HASTA 6
IMPRIMIR M(F,C)
FINPARA
FINPARA
IMPRIMIR AC
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 118
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
METODO DOS
INICIO
DIM M(6,6)
AC = 0
PARA F = 1 HASTA 6
PARA C = 1 HASTA 6
LEER M(F,C)
FINPARA
FINPARA
PARA F = 1 HASTA 5 INCREMENTO 2 F toma valores impares
PARA C = 1 HASTA 6 y se lo utiliza para sub-
SI ( M(F,C) / 3 = ENT(M(F,C)/3)) indizar las filas de la matriz
AC = AC + M(F,C)
FINSI
FINPARA
FINPARA
PARA F = 1 HASTA 6
PARA C = 1 HASTA 6
IMPRIMIR M(F,C)
FINPARA
FINPARA
IMPRIMIR AC
FIN
15) Cargar una matriz de orden 6*8.
Calcular la suma de elementos primos de la matriz por fila, y trasferir a un vector dicha suma de cada fila.
Luego, calcular e imprimir la solución MINIMAX del vector.
INICIO
DIM M(6,8), V(6)
PARA F=1 HASTA 6 M MATRIZ
AC=0 V VECTOR
PARA C=1 HASTA 8 B BANDERA PARA DETERMINAR PRIMOS Y
LEER M(F,C)
PARA CAPTURAR MAYOR Y MENOR ELE-
B=0
PARA K= 2 HASTA ENT(SQR(M(F,C)) MENTO DEL VECTOR V
SI M(F,C) / K= ENT( M(F,C) / K) ) AC ACUMULADOR DE NROS. PRIMOS DE LA
B=1 MATRIZ
FINSI Z CONTAODR MANUAL QUE SIRVE DE SUB-
FINPARA INDICE DEL VECTOR V
MA ELEMENTO MAYOR DEL VECTOR
SI B=0
ME ELEMENTO MENOR DEL VECTOR
AC = AC + M(F,C)
FINSI MINIMAX SOLUCION MINIMAX
FINPARA
Z=Z+1 TERCERA ITERACION ANIDADA, A LA CARGA DE LA MATRIZ
V(Z)=AC QUE SIRVE PARA DETERMINAR SI EL ELEMENTO ES PRIMO
FINPARA
B=0
MA=0
ME=0
MINIMAX=0
PARA K=1 HASTA 6
SI B=0
B=1
MA=V(K)
ME=V(K)
SINO
SI V(K) < ME
ME=V(K)
FINSI
SI V(K) > MA
MA=V(K)
FINSI
FINSI
FINPARA
MINIMAX= MA – ME
IMPRIMIR MINIMAX
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 119
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
EJERCICIOS PROPUESTOS
(RESUELTOS EN EL APENDICE A)
EJERCICIOS PROPUESTOS
(A SER RESUELTOS POR EL LECTOR)
ALGORITMOS DE ORDENACIÓN
FUENTE: Internet
Cuestiones generales
Su finalidad es organizar ciertos datos (normalmente arrays o ficheros) en un orden creciente o decreciente mediante una regla
prefijada (numérica, alfabética...). Atendiendo al tipo de elemento que se quiera ordenar puede ser:
Ordenación interna: Los datos se encuentran en memoria (ya sean arrays, listas, etc), y son de acceso aleatorio o directo (se
puede acceder a un determinado campo sin pasar por los anteriores).
Ordenación externa: Los datos están en un dispositivo de almacenamiento externo (ficheros), y su ordenación es más lenta que
la interna.
Ordenación interna
Los métodos de ordenación interna se aplican principalmente a arrays unidimensionales. Los principales algoritmos de
ordenación interna son:
Selección: Este método consiste en buscar el elemento más pequeño del array y ponerlo en primera posición; luego, entre los
restantes, se busca el elemento más pequeño y se coloca en segudo lugar, y así sucesivamente hasta colocar el último elemento.
Por ejemplo, si tenemos el array {40,21,4,9,10,35}, los pasos a seguir son:
{4,21,40,9,10,35} <-- Se coloca el 4, el más pequeño, en primera posición : se cambia el 4 por el 40.
{4,9,40,21,10,35} <-- Se coloca el 9, en segunda posición: se cambia el 9 por el 21.
{4,9,10,21,40,35} <-- Se coloca el 10, en tercera posición: se cambia el 10 por el 40.
{4,9,10,21,40,35} <-- Se coloca el 21, en tercera posición: ya está colocado.
{4,9,10,21,35,40} <-- Se coloca el 35, en tercera posición: se cambia el 35 por el 40.
Si el array tiene N elementos, el número de comprobaciones que hay que hacer es de N*(N-1)/2, luego el tiempo de ejecución
está en O(n2 )
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 120
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
ARCHIVOS SECUENCIALES
CARGA INICIAL
LECTURA
CORTES DE CONTROL
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 121
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
“El ignorante, si calla, será tenido por erudito, y pasará por sabio si no abre los
labios”. Salomón.
Insertamos el 21:
{40,40,4,9,10,35} <-- aux=21;
{21,40,4,9,10,35} <-- Ahora la sublista ordenada es {21,40}.
Insertamos el 4:
{21,40,40,9,10,35} <-- aux=4;
{21,21,40,9,10,35} <-- aux=4;
{4,21,40,9,10,35} <-- Ahora la sublista ordenada es {4,21,40}.
Insertamos el 9:
{4,21,40,40,10,35} <-- aux=9;
{4,21,21,40,10,35} <-- aux=9;
{4,9,21,40,10,35} <-- Ahora la sublista ordenada es {4,9,21,40}.
Insertamos el 10:
{4,9,21,40,40,35} <-- aux=10;
{4,9,21,21,40,35} <-- aux=10;
{4,9,10,21,40,35} <-- Ahora la sublista ordenada es {4,9,10,21,40}.
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 122
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
ARCHIVOS
Campo o Variable : Unidad mínima de información.
Puede ser numérico o alfanumérico, con sus diferentes vertientes (numérico entero, numérico real, alfabético o de carácter,
lógico, de fecha, etc.).
Registro : Conjunto de campos.
Un registro puede ser :
a) De longitud fija : Previamente se define un formato de registro y aunque no se utilize en su totalidad el contenido de
cada campo, la longitud del registro es siempre constante.
b) De longitud variable : La longitud del registro estará dada por la sumatoria de los caracteres y dígitos de cada campo.
Archivo : Conjunto de registros
De acuerdo a la metodología utilizada para almacenar los registros en un archivo, estos pueden ser a su vez :
Organización Secuencial : Los registros se almacenan uno tras otro en el mismo orden en que fueron ingresados al
archivo.
Para acceder a algún registro previamente se debe ir leyendo cada uno de los registros anteriores al mismo.
Organización Directa o Relativa o Randómica: Se debe previamente definir una llave primaria (clave de acceso).
Cada clave debe ser única y no debe repetirse dentro del archivo, a los efectos de permitir el acceso seguro a cada registro.
Además, se coaliga el valor numérico de la clave con la posición que esta ocupa dentro del archivo.
Por consiguiente, si la clave tiene el valor 25, el registro está en la posición 25, y así sucesivamente.
Es el método de acceso más veloz en la actualidad.
Organización Secuencial Indexada : En realidad se definen para el efecto dos archivos.
El primero de ellos es un archivo secuencial convencional, que tiene las mismas características descritas en el ítem
correspondiente a archivo secuencial, del presente material.
El segundo archivo se conoce con el nombre de tabla o índice, y en dicho archivo se almacena la llave primaria (clave) y la
posición que esta ocupa en el archivo.
De este modo, para acceder a cualquier registro, previamente se hace la búsqueda de la clave en la tabla, y luego se
accede al registro deseado a partir de dicha información.
EJERCICIOS DE APLICACION
1) Dado el siguiente registro, preparar el pseudocódigo de carga de datos en el archivo.
NV IV
NRO. DE IMPORTE DE
VENDEDOR VENTA
El nombre del archivo es “VENTAS”.
El fin del proceso de carga, será digitando 99999, en el campo NV.
INICIO
ABRIR “VENTAS”
NV = 0
IV = 0
MIENTRAS NV <> 99999
LEER NV
SI NV <> 99999
LEER IV
GRABAR NV, IV También se puede utilizar el verbo
FINSI ESCRIBIR en lugar de GRABAR
FINMIENTRAS
CERRAR “VENTAS”
FIN
OBSERVACION IMPORTANTE
Se inicializa el campo NV (Nro. de Vendedor) con el valor 0, de modo a que el programa pueda ingresar a la iteración
definida como :
MIENTRAS NV <> 99999
Otro punto de capital importancia que no podemos dejar de mencionar, es que siempre en cualquier programa de
manipulación de archivos, se debe ejecutar el siguiente esquema :
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 123
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 124
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
EJERCICIOS PROPUESTOS
archivo.
NS V
NRO. DE VENTA
SECCION
Calcular e imprimir el total de ventas por cada seccion y el total general de ventas.
Se asume que el archivo está clasificado en orden secuencial ascendente por el campo NS (NRO . DE SECCION).
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 125
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 126
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 127
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 128
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
CAPITULO DOS
EJERCICIOS PROPUESTOS
1) Introducir un número que represente el lado de un triángulo equilátero.
Determinar e imprimir su perímetro, y para el efecto utilizar la fórmula correspondiente.
INICIO QUE VALOR TENDRA P ?
P=0 L P
LEER L 10 __
P=L*3 30 __
IMPRIMIR P 15 __
FIN
2) Introducir un número que represente el lado de un cuadrado.
Determinar e imprimir su superficie y para el efecto aplicar la fórmula pertinente.
INICIO QUE VALOR TENDRA S ?
S=0 L S
LEER L 10 __
S=L* L 8 __
IMPRIMIR S 5 __
FIN
3) Introducir dos números.
Determinar e imprimir el producto de los mismos.
INICIO QUE VALOR TENDRA R ?
R=0 A B R
LEER A, B 5 10 __
R=A*B 7 8 __
IMPRIMIR R 4 9 __
FIN
4) Introducir cinco números.
Restar el primero con el quinto, a este resultado sumarle el segundo, luego a este resultado dividirlo por el cuarto
número, y por último a este resultado sumarle el tercer número.
Imprimir el resultado.
ALTERNATIVA UNO
INICIO
R=0 QUE VALOR TENDRA R ?
LEER A, B, C, D, E A B C D E R
R=A–E 50 20 4 5 5 __
R=R+B 55 15 2 5 15 __
R=R/D 60 25 3 3 10 __
R=R+C
IMPRIMIR R
FIN
ALTERNATIVA DOS
INICIO
R=0
LEER A,B,C,D,E
R= ((((A–E)+B)/D)+C)
IMPRIMIR R
FIN
5) Efectuar un seguimiento del siguiente pseudocódigo, y luego determinar el valor de la variable Z.
INICIO
Z= 0
M= 115
X= 10
R= 5
Z= M + 5 (El valor transitorio de Z es 120)
Z= Z * 2 (El valor transitorio de Z es 240)
Z= Z – X (El valor transitorio de Z es 230)
Z= Z / R (El valor definitivo de Z es 46)
IMPRIMIR Z
FIN
EL VALOR DE LA VARIABLE Z ES : 46
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 129
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
6) Efectuar un seguimiento del siguiente pseudocódigo, y luego determinar el valor de las variables A y B, en el momento
de la impresión.
INICIO
A = 100
B = 30
B=A–B ( Valor transitorio de B es 70)
A=A–B ( Valor final de A es 30)
B=A+B ( Valor final de B es 100)
IMPRIMIR A, B
FIN
EL VALOR DE A ES : 30
EL VALOR DE B ES : 100
6) Efectuar un seguimiento del siguiente pseudocódigo, y luego determinar el valor de la variable T, en el momento de la
impresión.
INICIO
X = 15
T = 41
T = T + 20 Arroja como resultado T = 61
T=T–X Arroja como resultado T = 46
X=X*2 Arroja como resultado X = 30
T=T+X Arroja como resultado T = 76
IMPRIMIR T
FIN
EL VALOR DE T ES : 76
CAPITULO TRES
EJERCICIOS PROPUESTOS
1) Introducir un número cualquiera.
Si el mismo es menor a diez, multiplicarlo por dos e imprimir el resultado.
De lo contrario, restar cinco e imprimir el resultado.
INICIO
R=0 QUE VALOR TENDRA R ?
LEER X X R
SI X < 10 50 __
R=X*2 5 __
SINO -10 __
R=X–5 -25 __
FINSI 78 __
IMPRIMIR R
FIN
2) Introducir tres números cualesquiera.
Determinar e imprimir el número medio.
(El número medio es aquel que no es el mayor ni el menor).
INICIO
AUX = 0
LEER A, B, C PARA A=20, B=15, C=10
SI A > B
AUX =A QUE VALOR TENDRAN A, B Y AUX AL FINAL DE ESTA SELECCION
A =B A VALDRA ___
B = AUX B VALDRA ___
FINSI AUX VALDRA ___
SI A > C
AUX =A QUE VALOR TENDRAN A, C Y AUX AL FINAL DE ESTA SELECCION
A =C A VALDRA ___
C = AUX C VALDRA ___
FINSI AUX VALDRA ___
SI B > C
AUX =B B VALDRA ___
B =C C VALDRA ___
C = AUX AUX VALDRA ___
FINSI
IMPRIMIR B B VALDRA FINALMENTE ___________
FIN
3) Introducir un número cualquiera.
Si el número es menor a cuarenta, sumarle la constante ocho e imprimir el resultado.
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 130
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 131
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
CAPITULO CUATRO
EJERCICIOS PROPUESTOS
1) Introducir dos números cualesquiera.
Si el primero de ellos es mayor a cien y menor a 150, elevar el segundo número al cuadrado e imprimir el
resultado.
INICIO
A=0
LEER X, M, Z QUE VALOR TENDRA A ?
SI ( Z > 10 Y Z < 40 ) Y ( M > 60 Y M < 80 ) X M Z A
A=X*X 5 5 9 ___
SINO 2 70 15 ___
A=X^3 3 75 20 ___
FINSI 4 4 30 ___
IMPRIMIR A 6 78 16 ___
FIN
INICIO
R=0 QUE VALOR TENDRA R?
LEER A, B A B R
SI ( A MOD 2 = 0 ) Y ( B > 50 ) 10 60 ___
R=A+B
11 61 ___
SINO
R=A–B 12 41 ___
FINSI 14 70 ___
IMPRIMIR R
70 51 ___
FIN
INICIO
QUE VALOR TENDRA R?
R=0 A B R
LEER A, B 17 60 ___
SI ( B MOD 3 = 0 ) Y ( A MOD 2 <> 0 )
R=A*B 11 61 ___
SINO 12 45 ___
R=A+B
FINSI 19 15 ___
IMPRIMIR R 13 12 ___
FIN
6) Hacer un seguimiento del siguiente pseudocódigo, y luego imprimir el valor que almacenará la variable P, en e l momento de la
impresión.
INICIO
P=0
A = 21
B = 59
SI ( ( A / 5 ) = ENT ( A / 5 ) ) Y ( ( B MOD 3 = 0 )
P=A+B
P = P * 10
SINO
P = B – A -----> P = 38
P = P * 5 -----> P = 190
FINSI
P=P *3 -----> P = 570
P = P – 15 -----> P = 555
SI ( P > 20 ) Y ( P < 110 )
A = A – 15
P=P– A
SINO
B = B – 20 -----> B = 39
P = P + B -----> P = 594
FINSI
IMPRIMIR P
FIN
QUE VALOR TENDRA LA VARIABLE P, EN EL MOMENTO DE LA IMPRESIÓN ?
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 133
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
CAPITULO CINCO
EJERCICIOS PROPUESTOS
1) Introducir nueve números de uno en uno.
Determinar e imprimir cantidad de números menores a cinco. QUE VALOR TENDRA C5 ?
INICIO X C5
C5 = 0 20
PARA C = 1 HASTA 9 12
LEER X 35
SI X < 5 4
C5 = C5 + 1 -10
FINSI 50
FINPARA 45
IMPRIMIR C5 17
FIN -20
2) Introducir diez números de uno en uno.
Determinar e imprimir suma y cantidad de números mayores a quince.
INICIO
AC15 = 0
QUE VALOR TENDRAN LAS VARIABLES AC15 Y C15?
C15 = 0
PARA C = 1 HASTA 10 X AC15 C15
LEER X 10
SI X > 15 5
AC15 = AC15 + X 20
C15 = C15 + 1 12
FINSI 7
FINPARA 30
IMPRIMIR AC15, C15 8
FIN 14
40
-14
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 134
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 135
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 136
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
CAPITULO SEIS
1) Calcular e imprimir en forma automática, el factorial de todos los números comprendidos entre 2 inclusive y 6
inclusive.
F Auxiliar de factorial
K Iteración que toma los valores comprendidos entre 2 y 6, y que se utiliza para calcular los factoriales
I Iteración que calcula el factorial del número X
PSEUDOCODIGO
INICIO
PARA K = 2 HASTA 6
F=1
PARA I = 1 HASTA K
F=F*I
FINPARA
IMPRIMIR "EL FACTORIAL DE “ K “ ES “ F
FINPARA
FIN
PRUEBA DE ESCRITORIO
K I F
2 1
1 1
2 2
1
3 1 1
2 2
3 6
1
4 1
1 1
2 2
3 6
4 24
5 1
1 1
2 2
3 6
4 24
5 120
6 1
1 1
2 2
3 3
4 24
5 120
6 720
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 137
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
2) Calcular e imprimir en forma automática, la tabla de multiplicar (del uno al diez) de los cuatro primeros números
naturales.
INICIO
PARA N = 1 HASTA 4
R=0
PARA K = 1 HASTA 10
R=N*K
IMPRIMIR R
FINPARA
FINPARA
FIN
PRUEBA DE ESCRITORIO
N K R
1 1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
2 1 2
2 4
3 6
4 8
5 10
6 12
7 14
8 16
9 18
10 20
3 1 3
2 6
3 9
4 12
5 15
6 18
7 21
8 24
9 27
10 30
4 1 4
2 8
3 12
4 16
5 20
6 24
7 28
8 32
9 36
10 40
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 138
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
3) Calcular e imprimir en forma automática, todos los números pares comprendidos entre 2 inclusive y 20 inclusive.
Utilizar para el efecto, el método de restas sucesivas.
INICIO
PARA K = 2 HASTA 20
I=K
MIENTRAS ( I >= 2 )
I=I-2
FINMIENTRAS
SI ( I = 0 )
IMPRIMIR "EL NUMERO ” K “ES PAR”
SINO
IMPRIMIR "EL NUMERO “ K “ES IMPAR”
FINSI
FINPARA
FIN
CAPITULO SIETE
EJERCICIOS PROPUESTOS
1) Introducir ocho números de uno en uno.
Determinar e imprimir el mayor de la serie.
INICIO
B=0
MA = 0
PARA X = 1 HASTA 8
LEER Z
SI B = 0 AUTORES. LIC. CESAR
B=1 CALASTRA Y LIC.
MA = Z
SILVANA DE CALASTRA
SINO
SI Z > MA (EDICIÓN DE CORTESÍA)
MA = Z
FINSI
FINSI
FINPARA
IMPRIMIR MA
FIN
2) Introducir diez números de uno en uno.
Determinar e imprimir el mayor número múltiplo de tres de la serie.
INICIO
B=0
MA3 = 0
PARA M = 1 HASTA 10
LEER R
SI R / 3 = ENT ( R /3 )
SI B = 0
B=1
MA3 = R
SINO
SI R > MA3
MA3 = R
FINSI
FINSI
FINSI
FINPARA
IMPRIMIR MA3
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 139
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
3) Generar e imprimir en forma automática todos los números no primos comprendidos entre dos inclusive y mil
inclusive.
INICIO
PARA NRO = 2 HASTA 1000
B=0
PARA K = 2 HASTA ENT( SQR (NRO ) )
SI NRO / K = ENT ( NRO / K )
B=1
FINSI
FINPARA
SI B = 1
IMPRIMIR NRO
FINSI
FINPARA
FIN
INICIO
B=0
CV = 0
PARA C = 1 HASTA 10
LEER X
SI X < 0
B=1 AUTORES. LIC. CESAR
FINSI CALASTRA Y LIC.
SI X = 0 SILVANA DE CALASTRA
B=0 (EDICIÓN DE CORTESÍA)
FINSI
SI X > 0
SI B = 1
B =0
CV = CV + 1
FINSI
FINSI
FINPARA
IMPRIMIR CV
FIN
CAPITULO OCHO
EJERCICIOS PROPUESTOS
1) Cargar e imprimir un vector de doce elementos.
Determinar e imprimir la suma de los elementos mayores a cinco.
INICIO DADO EL SIGUIENTE VECTOR, QUE VALOR
AC = 0 TENDRA AC ?
DIM A ( 12 ) K A(K) AC
PARA K = 1 HASTA 12 1 -41
LEER A ( K ) 2 -10
SI A ( K ) > 5 3 -55
AC = AC + A ( K ) 4 10
FINSI
5 4
FINPARA
6 3
PARA K = 1 HASTA 12
IMPRIMIR A ( K ) 7 20
FINPARA 8 -88
IMPRIMIR AC 9 25
FIN 10 -66
11 -99
12 2
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 140
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 141
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
INICIO
S=0
QUE VALOR TENDRA LA VARIABLE S ?
DIM V(15)
PARA K = 1 HASTA 15 K V(K) S
LEER V(K) 1
FINPARA 2
PARA K = 1 HASTA 15 3
IMPRIMIR V(K) 4
FINPARA 5
PARA K = 7 HASTA 12 6
SI ( V(K) MOD 2 ) = 0 7
S = S + V(K) 8
FINSI 9
FINPARA 10
IMPRIMIR S 11
FIN 12
13
14
15
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 142
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
CAPITULO DIEZ
EJERCICIOS PROPUESTOS
1) Cargar e imprimir una matriz de orden 3*4.
Determinar e imprimir la suma de todos los elementos positivos de la matriz.
INICIO
AC = 0
DIM M ( 3 ,4 )
PARA I = 1 HASTA 3
PARA J = 1 HASTA 4
LEER M( I, J )
SI M( I , J) > 0
AC = AC + M ( I , J )
FINSI
FINPARA
FINPARA
PARA I = 1 HASTA 3
PARA J = 1 HASTA 4
IMPRIMIR M ( I , J )
FINPARA
FINPARA
IMPRIMIR AC
FIN
2) Cargar e imprimir una matriz de orden 3*3.
Determinar e imprimir la suma de aquellos elementos que sean múltiplos de dos y tres al mismo tiempo.
INICIO
AC = 0
DIM M( 3, 3)
PARA I = 1 HASTA 3
PARA J = 1 HASTA 3
LEER M( I, J )
SI (M( I , J) / 2=ENT(M(I , J ) / 2)) Y M(( I , J) / 3=ENT(M(I , J ) / 3))
AC = AC + M ( I , J )
FINSI
FINPARA
FINPARA
PARA I = 1 HASTA 3
PARA J = 1 HASTA 3
IMPRIMIR M ( I , J )
FINPARA
FINPARA
IMPRIMIR AC
FIN
INICIO INICIO
DIM M(4,5) DIM M(4,5)
AC = 0 AC = 0
PARA I = 1 HASTA 4 PARA I = 1 HASTA 4
PARA J = 1 HASTA 5 PARA J = 1 HASTA 5
LEER M ( I , J ) LEER M ( I , J )
SI J = 2 FINPARA
AC = AC + M(I,J) FINPARA
FINSI PARA I = 1 HASTA 4
FINPARA AC = AC + M ( I, 2 )
FINPARA FINPARA
PARA I = 1 HASTA 4 PARA I = 1 HASTA 4
PARA J = 1 HASTA 5 PARA J = 1 HASTA 5
IMPRIMIR M(I,J) IMPRIMIR M(I,J)
FINPARA FINPARA
FINPARA FINPARA
IMPRIMIR AC IMPRIMIR AC
FIN FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 143
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 144
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 145
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
CAPITULO ONCE
EJERCICIOS PROPUESTOS
1) Dado el siguiente registro, preparar el pseudocódigo de carga de datos en el
archivo.
NS V
NRO. DE VENTA
SECCION
El nombre del archivo es “MOVIMIENTOS”.
El fin del proceso de carga, será digitando -1, en el campo NS.
PSEUDOCODIGO
INICIO
ABRIR “MOVIMIENTOS”
NS = 0
V =0
MIENTRAS NS <> - 1
LEER NS
SI NS <> - 1
LEER V
GRABAR NS, V
FINSI
FINMIENTRAS
CERRAR “MOVIMIENTOS”
FIN
2) Leer totalmente el archivo “MOVIMIENTOS” cargado en el ejercicio anterior.
Además, calcular e imprimir el total general de ventas.
El fin de archivo se detectará automáticamente a través del indicador EOF.
PSEUDOCODIGO
INICIO
TG = 0
ABRIR “MOVIMIENTOS”
MIENTRAS NO EOF()
LEER NS, V
TG = TG + V
FINMIENTRAS
IMPRIMIR TV
CERRAR “MOVIMIENTOS”
FIN
3) Procesar el archivo “MOVIMIENTOS”.
Calcular e imprimir el total de ventas por cada seccion y el total general de ventas.
Se asume que el archivo está clasificado en orden secuencial ascendente por el campo NS (NRO. DE SECCION).
El fin de archivo se detectará en forma automática a través del indicador EOF.
B Bandera
AS Auxiliar de sección
TS Total de ventas por sección
TG Total general de ventas
INICIO
B=0
AS = 0
TS = 0
TG = 0
ABRIR “MOVIMIENTOS” AUTORES. LIC. CESAR
MIENTRAS NO EOF()
LEER NS, V
CALASTRA Y LIC.
SI B = 0 SILVANA DE CALASTRA
B=1
AS = NS (EDICIÓN DE CORTESÍA)
TS = TS + V
SINO
SI AS = NS
TS = TS + V
SINO
TG = TG + TS
IMPRIMIR AS, TS
TS = 0
AS = NS
TS = TS + V
FINSI
FINSI
FINMIENTRAS
IMPRIMIR AS, TS
TG = TG + TS
IMPRIMIR TG
CERRAR “MOVIMIENTOS”
FIN
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 146
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 147
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 148
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA
BIBLIOGRAFIA
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 149