Você está na página 1de 149

ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

 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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 1


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

“Los muertos son los únicos que conocen el final de una guerra. “ Platón.

EJERCICIO MENTAL NRO. UNO


 En este ejercicio cada una de las letras representa un dígito diferente del 1 al 9. El asterisco *
significa multiplicación.
AB * C = DE * F = GHI.
¿Cuál es el número GHI?
VER RESPUESTA AL DORSO DE INICIO DE CAPITULO DOS

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.

El Hardware es la parte física de la computadora. Es aquello que podemos ver y tocar.


Esta formado por el monitor, el teclado, el mouse, la unidad del sistema, la impresora, etc.
El Software es la parte lógica de la computadora y esta formado por el conjunto de
programas que controlan el funcionamiento de la computadora.

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 .

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 2


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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).

2) Codificar el algoritmo en algún lenguaje de programación.

3) Ejecutar el programa en alguna computadora

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.

CARACTERÍSTICAS DE LOS ALGORITMOS

 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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 3


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

METODOLOGÍA DE DISEÑO DE ALGORITMOS

 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.

Tipos de órdenes, instrucciones y estructuras más frecuentes en los algoritmos

 Instrucciones : De entrada, de salida, de asignación.


 Variables: Numéricas y Alfanuméricas
 Estructuras: Lineales, de iteración y de selección.

BREVE BIOGRAFIA DE LEONARDO BONACCIO (FIBONACCI) – 1170 A 1250 D.C.

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.

La Sucesión de Números Fibonacci

El mismo la presenta en su libro Liber Abaci de la siguiente forma:

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 ...............

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 4


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

CONTADOR AUTOMATICO / CICLO/


ITERACION/BUCLE

CONECTOR

B) DIAGRAMA NASSI SCHNEIDERMAN


Consta nada mas que de tres símbolos :

CALCULO / PROCESO / LECTURA

DECISION / CONDICION

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 5


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

ITERACION

MOHAMMED AL-
KHOWARIZMI
(PADRE DE LA
ALGORITMIA)

C) DIAGRAMA WARNIERR ORR


Utiliza los siguientes símbolos :

LLAVES

(N)
ITERACION

0 FALSO
CONDICION
1 VERDADERO

D) PSEUDOCODIGO

Se basa en la lengua materna del programador.


En nuestro caso, español estructurado.
En el pseudocódigo, se escribe paso a paso, las instrucciones que luego se pasarán a algún lenguaje de alto nivel.
A su vez, un pseudocódigo se compone de :
A) ESTRUCTURAS
Básicamente son tres :
1) Estructuras Lineales o Secuenciales
En las estructuras lineales, las instrucciones se van ejecutando paso a paso o de uno en uno, en el mismo orden
en que las mismas fueron escritas.
2) Estructuras de Iteración
Implica que un segmento del programa debe repetirse un número finito de veces, para lo cual debe preverse una
condición de FIN, pues de lo contrario el programa entrará en loop.
Normalmente se utilizan los siguientes esquemas :
A) PARA C = 1 HASTA 20

INSTRUCCIONES
FINPARA

B) DESDE C = 1 HASTA 20

INSTRUCCIONES
FINDESDE

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 6


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

C) REPETIR

C=C+1 OTRA DEFINICION DE PROGRAMA:


HASTA C = 20 FUENTE: Sitio http://www.algoritmia.net/
D) MIENTRAS C <> 20 Un programa es un conjunto de líneas de código
escritas en un lenguaje de programación determinado.
C=C+1 Pero el código escrito en un lenguaje de alto nivel no
puede ser entendido por el ordenador, por lo que es
FINMIENTRAS necesaria la traducción a código máquina
E) HACER

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 El uso de dicha palabra se ha difundido bastante con


b) Selección Doble la aparición de la informática. La palabra proviene de
SI C > 50 Mohammed Al-Khowarizmi, matemático persa que
vivió durante el siglo IX D.C. y alcanzó gran reputación
SINO por el enunciado de las reglas paso a paso para
sumar, restar, multiplicar y dividir números decimales.
FINSI La traducción al latín del apellido en la palabra
c) Selección Múltiple algoritmus, derivó posteriormente en algoritmo.
Si C > 50 El gran matemático griego Euclides, que vivió en el
SI C < 100 siglo IV a.C. que entre otras cosas inventó un método
para encontrar el MCD de dos números también es
SINO considerado el padre de la Algoritmia.

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 7


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

Por consiguiente 27 sería lo mismo que 27 ^ ( 1 / 2 ) .

En una generalización x sería lo mismo que x ^ ( 1 / 2 ) . .

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 8


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

1ra Cond. Y 2da Cond. RESULTADO


V y V V
V y F F
F y V F
F y F F

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.

1ra Cond. O 2da Cond. RESULTADO


V o V V
V o F V
F o V V
F o F F

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)

OTRA DEFINICION DE ALGORITMO


FUENTE: Sitio http://www.algoritmia.net/

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

RESUMEN DEL CAPITULO


Las herramientas utilizadas en informática, para representar algoritmos son :
 PSEUDOCODIGO
 DIAGRAMA DE FLUJO
 DIAGRAMA NASSI SCHNEIDERMAN
 DIAGRAMA WARNIER ORR
Los componentes más importantes del pseudocódigo son:
1) Estructuras
Lineales
De iteración IPara-Fin para, Desde-Findesde, Repetir – hasta, Mientras-Finmientras, Hacer-mientras).
De selección (Simple, Doble, Múltiple).
2) Sentencias
De entrada
De salida
De asignación
3) Variables
Numéricas
Alfanuméricas
4) Constantes
Numéricas
Alfanuméricas
5) Operaciones (Adición, resta, multiplicación, división, exponenciación).
6) Operadores Matemáticos ( +, - , / , *, ^ )
7) Operadores Relacionales ( >, <, <=, >=, =, <> ).
8) Operadores Lógicos ( Y , O , NO ).
9) Prioridad de las operaciones ( 1) + - 2) / * 3) ^ ).
10) Expresiones y uso de paréntesis
EJERCICIOS PROPUESTOS :
1) Dado el siguiente pseudocódigo:
INICIO
P=0
LEER T, A
P=T/A
IMPRIMIR P
FIN
a) Que tipo de variable es P?
R: P es una variable de tipo ______________ AUTORES. LIC. CESAR
b) Que tipo de sentencia es LEER T,A ? CALASTRA Y LIC.
R: Es una sentencia de ____________ SILVANA DE CALASTRA
c) Que tipo de sentencia es P = T / A ?
(EDICIÓN DE CORTESÍA)
R: Es una sentencia de ____________
d) El presente pseudocódigo utiliza una estructura ?
( ) De selección
( ) Lineal
( ) Iterativa
2) Dada la siguiente estructura de selección y los valores hipotéticos asignados a la variable X, determinar el valor
final de la variable R, en el momento de la impresión:
INICIO
___________
___________
SI X > 50 X R
R = X + 10 10 ____
60 ____
SINO
R=X*2 -20 ____
100 ____
FINSI
IMPRIMIR R
___________

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

 ESTRUCTURAS LINEALES O DE SECUENCIA


 SENTENCIAS DE ENTRADA
 SENTENCIAS DE SALIDA
 SENTENCIAS DE ASIGNACION
 OPERACIONES MATEMATICAS

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 11


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

“Lo importante no es vencer siempre, sino nunca desanimarse”. Napoleón.

RESPUESTA A EJERCICIO MENTAL NRO. UNO


(AL DORSO DE INICIO DEL CAPITULO UNO)
Hay dos soluciones posibles.
156 y 174.
En la primera solución, A=3, B=9, C=4, D=7, E=8, F=2, G=1, H=5 y I=6. Por lo tanto 39 * 4 = 78 * 2 =
156.
En la segunda solución, A=5, B=8, C=3, D=2, E=9, F=6, G=1, H=7 y I=4. Por lo tanto 58 * 3 = 29 * 6 =
174.

EJERCICIO MENTAL NRO. DOS

 Después de quemar una vela sobra un poco de cera. Con seis sobrantes se puede hacer otra vela
igual a la original.

¿Cuántas velas se pueden hacer así con 1001 sobrantes?

. VER RESPUESTA AL DORSO DE INICIO DE CAPITULO TRES

CONDICIONES QUE DEBEN CUMPLIR LOS ALGORITMOS

FUENTE: Sitio http://www.algoritmia.net/


· Finitud: El algoritmo debe acabar tras un número finito de pasos. Es más, es casi fundamental que sea en un número
razonable de pasos.
· Definibilidad: el algoritmo debe definirse de forma precisa para cada paso, es decir, hay que evitar toda ambigüedad al
definir cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea
matemático o de programación para un computador.
· Entrada: el algoritmo tendrá cero o más entradas, es decir, cantidades dadas antes de empezar el algoritmo. Estas cantidades
pertenecen además a conjuntos especificados de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros, naturales,
fraccionarios, etc. Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su
interpretación por el computador.
· Salida: el algoritmo tiene una o más salidas, en relación con las entradas.
· Efectividad: se entiende por esto que una persona sea capaz de realizar el algoritmo de modo exacto y sin ayuda de una
máquina en un lapso de tiempo finito.

- 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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 12


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

EJERCICIOS CON ESTRUCTURAS SECUENCIALES

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

2) Introducir dos números.


Determinar e imprimir la suma de los mismos.
S Variable de resultado
A, B Variables numéricas de entrada
COMPLETE EL VALOR QUE TENDRA S
INICIO A B S
S=0 Se inicializa S 10 50 ___
LEER A, B Se introducen los valores A y B 12 13 ___
S=A+B Se efectua suma y se guarda en S 20 30 ___
IMPRIMIR S Se imprime resultado 40 50 ___
FIN
PRUEBA DE ESCRITORIO
SI A = 15 Y B = 20 SI A = 40 Y B = 30
Se ejecuta la orden S = A + B Se ejecuta la orden S = A + B

3) Introducir un número que represente al lado de un pentágono.


Calcular e imprimir su perímetro.
P Variable de resultado (Perímetro)
L Variable numérica de entrada (Lado)
COMPLETE EL VALOR QUE TENDRA P
INICIO L P
P=0 Se inicializa P 20 ___
LEER L Se ingresa el valor L 15 ___
P=L*5 Se calcula perimetro 11 ___
IMPRIMIR P Se imprime perímetro P 40 ___
FIN
PRUEBA DE ESCRITORIO
SI L = 6 SI L = 10
Se ejecuta la orden P = L * 5 Se ejecuta la orden P = L * 5
Se imprimirá P = 30 Se imprimirá P = 50

4) Introducir dos números que representen a los lados de un rectángulo,


Determinar e imprimir su superficie utilizando para el efecto la fórmula pertinente.
S Variable de resultado, para almacenar la superficie
L,A Variables de entrada (Lado y Alto)

INICIO COMPLETE EL VALOR QUE TENDRA S


S=0 Se inicializa S L A S
LEER L, A Se ingresan L (lado) y A (alto) 20 10 ___
S=L*A Se calcula superficie 10 40 ___
IMPRIMIR S Se imprime Superficie 50 20 ___
FIN
PRUEBA DE ESCRITORIO
SI L = 10 Y A = 6 SI L = 15 Y A = 10
Se imprimirá S = 60 Se imprimirá S = 150

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 13


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

5) Introducir tres números cualesquiera.


Restar el primer número con el tercero, a este resultado multiplicarlo por cinco, luego a este resultado sumarle el
segundo número.
R Variable de resultado, para almacenar el resultado final
A,B,C Variables de entrada

ALTERNATIVA UNO ALTERNATIVA DOS


INICIO COMPLETE EL VALOR QUE TENDRA R INICIO
R=0 A B C R R=0
LEER A,B,C 5 3 10 ___ LEER A,B,C,
R=A-C 30 2 5 ___ R= (((A –C)*5)+B)
R=R*5 25 4 15 ___ IMPRIMIR R
R=R+B 50 5 40 ___ FIN
IMPRIMIR R
FIN Observación : La alternativa dos es un algoritmo optimizado.

6) Introducir cuatro números.


Sumar el primero con el tercero, a este resultado dividirlo por dos, luego a este resultado restarle el segundo
número y por último a este nuevo resultado multiplicarlo por el cuarto número, e imprimir el resultado final.
R Variable de resultado, para almacenar el resultado final
P,X,Y,Z Variables de entrada
ALTERNATIVA UNO ALTERNATIVA DOS
INICIO INICIO
R=0 COMPLETE EL VALOR QUE TENDRA R R=0
LEER P,X,Y,Z P X Y Z R LEER P.X.Y.Z
R=P+Y 13 3 7 4 ___ R=((((P+Y)/2)–X)* Z )
R=R/2 20 4 10 2 ___ IMPRIMIR R
R=R–X 5 2 9 3 ___ FIN
R=R*Z
IMPRIMIR R
FIN
PRUEBA DE ESCRITORIO
SI P = 8 , X = 4, Y = 20 , Z = 3
En el primer calculo R = P + Y , R = 28, luego
En el segundo calculo R = R / 2 , R = 14, luego
En el tercer calculo R = R – X , R = 10, luego
En el ultimo calculo R = R * Z, R = 30 , que será el RESULTADO FINAL.
7) Introducir dos números, e imprimirlos.
Transferir el valor del primer número al segundo y viceversa.
Luego, imprimir nuevamente los dos números, una vez efectuada la transferencia de valores.
AUX Variable auxiliar, que se utiliza para almacenar en forma temporal el valor de M.
M,N Variables de entrada M N
INICIO
AUX = 0 Se inicializa AUX
LEER M.N Se ingresan valores M y N
IMPRIMIR M, N Se imprimen valores ingresados Paso 1 Paso 2(N a M)
AUX = M Se trasfiere M a AUX Se trasfiere Paso 3
M=N Luego, se trasfiere N a M M a AUX Se trasfiere
N = AUX Por último, AUX se trasfiere a N AUX a N
IMPRIMIR M, N Se imprimen valores nuevamente
FIN
PRUEBA DE ESCRITORIO
M = 20, N = 10 AUX
En la primera impresión se despliegan M y N tal como se
los definió, vale decir 20 y 10, respectivamente.
Luego, cuando se ejecuta la sentencia AUX = M, en la varia-
ble AUX se almacena 20, cuando se ejecuta la instrucción
M = N, se almacena 10 en la variable M, y por ultimo, cuando
se ejecuta la instrucción N = AUX, se transfiere a la varia-
ble N, el valor 20, con lo que se completa el proceso de
permutación de las variables.
OBSERVACION MUY IMPORTANTE :
En el presente algoritmo se ha recurrido al uso de un auxiliar, para almacenar en forma temporal, el valor de la primera
variable, para luego proceder a la transferencia del valor almacenado en el auxiliar, a la segunda variable.
Sin embargo, es posible hacer una trasferencia de valores de la primera variable a la segunda y viceversa, sin
necesidad de recurrir al uso de un auxiliar, lo cual habremos de demostrar en el algoritmo, que detallamos en la
siguiente página.
Esto debe tomarse como una mera curiosidad, como algo anecdótico, pues en la práctica normalmente no se utiliza
este procedimiento, pues la mayoría de los profesionales informáticos, recurre al uso de los auxiliares.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 14


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

8) Introducir seis números cualesquiera.


Sumar entre sí los dos primeros números, y los dos últimos números restarlos entre sí.
Ambos resultados a su vez, sumarlos entre sí, a este resultado multiplicarlo por el cuarto número, y luego a este
nuevo resultado, dividirlo por el tercer número.
A, B, C, D, E, F Variables de entrada
Z Variable de resultado
INICIO COMPLETE EL VALOR QUE TENDRA Z
Z=0 A B C D E F Z
LEER A,B,C,D,E,F 15 20 5 3 40 30 ___
Z= (((A+B) + (E–F)*D)/C) 40 30 3 2 50 15 ___
IMPRIMIR Z
FIN
PRUEBA DE ESCRITORIO
A= 10 B = 15 C=5 D=2 E = 15 F= 5
A+B Arrojará como resultado 25
E- F Arrojará como resultado 10
(A+B) +(E-F) Arrojará como resultado 35
((A+B) +(E-F) * D) Arrojará como resultado 70
(((A+B) +(E-F) * D)/C) Arrojará como resultado 14
BREVE BIOGRAFIA DE AL-KHOWARIZMI (PADRE DE LA ALGORITMIA)

FUENTE : Sitio http://es.geocities.com/fisicas/cientificos/matematicos/al_khowarizmi.htm

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

OTRA DEFINICIÓN DE ESTRUCTURAS DE SECUENCIA


Fuente: Sitio http://www.geocities.com/david_ees/Algoritmia/curso.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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 15


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

RESUMEN DEL CAPITULO


Se ha procedido a resolver ejercicios basados exclusivamente en estructuras lineales, para de esa forma permitir al
lector una acabada comprensión del concepto de “órdenes ejecutadas en secuencia”, pues todos los pseudocódigos
se van ejecutando en el mismo orden en que las instrucciones fueron escritas, al no utilizarse bifurcaciones
(estructuras de selección) ni procesos repetitivos (estructuras repetitivas).
Además, se han utilizado la mayoría de los operadores y operaciones matemáticas, con valores simulados a los
efectos de poder llevar a cabo pruebas de escritorio.
EJERCICIOS PROPUESTOS
(RESUELTOS EN EL APENDICE A)
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.
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.
3) Introducir dos números.
Determinar e imprimir el producto de los mismos.
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.
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
Z= Z * 2
Z= Z – X
Z= Z / R
IMPRIMIR Z
FIN
EL VALOR DE LA VARIABLE Z ES ______
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
A=A–B
B=A+B
IMPRIMIR A, B
FIN
EL VALOR DE A ES : _____
EL VALOR DE B ES : _____
7) 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 AUTORES. LIC. CESAR
T = 41 CALASTRA Y LIC.
T = T + 20
SILVANA DE CALASTRA
T=T–X
X=X*2 (EDICIÓN DE CORTESÍA)
T=T+X
IMPRIMIR T
FIN
EL VALOR DE T ES : _____
EJERCICIOS PROPUESTOS
( A SER RESUELTOS POR EL LECTOR )
1) Introducir un número que represente el lado de un hexágono.
Determinar e imprimir su perímetro, y para el efecto utilizar la fórmula correspondiente.
2) Introducir dos números que representen el lado y alto de un rectángulo.
Determinar e imprimir su perímetro y para el efecto aplicar la fórmula pertinente.
3) Introducir dos números.
Determinar e imprimir el cociente de los mismos.
4) Introducir cinco números.
Restar el cuarto con el quinto, a este resultado sumarle el primero, luego a este resultado dividirlo por el segundo
número, y por último a este resultado multiplicarlo por el tercer número.
Imprimir el resultado.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 16


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

 ESTRUCTURAS DE SELECCIÓN
SIMPLES
DOBLES
MULTIPLES
 AUXILIARES
 FUNCION ENT( )
 FUNCION MOD( )

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 17


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

“Educad a los niños y no será necesario castigar a los hombres”. Pitágoras

RESPUESTA A EJERCICIO MENTAL NRO. DOS


(AL DORSO DE INICIO DEL CAPITULO DOS)
Con 1001 sobrantes se pueden hacer 200 velas.

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

TÉCNICAS DE RESOLUCIÓN DE PROBLEMAS

FUENTE: Sitio http://www.algoritmia.net/

Clasificación de problemas

Los problemas matemáticos se pueden dividir en primera instancia en dos grupos:


* Problemas indecidibles: aquellos que no se pueden resolver mediante un algoritmo.
* Problemas decidibles: aquellos que cuentan al menos con un algoritmo para su cómputo.
Sin embargo, que un problema sea decidible no implica que se pueda encontrar su solución, pues muchos problemas que
disponen de algoritmos para su resolución son inabordables para un computador por el elevado número de operaciones
que hay que realizar para resolverlos. Esto permite separar los problemas decidibles en dos:
* intratables: aquellos para los que no es factible obtener su solución.
* tratables: aquellos para los que existe al menos un algoritmo capaz de resolverlo en un tiempo razonable.

INTRODUCCIÓN A LAS ESTRUCTURAS DE SELECCIÓN


FUENTE: Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm
En la solución de la mayoría de los problemas algorítmicos se requieren efectuar tomas de decisiones que conducen a
la ejecución de una o más acciones dependiendo de la verdad o falsedad de una o más condiciones. Como
consecuencia de esto se producen cambios en el flujo de control del programa. Dicho flujo de control implica rutas
que deben ser seleccionadas. Para esto, se utilizan ciertas estructuras de programación conocidas como estructuras
selectivas o estructuras de decisión.
Las estructuras selectivas o de selección se clasifican en:
Estructura de selección simple (SI).
Estructura de selección doble (SI – SINO
Estructura de selección múltiple (EN CASO - SEA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 18


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 19


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

3) Introducir cinco números cualesquiera al mismo tiempo.


Determinar e imprimir el mayor número de la serie.
En caso de existir más de una variable con el mismo valor numérico que corresponda al mayor, considerar el último
de ellos.
Z1, Z2, Z3 ,Z4 , Z5 Variables de entrada
MAY Auxiliar de Mayor
INICIO
MAY = 0
LEER Z1, Z2, Z3, Z4, Z5 QUE VALOR TENDRA MAY ?
MAY = Z1
SI Z2 >= MAY Z1 Z2 Z3 Z4 Z5 MAY
MAY = Z2
12 11 55 41 55
FINSI
14 65 10 16 18
SI Z3 >= MAY
MAY = Z3 99 13 16 55 41
FINSI 88 17 21 74 88
SI Z4 >= MAY
MAY = Z4 LA ESTRATEGIA UTILIZADA ES MUY SIMILAR AL DEL
FINSI EJERCICIO ANTERIOR, SOLO QUE EN ESTE CASO DEBE
SI Z5 >= MAY CAMBIARSE EL SIGNO NECESARIAMENTE Y DEBE
MAY = Z5 UTILIZARSE EL OPERADOR >= PARA PODER CAPTURAR EL
FINSI ULTIMO MAYOR, PUES SI SOLO SE EMPLEA >, SE CAPTURA
IMPRIMIR MAY AL PRIMER MAYO NADA MAS Y NO AL SEGUNDO.
FIN
OBSERVACION
Para la prueba de escritorio, el procedimiento es prácticamente similar al anterior.
Sin embargo, en este caso se está utilizando la salida >= (mayor o igual), pues solo de esa forma se capturará el
último número mayor en caso de haber mas de un mismo número mayor.
Por ejemplo : Si el número mayor es el valor 75, y lo almacenamos en la variable Z2 y Z5, cuando se haga la
comparación Z2 >= MAY, la variable auxiliar MAY, capturará el valor 75, y posteriormente cuando se efectúa la
comparación Z5 >= MAY, el nuevo valor de MAY también será 75, lo cual se tomará en este caso por el valor de Z5,
pues si bien la salida por > no se cumple, sin embargo se cumple la salida por = (igual).
4) Introducir tres números cualesquiera al mismo tiempo.
Ordenarlos en forma secuencial ascendente y luego imprimirlos.
A, B, C Variables de entrada
AUX Auxiliar definido para almacenar en forma temporal valores
INICIO
AUX = 0
LEER A, B, C DADO LOS SIGUIENTES VALORES INTRODUCIDOS
SI A > B COMO QUEDARAN A,B, Y C, UNA VEZ ORDENADOS?
AUX = A
A = B A B C
B = AUX A B C
31 55 12
FINSI 99 15 88
SI A > C 45 95 55
AUX = A 42 64 85
A = C
C = AUX
FINSI
SI B > C LA ESTRATEGIA CONSISTE EN HACER COMPARACIONES
AUX = B SUCESIVAS Y ADEMAS SE DEBE "EMPUJAR" AL MENOR EN LA
B = C PRIMERA CASILLA (A), AL NRO. MEDIO EN LA CASILLA B Y
C = AUX LOGICAMENTE AL MAYOR EN LA CASILLA C.
FINSI
IMPRIMIR A, B, C
FIN
PRUEBA DE ESCRITORIO
Para A = 15, B = 12, C = 9
En la primera comparación, A > B, se produce un traspaso de valores de la variable A a la variable B y viceversa, por
lo tanto al final de dicha evaluación el valor de A es 12 y el de B es 15.
Luego, en la segunda comparación A > C, en realidad se pregunta si el valor de la variable A que ahora es 12, es
mayor al de la variable C, que tiene almacenado el valor 9, y como el valor de A (12) es mayor al de la variable C (9),
entonces nuevamente se produce una permutación de valores, y finalmente el valor de A en este momento es 9 y el
valor de C es 12.
Por último, se compara B con C, y como el valor de B en este momento es 15 y el valor de la variable C es 12,
entonces se debe hacer una permutación de valores y por consiguiente el valor de B es 12 y el de C es 15, y de esa
manera los números quedan ordenados secuencialmente de forma ascendente.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 20


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

5) Introducir un número entero..


Si el mismo es positivo, determinar si el es par o no, e imprimir el mensaje correspondiente.
En caso de no ser positivo, imprimir el mensaje “NUMERO ERRONEO”.
A Variable de entrada
INICIO
LEER A QUE MENSAJE SE IMPRIMIRA PARA
SI A > 0 LOS SIGUIENTES VALORES DE A ?
SI A / 2 = ENT ( A / 2) A MENSAJE A IMPRIMIRSE
IMPRIMIR “EL NUMERO “ A “ES PAR” 15 EL NUMERO ES
SINO 21 EL NUMERO ES
IMPRIMIR “EL NUMERO “ A “ES IMPAR” 24 EL NUMERO ES
FINSI 12 EL NUMERO ES
SINO 13 EL NUMERO ES
IMPRIMIR “NUMERO ERRONEO”
FINSI
FIN
PRUEBA DE ESCRITORIO
La función ENT, es una función interna que toma la parte entera de la variable o constante, lo cual a su vez, no debe
confundirse con redondeo, pues si una variable tiene almacenada la constante 8.98, bajo la función ENT, se
devolverá el valor 8 y no el valor 9.
En nuestro caso particular, se debe tomar la parte entera de la variable dividida por dos, pues por definición número
par es aquel que es divisible por dos.
En base a lo afirmado en el párrafo anterior, si deseáramos determinar si un número es múltiplo de cinco, la pregunta
sería : SI A / 5 = ENT ( A / 5).
SI A = 10, la primera evaluación A > 0, es verdadera y por lo tanto el pseudocódigo, ejecuta la siguiente selección SI
A/2 = ENT (A/2), y A/2=5
ENT ( A / 2 ) = 5
Por consiguiente al coincidir el resultado de las dos operaciones,
concluimos que el número en cuestión es par, y se ejecutará la orden
IMPRIMIR “EL NUMERO “ A “ES PAR”.
Para A = 11, también se cumple la primera evaluación A > 0, y el programa se bifurca hacia la selección SI A/2 = ENT
(A/2),
A / 2 = 5.5
ENT ( A / 2 ) = 5
El resultado de ambas operaciones no coincide, y por lo tanto el pro-
grama se bifurca hacia la instrucción :
IMPRIMIR “EL NUMERO “ A “ES IMPAR”
Otra alternativa que se puede utilizar para determinar si un número es par o impar, es recurriendo a la función MOD,
que se encarga de devolver el valor del resto de una división.
En nuestro caso particular el número en cuestión debe dividirse por dos, y si el resto de dicha división es cero,
Obviamente el número debe ser par.
De lo contrario, el número necesariamente debe ser impar.
He aquí, el pseudocódigo pertinente : QUE VALORES DEVOLVERA LA
INICIO FUNCION MOD, PARA LOS
LEER A SIGUIENTES VALORES DE A ?
SI A > 0 A A MOD 2
SI (A MOD 2) = 0 12
IMPRIMIR “EL NUMERO” A “ES PAR” 13
SINO 31
IMPRIMIR “EL NUMERO” A “ES IMPAR” 51
FINSI 60
SINO
IMPRIMIR “NUMERO ERRONEO”
FINSI
FIN
PRUEBA DE ESCRITORIO
Para A = 10
El resto de A / 2, vale decir 10 / 2 es cero, por lo tanto el programa se bifurcará hacia la orden IMPRIMIR “EL
NUMERO” A “ES PAR”.
Para A = 11
El resto de A / 2, o sea 11 / 2, es uno, y por ende en el programa no se cumple la condición SI ( A MOD 2 = 0 ), por
lo cual el programa se bifurca en dirección a la orden IMPRIMIR “EL NUMERO” A “ES IMPAR”.
Una tercera alternativa para determinar paridad de números, es utilizar la técnica de restas sucesivas, que consiste
en restar en forma sucesiva la constante dos al número hasta que dicho numero llegue a cero o hasta uno,
Si el número en cuestión llega al valor cero, entonces podemos afirmar que es par.
De lo contrario, el número es impar, evidentemente.
Esta metodología será desarrollada mas adelante en el presente material, cuando se estudie lo inherente a
contadores y acumuladores.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 21


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

6) Introducir un número cualquiera.


Si el número es mayor a cincuenta, sumarle la constante diez e imprimir el resultado.
De lo contrario, sumarle al número la constante cinco e imprimir el resultado.
K Variable de Entrada
R Variable de Resultado
ALTERNATIVA UNO ALTERNATIVA DOS

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.

SI X = 10 , el resultado será 30, pues no se cumple la primera evaluación


X > 30 y el programa se bifurca y ejecuta la instrucción S = X + 20.

SI X = 60 , el resultado será 66, pues se cumple la primera evaluación


X > 30 pero no se cumple la condición X < 50, y por lo tanto el pro-
grama ejecuta la sentencia S = X + 6.

SI X = 35 , el resultado será 40, pues se cumple la primera evaluación


X > 30 y también la segunda X < 50, y se ejecuta la instrucción
S = X + 5

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 22


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

BREVE BIOGRAFIA DE EUCLIDES (OTRO DE LOS PADRES DE LA ALGORITMIA)

FUENTE: Sitio http://es.geocities.com/eucliteam/bibliografia_de_Euclides.html


Euclides (fl. 300 a.C.), matemático griego, cuya obra principal, Elementos de geometría, es un extenso tratado
de matemáticas en 13 volúmenes sobre materias tales como geometría plana, proporciones en general,
propiedades de los números, magnitudes inconmensurables y geometría del espacio. Probablemente estudió en
Atenas con discípulos de Platón. Enseñó geometría en Alejandría y allí fundó una escuela de matemáticas. Los
Cálculos (una colección de teoremas geométricos), los Fenómenos (una descripción del firmamento), la Óptica, la
División del canon (un estudio matemático de la música) y otros libros se han atribuido durante mucho tiempo a
Euclides. Sin embargo, la mayoría de los historiadores cree que alguna o todas estas obras (aparte de los
Elementos) se le han adjudicado erróneamente. Los historiadores también cuestionan la originalidad de algunas
de sus aportaciones. Probablemente las secciones geométricas de los Elementos fueron en un principio una
revisión de las obras de matemáticos anteriores, como Eudoxo, pero se considera que Euclides hizo diversos
descubrimientos en la teoría de números.
Los Elementos de Euclides se utilizaron como texto durante 2.000 años, e incluso hoy, una versión modificada de
sus primeros libros constituye la base de la enseñanza de la geometría plana en las escuelas secundarias. La
primera edición impresa de las obras de Euclides que apareció en Venecia en 1482, fue una traducción del árabe
al latín.
OTROS SITIOS EN INTERNET DONDE HALLARAS INFORMACION SOBRE EL GRAN EUCLIDES
1) http://www.mat.usach.cl/histmat/html/eucl.html
2) http://almez.pntic.mec.es/~agos0000/Euclides.html
3) http://centros5.pntic.mec.es/ies.ortega.y.rubio/Mathis/Euclides/euclides.htm
OTRA DEFINICIÓN DE ESTRUCTURAS DE SELECCIÓN SIMPLE
FUENTE: Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm
En la estructura de selección simple SI, evalúa una condición lógica y:
Si la condición es verdadera se ejecuta la acción A. La acción A puede ser una acción simple (una sola acción) o una
acción compuesta (un conjunto de acciones). Si la condición es falsa, no se hace nada.

RESUMEN DEL CAPITULO

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.

Como se sabe, a su vez las estructuras de selección se subdividen básicamente en:

 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( )

En la mayoría de los lenguajes se lo utiliza de esta forma : INT ( ).


Sin embargo en lenguaje C o C++, int se utiliza para inicializar variables numéricas enteras.
La función ENT( ), se encarga de tomar la parte entera de una variable o del resultado de una operación matemática.
Se lo utilizó en el ejercicio seis, del presente capítulo, para determinar si un número positivo es par o no.
FUNCION MOD( )

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.

En lenguaje C++, equivale a la función fmod.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 23


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 24


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

 OPERADORES LÓGICOS
O
Y
NO

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 25


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

"Aprender sin pensar es inútil. Pensar sin aprender, peligroso". Confucio.

RESPUESTA A EJERCICIO MENTAL NRO. TRES


(AL DORSO DE INICIO DEL CAPITULO TRES)
Aurora tiene 16 años, Aura tiene 32 y Aurelia tiene 28.
EJERCICIO MENTAL NRO. CUATRO

 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)

OTRA DEFINICIÓN DE ESTRUCTURAS DE SELECCIÓN DOBLE Y OPERADORES LÒGICOS


FUENTE: Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm
La estructura de selección doble SI - SINO evalúa una condición lógica y:
Si la condición es verdadera, ejecuta la acción A
Si la condición es falsa, ejecuta la acción B.
Tanto la acción A como la acción B pueden ser acciones simples (una sóla acción) o acciones compuestas (un conjunto de
acciones).
Por ejemplo, si se desea saber si una persona es mayor o menor de edad, podemos escribir:
SI( edad >= 18 )
IMPRIMIR "Mayor de edad"
SINO
IMPRIMIR "Menor de edad"
Esto imprime "Mayor de edad" si la persona tiene 18 años ó más e imprime "Menor de edad" si la persona tiene menos de
18 años. En cualquiera de los casos, después de efectuar la impresión, se ejecutará la primera instrucción que sigue a la
estructura SI...SINO.
OPERADORES LÓGICOS Y RELACIONALES
Para expresar condiciones como en el caso de las condiciones de las estructuras selectivas, se requieren de operadores
relacionales y operadores lógicos.. Dichas condiciones solo puede tomar uno de los siguientes valores: verdarero o falso.
Ejemplo :- En una playa de estacionamiento cobran S/. 2.5 por hora o fracción. Diseñe un algoritmo que determine cuanto
debe pagar un cliente por el estacionamiento de su vehículo, conociendo el tiempo de estacionamiento en horas y minutos .
Algoritmo
SELECCIÓN DOBLE EN CASCADA
INICIO SI( condición C1 )
ENTERO horas, minutos acción A1
REAL pago SINO
SI( condición C2 )
LEER horas, minutos
acción A2
SI( minutos > 0 ) SINO
horas = horas + 1 SI( condición C3 )
pago = horas * 2.5
acción A3
IMPRIMIR pago .
FIN .
.
SELECCIÓN DOBLE EN CASCADA
SINO
Se dice que varias estructuras de selección doble están en cascada cuando la instrucción que sigue a un SINO es otro SI a
excepción del último SINO. No hay límite en cuanto al número acción An
de estructuras de selección doble que pueden ponerse en
cascada.
FUNCIONAMIENTO
Las condiciones se evalúan en orden descendente pasando de una a otra si la anterior resulta falsa. En el momento que se
encuentra una condición verdadera, se efectúa la acción correspondiente a dicha condición y se corta el resto de la
estructura. Si todas las condiciones resultan falsas se efectúa la acción correspondiente al último SINO

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 26


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

EJERCICIOS CON OPERADORES LOGICOS


Esta herramienta es muy importante para unir dos o más proposiciones a través de una estructura de selección.
En algunos casos en lugar de definir estructuras de selección múltiple, los ejercicios pueden resolverse sin necesidad
de utilizarlos, pues basta con utilizar el operador lógico Y.
Para ser más claro, el siguiente esquema:
SI ( X > 500 ) PUEDE SER SI (X > 500) Y (X < 800)
SI ( X < 800 ) PRESENTADO R = X * 10
R = X * 10 DE LA SIGUIENTE SINO
FINSI FORMA IMPRIMIR “ERROR”
SINO FINSI
IMPRIMIR “ERROR”
FINSI
1) Introducir un número cualquiera.
Si el mismo es mayor a cuarenta o menor a veinte, multiplicarlo por la constante tres e imprimir dicho resultado.
INICIO
R=0 QUE VALOR TENDRA R? VARIABLES
LEER K K R K Variable de Entrada
SI ( K > 40 ) O ( K < 20) 50 ___ R Variable de Resultado
R=K* 3 30 ___
IMPRIMIR R 10 ___
FINSI
FIN
PRUEBA DE ESCRITORIO
El operador lógico utilizado en este caso es el operador lógico “O”, y en este caso basta con que una de las dos
condiciones se cumpla o las dos condiciones se cumplan, para que la salida adquiera el valor “V”.
Si el valor de K = 50, la primera condición (K>40) se cumple, no así la segunda condición evaluada (K<20),
pero la salida es V(erdadera) pues la primera condición se cumple, por lo tanto se ejecutará la orden R = K * 3, y
luego se ejecutará la orden IMPRIMIR R, y el valor de R, será finalmente 150, lo cual será desplegado en
pantalla.
Si el valor de K = 15, la primera condición (K>40) no se cumple, sin embargo la segunda condición evaluada
(K<20) se cumple, pero la salida es nuevamente V(erdadera), pues si bien la primera condición no se cumple, la
segunda se cumple como ya lo hemos hecho notar, por lo tanto se ejecutará la orden R = K * 3, y luego se
ejecutará la orden IMPRIMIR R, y el valor de R, será finalmente 45, lo cual será desplegado en pantalla.
Si el valor de K = 30, la primera condición (K>40) no se cumple, la segunda condición evaluada (K<20)
tampoco se cumple, por lo tanto la salida es F(alsa), pues la primera condición no se cumple, y la segunda
tampoco, como ya lo hemos hecho notar, por consiguiente el programa finalizará directamente, pues no se ha
previsto ninguna sentencia cuando la salida de la condición sea F(alsa).
OBSERVACION
Todo número comprendido dentro del rango 20 inclusive y 40 inclusive, producirá una salida F(alsa).
2) Introducir un número cualquiera.
Si el mismo es menor a treinta o mayor a sesenta, multiplicarlo por la constante tres e imprimir dicho resultado.
De lo contrario, sumarle quince al número e imprimir el resultado.
R Variable de Resultado K Variable de Entrada
ALTERNATIVA UNO ALTERNATIVA DOS
INICIO INICIO
R=0 R=0
LEER K QUE VALOR TENDRA R ? LEER K
SI ( K < 30 ) O ( K > 60 ) K R SI ( K < 30 ) O ( K > 60)
R=K* 3 40 ___ R=K*3
IMPRIMIR R 20 ___ SINO
SINO 70 ___ R = K + 15
R = K + 15 50 ___ FINSI
IMPRIMIR R IMPRIMIR R
FINSI FIN
FIN
PRUEBA DE ESCRITORIO
SI K = 45, no se cumple la primera condición (K < 30) ni la segunda (K > 60), por lo tanto se ejecuta instrucción
R = K + 15, y luego se imprime el valor de R, que es 60.
Si K = 5, se cumple la primera condición ( K < 30 ), no así la segunda que efectúa la siguiente comparación, ( K
> 60 ), por lo tanto se ejecuta la orden R = K * 3 y luego se imprime la variable R, cuyo valor final es 15.
Si K = 70, no se cumple la primera condición ( K < 30 ), sin embargo se cumple la segunda condición ( K > 60 ),
por lo tanto se ejecuta seguidamente la orden R = K * 3, y se imprime el resultado que es 210:
Si K = 50, se ejecutará la orden R = K + 15, y se imprimirá 65 que es el valor final de la variable R.
OBSERVACION
Todo número comprendido dentro del rango 30 inclusive y 60 inclusive, producirá una salida F(alsa).
Además, debemos hacer notar que, teniendo en cuenta la forma en que se ha planteado el presente
pseudocódigo, ningún número puede la cumplir las dos condiciones evaluadas a la vez, pues no es posible que
ningún número que cumpla la condición de ser menor a treinta y mayor a sesenta a la vez.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 27


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

3) Introducir un numero cualquiera.


Si el mismo es mayor a cincuenta y menor a noventa, sumarle la cons-
tante quince y luego imprimir el resultado.
De lo contrario, restarle diez e imprimir el resultado.
INICIO VARIABLES QUE VALOR TENDRA S?
S=0 S Variable de resultado M S
LEER M M Variable de entrada 40 ___
SI ( M > 50 ) Y ( M < 90 ) 60 ___
S = M + 15 95 ___
SINO 70 ___
S = M – 10 10 ___
FINSI
IMPRIMIR S
FIN
PRUEBA DE ESCRITORIO
Si M = 100, se cumple la primera condición ( M > 50 ), sin embargo la segunda condición ( M < 90 ), no se
cumple; por lo tanto la salida será F(alsa), pues cuando se utiliza el operador lógico Y, ambas condiciones
deben ser verdaderas, para que la salida sea V(erdadera), por consiguiente se ejecutará la orden S = M - 10,
y el valor final de S será 90.
Si M = 65, la primera condición ( M > 50 ), se cumple; la segunda condición ( M < 90 ), también se cumple,
por lo tanto se ejecuta la orden que corresponde a salida por V(erdadero), y se ejecuta la orden S = M + 15,
y el valor final de la variable S, será 80.
Si M = 35, no se cumple la primera condición ( M > 50 ), la segunda condición ( M < 90 ), se cumple; sin
embargo la salida será por F(also), y se ejecutará la sentencia S = M – 10, por lo tanto el valor de S, será
25.
SI M = 55, el valor de S, será 70.
Si M = 120, el valor de S, será 110.
OBSERVACION
Todos los números comprendidos entre los valores 51 inclusive y 89, inclusive cumplirán las dos condiciones
evaluadas en el presente pseudocódigo.
Por consiguiente, los demás números fuera de este rango, producirán una salida F(alsa).
4) Introducir dos números cualesquiera.
Si el primero de ellos es menor a veinte o mayor a cuarenta, y el segundo de ellos es menor a cien o mayor a
ciento treinta, sumar entre si ambos números e imprimir el resultado.
De lo contrario, restar entre si ambos números e imprimir el resultado
VARIABLES
P Variable de resultado
Z, L Variables de entrada
INICIO
P=0 QUE VALOR TENDRA P?
LEER Z, L Z L P
30 150 ___
SI ( (Z<20) O (Z>40) ) Y ( ( L <100) O (L>130) )
50 60 ___
P=Z+L
SINO 60 110 ___
10 75 ___
P=Z–L
FINSI 15 115 ___
IMPRIMIR P
FIN
PRUEBA DE ESCRITORIO
SI Z = 60 y L = 150
La primera evaluación ( (Z<20) O (Z>40) ), es V(erdadera).
La segunda evaluación ( (L<100) O (L>130) ), es V(erdadera).
Ambas evaluaciones están a su vez unidas por el operador lógico Y, y al ser verdaderas las dos evaluaciones,
entonces se ejecuta la instrucción pertinente cual es P = Z + L, y el valor de P es 210.
SI Z = 30 y L = 10

La primera evaluación ( (Z<20) O (Z>40) ), es F(alsa).


La segunda evaluación ( (L<100) O (L>130) ), es V(erdadera).
Ambas evaluaciones están a su vez unidas por el operador lógico Y, y al ser falsa la primera evaluación Y
verdadera la segunda, entonces se ejecuta la instrucción P = Z - L, y el valor de P es 20.

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 28


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

5) Introducir dos números cualesquiera.


Si el primero de ellos es mayor a veinte y menor a cuarenta, o el segundo de ellos es mayor a cien y menor a
ciento treinta, sumar entre si ambos números e imprimir el resultado.
De lo contrario, restar entre si ambos números e imprimir el resultado
VARIABLES
P Variable de resultado
Z, L Variables de entrada QUE VALOR TENDRA P ?
INICIO Z L P
P=0 10 85 ___
LEER Z, L 30 50 ___
SI ( (Z>20) Y (Z<40) ) O ( ( L >100) Y (L<130) ) 10 110 ___
P=Z+L 15 75 ___
SINO 35 115 ___
P=Z–L
FINSI
IMPRIMIR P
FIN
PRUEBA DE ESCRITORIO
SI Z = 60 y L = 150
La primera evaluación ( (Z>20) Y (Z<40) ), es F(alsa).
La segunda evaluación ( (L>100) Y (L<130) ), es F(alsa).
Ambas evaluaciones están a su vez unidas por el operador lógico O, y al ser falsas las dos evaluaciones,
entonces se ejecuta la instrucción pertinente cual es P = Z - L, y el valor de P es - 90.
SI Z = 30 y L = 10
La primera evaluación ( (Z>20) Y (Z<40) ), es V(erdadera).
La segunda evaluación ( (L>100) Y (L<130) ), es F(alsa).
Ambas evaluaciones están a su vez unidas por el operador lógico O, y al ser verdadera la primera evaluación Y
falsa la segunda, entonces se ejecuta la instrucción P = Z + L, y el valor de P es 40.
SI Z = 35 y L = 110
La primera evaluación ( (Z>20) Y (Z<40) ), es V(erdadera).
La segunda evaluación ( (L>100) Y (L<130) ), es V(erdadera).
Ambas evaluaciones están a su vez unidas por el operador lógico O, y al ser verdadera la primera evaluación Y
verdadera la segunda, entonces se ejecuta la instrucción P = Z + L, y el valor de P es 145.
SI Z = 80 y L = 200
La primera evaluación ( (Z>20) Y (Z<40) ), es F(alsa).
La segunda evaluación ( (L>100) Y (L<130) ), es F(alsa).
Ambas evaluaciones son F(alsas), por lo tanto se ejecuta la orden correspondiente, cual es P = Z - L, y el valor
de P es –120.
6) Hacer un seguimiento del siguiente pseudocódigo, y luego imprimir el valor que almacenará la variable P, en el
momento de la impresión.
INICIO
P=0
A = 20
B = 60
SI ( ( A / 5 ) = ENT ( A / 5 ) ) Y ( ( B MOD 2 = 0 )
P=A+B
P = P * 10
SINO
P=B–A
P=P*5
FINSI AUTORES. LIC. CESAR
P=P*2 CALASTRA Y LIC.
P = P – 10 SILVANA DE CALASTRA
SI ( P > 10 ) Y ( P < 100 ) (EDICIÓN DE CORTESÍA)
A = A – 10
P=P–A
SINO
B = B – 15
P=P+B
FINSI
IMPRIMIR P
FIN

QUE VALOR TENDRA LA VARIABLE P, EN EL MOMENTO DE LA IMPRESIÓN ?

P TENDRA EL VALOR : ____________

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 29


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

7) Introducir dos números cualesquiera.


Sumarlos entre si.
Luego si dicha suma es mayor 50, y el primer número introducido es mayor a 10 y el segundo número
introducido es múltiplo de tres, multiplicar el segundo número por dos e imprimir el resultado.
En caso contrario, multiplicar el primer número por cinco e imprimir el resultado.
M, N Variables de Entrada
T Variable de Resultado

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.

8) Introducir dos números cualesquiera.


Sumarlos entre si.
Luego si dicha suma es mayor 50, o el primer número introducido es mayor a 10 o el segundo número introducido es
múltiplo de tres, multiplicar el segundo número por dos e imprimir el resultado.
En caso contrario, multiplicar el primer número por cinco e imprimir el resultado.
M, N Variables de Entrada
T Variable de Resultado

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 30


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

RESUMEN DEL CAPITULO


El operador lógico O, es bastante flexible pues basta con que una de las condiciones evaluadas sea verdadera, para
que se produzca una salida verdadera.
En el lenguaje común, sería como decir : SI EL ARTICULO QUE DESEO COMPRAR ES BARATO O TIENE SOLO
5% DE DESCUENTO, ME LO COMPRO DE TODOS MODOS.
Basta con que una de las dos condiciones se cumplan, para que compre el artículo al cual hago referencia.
Sin embargo el operador lógico Y, es mucho más rígido pues basta con que una de las condiciones evaluadas sea
falsa, para que se produzca una salida verdadera.
En un español coloquial si dijéramos : SI ES DOMINGO Y NO LLUEVE, IRE A LA CANCHA A DISFRUTAR DEL
PARTIDO.
En este caso las dos condiciones deben cumplirse, es decir deber ser domingo y además no llover para poder llevar a
la práctica el plan de asistir a la cancha.
EJERCICIOS PROPUESTOS
( RESUELTOS EN EL APENDICE A )
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.
2) Introducir tres números cualesquiera.
Si el primero de ellos es mayor a cien y menor a doscientos, multiplicar el segundo número por dos e imprimir el
resultado.
De lo contrario, multiplicar el tercer número por tres e imprimir el resultado.
3) Introducir tres números cualesquiera.
Si el tercero es mayor a diez y menor a cuarenta y el segundo número es mayor a sesenta y menor a oc henta,
elevar el primer número al cuadrado e Imprimir el resultado.
De lo contrario, elevar el primer número a la tercera potencia e imprimir el resultado.
4) Introducir dos números cualesquiera.
Si el primero de ellos es par y el segundo es mayor a cincuenta, sumar entre si ambos números y luego imprimir
el resultado.
De lo contrario, restar entre si ambos números y luego imprimir el resultado.
5) Introducir dos números cualesquiera.
Si el segundo de ellos es múltiplo de tres, y el primero es impar, multiplicar entre si ambos números e imprimir el
resultado.
En caso contrario, sumar entre si ambos números e imprimir el resultado.
6) Hacer un seguimiento del siguiente pseudocódigo, y luego imprimir el valor que almacenará la variable P, en el
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=P*5
FINSI AUTORES. LIC. CESAR
P=P*3 CALASTRA Y LIC.
P = P – 15 SILVANA DE CALASTRA
SI ( P > 20 ) Y ( P < 110 )
(EDICIÓN DE CORTESÍA)
A = A – 15
P=P–A
SINO
B = B – 20
P=P+B
FINSI
IMPRIMIR P
FIN

QUE VALOR TENDRA LA VARIABLE P, EN EL MOMENTO DE LA IMPRESIÓN ?

P TENDRA EL VALOR : ____________

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 31


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

EJERCICIOS PROPUESTOS
( A SER RESUELTOS POR EL LECTOR )

1) Introducir dos números cualesquiera.


Si el primero de ellos es mayor a veinte y menor a noventa y cinco, elevar el segundo número a la cuarta
potencia e imprimir el resultado.
2) Introducir tres números cualesquiera.
Si el primero de ellos es mayor a setenta y menor a ciento treinta, multiplicar el segundo número por tres e
imprimir el resultado.
De lo contrario, multiplicar el tercer número por cinco e imprimir el resultado.
3) Introducir tres números cualesquiera.
Si el tercero es mayor a doscientos y menor a trescientos y el segundo número es mayor a setenta y menor a
noventa y cinco, elevar el primer número al cuadrado e Imprimir el resultado.
De lo contrario, elevar el primer número a la tercera potencia e imprimir el resultado.
4) Introducir dos números cualesquiera.
Si el primero de ellos es impar y el segundo es mayor a cien, restar entre si ambos números y luego imprimir el
resultado.
De lo contrario, dividir entre si ambos números y luego imprimir el resultado.
5) Introducir dos números cualesquiera.
Si el segundo de ellos es múltiplo de cuatro, y el primero es par, sumar entre si ambos números e imprimir el
resultado.
En caso contrario, restar entre si ambos números e imprimir el resultado.

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 32


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

 CONTADOR MANUAL
 CONTADOR AUTOMATICO
 ESTRUCTURA PARA - FIN PARA
 ESTRUCTURA DESDE – FINDESDE
 ESTRUCTURA REPETIR – HASTA
 ESTRUCTURA MIENTRAS – FINMIENTRAS
 ESTRUCTURA HACER - MIENTRAS

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 33


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

“Exígete mucho a ti mismo y espera poco de los demás. Así te ahorrarás


disgustos" . Confucio.

RESPUESTA A EJERCICIO MENTAL NRO. CUATRO


(AL DORSO DE INICIO DEL CAPITULO CUATRO)

Hay cuatro lobos y un perro.


Si el primero es un perro, entonces el segundo debe ser también un perro y el tercero un lobo.
Entonces el cuarto debe ser un perro y el quinto un lobo, pero éste diría la verdad sobre el primero, así
que se contradice. Por lo tanto el primero es un lobo, así que el segundo es un lobo y el tercero un
perro. Por lo tanto el cuarto y el quinto son también lobos.
EJERCICIO MENTAL NRO. CINCO

 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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 34


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

PARA Z = 2 HASTA 20 INCREMENTO 2

(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.

Ejemplo : EL ACUMULADOR AC SE ENCARGA DE IR


PARA C = 1 HASTA 10 SUMANDO LOS NUMEROS X LEIDOS, Y AL FINAL
LEER X DEL CICLO, CONTENDRA LA SUMATORIA TOTAL DE
AC = AC + X LOS MISMOS.
FINPARA
EJERCICIOS DE APLICACION

1) Introducir ocho números cualesquiera de uno en uno.


Al final imprimir la suma total de los ocho números.
SEGMENTO DE PROGRAMA
X Variable de Entrada QUE SE REPITE 8 VECES
AC Acumulador
C Contador que controla que se introduzcan los ocho números

ALTERNATIVA UNO ALTERNATIVA DOS


QUE VALOR TENDRA AC?
INICIO INICIO X C AC
AC = 0 AC = 0 5
C=0 C=0 7
2
MIENTRAS C <> 8 HACER 9
LEER X LEER X 4
C=C+1 C=C+1 3
AC = AC + X AC = AC + X 8
FINMIENTRAS MIENTRAS C <> 8 6

IMPRIMIR AC IMPRIMIR AC
FIN FIN AUTORES. LIC. CESAR
CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 35


ALGORITMIA BASICA FUNDAMENTAL-EDICION 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

INICIO SEGMENTO DE PROGRAMA QUE SE


AC = 0 REPITE 8 VECES

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 36


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

2) Introducir siete números cualesquiera de uno en uno.


Determinar e imprimir suma de números positivos.
X Variable de Entrada
AC Acumulador SEGMENTO DE PROGRAMA QUE SE
REPITE 7 VECES
C Contador que controla que se introduzcan los siete números

ALTERNATIVA UNO ALTERNATIVA DOS

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

INICIO SEGMENTO DE PROGRAMA QUE


AC = 0 SE REPITE 7 VECES
C=0

REPETIR QUE VALOR TENDRA AC?


LEER X X C AC
C=C+1 18
Si X > 0
4
AC = AC + X
-41
FINSI
20
HASTA C = 7
-55
IMPRIMIR AC 12
FIN 9

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 37


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

ALTERNATIVA CUATRO

SEGMENTO DE PROGRAMA QUE SE


REPITE 7 VECES
INICIO
AC = 0

PARA C = 1 HASTA 7 QUE VALOR TENDRA AC?


LEER X X C AC
SI X > 0 50
AC = AC + X 10
FINSI -90
FINPARA -14
20
IMPRIMIR AC 15
FIN 30
3) Introducir siete números cualesquiera de uno en uno.
Determinar e imprimir suma y cantidad de números negativos.
X Variable de Entrada SEGMENTO DE PROGRAMA
AC Acumulador QUE SE REPITE 7 VECES
C Contador que controla que se introduzcan los siete números
CN Contador de números negativos
ALTERNATIVA UNO ALTERNATIVA DOS

INICIO INICIO
AC = 0 AC = 0
C =0 C=0
CN = 0 CN = 0

MIENTRAS C <> 7 HACER


LEER X LEER X
C=C+1 C=C+1
Si X < 0 SI X < 0
AC = AC + X AC = AC + X
CN = CN + 1 CN = CN + 1
FINSI FINSI
FINMIENTRAS MIENTRAS C <> 7

IMPRIMIR AC, CN IMPRIMIR AC, CN


FIN FIN

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).

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 38


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

ALTERNATIVA TRES

INICIO SEGMENTO DE PROGRAMA QUE


AC = 0 SE REPITE 7 VECES
C =0
CN = 0

REPETIR QUE VALOR TENDRA N AC Y CN ?


LEER X X C CN AC
C=C+1 50
Si X < 0 10
AC = AC + X -90
CN = CN + 1 -14
FINSI 20
HASTA C = 7 -15
30
IMPRIMIR AC, CN
FIN
ALTERNATIVA CUATRO
INICIO
AC = 0
CN = 0 SEGMENTO DE PROGRAMA QUE SE REPITE 7 VECES

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

MIENTRAS C <> 10 HACER


LEER X LEER X
C=C+1 C=C+1
Si (X MOD 2) = 0 SI (X MOD 2 ) = 0
SP = SP + X SP = SP + X
FINSI FINSI
FINMIENTRAS MIENTRAS C <> 10

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 39


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

INICIO SEGMENTO DE PROGRAMA QUE


SP = 0 SE REPITE 10 VECES
C =0

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 40


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

QUE VALOR TENDRA N C Y SP?


QUE VALOR TENDRA C Y SP?
X C SP
10
X C SP
21
9
23 5
14 11
12 8
31 4
41 91
16 50
51 17
61 71
95
C VALDRA : ____ C VALDRA : ____
SP VALDRA : ____ SP VALDRA : ____

QUE VALOR TENDRA N C Y SP?


AUTORES. LIC. CESAR
CALASTRA Y LIC.
X C SP
SILVANA DE CALASTRA
41
31 (EDICIÓN DE CORTESÍA)
51
100
200
201
501
300
401
100

C VALDRA : ____
SP VALDRA : ____

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 41


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

5) Introducir diez números cualesquiera de uno en uno.


EVALUAR EL VALOR DE X MOD 2, Y
Determinar e imprimir cantidad de números impares..
LUEGO DETERMINAR EL VALOR DE CI
X Variable de Entrada
CI Cantidad de números impares C X X MOD 2 CI
C Contador que controla que se introduzcan los diez números 5
6
ALTERNATIVA UNO ALTERNATIVA DOS 17
10
INICIO INICIO 11
C =0 C=0 8
CI = 0 CI = 0 21
MIENTRAS C <> 10 HACER 14
LEER X LEER X 19
C=C+1 C=C+1 30
Si (X MOD 2) <> 0 SI (X MOD 2 ) <> 0
CI = CI +1 CI = CI + 1
FINSI FINSI
FINMIENTRAS MIENTRAS C <> 10
IMPRIMIR CI IMPRIMIR CI
FIN FIN
PRUEBA DE ESCRITORIO
X ( X MOD 2 ) C CI

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

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 42


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

EVALUAR EL VALOR DE X MOD 2, Y


LUEGO DETERMINAR EL VALOR DE CI
ALTERNATIVA CUATRO C X X MOD 2 CI
5
INICIO 6
CI = 0 17
PARA C = 1 HASTA 10
10
LEER X
11
SI ( X MOD 2 ) <> 0
CI = CI + 1 8
FINSI 21
FINPARA 14
IMPRIMIR CI 19
FIN 30

EVALUAR EL VALOR DE X/2 Y


ENT(X/2), Y LUEGO DETERMINAR EL
VALOR DE CI
C X X / 2 ENT(X/2) CI
ALTERNATIVA CINCO ALTERNATIVA SEIS 5
6
INICIO INICIO 17
CI = 0 CI = 0 10
C =0 C=0 11
MIENTRAS C <> 10 HACER 8
LEER X LEER X 21
C=C+1 C=C+1 14
Si (X/2) <> ENT (X/2) SI (X/2) <> ENT (X/2)
19
CI = CI + 1 CI = CI + 1
30
FINSI FINSI
FINMIENTRAS MIENTRAS C <> 10
IMPRIMIR CI IMPRIMIR CI
FIN FIN

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 43


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

ALTERNATIVA SIETE ALTERNATIVA OCHO


INICIO INICIO
CI = 0 CI = 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) CI = CI + 1
CI = CI + 1 FINSI
FINSI FINPARA
HASTA C = 10 IMPRIMIR CI
IMPRIMIR CI FIN
FIN

EVALUAR EL VALOR DE X/2 Y ENT(X/2), Y LUEGO


DETERMINAR EL VALOR DE CI
C X X / 2 ENT(X/2) CI
20
11
50
7 AUTORES. LIC. CESAR
9 CALASTRA Y LIC.
42 SILVANA DE CALASTRA
34 (EDICIÓN DE CORTESÍA)
19
22
31

CI TENDRA EL SIGUIENTE VALOR : _______

LOS LENGUAJES DE PROGRAMACIÓN


FUENTE : Sitio http://www.geocities.com/david_ees/Algoritmia/curso.htm

Los lenguajes de programación, como el nombre lo indica, sirven para escribir


programas (instrucciones). Las instrucciones escritas en la mayoría de los lenguajes
de programación no son entendibles directamente por el procesador sino que
requieren de pasos intermedios de traducción para convertir estas instrucciones al
lenguaje del procesador,
CI VALDRA : ____ conocido como lenguaje máquina. Este proceso de
traducción puede hacerse mediante un compilador, un intérprete o con una
combinación de los dos.
Existen cientos de lenguajes de programación los cuales pueden dividirse en tres
tipos generales:

Lenguajes máquina.

Lenguajes de bajo nivel.

Lenguajes de alto nivel.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 44


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

6) Introducir diez números cualesquiera de uno en uno.


Determinar e imprimir suma y cantidad de números pares e impares..
X Variable de Entrada
CI Cantidad de números impares
SI Suma de números impares
CP Cantidad de números pares
SP Suma de números pares
C Contador que controla que se introduzcan los diez números
ALTERNATIVA UNO ALTERNATIVA DOS
INICIO INICIO
C =0 C=0
CI = 0 CI = 0
SI = 0 SI = 0
CP = 0 CP=0
SP = 0 SP=0
MIENTRAS C <> 10 HACER
LEER X LEER X
C=C+1 C=C+1
Si (X MOD 2) = 0 SI (X MOD 2 ) = 0
CP = CP +1 CP = CP + 1
SP=SP + X SP=SP + X
SINO SINO
CI = CI +1 CI = CI + 1
SI=SI + X SI=SI + X
FINSI FINSI
FINMIENTRAS MIENTRAS C <> 10
IMPRIMIR CI ,SI,CP,SP IMPRIMIR CI,SI,CP,SP
FIN FIN
PRUEBA DE ESCRITORIO
X X(MOD2) C CP SP CI SI
7 1 1 0 0 1 7
6 0 2 1 6 1 7
9 1 3 1 6 2 16
5 1 4 1 6 3 21
8 0 5 2 14 3 21
11 1 6 2 14 4 32
10 0 7 3 24 4 32
17 1 8 3 24 5 49
12 0 9 4 36 5 49
13 1 10 4 36 6 62
ALTERNATIVA TRES
INICIO
CI = 0 EVALUAR X MOD 2, Y LUEGO DETERMINAR EL VALOR
SI = 0 FINAL DE CP, SP, CI Y SI
CP = 0
SP = 0 C X XMOD2 CP SP CI SI
PARA C = 1 HASTA 10 10
LEER X 17
SI (X MOD 2) = 0 14
CP = CP + 1 19
SP = SP + X 21
SINO 20
CI = CI + 1
30
SI = SI + X
31
FINSI
40
FINPARA
IMPRIMIR CP, SP, CI, SI 33
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 45


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

Para X = 4, el valor inicial de F = 1.


Luego, cuando se ejecuta la orden :
F = F * K, el valor de K es 1 y el de F es 1, luego
F = F * K, el valor de K es 2 y el de F es 2, luego
F = F * K, el valor de K es 3 y el de F es 6, finalmente
F = F * K, el valor de K es 4 y el de F es 24.
Al llegar K al valor 4, la iteración finaliza pues el valor de X es 4.

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 46


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

INICIO SI X ES IGUAL A 5, HACER UN SEGUIMIENTO DEL


F=1 PSEUDOCODIGO, Y DETERMINAR EL VALOR FINAL DE F
K=0 K F
LEER X 1
HACER 2
K=K+1 3
F=F*K 4
MIENTRAS K <> X 5
IMPRIMIR F
FIN

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

INICIO PRUEBA DE ESCRITORIO


AC = 0
F1 = 1 SE IMPRIMEN LOS DOS PRIMEROS
F2 = 1 NROS. FIBONACCI QUE SON :
IMPRIMIR F1, F2 1 (F1) Y 1 (F2)
PARA C = 1 HASTA 8
AC = F1 + F2 C AC IMPRIMIR AC F1 F2
IMPRIMIR AC 1 2 2 1 2
F1 = F2 2 3 3 2 3
F2 = AC 3 5 5 3 5
FINPARA 4 8 8 5 8
FIN 5 13 13 8 13
6 21 21 13 21
7 34 34 21 34
8 55 55 34 55

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 47


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 48


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

Introducir nueve números de uno en uno.


Determinar e imprimir el mayor de la serie.

X Variable de entrada
MAY Auxiliar de mayor
C Contador a través del cual se controla el ingreso de los números

METODO DE DOBLE LECTURA

ALTERNATIVA UNO

INICIO PRUEBA DE ESCRITORIO


LEER X Suponiendo que X = 4, se almacena
MAY = X dicho valor en el auxiliar MAY
PARA C = 1 HASTA 8
LEER X
C X MAY
SI X > MAY
MAY = X 1 25 25
FINSI 2 20 25
FINPARA 3 16 25
IMPRIMIR MAY 4 22 25
FIN 5 12 25
6 9 25
7 40 40
8 31 40

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 49


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

X Variable de entrada (primer multiplicando)


Y Variable de entrada (segundo multiplicando)
AC Acumulador que almacenará el producto de ambos números
C Contador que controla el fin de las sumas sucesivas
ALTERNATIVA UNO
INICIO
AC = 0 X Y AC
LEER X, Y
PARA C = 1 HASTA Y
3 2
AC = AC + X
FINPARA
IMPRIMIR AC
FIN
PRUEBA DE ESCRITORIO
Para X = 3, Y =6
X Y AC C
3 6 3 1
6 2
9 3
12 4
15 5
18 6

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

INICIO QUE VALOR TENDRA AC, PARA X=5 , Y = 3


AC = 0
C=0 C AC
LEER X, Y
MIENTRAS C <> Y
C=C+1
AC = AC + X
FINMIENTRAS
IMPRIMIR AC
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 50


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

PRUEBA DE ESCRITORIO (DIVISION EXACTA)


A R B C
9 9 3 0
6 1
3 2
0 3

PRUEBA DE ESCRITORIO (DIVISION INEXACTA)


A R B C
10 10 3 0
7 1
4 2
1 3
OBSERVACION
Se transfiere el valor de A (dividendo) al valor R (Resto), y luego se ingresa a la iteración, en donde cada vez que se
efectúa una resta C sufre un incremento, y al final C, será el cociente y R, será el resto.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 51


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

12) Introducir dos números enteros positivos.


Determinar e imprimir el Máximo Común Divisor (MCD) entre ambos.
M Variable de entrada
N Variable de entrada
HACER UN SEGUIMIENTO, PARA
INICIO
M =100 Y N = 40
LEER M, N
M N
MIENTRAS M <> N
SI M > N
M=M–N
SINO
N=N–M
FINSI
FINMIENTRAS
IMPRIMIR M
FIN

PRUEBA DE ESCRITORIO ( M > N)

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,

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 52


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

C50000 Cont. de billetes de Gs. 50.000 C50 Cont. de monedas de Gs. 50

C10000 Cont. de billetes de Gs. 10.000 C10 Cont. de monedasde Gs. 10

C5000 Cont. de billetes de Gs. 5000 C5 Cont. de monedasde Gs. 5

C1000 Cont. de billetes de Gs. 1000 C1 Cont. de monedasde Gs. 1

C500 Cont. de monedas de Gs. 500

INICIO MIENTRAS S >= 1000


C100000 = 0 S = S – 1000
C50000 = 0 C1000 = C1000 + 1
C10000 = 0 FINMIENTRAS
C5000 = 0 MIENTRAS S >= 500
C1000 = 0 S = S – 500
C500 =0 C500 = C500 + 1
C100 =0 FINMIENTRAS
C50 =0 MIENTRAS S >= 100
C10 =0 S = S – 100
C5 =0 C100 = C100 + 1
C1 =0 FINMIENTRAS
S =0 MIENTRAS S >= 50
MIENTRAS S <= 500000 S = S – 50
LEER S C50 = C50 + 1
FINMIENTRAS FINMIENTRAS

MIENTRAS S >= 100000 MIENTRAS S >= 10


S = S – 100000 S = S – 10
C100000 = C100000 + 1 C10 = C10 + 1
FINMIENTRAS FINMIENTRAS
MIENTRAS S >= 50000 MIENTRAS S >= 5
S = S – 50000 S=S–5
C50000 = C50000 + 1 C5 = C5 + 1
FINMIENTRAS FINMIENTRAS
MIENTRAS S >= 10000 MIENTRAS S >= 1
S = S – 10000 S=S–1
C10000 = C10000 + 1 C1 = C1 + 1
FINMIENTRAS FINMIENTRAS
MIENTRAS S >= 5000 IMPRIMIR C100000, C50000, C10000.
S = S – 5000 C5000, C1000, C500, C100, C50, C10,
C5000 = C5000 + 1 C5, C1
FINMIENTRAS FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 53


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

RESUMEN DEL CAPITULO


En algoritmia se definen cinco estructuras de iteración:
A) ITERACIONES CON INCREMENTOS MANUALES DEL CONTADOR
 MIENTRAS - FINMIENTRAS
 HACER - MIENTRAS
 REPETIR - HASTA
B) ITERACIONES CON INCREMENTOS AUTOMATICOS DEL CONTADOR
 PARA – FINPARA
 DESDE – FINDESDE
Un acumulador, es una variable auxiliar cuya principal función es acumular sumas de totales.
EJERCICIOS PROPUESTOS
( RESUELTOS EN EL APENDICE A )
1) Introducir nueve números de uno en uno.
Determinar e imprimir cantidad de números menores a cinco.
2) Introducir diez números de uno en uno.
Determinar e imprimir suma y cantidad de números mayores a quince.
3) Introducir doce números de uno en uno.
Determinar e imprimir :
a) Suma y cantidad de números mayores a veinte y menores a cincuenta
b) Suma y cantidad de números que están fuera de dicho rango.
4) Introducir ocho números de uno en uno.
Determinar e imprimir suma de números múltiplos de tres.
5) Introducir quince números de uno en uno.
Determinar e imprimir:
a) Cantidad y suma de números múltiplos de cinco
b) Cantidad y suma de números no múltiplos de cinco.
6) Introducir veinte números de uno en uno.
Determinar e imprimir el menor de la serie.
7) Introducir un número entero positivo.
Si el mismo es par y además es mayor a cuatro y menor a diez, calcular e
Imprimir su factorial.
8) Generar e imprimir en forma automática los veinte primeros números fibonacci.
9) Generar en forma automática e imprimir los números múltiplos de tres comprendidos entre quince y cuarenta y cinco.
10) Imprimir en forma automática en orden descendente todos los números múltiplos de siete comprendidos entre
cientocuarenta inclusive y catorce inclusive.
EJERCICIOS PROPUESTOS
( A SER RESUELTOS POR EL LECTOR )
1) Introducir siete números de uno en uno.
Determinar e imprimir cantidad de números mayores a diez.
2) Introducir ocho números de uno en uno.
Determinar e imprimir suma y cantidad de números menores a treinta.
3) Introducir nueve números de uno en uno.
Determinar e imprimir:
a) Suma y cantidad de números mayores a cincuenta y menores a setenta y cinco
b) Suma y cantidad de números que están fuera de dicho rango.
4) Introducir nueve números de uno en uno.
Calcular e imprimir suma de números múltiplos de once.
5) Introducir nueve números de uno en uno.
Determinar e imprimir:
c) Suma y cantidad de números múltiplos de trece
d) Suma y cantidad de números no múltiplos de trece

LOS LENGUAJES DE MAQUINA


SITIO: http://www.geocities.com/david_ees/Algoritmia/curso.htm
Los lenguajes máquina permiten escribir instrucciones directamente entendibles por el procesador. Una instrucción
máquina consiste en una secuencia de dígitos binarios ( 0 y 1) en la memoria principal, que le indica al procesador que
operación máquina debe realizar. Una colección de instrucciones máquina en la memoria principal se denomina
programa en lenguaje máquina o (más comumemente) programa ejecutable. Un programa ejecutable tiene, normalmente,
millones de instrucciones máquina. Por otro lado, cada tipo de procesador tiene su propio lenguaje máquina (su propio
juego de instrucciones). De manera que un programama ejecutable que corre en una computadora equipada con un
procesador Pentium II no podría correr, por ejemplo, en una Apple Power Macintosh.Como ejemplo, observe las
siguiente instrucción escrita en lenguaje máquina.
1001 1111 1011 1101

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 54


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

 ITERACIONES DOBLES
(UNA DENTRO DE OTRA)
 EJERCICIOS DE APLICACION

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 55


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

"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

RESPUESTA A EJERCICIO MENTAL NRO. CINCO


(AL DORSO DE INICIO DEL CAPITULO CINCO)

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

EJERCICIO MENTAL NRO. SEIS

¿Cuál es el siguiente número en esta serie?


11, 22, 43, 74, 115, 76, 137, ___?

(VER RESPUESTA AL DORSO DE INICIO DEL CAPITULO SEIS)

LENGUAJES DE BAJO NIVEL


SITIO: http://www.geocities.com/david_ees/Algoritmia/curso.htm
Los lenguajes de bajo nivel representan un paso hacia la humanización de los lenguajes de programación, son más fáciles
que los lenguajes máquina pero al igual que ellos son dependientes de la máquina. Los lenguajes de bajo nivel son lenguajes
simbólicos siendo el más importante el lenguaje ensamblador. En el lenguaje ensamblador las instrucciones se expresan
utilizando nemotécnicos. Por ejemplo, ADD para la suma, SUB para la resta, etc.Como ejemplo, observe la siguientes
instrucciones escritas en el lenguaje ensamblador: MOV AX, A;ADD AX, B;MOV C, AX
Este conjunto de instrucciones se interpreta como "Sumar el contenido almacenado en las posiciones de memoria A y B, y
almacenar el resultado en la posición de memoria C". Un programa escrito en ensamblador es posteriormente traducido al
lenguaje máquina utilizando un programa denominado ensamblador simbólico
LENGUAJES DE ALTO NIVEL

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 56


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

OBSERVACION MUY IMPORTANTE

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 57


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

COMBINANDO ESTRUCTURAS DE ITERACION


No debemos hacernos a la idea, de que si la primera iteración se define dentro de una estructura PARA -FINPARA, la
segunda iteración también debe necesariamente utilizar la estructura PARA-FINPARA, pues de acuerdo a las necesidades
es perfectamente factible, combinar dentro de una estructura PARA-FINPARA, una estructura MIENTRAS-FINMIENTRAS,
o cualquier otro tipo de iteración..
A modo de ejemplo, la iteración anidada utilizada más arriba, podría definirse de la siguiente forma:
INICIO
PARA K = 1 HASTA 3
N=0
MIENTRAS N < 5
________
________
N=N+1
________
FINMIENTRAS
FINPARA
FIN
EJERCICIOS DE APLICACION
1) Introducir N números de uno en uno.
A medida que cada número se introduce, calcular e imprimir su factorial.
X Variable de entrada
F Auxiliar de factorial
K Iteración que controla que se introduzcan N números X de uno en uno
I Iteración que calcula el factorial del número X

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 58


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

COMBINANDO PARA-FINPARA CON MIENTRAS - FINMIENTRAS

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

IMPRIMIR "EL FACTORIAL DE “ X “ ES “ F


FINPARA
FIN

REALIZA TU PROPIA PRUEBA DE ESCRITORIO

Para N = 4.

N K X I F
4 1 5

2 6

3 4

4 8

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 59


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

Ingresar N pares de números.


A medida que cada par de números se introduce, determinar e imprimir el producto de dichos números utilizando para
el efecto el método de sumas sucesivas.

X Primera variable de Entrada (Primer multiplicando)


Y Segunda variable de Entrada (Segundo multiplicando)
N Cantidad de pares de números a introducirse
K Iteración que controla que se introduzcan N pares de números X e Y respectivamente
I Iteración que calcula el producto de X por Y por sumas sucesivas
AC Acumulador que calcula el productor por sumas sucesivas

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 60


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

CONMBINANDO ESTRUCTURAS DE ITERACION

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

IMPRIMIR "EL PRODUCTO DE” X “POR” Y “ES” AC

FINPARA
FIN

REALIZA TU PRUEBA DE ESCRITORIO

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 61


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

2) Ingresar N números de uno en uno.


A medida que cada número se introduce, determinar e imprimir si el mismo es par o no utilizando para el efecto el
método de restas sucesivas.

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 62


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

3) Ingresar N pares de números que representen al dividendo y divisor respectivamente.


A medida que cada par de números se introduce, determinar e imprimir el cociente y el resto de dichos números
utilizando para el efecto el método de restas sucesivas.

DIVIDENDO Variable de entrada que representa al dividendo de una división


DIVISOR Variable de entrada que representa al divisor de una división
CONTADOR Variable de resultado que se incrementa de uno en uno a medida que se efectúa una resta, y que
finalmente será el cociente de dividendo y divisor
N Cantidad de pares de números a introducirse
K Iteración que controla que se introduzcan N pares de números (DIVIDENDO Y DIVISOR)
I Iteración que ejecuta las restas sucesivas y que inicialmente es un clon (copia) de DIVIDENDO

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 K DIVIDENDO I DIVISOR CONTADOR


4 1 17 17 5
12 1
7 2
2 3
2 30 30 4
26 1
22 2
18 3
14 4
10 5
6 6
2 7
3 120 120 30
90 1
60 2
30 3
0 4
4 44 44 10
34 1
24 2
14 3
4 4

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 63


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

COMBINANDO ESTRUCTURAS DE ITERACION


INICIO
MIENTRAS ( N <= 0 )
LEER N
FINMIENTRAS
K=1
MIENTRAS K <= 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
K=K+1
FINPARA
FIN

REALIZA TU PRUEBA DE ESCRITORIO

N=4

N K DIVIDENDO I DIVISOR CONTADOR


4 1 19 19 5

2 30 31 4

3 200 200 50

4 49 49 10

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 64


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

Introducir N números de uno en uno,


A medida que cada número se introduce, calcular e imprimir su tabla de multiplicar.

N Cantidad de números a ser introducidos


X Variable de entrada
K Contador que controla el ingreso de los N números X
R Variable de resultado que contiene cada producto
T Contador a través del cual se calcula e imprime la tabla de multiplicar

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 65


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

RESUMEN DEL CAPITULO

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.

EJERCICIOS PROPUESTOS (RESUELTOS EN EL APENDICE A DEL MATERIAL)

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.

TRADUCCIÓN DE UN CÓDIGO FUENTE A LENGUAJE DE MAQUINA


SITIO http://www.geocities.com/david_ees/Algoritmia/curso.htm
El código fuente de un programa no puede ser ejecutado por el procesador sino que se requiere de un proceso previo de
traducción al lenguaje máquina. Este proceso de traducción puede llevarse a cabo de una de las siguientes formas
enunciadas a continuación, dependiendo del lenguaje de programación:
 Traduciendo previamente todo el código fuente a código máquina obteniéndose un código denominado código
ejecutable o programa ejecutable. Este programa ejecutable puede cargarse a la memoria y ejecutarse sin requerir
ya del código fuente. Este proceso de traduccción lo realiza un programa especializado denominado compilador,
que es propio del lenguaje de programación que se está utilizando. Así, existen compiladores para el lenguaje C,
compiladores para el lenguaje C++, compiladores para el lenguaje Pascal, compiladores para el lenguaje Ada,
etc. Desde el punto de vista de la forma de ejecución, a este tipo de lenguajes se denominan lenguajes
compilados.
 Leyendo el código fuente instrucción por instrucción y convirtiéndolo a código máquina cada vez que se vaya a
ejecutar el programa. Este proceso de traducción lo realiza un programa especializado denominado intérprete,
que es propio del lenguaje de programación que se está utilizando. Un ejemplo de lenguaje interpretado es el
lenguaje Basic. Desde el punto de vista de la forma de ejecución, aA este tipo de lenguajes se denominan
lenguajes interpretados. Cuando se usa un intérprete humano como intermediario la conversación es más lenta
que cuando se conversa directamente. Los mismo es verdad para los programas intérpretes de computadora. Esto
contrasta con un programa ejecutable (en los lenguajes compilados) que pueden ser ejecutados directamente sin
necesidad de intermediarios .
 Una tercera forma es una forma híbrida y usa tanto un compilador como un intérprete. En esta, el código fuente
se compila generándose un cierto código intermedio (p-code en Visual Basic, bytecode en Java). Luego, el
código intermedio generado es ejecutado por el intérprete. Desde el punto de vista de la forma de ejecución, a
este tipo de lenguajes se denominan lenguajes híbridos.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 66


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 67


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

"Nada tan estúpido como vencer; la verdadera gloria está en


convencer". Victor Hugo

RESPUESTA A EJERCICIO MENTAL NRO. SEIS


(AL DORSO DE INICIO DEL CAPITULO SEIS)

El siguiente número de la serie es 118.


Los numerales finales de cada cifra van en orden ascendente. Los primeros números corresponden a la suma
de los numerales de la cifra anterior.

EJERCICIO MENTAL NRO. SIETE

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.

¿Cuáles fueron las calificaciones de los cuatro alumnos?


(VER RESPUESTA AL DORSO DEL INICIO DEL CAPITULO OCHO)

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 68


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

BANDERA O SEÑAL (SWITCH)

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

1) Introducir diez números de uno en uno.


Determinar e imprimir el menor de la serie.
X Variable de Entrada
B Bandera
ME Auxiliar de Menor
C Contador que controla que se introduzcan diez números

INICIO PRUEBA DE ESCRITORIO


B =0 C X B ME
ME = 0 1 10 1 10
PARA C = 1 HASTA 10 2 15 1 10
LEER X 3 13 1 10
SI B = 0 4 19 1 10
B=1 5 8 1 8
ME = X 6 6 1 6
SINO 7 20 1 6
SI X < ME 8 2 1 2
ME = X 9 25 1 2
FINSI 10 27 1 2
FINSI
FINPARA
IMPRIMIR ME
FIN
OBSERVACION
Antes de introducirse la primera variable X cuyo valor es 10, la bandera tiene almacenado el valor cero, pero al ser
introducido el primer número X, la bandera cambia de estado cero a estado uno, y este valor se mantiene hasta el final del
proceso. En este caso el propósito de la bandera es evitar una doble lectura , tal como se había efectuado en el ejercicio
nueve del capítulo anterior.
2) Introducir diez números de uno en uno.
Determinar e imprimir el menor número par de la serie.
X Variable de Entrada
B Bandera
ME Auxiliar de Menor
C Contador que controla que se introduzcan diez números

INICIO PRUEBA DE ESCRITORIO


B =0 C X B ME
ME = 0 1 11 0 0
PARA C = 1 HASTA 10 2 15 0 0
LEER X 3 13 0 0
SI X/2=ENT(X/2) 4 19 0 0
SI B = 0 5 8 1 8
B=1 6 6 1 6
ME=X 7 20 1 6
SINO 8 4 1 4
SI X < ME 9 25 1 4
ME = X 10 27 1 4
FINSI
FINSI
FINSI
FINPARA
IMPRIMIR ME
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 69


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 70


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

5) Introducir diez números de uno en uno.


Determinar e imprimir cantidad de veces que a un número positivo le sigue un número negativo en la serie.

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

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 71


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

6) Introducir doce números de uno en uno.


Determinar e imprimir cantidad de veces que a un número positivo le sigue un número cero en la serie.
X Variable de entrada
B Bandera
C Contador que controla que se introduzcan doce números
CV Contador de veces que cuenta la cantidad de veces que a un
número positivo le sigue un número cero
INICIO
B=0
CV = 0
PARA C = 1 HASTA 12 QUE VALOR TENDRA CV ?
LEER X C X B CV
SI X > 0 12
B=1 0
FINSI
0
SI X < 0
20
B=0
-15
FINSI
SI X = 0 -15
SI B = 1 0
B =0 35
CV = CV + 1 0
FINSI 12
FINSI
FINPARA
IMPRIMIR CV
FIN

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

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 72


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

RESUMEN DEL CAPITULO


La bandera es una herramienta auxiliar muy útil en programación, a la cual el programador puede acudir a los efectos
de resolver múltiples problemas que habitualmente se presentan en su trabajo.
EJERCICIOS PROPUESTOS
( RESUELTOS EN EL APENDICE A )

1) Introducir ocho números de uno en uno.


Determinar e imprimir el mayor de la serie.
2) Introducir diez números de uno en uno.
Determinar e imprimir el mayor número múltiplo de tres de la serie.
3) Generar e imprimir en forma automática todos los números no primos comprendidos entre dos inclusive y mil
inclusive.
4) Introducir diez números de uno en uno.
Determinar e imprimir cantidad de veces que a un número negativo le sigue un número positivo en la serie.

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 73


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 74


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

 DEFINICION DE VECTOR
 CARGA DE VECTOR
 IMPRESIÓN DE VECTOR
 EJERCICIOS DE APLICACION

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 75


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

"El principio es la mitad del todo". Pitágoras

RESPUESTA A EJERCICIO MENTAL NRO. SIETE


(AL DORSO DE INICIO DEL CAPITULO SIETE)

Jacobo recibió un 9, Julia un 10, Lucía un 7 y Pablo un 8.

EJERCICIO MENTAL NRO. OCHO


Cuáles son las dos letras siguientes en esta serie?

A, E, F, H, I, K, L, M

(VER RESPUESTA AL DORSO DEL INICIO DEL CAPITULO OCHO)

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 76


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 77


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

2) Cargar e imprimir un vector de doce elementos.


Determinar e imprimir la suma de aquellos elementos que sean múltiplos de cinco.

V Nombre del vector


AC Acumulador que almacena los elementos múltiplos de cinco.
K Subíndice del vector
QUE VALOR TENDRA AC ?
K VALORES V(K) / 5 ENT(V(K)/5) AC
INICIO 12
DIM V(12) 17
AC = 0 10
PARA K = 1 HASTA 12 21
LEER V(K) 23
Si ( V(K) / 5 = ENT (V(K) / 5 ) ) 15
AC = AC + V(K) 17
FINSI 31
FINPARA 30
PARA K = 1 HASTA 12 33
IMPRIMIR V(K) 19
FINPARA 40
IMPRIMIR AC
FIN

PRUEBA DE ESCRITORIO

K V(K) VALORES V(K) / 5 ENT AC


CARGADOS (V(K)/5)
1 V(1) 15 3 3 15
2 V(2) 17 3,4 3 15
3 V(3) 23 4,6 4 15
4 V(4) 10 2 2 25
5 V(5) 14 2,8 2 25
6 V(6) 30 6 6 55
7 V(7) 33 6,6 6 55
8 V(8) 25 5 5 80
9 V(9) 40 8 8 120
10 V(10) 44 8,8 8 120
11 V(11) 48 9,6 9 120
12 V(12) 35 7 7 155

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 78


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

3) Cargar e imprimir un vector de doce elementos.


Determinar e imprimir la suma de aquellos elementos que se encuentran en posiciones impares.

V Nombre del vector


AC Acumulador que almacena los elementos que se encuentran en posiciones
impares
K Subíndice del vector
QUE VALOR TENDRA AC ?
K VALORES K / 2 ENT(K/2) AC
INICIO 5
DIM V(12) 7
AC = 0 12
PARA K = 1 HASTA 12 14
LEER V(K) 10
Si ( K / 2) <> ENT ( K / 2 ) 12
AC = AC + V(K) 15
FINSI 21
FINPARA 22
PARA K = 1 HASTA 12 30
IMPRIMIR V(K) 31
FINPARA
40
IMPRIMIR AC
FIN

PRUEBA DE ESCRITORIO

K V(K) VALORES K/2 ENT AC


CARGADOS (K/2)
1 V(1) 15 0,5 0 15
2 V(2) 17 1 1 15
3 V(3) 23 1,5 1 38
4 V(4) 10 2 2 38
5 V(5) 14 2,5 2 52
6 V(6) 30 3 3 52
7 V(7) 33 3,5 3 85
8 V(8) 25 4 4 85
9 V(9) 40 4,5 4 125
10 V(10) 44 5 5 125
11 V(11) 48 5,5 5 173
12 V(12) 35 6 6 173

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 79


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

4) Cargar un vector de doce elementos.


Determinar e imprimir el mayor elemento del vector y la posición en que se encuentra.

V Nombre del vector


MA Auxiliar de mayor
POS Auxiliar de posición
K Subíndice del vector
B Bandera que se utiliza para capturar el primer elemento del vector

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

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 80


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

5) Cargar e imprimir un vector de doce elementos.


Determinar e imprimir la solución MINIMAX.
La solución MINIMAX resulta de la diferencia entre el mayor y el menor de los números del vector.
V Nombre del vector
MA Auxiliar de mayor
ME Auxiliar de menor
MINIMAX Auxiliar de solución MINIMAX
K Subíndice del vector
B Bandera definida para capturar los primeros elementos del vector
INICIO
DIM V(12) QUE VALOR TENDRA MINIMAX ?
B =0
MA = 0 B K VALORES MA ME MINIMAX
ME = 0 15
MINIMAX = 0 17
PARA K = 1 HASTA 12 12
LEER V(K) 95
Si B = 0 35
B=1 39
MA = V(1) 45
ME = V(1)
62
SINO
10
SI V(K) > MA
MA = V(K) 85
FINSI 88
SI V(K) < ME 75
ME = V(K)
FINSI
FINSI
FINPARA
PARA K = 1 HASTA 12
IMPRIMIR V(K)
FINPARA
MINIMAX = MA - ME
IMPRIMIR MINIMAX
FIN
PRUEBA DE ESCRITORIO

B K V(K) VALORES MA ME MINIMAX


0 1 V(1) 4 4 4 0
1 2 V(2) 10 10 4 0
1 3 V(3) 6 10 4 0
1 4 V(4) 8 10 4 0
1 5 V(5) 3 10 3 0
1 6 V(6) 35 35 3 0
1 7 V(7) 26 35 3 0
1 8 V(8) 24 35 3 0
1 9 V(9) 29 35 3 0
1 10 V(10) 31 35 3 0
1 11 V(11) 45 45 3 0
1 12 V(12) 9 45 3 42

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 81


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

6) Cargar e imprimir un vector de doce elementos.


Determinar e imprimir suma y cantidad de elementos positivos.
V Nombre del vector
SUMA Acumulador de positivos
CONTADOR Contador de positivos
QUE VALORES TENDRAN SUMA Y CONTADOR ?
K Subíndice del vector
K VALORES CONTADOR SUMA
-14
INICIO
SUMA=0 -16
CONTADOR = 0 -84
DIM V ( 12 ) 12
PARA K = 1 HASTA 12 10
LEER V ( K ) -41
SI V ( K ) > 0 -74
SUMA = SUMA + V ( K ) 20
CONTADOR = CONTADOR + 1 -48
FINSI 16
FINPARA 30
PARA K = 1 HASTA 12 -98
IMPRIMIR V ( K )
FINPARA
IMPRIMIR SUMA, CONTADOR
FIN

PRUEBA DE ESCRITORIO

K V(K) VALORES CONTADOR SUMA


1 V(1) 4 1 4
2 V(2) 10 2 14
3 V(3) -6 2 14
4 V(4) 8 3 22
5 V(5) -3 3 22
6 V(6) -35 3 22
7 V(7) 26 4 48
8 V(8) 24 5 72
9 V(9) 29 6 101
10 V(10) -31 6 101
11 V(11) -45 6 101
12 V(12) 9 7 110

QUE VALORES TENDRAN SUMA Y CONTADOR ?


K VALORES CONTADOR SUMA
20
12
40
-35
-47
15
-98
45
-39
60
-84
50

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 82


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

6) Cargar un vector de 12 elementos.


Determinar e imprimir suma y cantidad de elementos positivos y negativos.
V Nombre del vector
SP Suma de positivos
CP Contador de Positivos
SN Suma de Negativos
CN Contador de Negativos
INICIO
SP = 0
CP = 0
SN = 0
CN = 0
DIM V(12)
PARA K = 1 HASTA 12
LEER V(K)
SI V ( K ) > 0
SP = SP + V ( K )
CP = CP + 1
FINSI
SI V ( K ) < 0
SN = SN + V ( K )
CN = CN + 1
FINSI
FINPARA
PARA K = 1 HASTA 12
IMPRIMIR V ( K )
FINPARA
IMPRIMIR SP, CP, SN, CN
FIN
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

QUE VALORES TENDRAN SP, CP, SN, Y CN ?

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 83


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

8) Cargar e imprimir un vector de 12 elementos.


Desplazar ciclicamente cada elemento del vector un lugar a la derecha.
Imprimir el vector resultante.

V Nombre del Vector


K Subindice de carga e impresión del vector
Z Subíndice que se utiliza para desplazar cada elemento del vector

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.

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 84


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

9) Cargar e imprimir un vector de 12 elementos.


Desplazar ciclicamente cada elemento del vector un lugar a la izquierda
Imprimir el vector resultante.

V Nombre del Vector


K Subindice de carga e impresión del vector
Z Subíndice que se utiliza para desplazar cada elemento del vector

Dado el siguiente vector original V:

20 45 12 50 15 85 55 95 90 82 98 66

El vector resultante debe quedar de la siguiente forma:

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 :

Z=Z+1 De esa manera, z sube del valor 1 al valor 2, y luego se


vuelve a ejecutar la orden V(Z) = V(Z+1),o sea que
V(2) = V(3), y así sucesivamente.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 85


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

10) Cargar e imprimir un vector de 12 elementos.


Invertir el vector en un segundo vector.
Imprimir el vector resultante.

V Nombre del primer vector


A Nombre del segundo vector
K Subindice de carga e impresión de los vectores
Z Subíndice auxiliar del segundo vector
C Subíndice auxiliar del primer vector

Dado el vector V, que almacena los siguientes valores:

20 12 30 25 15 28 17 35 31 40 36 42

El vector A, debe almacenar los siguientes valores a partir del vector V:

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

MIENTRAS ( Z <= 12)


Z =Z+1
A(Z) = V (C)
C =C-1
FINMIENTRAS

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.

El procedimiento se inicia con el de la siguiente forma .


Z = Z + 1 (Valor inicial de Z es 0, y al ejecutarse la orden, Z toma el valor 1)
A(Z) = V (C) (Esto implica que A(1) = V(12) pues el valor de C es 12)
C = C – 1 (En este punto el valor de C, disminuye a 11:

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.

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 86


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

11) Cargar e imprimir un vector de doce elementos.


Invertir el vector en si mismo sin utilizar vector auxiliar.
Imprimir nuevamente el vector ya invertido.

V Nombre del vector

I Subindice de carga e impresión de los vectores

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

AUX Variable auxiliar utilizada para almacenar en forma temporal el elemento


del vector a ser transferido desde un lugar a otro

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)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 87


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

12) Cargar e imprimir dos vectores A y V de doce elementos.


Crear un vector C, tal que C(1)=A(1)+V(1), C(2)=A(2)+V(2), y así sucesivamente.
Imprimir el vector C.
A Nombre de primer vector
V Nombre del segundo vector
C Nombre del tercer vector
I Subindice de carga e impresión de los vectores
INICIO
DIM A(12), V(12), C(12)
PARA I = 1 HASTA 12
LEER A(I), V(I)
C(I) = A(I) + V(I)
FINPARA
PARA I = 1 HASTA 12 AUTORES. LIC. CESAR
IMPRIMIR A(I)
FINPARA CALASTRA Y LIC.
PARA I = 1 HASTA 12 SILVANA DE CALASTRA
IMPRIMIR V(I) (EDICIÓN DE CORTESÍA)
FINPARA
PARA I = 1 HASTA 12
IMPRIMIR C(I)
FINPARA
FIN
PRUEBA DE ESCRITORIO
I A(I) V( I) C(I)
1 5 4 9
2 3 10 13
3 4 -6 -2
4 10 8 18
5 6 -3 3
6 12 -35 -23
7 2 26 28
8 9 24 33
9 3 29 32
10 60 -31 29
11 13 -45 -32
12 10 9 19

REALIZA TU PROPIA PRUEBA DE ESCRITORIO

I A(I) V(I) C(I)


-14 10
-15 12
32 14
-41 50
15 -40
20 -15
-35 -5
50 -22
-38 37
45 -50
39 42
-19 -14

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 88


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

13) Cargar e imprimir un vector V de doce elementos.


Crear un vector A, también de doce elementos tal que : A(1) = V(1), A(2)=V(1)+V(2), A(3)=V(1)+V(2)+V(3), y así
sucesivamente.
V Nombre del primer vector
A Nombre del segundo vector
I Subindice de carga e impresión de los vectores
S Acumulador que va sumando los valores almacenados en el vector V, y que se va trasfiriendo al vector A
INICIO
S= 0
DIM V(12), A(12)
PARA I = 1 HASTA 12
LEER V(I) AUTORES. LIC. CESAR
S = S + V(I) CALASTRA Y LIC.
A(I) = S
SILVANA DE CALASTRA
FINPARA
PARA I = 1 HASTA 12 (EDICIÓN DE CORTESÍA)
IMPRIMIR V(I)
FINPARA
PARA I = 1 HASTA 12
IMPRIMIR A(I)
FINPARA
FIN
PRUEBA DE ESCRITORIO

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

REALIZA TU PROPIA PRUEBA DE ESCRITORIO

I V(i) S A(i)
-14
-15
32
-41
15
20
-35
50
-38
45
39
-19

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 89


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

14) Cargar e imprimir dos vectores A y V de doce elementos.


Crear un vector C, de veinte y cuatro elementos tal que :
C(1)=A(1), C(2)=V(1), C(3)=A(2), C(4)=V(2), y así sucesivamente.

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

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 90


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

15) Cargar tres vectores V, A y C de 5 elementos cada uno de ellos.


Crear un vector D tal que, los cinco primeros elementos del mismo sean todos los elementos de V, los cinco siguientes
correspondan al vector A, y los cinco últimos elementos sean del vector C.
Imprimir el vector D.
INICIO
DIM V(5), A(5), C(5), D(15)
Z=0
PARA I = 1 HASTA 5 Se carga el vector V, y a medida que se lo carga
LEER V(I) se van transfiriendo sus valores al vector D.
Z=Z+1 VECTOR V

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 5 Se carga el vector C, y a medida que se lo carga


LEER C(I) se van transfiriendo sus valores al vector D
Z=Z+1 VECTOR C
D ( Z ) = C(I)
3 8 1 5 9
VECTOR D
FINPARA
2 5 3 9 8 4 6 1 7 5 3 8 1 5 9

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 91


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

16)Cargar e imprimir un vector de diez elementos.


Determinar e imprimir la suma de aquellos elementos que se encuentran entre las posiciones tres inclusive y siete inclusive.
V Nombre del Vector
S Acumulador de números que se encuentran entre las posiciones 3 y 7
K Iteración que controla la carga, suma de elementos e impresión del vector
ALTERNATIVA UNO
INICIO
DIM V(10)
S=0
PARA K = 1 HASTA 10
LEER V(K)
FINPARA
PARA K = 3 HASTA 7 Se crea una iteración que se inicia con el valor 3,
S = S + V(K) y se incrementa de uno en uno hasta 7, de modo
FINPARA a utilizar dichos valores como subíndice del
vector a los efectos de acumularlos en S
PARA K = 1 HASTA 10
IMPRIMIR V(K)
FINPARA
IMPRIMIR S
FIN
ALTERNATIVA DOS
INICIO
DIM V(10)
S=0
PARA K = 1 HASTA 10
LEER V(K)
SI K >= 3 Y K<= 7 Preguntado si K está dentro del rango de
S = S + V(K) 3 a 7, entonces corresponde que se lo
FINSI acumule en S
FINPARA
PARA K = 1 HASTA 10
IMPRIMIR V(K)
FINPARA
IMPRIMIR S
FIN
PRUEBA DE ESCRITORIO
K V(K) S
1 15 0
2 50 0
3 10 10
4 20 30
5 30 60
6 25 85
7 40 125
8 85 125
9 95 125
10 94 125

REALIZA TU PROPIA PRUEBA DE ESCRITORIO

K V(K) S
1 55
2 62
3 32
4 21
5 25
6 -60
7 19
8 45
9 95
10 90

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 92


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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 carga el vector B:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (VECTOR B)
90 99 98 94 97 92 96 89 81 88 87 85 84 93 27

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)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 93


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

RESUMEN DEL CAPITULO


El array unidimensional o vector es una estructura de datos lineal que reside en la memoria interna del ordenador, por
consiguiente cuando el ordenador es puesto fuera de servicio o cuando se transfiere el control de un programa a otro, toda
la información almacenada en el vector desaparece completamente.
EJERCICIOS PROPUESTOS
( RESUELTOS EN EL APENDICE A )
1) Cargar e imprimir un vector de doce elementos.
Determinar e imprimir la suma de los elementos mayores a cinco.
2) Cargar e imprimir un vector de doce elementos.
Determinar e imprimir la suma de aquellos elementos que sean múltiplos de tres y cinco al mismo tiempo.
3) Cargar e imprimir un vector de quince elementos.
Determinar e imprimir la suma de aquellos elementos que se encuentran en posiciones que sean múltiplos de tres.
4) Cargar e imprimir un vector de diez elementos.
Determinar e imprimir la solución MINIMAX de elementos pares.
5) Cargar e imprimir un vector A de diez elementos.
Luego, transferir los primeros cinco elementos del vector A, a un segundo vector a llamarse X.
Además, transferir los cinco últimos elementos del vector A, a un tercer vector a llamarse Z.
Imprimir los vectores X y Z.
6) Cargar e imprimir un vector de quince elementos.
Determinar e imprimir la suma de aquellos elementos que se encuentran entre las posiciones siete inclusive y doce
inclusive, y que además su contenido sea par.
EJERCICIOS PROPUESTOS
( A SER RESUELTOS POR EL LECTOR )
7) Cargar e imprimir un vector de diez elementos.
Determinar e imprimir la suma de los elementos mayores a veinte.
8) Cargar e imprimir un vector de diez elementos.
Determinar e imprimir la suma de aquellos elementos que sean múltiplos de dos y seis al mismo tiempo.
9) Cargar e imprimir un vector de treinta elementos.
Determinar e imprimir la suma de aquellos elementos que se encuentran en posiciones que sean múltiplos de cinco.
10) Cargar e imprimir un vector de diez elementos.
Determinar e imprimir la solución MINIMAX de elementos impares.
11) Cargar e imprimir un vector A de diez elementos.
Luego, transferir los primeros cuatro elementos del vector A, a un segundo vector a llamarse X.
Además, transferir los cuatro últimos elementos del vector A, a un tercer vector a llamarse Z.
Imprimir los vectores X y Z.
Los elementos de la quinta y sexta posición del vector A, no serán transferidos a ningún otro vector.
12) Cargar e imprimir un vector de veinte elementos.
Determinar e imprimir la suma de aquellos elementos que se encuentran entre las posiciones diez inclusive y diez y
seis inclusive, y que además su contenido sea múltiplo de tres.

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 94


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

 METODO DE INTERCAMBIO O BURBUJA


 MÉTODO DE INSERCIÓN
 MÉTODO DE SELECCIÓN
 BÚSQUEDA SECUENCIAL
 BÚSQUEDA BINARIA

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 95


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

“Ojo por ojo, y el mundo acabará ciego”. Mahatma Gandhi.

RESPUESTA A EJERCICIO MENTAL NRO. OCHO


(AL DORSO DE INICIO DEL CAPITULO OCHO)

N y T.
Esta serie de letras está formada por las que se escriben únicamente con trazos rectos.

EJERCICIO MENTAL NRO.NUEVE

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?

(VER RESPUESTA AL DORSO DEL INICIO DEL CAPITULO OCHO)

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 96


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

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

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

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 97


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

2) 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 bandera.
N Cantidad de elementos del vector
B Bandera
V Nombre del vector
AUX Auxiliar que se utiliza para efectuar el intercambio de elementos
K Iteración utilizada para el proceso de intercambio de elementos
Z Iteración utilizada para cargar e imprimir el vector
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
B=0
MIENTRAS B = 0
B=1
PARA K = 1 HASTA N – 1
SI V(K) > V(K+1) En este punto se realiza el
B=0 proceso de intercambio.
AUX = V(K) La bandera se pone a cero
V(K) = V(K+1) y mientras permanezca en
V(K+1) = AUX ese estado el proceso se
FINSI sigue repitiendo.
FINPARA
FINMIENTRAS
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
FIN
3)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 inserción.
N Cantidad de elementos del vector
V Nombre del vector
AUX Auxiliar que se utiliza para almacenar en forma momentánea el
elemento actual
I Iteración utilizada para recorrer el vector
K Iteración utilizada para el proceso de inserción
Z Iteración utilizada para cargar e imprimir el vector
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 = 2 HASTA N
AUX = V ( I )
K=I–1
MIENTRAS AUX < V ( K )
V ( K + 1) = AUX
K=K-1
FINMIENTRAS
V ( K + 1 ) = AUX
FINPARA
PARA Z = 1 HASTA N
IMPRIMIR V(Z)
FINPARA
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 98


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

4)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 selección.

N Cantidad de elementos del vector


V Nombre del vector
AUX Auxiliar que se utiliza para almacenar elemento
I Iteración utilizada para el proceso de selección
K Toma el valor actual de I
J Iteración utilizada para el proceso de selección
Z Iteración utilizada para cargar e imprimir el vector

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 99


ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

1) Cargar e imprimir un vector de orden N.


Luego, introducir un elemento X.
Determinar si dicho elemento X, forma parte del vector.
Utilizar el método de búsqueda secuencial.
METODO UNO
N Cantidad de elementos del vector
V Nombre del Vector
K Iteración de carga, búsqueda e impresión
X Elemento a ser buscado en el vector
INICIO
LEER N
DIM V ( N )
PARA K = 1 HASTA N
LEER V(K)
FINPARA
PARA K = 1 HASTA N
IMPRIMIR V(K)
FINPARA
LEER X
PARA K = 1 HASTA N
SI V(K) = X
IMPRIMIR “EL ELEMENTO” X “FUE ENCONTRADO”
IMPRIMIR “SE HALLA EN LA POSICIÓN” K
FINSI
FINPARA
FIN
OBSERVACION
En el presente algoritmo, si el elemento X, se encuentra almacenado en el vector más de una vez, cada vez que se lo
encuentre se imprimirá el mensaje pertinente junto con su posición
El vector se recorre íntegramente, desde la primera posición hasta la última.
En caso de no existir el elemento X, buscado no se imprimirá ningún tipo de mensaje aclaratorio.
METODO DOS

N Cantidad de elementos del vector


V Nombre del Vector
K Iteración de carga, búsqueda e impresión
X Elemento a ser buscado en el vector
INICIO
LEER N
DIM V ( N )
PARA K = 1 HASTA N
LEER V(K)
FINPARA
PARA K = 1 HASTA N
IMPRIMIR V(K)
FINPARA
LEER X
Z =1
MIENTRAS ( V ( Z ) <> X) Y ( Z < N) La iteración finaliza si el elemento
Z=Z+1 X es encontrado, de lo contrario
FINMIENTRAS finaliza al llegar a su límite natu-
SI V( Z ) = X ral que es N.
IMPRIMIR “EL ELEMENTO SE HA ENCONTRADO EN” Z
SINO
IMPRIMIR “EL NUMERO NO SE ENCUENTRA EN EL VECTOR”
FINSI
FIN
OBSERVACION
Contrariamente al método uno desarrollado en la página anterior, en este algoritmo la búsqueda finaliza al localizarse el
elemento X buscado en el vector.
En caso de no existir el elemento en cuestión, la iteración finaliza al llegar a su límite que es N.
De ese modo, al preguntar si V(z) es igual X, se asume que el elemento buscado existe en el vector, pues la iteración ha
finalizado antes de llegar a su límite final.

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 100
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

METODO TRES

N Cantidad de elementos del vector


V Nombre del Vector
K Iteración de carga, búsqueda e impresión
X Elemento a ser buscado en el vector
INICIO
LEER N
DIM V ( N )
PARA K = 1 HASTA N
LEER V(K)
FINPARA
PARA K = 1 HASTA N
IMPRIMIR V(K)
FINPARA
LEER X
K=1
MIENTRAS K < = N
SI X = V(K)
IMPRIMIR “SE ENCONTRO ELEMENTO EN POSICION” K
K=N+1
SINO
K=K+1
FINSI
FINMIENTRAS
SI K = N
IMPRIMIR “NO SE ENCONTRO EL ELEMENTO” X
FINSI
FIN
OBSERVACION
Con esta metodología, el encontrarse el elemento X buscado en el vector, se corta en forma artificial la iteración con la
orden K = N+1.
En caso de no existir el elemento X buscado la iteración finaliza normalmente al llegar a su límite natural que es N, y por
consiguiente se puede asumir que el elemento no existe en el vector.
METODO CUATRO
N Cantidad de elementos del vector
V Nombre del Vector
K Iteración de carga, búsqueda e impresión
X Elemento a ser buscado en el vector
B Bandera
INICIO
LEER N
DIM V ( N )
PARA K = 1 HASTA N
LEER V(K) AUTORES. LIC. CESAR
FINPARA CALASTRA Y LIC.
PARA K = 1 HASTA N SILVANA DE CALASTRA
IMPRIMIR V(K) (EDICIÓN DE CORTESÍA)
FINPARA
LEER X
B=0
PARA K = 1 HASTA N
SI V(K) = X
B=1
FINSI
FINPARA
SI B = 1
IMPRIMIR “EL ELEMENTO FUE ENCONTRADO”
SINO
IMPRIMIR “EL ELEMENTO NO EXISTE”
FINSI
FIN
OBSERVACION
En el presente algoritmo, se define una bandera cuyo valor inicial es cero.
En caso de encontrarse el elemento X dentro del vector, entonces dicha bandera adquiere el valo r uno.
Por consiguiente una vez finalizada la iteración de búsqueda, si la bandera B, no cambió en ningún momento su valor, se
tiene la plena seguridad de que el elemento X, no existe en el vector V.
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 101
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 102
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

1) Cargar e imprimir un vector de orden N.


Calcular e imprimir su mediana, lo cual se hará del siguiente modo:
a) Ordenar el vector en forma secuencial ascendente
b) Si N, es impar la mediana será el elemento del medio.
De lo contrario, la mediana será la semisuma de los elementos del medio.
Esto es, la suma del primer medio con el segundo medio dividido por dos.

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
MEDIO1 Primer medio para calcular subíndice cuando N es par
MEDIO2 Segundo medio para calcular subíndice cuando N es par
MEDIO Subíndice del medio cuando N es impar
MEDIANA Auxiliar que se utiliza para calcular la mediana

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

2) Cargar e imprimir un vector de orden N.


Calcular e imprimir las frecuencias de los diferentes elementos del vector.
Frecuencia es la cantidad de veces que se repite cada elemento del vector.

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
F Contador de Frecuencias
B Bandera utilizada para capturar primer elemento del vector
AUXF Auxiliar de control de frecuencias
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 En primera instancia se ordena
SI V(K) > V(K+1) el vector y luego se calcula la
AUX = V(K) frecuencia de cada elemento
V(K) = V(K + 1)
V(K+1) = AUX
FINSI
FINPARA
FINPARA
F=0
B=0
AUXF = 0
PARA Z = 1 HASTA N
SI B = 0
B=1
AUXF = V(1)
F=F+1
SINO
SI AUXF = V(Z)
F=F+1
SINO
IMPRIMIR “EL ELEMENTO “ AUXF
IMPRIMIR “SE REPITE” F “VECES”
F=0
AUXF = V(Z)
F=F+1
FINSI
FINSI
SI Z = N
IMPRIMIR “EL ELEMENTO “ AUXF
IMPRIMIR “SE REPITE” F “VECES”
FINSI
FINPARA
FIN

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 104
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

3) Cargar e imprimir un vector de orden N.


Calcular e imprimir la MODA.
MODA, es el elemento que mas veces se repite
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
F Contador de Frecuencias
B Bandera utilizada para capturar primer elemento del vector
AUXF Auxiliar de control de frecuencias
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 En primera instancia se ordena
SI V(K) > V(K+1) el vector y luego se calcula la
AUX = V(K) frecuencia de cada elemento,
V(K) = V(K + 1) y a medida que se calcula la
V(K+1) = AUX frecuencia, se va calculando
FINSI la mayor frecuencia o sea la MODA
FINPARA
FINPARA
F=0
B=0
B2 = 0
AUXF = 0
MODA = 0
AUXM = 0
PARA Z = 1 HASTA N
SI B = 0 AUTORES. LIC. CESAR
B=1
AUXF = V(1) CALASTRA Y LIC.
F=F+1 SILVANA DE CALASTRA
SINO (EDICIÓN DE CORTESÍA)
SI AUXF = V(Z)
F=F+1
SINO
SI B2= 0
B2 = 1
MODA = F
AUXM = AUXF
SINO
SI F > MODA
MODA = F
AUXM = AUXF
FINSI
FINSI
F=0
AUXF = V(Z)
F=F+1
FINSI
FINSI
SI Z = N
SI F > MODA
AUXM = AUXF
MODA = F
FINSI
FINSI
FINPARA
IMPRIMIR “LA MODA ES “ AUXM
IMPRIMIR “SE REPITE “ MODA “VECES”
FIN

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.

RESUMEN DEL CAPITULO


METODOS DE ORDENAMIENTO DE VECTORES
1) Burbuja
A su vez se subdivide en:
a) Con Doble Iteración Anidada
b) Con Bandera o Señal
2) Método de Inserción
3) Método de Selección
BUSQUEDA EN VECTORES
1) Búsqueda lineal
Se desarrollaron cuatro métodos de búsqueda lineal
2) Búsqueda binaria
Previamente se debe ordenar el vector, y luego la búsqueda se efectúa por mitades.

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.

RESPUESTA A EJERCICIO MENTAL NRO. NUEVE


(AL DORSO DE INICIO DEL CAPITULO NUEVE)

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.

BÚSQUEDA BINARIA O DICOTÓMICA


FUENTE: Internet

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

1,1 1,2 1,3


2,1 2,2 2,3
3,1 3,2 3,3

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

1,1 1,2 1,3


2,1 2,2 2,3

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

3) Cargar e imprimir una matriz de orden 3 * 4.


Determinar e imprimir suma de elementos que se hallan en la primera fila.
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 que se hallan en la primera fila
MATRIZ M
1,1 1,2 1,3 1,4
2,1 2,2 2,3 2,4
3,1 3,2 3,3 3,4

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

5) Cargar e imprimir una matriz de orden 6 * 3.


Sumar los elementos de la primera fila con los elementos de la segunda fila y guardar el resultado en la tercera fila, luego
llenar de ceros los elementos de la cuarta fila.
Imprimir la matriz original y la matriz resultante.

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

6) Cargar e imprimir una matriz de orden 4 * 5.


Volcar todos los elementos de la segunda fila a un vector, luego imprimir el vector y el mayor elemento del mismo.
MATRIZ ORIGINAL
10 15 20 29 5
12 13 16 27 9
40 30 50 75 60
19 22 95 85 25
VECTOR
12 13 16 27 9

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

7) Cargar e imprimir una matriz de orden 4 * 4.


Determinar e imprimir suma de elementos que se encuentran en la diagonal principal (método uno).

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

PARA F = 1 HASTA 4 Se crea un contador que cumple

AC = AC + M ( F , F ) el rol de fila y columna a la vez

FINPARA

PARA F = 1 HASTA 4 AUTORES. LIC. CESAR


PARA C = 1 HASTA 4 CALASTRA Y LIC.
IMPRIMIR M(F,C) SILVANA DE CALASTRA
FINPARA (EDICIÓN DE CORTESÍA)
FINPARA
IMPRIMIR AC
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 114
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

8) Cargar e imprimir una matriz de orden 4 * 4.


Determinar e imprimir suma de elementos que se encuentran en la diagonal secundaria (método uno).

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

C=4 Se crea un contador manual C, que


PARA F = 1 HASTA 4 se inicializa con el valor 4, que re-
AC = AC + M ( F , C ) presenta a las columnas y que va
C=C–1 decreciendo.
FINPARA F, representa a las filas y se incre-
menta normalmente.
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
IMPRIMIR M(F,C)
FINPARA
FINPARA
IMPRIMIR AC
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 115
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

9) Cargar e imprimir una matriz de orden 4 * 4.


Determinar e imprimir suma de elementos que se encuentran debajo de la diagonal principal.
MATRIZ ORIGINAL
15 20 29
2,1 16 27
ELEMENTOS QUE
ESTAN BAJO LA 3,1 3,2 75
DIAGONAL 4,1 4,2 4,3
PRINCIPAL
DIAGONAL
PRINCIPAL
OBSERVACION
Nótese como la fila es mayor a la columna en los elementos que se hallan bajo la diagonal principal de la ma triz
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
10) Cargar e imprimir una matriz de orden 4 * 4.
Determinar e imprimir suma de elementos que se encuentran sobre la diagonal principal cuyo contenido sea par.
MATRIZ ORIGINAL
1,2 1,3 1,4
ELEMENTOS QUE
2,1 2,3 2,4 ESTAN SOBRE LA
3,1 3,2 3,4 DIAGONAL PRINCIPAL

4,1 4,2 4,3


DIAGONAL
PRINCIPAL
OBSERVACION
Nótese como la fila es menor a la columna en los elementos que se hallan sobre la diagonal principal de la matriz,
contrariamente a los que elementos que se hallan bajo la diagonal principal de la matriz, en donde la fila es mayor a la
columna.
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 ) Y ( M ( F , C ) / 2 = ENT ( M ( F , C ) / 2) )
AC = AC + M(F,C)
FINSI
FINPARA
FINPARA
AUTORES. LIC. CESAR
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4 CALASTRA Y LIC.
IMPRIMIR M(F,C) SILVANA DE CALASTRA
FINPARA (EDICIÓN DE CORTESÍA)
FINPARA
IMPRIMIR AC
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 116
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

11) Cargar e imprimir una matriz de orden 4 * 4.


Llenar de ceros los elementos que se encuentran bajo la diagonal principal, y de unos los elementos que están sobre la
diagonal principal.
Imprimir matriz resultante.
INICIO
DIM M(4,4)
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
LEER M(F,C)
FINPARA
FINPARA
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
IMPRIMIR M(F,C)
SI F > C
M(F ,C)=0 AUTORES. LIC. CESAR
FINSI CALASTRA Y LIC.
SI F < C
M(F ,C)=1 SILVANA DE CALASTRA
FINSI (EDICIÓN DE CORTESÍA)
FINPARA
FINPARA
PARA F = 1 HASTA 4
PARA C = 1 HASTA 4
IMPRIMIR M(F,C)
FINPARA
FINPARA
FIN
12) Cargar e imprimir una matriz de orden 6 * 6.
Llenar de ceros los elementos que se encuentran sobre la diagonal secundaria .
Imprimir matriz resultante.
MATRIZ ORIGINAL

ELEMEN 1,1 1,2 1,3 1,4 1,5


TOS 2,1 2,2 2,3 2,4 2,6
QUE
ESTAN 3,1 3,2 3,3 3,5 3,6
S/DIAGO 4,1 4,2 4,4 4,5 4,6
NAL
SEC. 5,1 5,3 5,4 5,5 5,6
6,2 6,3 6,4 6,5 6,6
DIAGONAL
SECUNDARIA 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
Z=6 Z se va decrementando y sirve para marcar el
PARA K = 1 HASTA 5 límite del contador de columnas M.
PARA M = 1 HASTA Z – 1 M, en su primer valor llega a 5,
M(K,M)=0 y sirve para poner a 0, la primera
FINPARA fila hasta la columna 5, luego la
Z=Z–1 segunda fila hasta la columna 4 y
FINPARA así sucesivamente.
PARA F = 1 HASTA 6
PARA C = 1 HASTA 6
IMPRIMIR M(F,C)
FINPARA
FINPARA
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 117
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

13) Cargar e imprimir una matriz de orden 6 * 6.


Llenar de unos los elementos que se encuentran bajo la diagonal secundaria.
Imprimir matriz resultante.
MATRIZ ORIGINAL

1,1 1,2 1,3 1,4 1,5


ELEMENTOS
2,1 2,2 2,3 2,4 2,6
QUE ESTAN
3,1 3,2 3,3 3,5 3,6 BAJO DIAG.
4,1 4,2 4,4 4,5 4,6 SECUNDARIA
5,1 5,3 5,4 5,5 5,6
6,2 6,3 6,4 6,5 6,6

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)

1) Cargar e imprimir una matriz de orden 3*4.


Determinar e imprimir la suma de todos los elementos positivos de la matriz.
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.
3) Cargar e imprimir una matriz de orden 4*5.
Determinar e imprimir suma de aquellos elementos que se encuentran en la segunda columna.
4) Cargar e imprimir una matriz de orden 4*5.
Sumar los elementos de la primera columna con los elementos de la segunda columna, y guardar el resultado en la cuarta
columna.
Imprimir matriz resultante.
5) Cargar e imprimir una matriz de orden 4*4.
Determinar e imprimir la suma de los elementos que se encuentran en la diagonal principal que sean múltiplos de tres.
6) Cargar e imprimir una matriz de orden 4*4.
Volcar todos los elementos de la diagonal secundaria en un vector.
Imprimir el vector.
7) Cargar e imprimir una matriz de orden 6*6.
Determinar e imprimir la suma de aquellos elementos que se encuentran en columnas pares.

EJERCICIOS PROPUESTOS
(A SER RESUELTOS POR EL LECTOR)

1) Cargar e imprimir una matriz de orden 3*4.


Determinar e imprimir suma y cantidad de elementos cuyo contenido sea mayor a 15 y menor a 75.
2) Cargar e imprimir una matriz de orden 3*3.
Determinar e imprimir suma de aquellos elementos que sean múltiplos de 3 pero no de 6.
3) Cargar e imprimir una matriz de orden 3*7.
Determinar e imprimir suma de elementos cuyo contenido sea múltiplo de 3 y se encuentran entre la columna 2 inclusive y
la columna 5 inclusive.
4) Cargar e imprimir una matriz de orden 4*4.
Determinar e imprimir suma y cantidad de elementos que se hallen fuera de la diagonal principal y cuyo contenido sea
menor a 115 y mayor a78.
5) Cargar e imprimir una matriz de orden 4*4.
Transferir a un vector todos los elementos de la matriz que se hallan fuera de la diagonal secundaria de la matriz y cuyo
contenido sea primo.

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.

METODO DE BURBUJA (ORDENAMIENTO DE ARRAYS)


FUENTE: Internet
Burbuja: Consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. Con el
array anterior, {40,21,4,9,10,35}:
Primera pasada:
{21,40,4,9,10,35} <-- Se cambia el 21 por el 40.
{21,4,40,9,10,35} <-- Se cambia el 40 por el 4.
{21,4,9,40,10,35} <-- Se cambia el 9 por el 40.
{21,4,9,10,40,35} <-- Se cambia el 40 por el 10.
{21,4,9,10,35,40} <-- Se cambia el 35 por el 40.
Segunda pasada:
{4,21,9,10,35,40} <-- Se cambia el 21 por el 4.
{4,9,21,10,35,40} <-- Se cambia el 9 por el 21.
{4,9,10,21,35,40} <-- Se cambia el 21 por el 10.
Ya están ordenados, pero para comprobarlo habría que acabar esta segunda comprobación y hacer una tercera.
Si el array tiene N elementos, para estar seguro de que el array está ordenado, hay que hacer N-1 pasadas, por lo que habría que
hacer (N-1)*(N-i-1) comparaciones, para cada i desde 1 hasta N-1. El número de comparaciones es, por tanto, N(N-1)/2, lo que nos
deja un tiempo de ejecución, al igual que en la selección, en O(n2 ).
Inserción directa: En este método lo que se hace es tener una sublista ordenada de elementos del array e ir insertando el resto en el
lugar adecuado para que la sublista no pierda el orden. La sublista ordenada se va haciendo cada vez mayor, de modo que al final la
lista entera queda ordenada. Para el ejemplo {40,21,4,9,10,35}, se tiene:
{40,21,4,9,10,35} <-- La primera sublista ordenada es {40}.

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}.

Y por último insertamos el 35:


{4,9,10,21,40,40} <-- aux=35;
{4,9,10,21,35,40} <-- El array está ordenado
En el peor de los casos, el número de comparaciones que hay que realizar es de N*(N+1)/2-1, lo que nos deja un tiempo de
ejecución en O(n2). En el mejor caso (cuando la lista ya estaba ordenada), el número de comparaciones es N-2. Todas ellas son
falsas, con lo que no se produce ningún intercambio. El tiempo de ejecución está en O(n).
El caso medio dependerá de cómo están inicialmente distribuidos los elementos. Vemos que cuanto más ordenada esté inicialmente
más se acerca a O(n) y cuanto más desordenada, más se acerca a O(n2).
El peor caso es igual que en los métodos de burbuja y selección, pero el mejor caso es lineal, algo que no ocurría en éstos, con lo que
para ciertas entradas podemos tener ahorros en tiempo de ejecución.

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

El proceso finaliza cuando se digita la constante 99999 en el campo NV.


Ya dentro de la iteración, se pregunta SI NV <> 99999 , de modo a no guardar dicha constante como último registro del
archivo, pues en los procesos de lectura del archivo, el fin de archivo se detectará a través del indicador EOF (End of File)
por sus siglas en inglés.

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 :

ABRIR ARCHIVO – PROCESAR ARCHIVO - CERRAR ARCHIVO

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 123
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

2) Leer totalmente el archivo 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.
TV Acumulador de total general de ventas PSEUDOCODIGO
INICIO
TV = 0
ABRIR “VENTAS”
MIENTRAS NO EOF()
LEER NV, IV
TV = TV + IV
FINMIENTRAS
IMPRIMIR TV
CERRAR “VENTAS”
FIN
OBSERVACION IMPORTANTE
El acumulador TV, se inicializa con el valor 0, y se lo define para calcular el total general de ventas.
El indicador EOF, se activa en forma automática cuando se detecta el último registro del arc hivo.
Por consiguiente, el proceso de lectura debe repetirse mientras no se procesen todos los registros del archivo.
Se hace notar una vez más que, el último registro en realidad no contiene la constante 99999 en el campo NV, pues dicha
condición se había utilizado en el ejercicio anterior, solo para finalizar el proceso de carga de información en el archivo.
Nótese que en este proceso se cumple cabalmente el esquema : ABRIR ARCHIVO, PROCESAR ARCHIVO (mientras no
eof() ), CERRAR ARCHIVO, del cual se había hecho mención en el ejercicio anterior.
En este caso obviamente el archivo “VENTAS”, es de organización secuencial y el sistema de proceso se conoce con el
nombre técnico de proceso batch o en lotes, pues es el que más se adecua a este tipo de archivos.
Generalmente, los procesos on line o en tiempo real, se utilizan con archivos de organización secuencial indexada o de
organización directa.
CORTES DE CONTROL O RUPTURAS DE CONTROL
A UN NIVEL
3) Procesar el archivo “VENTAS”.
Calcular e imprimir el total de ventas de cada vendedor y el total general de ventas.
Se asume que el archivo está clasificado en orden secuencial ascendente por el campo NV (NRO. DE VENDEDOR).
El fin de archivo se detectará en forma automática a través del indicador EOF.
B Bandera
AV Auxiliar de control de NV (número de vendedor)
TV Total de ventas de cada vendedor
TG Total general de ventas de todos los vendedores
PSEUDOCODIGO
INICIO
B=0
AV = 0
TV = 0
TG = 0
ABRIR “VENTAS”
MIENTRAS NO EOF()
LEER NV, IV
SI B = 0
B=1
AV = NV
TV = TV + IV
SINO
SI AV = NV
TV = TV + IV Acumulación por detalle, se e-
SINO fectúa a medida que se lee ca-
TG = TG + TV da registro
IMPRIMIR AV, TV
TV = 0
AV = NV
TV = TV + IV Acumulación por totales, se e-
FINSI fectúa sólo cuando hay corte
FINSI o ruptura de control.
FINMIENTRAS
IMPRIMIR AV, TV
TG = TG + TV
IMPRIMIR TG
CERRAR “VENTAS”
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 124
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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.

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.

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.

METODO DE ORDENAMIENTO POR INSERCIÓN BINARIA (ORDENAMIENTO DE ARRAYS)


FUENTE : Internet
Inserción binaria: Es el mismo método que la inserción directa, excepto que la búsqueda del orden de un elemento en la
sublista ordenada se realiza mediante una búsqueda binaria, lo que en principio supone un ahorro de tiempo. No obstante,
dado que para la inserción sigue siendo necesario un desplazamiento de los elementos, el ahorro, en la mayoría de los casos,
no se produce, si bien hay compiladores que realizan optimizaciones que lo hacen ligeramente más rápido.
METODO SHELL
Es una mejora del método de inserción directa, utilizado cuando el array tiene un gran número de elementos. En este
método no se compara a cada elemento con el de su izquierda, como en el de inserción, sino con el que está a un cierto
número de lugares (llamado salto) a su izquierda. Este salto es constante, y su valor inicial es N/2 (siendo N el número de
elementos, y siendo división entera). Se van dando pasadas hasta que en una pasada no se intercambie ningún elemento de
sitio. Entonces el salto se reduce a la mitad, y se vuelven a dar pasadas hasta que no se intercambie ningún elemento, y así
sucesivamente hasta que el salto vale 1.
Por ejemplo, lo pasos para ordenar el array {40,21,4,9,10,35} mediante el método de Shell serían:
Salto=3:
Primera pasada:
{9,21,4,40,10,35} <-- se intercambian el 40 y el 9.
{9,10,4,40,21,35} <-- se intercambian el 21 y el 10.
Salto=1:
Primera pasada:
{9,4,10,40,21,35} <-- se intercambian el 10 y el 4.
{9,4,10,21,40,35} <-- se intercambian el 40 y el 21.
{9,4,10,21,35,40} <-- se intercambian el 35 y el 40.
Segunda pasada:
{4,9,10,21,35,40} <-- se intercambian el 4 y el 9.
Con sólo 6 intercambios se ha ordenado el array, cuando por inserción se necesitaban muchos más

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

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN 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

De lo contrario, multiplicar el número por la constante cuatro e imprimir el resultado.


INICIO
Z=0 QUE VALOR TENDRA Z ?
LEER X X Z
SI X < 40 50 __
Z=X+8 12 __
SINO 45 __
Z=X*4 21 __
FINSI 60 __
IMPRIMIR Z
FIN
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.
INICIO
K=0 QUE VALOR TENDRA K ?
LEER A A K
SI A > 15 20 __
SI A < 40 25 __
K=A*3 29 __
FINSI 35 __
SINO
K = A + 30
FINSI
IMPRIMIR K
FIN

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.
INICIO
R=0
LEER X QUE VALOR TENDRA R ?
SI X > 100 X R
SI X < 200 190 __
R=X*4 70 __
FINSI 150 __
SINO 50 __
R = X + 30 110 __
FINSI
IMPRIMIR R
FIN
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”.
INICIO
Z=0 QUE VALOR TENDRA Z ?
LEER M M Z
SI M > 10 20 __
SI ( M MOD 7 ) = 0 28 __
Z=(M*2)+3 5 __
SINO 30 __
Z=M–3 49 __
FINSI
SINO
IMPRIMIR “ERROR”
FINSI
FIN AUTORES. LIC. CESAR
CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 131
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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”.
INICIO
X=0
LEER N
SI N > 29
SI N MOD 2 = 0
SI N MOD 10 = 0 QUE VALOR TENDRA X ?
X=N*4 N X
SINO 40 __
X=N+5 32 __
FINSI 25 __
SINO 50 __
X = N – 10 36 __
FINSI 20 __
IMPRIMIR X
SINO
IMPRIMIR “ERROR”
FINSI
FIN

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 QUE VALOR TENDRA R ?


R=0 X Y R
LEER X, Y 140 5 ___
SI X > 100 Y X < 150 155 10 ___
R=Y* Y 110 6 ___
IMPRIMIR R 75 4 ___
FINSI 120 3 ___
FIN

2) Introducir tres números cualesquiera.


Si el primero de ellos es mayor a cien y menor a doscientos, multiplicar el segundo número por dos e imprimir el
resultado.
De lo contrario, multiplicar el tercer número por tres e imprimir el resultado.
INICIO
M=0
LEER N, P, X QUE VALOR TENDRA M ?
SI N > 100 Y N < 200 N P X M
M=P*2 140 5 9 ___
SINO 55 10 2 ___
M=X*3 110 6 8 ___
FINSI 75 4 3 ___
IMPRIMIR M 120 3 7 ___
FIN

3) Introducir tres números cualesquiera.


Si el tercero es mayor a diez y menor a cuarenta y el segundo número es mayor a sesenta y menor a ochenta,
elevar el primer número al cuadrado e
imprimir el resultado.
De lo contrario, elevar el primer número a la tercera potencia e imprimir el resultado.
PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 132
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

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

4) Introducir dos números cualesquiera.


Si el primero de ellos es par y el segundo es mayor a cincuenta, sumar entre si ambos números y luego imprimir
el resultado.
De lo contrario, restar entre si ambos números y luego imprimir el resultado.

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

5) Introducir dos números cualesquiera.


Si el segundo de ellos es múltiplo de tres, y el primero es impar, multiplicar entre si ambos números e imprimir el resultad o.
En caso contrario, sumar entre si ambos números e imprimir el resultado.

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 ?

P TENDRA EL VALOR : 594

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

3) Introducir doce números de uno en uno.


Determinar e imprimir :
a) Suma y cantidad de números mayores a veinte y menores a cincuenta
b) Suma y cantidad de números que están fuera de dicho rango.
INICIO
AC20 = 0 QUE VALOR TENDRAN LAS VARIABLES
C20 = 0 AC20,C20,R Y Z ?
R =0 A AC20 C20 R Z
Z =0 5
PARA X = 1 HASTA 12 7
LEER A 22
SI ( A > 20 ) Y ( A < 50 ) 15
AC20 = AC20 + A 10
C20 = C20 + 1 11
SINO 25
R=R+A 30
Z=Z+1 60
FINSI 70
IMPRIMIR AC20, C20, R, Z 45
FINPARA 85
FIN

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 134
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

4) Introducir ocho números de uno en uno.


QUE VALOR TENDRA LA VARIABLE
Determinar e imprimir suma de números múltiplos de tres.
AC3?
Z AC3
INICIO
AC3 = 0 8
PARA R = 1 HASTA 8 10
LEER Z 15
SI Z / 3 = ENT ( Z / 3 ) 45
AC3 = AC3 + Z 14
FINSI 60
FINPARA 21
IMPRIMIR AC3 29
FIN

5) Introducir quince números de uno en uno.


Determinar e imprimir:
a) Cantidad y suma de números múltiplos de cinco
b) Cantidad y suma de números no múltiplos de cinco.
INICIO
AC5 = 0 QUE VALOR TENDRAN LAS VARIABLES AC5, C5, CNM5 Y NM5?
C5 =0 Z C5 AC5 CNM5 NM5
NM5 = 0 20
CNM5 = 0
15
PARA R = 1 HASTA 15
12
LEER Z
SI Z / 5 = ENT ( Z / 5 ) 30
C5 = C5 + 1 17
AC5 = AC5 + Z 45
SINO 10
CNM5 = CNM5 + 1 17
NM5 = NM5 + Z 50
FINSI 55
FINPARA 31
IMPRIMIR AC5, C5, NM5, CNM5 22
FIN 41
60
100

QUE VALOR TENDRA ME?


X ME
6) Introducir veinte números de uno en uno.
120
Determinar e imprimir el menor de la serie.
INICIO 200
ME = 0 300
LEER X 110
ME = X 500
PARA C = 1 HASTA 19 85
LEER X 350
SI X < ME 400
ME = X 55
FINSI 75
FINPARA 45
IMPRIMIR ME -15
FIN 22
41
-20
780
850
930
410
-5

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 135
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

7) Introducir un número entero positivo.


Si el mismo es par y además es mayor a cuatro y menor a diez, calcular e
Imprimir su factorial.
INICIO QUE VALOR TENDRA F, SI LA VARIABLE A
LEER A TIENE ALMACENADA EL VALOR 6 ?
SI ( A / 2 = ENT ( A / 2 ) ) Y ( A > 4 Y A < 10 ) C F
F=1
PARA C = 1 HASTA A
F=F*C
FINPARA
IMPRIMIR F
FINSI
FIN

8) Generar e imprimir en forma automática los veinte primeros números fibonacci.


INICIO
AC = 0
F1 = 1
F2 = 1
IMPRIMIR F1, F2 SE IMPRIME LOS VALORES 1 (F1) 1 (F2)
PARA C = 3 HASTA 20
AC = F1 + F2 LUEGO INICIALMENTE AC VALE 2
IMPRIMIR AC AL IMPRIMIRSE AC SE IMPRIME INICIALMENTE 2
F1 = F2 LUEGO EL VALOR 1 DE F2 SE TRASFIERE A F1
F2 = AC LUEGO EL VALOR 2 DE AC SE TRASFIERE A F2 Y ASI SUCESIVAMENTE
FINPARA
FIN

9) Generar en forma automática e imprimir los números múltiplos de tres


comprendidos entre quince y cuarenta y cinco.
ALTERNATIVA UNO
INICIO
PARA X = 15 HASTA 45 X TOMA INICIALMENTE EL VALOR 15 Y
SI X / 3 = ENT ( X / 3 ) LUEGO LOS VALORES 18,21,24,27 Y ASI
IMPRIMIR X SUCESIVAMENTE, Y A MEDIDA QUE
FINSI ADQUIERE ESTOS VALORES LOS VA
FINPARA IMPRIMIENDO
FIN
ALTERNATIVA DOS
INICIO
PARA X = 15 HASTA 45 INCREMENTO 3
IMPRIMIR X
FINPARA
FIN
10) Imprimir en forma automática en orden descendente todos los números múltiplos de siete comprendidos entre
cientocuarenta inclusive y catorce inclusive.
ALTERNATIVA UNO
INICIO
PARA X = 140 HASTA 14 INCREMENTO -1 X VALE INICIALMENTE 140 Y LUEGO 139,
SI X / 7 = ENT ( X / 7 ) 138, 137 Y ASI SUCESIVAMENTE Y CADA
IMPRIMIR X VEZ QUE SE GENERA DICHO NUMERO X
FINSI SE PREGUNTA SI ES MULTIPLO DE 7
FINPARA CON LA SELECCIÓN SI X/7=ENT(X/7)
FIN
ALTERNATIVA DOS
INICIO
PARA X = 140 HASTA 14 INCREMENTO -7 X VA TOMANDO AUTOMATICAMENTE
IMPRIMIR X LOS VALORES 140, 133, 126, 119 Y ASI
FINPARA SUCESIVAMENTE. A MEDIDA QUE TOMA
FIN ESOS VALORES SE LOS VA
IMPRIMIENDO DENTRO DE LA
ITERACION.

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

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

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

4) Introducir diez números de uno en uno.


Determinar e imprimir cantidad de veces que a un número negativo le sigue un número positivo en la serie.

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

2) Cargar e imprimir un vector de doce elementos.


Determinar e imprimir la suma de aquellos elementos que sean múltiplos de tres y cinco al mismo tiempo.
INICIO
S=0 QUE VALOR TENDRA LA VARIABLE
DIM Z(12) S?
PARA K = 1 HASTA 12 K Z(K) S
LEER Z ( K ) 1 9
SI (Z ( K ) / 3 = ENT ( Z( K ) / 3 )) Y (Z ( K ) / 5 = ENT ( Z( K ) / 5 )) 2 12
S=S+Z( K) 3 17
FINSI 4 15
FINPARA 5 21
PARA K = 1 HASTA 12 6 25
IMPRIMIR Z ( K ) 7 35
FINPARA 8 19
IMPRIMIR S 9 39
FIN 10 45
11 10
12 99

3) Cargar e imprimir un vector de quince elementos.


Determinar e imprimir la suma de aquellos elementos que se encuentran en posiciones que sean múltiplos de tres.
INICIO
S=0 QUE VALOR TENDRA LA VARIABLE S ?
DIM V(15) K V(K) S
PARA K = 1 HASTA 15 1 88
LEER V(K) 2 41
FINPARA 3 2
PARA K = 3 HASTA 15 INCREMENTO 3 4 35
S = S + V(K) 5 38
FINPARA 6 4
PARA K = 1 HASTA 15 7 84
IMPRIMIR V(K) 8 83
FINPARA 9 5
IMPRIMIR S 10 14
FIN 11 19
4) Cargar e imprimir un vector de diez elementos.
12 6
Determinar e imprimir la solución MINIMAX de elementos pares. 13 33
INICIO 14 94
B1 = 0
B2 = 0 15 7
MENOR = 0
MAYOR = 0
MINIMAX = 0 QUE VALOR TENDRA LA VARIABLE
DIM V(10) MINIMAX ?
PARA K = 1 HASTA 10
LEER V(K) K V(K) MINIMAX
SI V(K) / 2 = ENT ( V(K) / 2) 1 10
SI B1 = 0
B1 = 1
2 20
MENOR = V(K) 3 12
SINO 4 14
SI V(K) < MENOR
MENOR = V(K) 5 55
FINSI 6 41
FINSI
SI B2 = 0 7 35
B2 = 1 8 -10
MAYOR = V(K) 9 44
SINO
SI V(K) > MAYOR 10 46
MAYOR = V(K)
FINSI
FINSI
FINSI
FINPARA
MINIMAX = MAYOR - MENOR
PARA K = 1 HASTA 10
IMPRIMIR V(K)
FINPARA
IMPRIMIR MINIMAX
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 141
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

5) Cargar e imprimir un vector A de diez elementos.


Luego, transferir los primeros cinco elementos del vector A, a un segundo vector a llamarse X.
Además, transferir los cinco últimos elementos del vector A, a un tercer vector a llamarse Z.
Imprimir los vectores X y Z.
INICIO
L=0
DIM A(10), X(5), Z(5)
PARA K = 1 HASTA 10 DADO EL VECTOR A, DE DIEZ ELEMENTOS QUE
LEER A(K) CONTIENE LOS SIGUIENTES VALORES :
FINPARA
PARA K = 1 HASTA 10 5 2 9 8 0 1 6 7 4 3
IMPRIMIR A(K)
FINPARA COMPLETAR LOS VALORES QUE ALMACENARA EL
PARA K = 1 HASTA 5 VECTOR X :
L=L+1
X(L) = A(K) COMPLETAR LOS VALORES QUE ALMACENARA EL
FINPARA VECTOR Z :
PARA K = 6 HASTA 10
L=L+1
Z(L) = A(K)
FINPARA
PARA K = 1 HASTA 5
IMPRIMIR X(K)
FINPARA
PARA K = 1 HASTA 5
IMPRIMIR Z(K)
FINPARA
FIN

6) Cargar e imprimir un vector de quince elementos.


Determinar e imprimir la suma de aquellos elementos que se encuentran entre las posiciones siete inclusive y doce
inclusive, y que además su contenido sea par.

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

3) Cargar e imprimir una matriz de orden 4*5.


Determinar e imprimir suma de aquellos elementos que se encuentran en la segunda columna.

ALTERNATIVA UNO ALTERNATIVA DOS

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

4) Cargar e imprimir una matriz de orden 4*5.


Sumar los elementos de la primera columna con los elementos de la segunda columna, y guardar el resultado en la cuarta
columna.
Imprimir matriz resultante.
INICIO
S= 0
DIM M(4,5)
PARA I = 1 HASTA 4
PARA J = 1 HASTA 5
LEER M( I , J )
FINPARA
FINPARA
PARA I = 1 HASTA 4 AUTORES. LIC. CESAR
PARA J = 1 HASTA 5 CALASTRA Y LIC.
IMPRIMIR M ( I , J )
SILVANA DE CALASTRA
FINPARA
FINPARA (EDICIÓN DE CORTESÍA)
PARA I = 1 HASTA 4
M(I,4)=M(I,1)+M(I, 2)
FINPARA
PARA I = 1 HASTA 4
PARA J = 1 HASTA 5
IMPRIMIR M ( I , J )
FINPARA
FINPARA
FIN
5) Cargar e imprimir una matriz de orden 4*4.
Determinar e imprimir la suma de los elementos que se encuentran en la diagonal principal que sean múltiplos de tres.
ALTERNATIVA UNO
INICIO
S=0
DIM M ( 4, 4 )
PARA I = 1 HASTA 4
PARA J = 1 HASTA 4
LEER M ( I , J )
SI ( I = J ) Y ( M ( I , J ) / 3 = ENT ( M ( I , J ) / 3 )
S=S+M(I,J)
FINSI
FINPARA
FINPARA
PARA I = 1 HASTA 4
PARA J = 1 HASTA 4
IMPRIMIR M ( I , J )
FINPARA
FINPARA
IMPRIMIR S
FIN
ALTERNATIVA DOS
INICIO
S=0
DIM M ( 4, 4 )
PARA I = 1 HASTA 4
PARA J = 1 HASTA 4
LEER M ( I , J )
FINPARA
FINPARA
PARA K = 1 HASTA 4
SI M ( K , K ) / 3 = ENT ( M ( K , K ) / 3 )
S=S+M(K,K)
FINSI
PARA I = 1 HASTA 4
PARA J = 1 HASTA 4
IMPRIMIR M ( I , J )
FINPARA
FINPARA
IMPRIMIR S
FIN

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 144
ALGORITMIA BASICA FUNDAMENTAL-EDICION DE CORTESÍA

6) Cargar e imprimir una matriz de orden 4*4.


Volcar todos los elementos de la diagonal secundaria en un vector.
Imprimir el vector.
INICIO
R=0
DIM M(4,4) , V(4)
PARA I = 1 HASTA 4
PARA J = 1 HASTA 4
LEER M ( I , J )
SI ( I + J ) = 5
R=R+1
V(R)=M(I,J)
FINSI
FINPARA
FINPARA
PARA I = 1 HASTA 4
PARA J = 1 HASTA 4
IMPRIMIR M ( I , J )
FINPARA
FINPARA
PARA K = 1 HASTA 4
IMPRIMIR V ( K )
FINPARA
IMPRIMIR AC
FIN

7) Cargar e imprimir una matriz de orden 6*6.


Determinar e imprimir la suma de aquellos elementos que se encuentran en columnas pares.
INICIO
AC = 0
DIM M(6,6)
PARA I = 1 HASTA 6
PARA J = 1 HASTA 6
LEER M ( I , J )
FINPARA
FINPARA
PARA I = 1 HASTA 6
PARA J = 2 HASTA 6 INCREMENTO 2
AC = AC + M ( I , J )
FINPARA
FINPARA
PARA I = 1 HASTA 6
PARA J = 1 HASTA 6
IMPRIMIR M ( I , J )
FINPARA
FINPARA
FIN

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN 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

 Morales Pascual, José Luis – Programación de Ordenadores

 Joyanes Aguilar, Luis – Metodología de la Programación

 Clavel, Jorgesen – Introducción a la Programación

 Hughes, Juan – A Structured approach to programing

 Joyanes Aguilar, Luis – Fundamentos de Programación

 Dale, Lilly – Pascal y Estructura de Datos

 Lewis, T. G.; Smith, M. Z. – Estructuras de Datos

 Wirth, Niklaus – Algoritmos + Estructuras de Datos = Programas

 Joyanes Aguilar, Luis – Introducción a la Teoría de Ficheros

 Roux, M – Algoritmos de Clasificación

 Young, S. J. – Real Time Languages

 Joyanes Aguilar, Luis – Programación BASIC para microcomputadoras

 Oxford, Diccionario Oxford de Informática

AUTORES. LIC. CESAR


CALASTRA Y LIC.
SILVANA DE CALASTRA
(EDICIÓN DE CORTESÍA)

PREPARADO POR LIC. CESAR CALASTRA & LIC. SILVANA DE CALASTRA 149

Você também pode gostar