Está en la página 1de 49

LÓGICA DE

PROGRAMACIÓN

Docente: LEONARDO CASTRO GALLO

CLASES TEÓRICAS
INTRODUCCIÓN A LAS
ESTRUCTURAS DE DATOS
DESCRIPCION DESCRIPCION
TEMA

TEMA
UND

UND
INTRODUCCION A LAS ESTRUCTURAS DE DATOS METODOS DE ORDENACION Y BUSQUEDA

1.1 Algoritmos y Estructura de Datos 3.1 Métodos de Ordenación

1.2 Estructura Condicional 3.2 Métodos de Ordenación por selección


1 3
1.3 Estructuras Repetitivas
3.3 Métodos de Búsqueda

1.4 Clasificación de las Estructuras de Datos


Operaciones con arreglos multidimensionales

2 OPERACIONES CON ARREGLOS UNIDIMENSIONALES INTRODUCCION A LAS ESTRUCTURAS DE DATOS


4
DINAMICAS
2.1 Operaciones Algorítmicas con
arreglos unidimensionales 4.1 Lista Simple, Lista doblemente enlazada

2.2 Métodos de recolección de datos 4.2 Pilas y Colas


2.3 Operaciones con Vectores
4.3 Arboles

2.4 Recursividad
Grafos

Curso : Lógica de Programación– Clases Teóricas 2


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
INTRODUCCION A LAS ESTRUCTURAS
DE DATOS

CAPITULO 1.1
ALGORITMOS Y ESTRUCTURA DE
DATOS

OBJETIVOS A ALCANZAR:
• Usted será capaz de “conocer e identificar la
terminología para construir y resolver
algoritmos con las estructuras de datos más
adecuadas”.

Curso : Lógica de Programación– Clases Teóricas 3


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS

¿Cómo nació la palabra ALGORITMO?


• La palabra algoritmo se deriva de la traducción al latín de la
palabra árabe alkhowarizmi.
• Mohammed ibn Musa al-Khwarizmi; nació en Bagdad entre
los años 780 a 785 dc, falleció en el 850 dc). Fue un
matemático y astrónomo árabe. (Se pronuncia Aljuarismi).
• Su principal aportación fue la de introducir a los matemáticos
europeos en los numerales indoarábigos y en los principios
fundamentales del álgebra.
• Escribió un tratado sobre manipulación de números y
ecuaciones en el siglo IX. Llamado el “Padre de las
computadoras”.

Un algoritmo es una serie de pasos (métodos)


organizados que permite dar solución a un problema
específico.

Curso : Lógica de Programación– Clases Teóricas 4


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS

TIPOS D E ALGORITMOS LENGUA JES ALGORITMICOS

 CUALITATIVOS – Son aquellos que Indican una serie de símbolos y reglas que se utilizan para describir de
describen los pasos utilizando palabras. manera explícita un proceso. Pueden ser:

 CUANTITATIVOS – Son aquellos que utilizan  Gráficos o Diagrama de Flujo: Es la representación


cálculos numéricos para definir los pasos del gráfica de las operaciones que realiza un algoritmo.
proceso
 No Gráficos o Pseudocódigo: Es la representación en
forma descriptiva de las operaciones que debe realizar un
algoritmo.

Curso : Lógica de Programación– Clases Teóricas 5


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS

CARACTERISTICAS D E U N ALGORITMO

 FINITO– Si se sigue un algoritmo, se debe terminar


en un número finito de pasos.

 DEFINIBLE – Un algoritmo debe ser preciso e


indicar el orden de realización de cada paso. Si se sigue
un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.

 E N TR A DAS - El algoritmo debe tener cero o más


entradas, es decir cantidades dadas antes de empezar.

 SALIDAS: el algoritmo tiene una o más salidas en


relación con las entradas.

Curso : Lógica de Programación– Clases Teóricas 6


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE
EjemploDATOS
de un Proceso que se puede representar con un algoritmo

• Paso 1 - Romper los huevos y echarlos en


un recipiente.
• Paso 2 - Batir por unos minutos hasta
quese
vuelva espuma.
• Paso 3 - Mezclar con la harina y la leche y seguir
batiendo hasta convertirlo en una masa uniforme.
• Paso 4 - Pasar la masa por un rodillo para estirarla.
• Paso 5 - Finalmente verter la masa en un recipiente
y meterlo al horno a 30 grados por 1h.
Curso : Lógica de Programación– Clases Teóricas 7
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N ALGORITMO
• Enunciado del
I - DEFINICION DEL Problema
PROBLEMA • Limitaciones

II - DEFINICION • Análisis del Problema


DE LA • ¿Qué se quiere hacer?
SOLUCION

• ¿Cómo lo voy a hacer?


III - DISEÑO DEL • ¿Qué secuencia debe
ALGORITMO seguir?

IV - DESARROLLO • Codificación
DEL
ALGORITMO

• Ejecución y Testing
V - DEPURACION Y • Evaluación de
PRUEBAS Resultados

VI - DOCUMENTACION

Curso : Lógica de Programación– Clases Teóricas 8


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N ALGORITMO

I - DEFINICION D E L PROBLEMA II - DEFINICION D E LA S O LU C I ON

Se debe establecer claramente el enunciado del problema que se está Se debe identificar claramente lo siguiente:
planteando. a.Los datos que deben ser ingresados para dar solución al
Ejemplo: calcular el área de un rectángulo. En función a la siguiente problema.
fórmula: b.Establecer exactamente los procesos u operaciones a
llevarse a cabo a fin de dar con la solución del problema.
A=(b*h donde b = base y h = altura c.Determinar con exactitud qué valores son los que se debe
visualizar como resultado o solución del problema, para
) satisfacer los objetivos del problema.
Ejemplo: calcular el área de un rectángulo. En función a la siguiente
fórmula:

• E JERCICIO 1 : C A LC U L A R E L TA M A Ñ O D E
A LMAC E NA MIE NTO Q U E REQUIERE U N A
FOTO G R A F I A A PARTIR D E LA C A N T I DA D D E
PIXELES

Curso : Lógica de Programación– Clases Teóricas 9


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N ALGORITMO

III – DISEÑO D E L ALGORITMO

Diseñar el código es construir una representación de la secuencia


lógica que deberá contener el proceso que se va a realizar.
En este punto, nada debe ser genérico o ambiguo, aquí se especificará
a detalle que lógica deberá seguir la construcción del programa en la
siguiente fase.
Aquí se utilizan metodologías como el Diagrama de Flujo y los
Pseudocódigos. LENGUA JES ALGORITMICOS

Indican una serie de símbolos y reglas que se utilizan para describir de


manera explícita un proceso. Pueden ser:

 Gráficos o Diagrama de Flujo: Es la representación


gráfica de las operaciones que realiza un algoritmo.

 No Gráficos o Pseudocódigo: Es la representación en


forma descriptiva de las operaciones que debe realizar un
algoritmo.

Curso : Lógica de Programación– Clases Teóricas 10


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TOD O LOG I A PARA CONSTRUIR U N ALGORITMO – DIAGRAMA D E F LUJOS

Impresión de resultado
Documento generado

Múltiples Documentos

Proceso Predefinido
(para llamar a otra
rutina o función)

Conector a otra página

Curso : Lógica de Programación– Clases Teóricas 11


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TOD O LOG I A PARA CONSTRUIR U N ALGORITMO

Ejemplo 1:
Recuerdan el ejemplo en la que se planteó el problema sobre INICIO
calcular el área de un rectángulo en función a la siguiente
fórmula:
a=(b*h) donde b = base y h = altura
LEER:
b, h
Características:
 Todo diagrama debe indicar claramente en dónde empieza y en donde termina. Conceptos:
 Se debe desarrollar preferiblemente de arriba hacia abajo y de izquierda a derecha. • CONSTANTE.- Es
 Los símbolos deben dibujarse proporcionados y balanceados unos a otros. a = (b * h) un valor que
 En el diagrama de flujo se escribe qué se hace, no se codifican instrucciones. permanece sin
 No deben existir ciclos (bucles o loops) infinitos o partes por cuales nunca pase la lógica del cambiar su valor
programa en ejecución. durante todo el
 Un diagrama debe ser claro y bien presentado. recorrido del
 El uso de conectores en ocasiones elimina flechas que dan una mala imagen: sin embargo el uso
ESCRIBIR:
a programa. Ejemplo: pi
exagerado de conectores dificulta el entendimiento del diagrama. = 3.1416
 Los nombres que se asignen a las variables o campos se recomienda que sean nemotécnicos; • VARIABLE.- su
es decir, que indiquen para que sirven. valor puede
 El símbolo para operaciones de asignación (rectángulo) y para operaciones de cambiar
entrada o salida pueden ser precedidos por una o varias flechas, pero sólo pueden ser seguidos FIN constantemente.
por una flecha.

Curso : Lógica de Programación– Clases Teóricas 12


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE
DATOS
M E TOD O LOG I A PARA CONSTRUIR U N ALGORITMO
Ejemplo 1:
Recuerdan el ejemplo en la que se planteó el problema sobre
calcular el área de un rectángulo en función a la siguiente
fórmula:
a=(b*h) donde b = base y h = altura
INICIO
Leer b, h
Es un lenguaje de especificación (descripción) de algoritmos.
Generalmente se escribe en el idioma natural del usuario.
a=b*h
Se considera que es un primer borrador del futuro
programa, sin embargo no puede ejecutarse en el
Escribir a
ordenador.
Su propósito es describir claramente cuál es la lógica de
solución que va seguir y al mismo tiempo tener
FIN
documentado para que cualquier persona pueda revisarlo y
entender sin tener que ver las líneas de código del
programa.
Curso : Lógica de Programación– Clases Teóricas 13
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N ALGORITMO
IV – D ESA R RO L LO - CO D I F I C AC I O N D E L ALGO RITM O

Consiste en la codificación del programa.


Partiendo del algoritmo desarrollado en el paso anterior, para este fin se deberá
utilizar un lenguaje de programación.

Curso : Lógica de Programación– Clases Teóricas 14


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N ALGORITMO

Curso : Lógica de Programación– Clases Teóricas 15


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N ALGORITMO

Curso : Lógica de Programación– Clases Teóricas 16


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
INTRODUCCION A LAS ESTRUCTURAS
DE DATOS

CAPITULO 1.2
ESTRUCTURA
CONDICIONAL

OBJETIVOS A ALCANZAR:
• Usted será capaz de “conocer e identificar la
terminología para construir y resolver
algoritmos con las estructuras de datos más
adecuadas”.

Curso : Lógica de Programación– Clases Teóricas 17


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE
DATOS
1.2 ESTRUCTURA CO N D I C I O N A L
Una estructura condicional (llamada también de Clasificación de las Estructuras Condicionales
decisión o de selección) evalúa una condición y en
función del resultado de esa condición se bifurcará
a un determinado punto. Selectiva Simple

Selectiva Doble

Selectiva

Anidada Selectiva

Curso : Lógica de Programación– Clases Teóricas


Múltiple
18
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 ESTRUCTURA CO N D I C I O N A L – ESTRUC TURA SELECTIVA SIMPLE

Es una estructura que evalúa una expresión lógica


y dependiendo del resultado ejecutará un bloque
de código o no.

IF monto >= 300


SI <condición> ENTONCES d=monto*0.30;
<acción 1> ….
<acción 2> …..
…. IF precio >= 200
<acción n> { monto=monto*1.20;
FIN SI d=monto*0.30;
}

Curso : Lógica de Programación– Clases Teóricas 19


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 ESTRUCTURA CO N D I C I O N A L – ESTRUC TU RA SELECTIVA D O B L E

Es una estructura que evalúa una expresión lógica y


dependiendo del resultado, si es verdadera ejecutará un bloque
de código A y si fuera lo contrario ejecutará otro bloque de
código B distinto.
No se ejecutan los dos bloques de códigos a la vez.

SI <condición> ENTONCES
IF monto >= 300
<acción A>
d=monto*0.30;
<acción B> ELSE
SINO { monto=monto*1.20;
<acción
d=monto*0.30;
X>
}
<acción Y>
FIN SI

Curso : Lógica de Programación– Clases Teóricas 20


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 ESTRUCTURA CO N D I C I O N A L – ESTRUC TU RA SELECTIVA ANIDADA

Es una estructura compuesta que está formada por una serie de estructuras selectivas que se encuentran inmersas unas dentro de
otras.
Se utiliza para establecer una serie de condiciones jerárquicas desde las más genéricas hasta las más específicas, sino se cumplen las
primeras condiciones, no se evalúan las siguientes.

SI <condición1> ENTONCES
<acción A>
<acción B>
SINO
SI
<condición2
>
ENTONCE
S
<
acción
C>
<acción D>
SINO
SI

<condición3>

Curso : Lógica de Programación– Clases Teóricas ENTONCE 21


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 ESTRUCTURA CO N D I C I O N A L – ESTRUC TU RA SELECTIVA ANIDADA

If monto >= 1000


{
d=monto*0.30;
}
else If monto >= 1000
{ { d=monto*0.30;}
If (monto <1000 AND monto >= 500) Else If (monto <1000 AND monto >= 500)
{ d=monto*0.20; { d=monto*0.20;}
} Else If (monto < 500 AND monto >= 200)
else { d=monto*0.10; }
{ Else
If (monto < 500 AND monto >= 200) { d=0;}
{ d=monto*0.10; }
else
{ d=0;}
}
}

Sin usar indentación Usando indentación Usando clausula elseif se reduce la expresión

Curso : Lógica de Programación– Clases Teóricas 22


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 ESTRUCTURA CO N D I C I O N A L – ESTRUCTU RA SELECTIVA MULTIPLE

Es una estructura compleja que evalúa una expresión que podrá tomar “n” valores distintos. Según elija uno de
estos valores en la condición, se realizará una de las “n” acciones. El flujo del algoritmo seguirá un
determinado camino entre los “n” caminos posibles.

SI <condición=1> ENTONCES
<acción S1>
SI <condición=2>
ENTONCES
<acción S2>
SI <condición=3>
ENTONCES
<acción S3>
SI <condición=4> ENTONCES
<acción S4>

SI <condición=n> ENTONCES
<acción Sn>
FIN SI

Curso : Lógica de Programación– Clases Teóricas 23


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 ESTRUCTURA CO N D I C I O N A L – ESTRUCTU RA SELECTIVA MULTIPLE

Es una estructura compleja que evalúa una expresión que podrá tomar “n” valores distintos. Según elija uno de
estos valores en la condición, se realizará una de las “n” acciones. El flujo del algoritmo seguirá un
determinado camino entre los “n” caminos posibles.

int condición=2; Switch en java solo funciona con números


switch(condición)
{
SI <condición=1> ENTONCES case 1:
<acción S1> System.out.println("Case1 ");
SI <condición=2> break;
ENTONCES case 2:
<acción S2> System.out.println("Case2 ");
SI <condición=3> break;
ENTONCES case 3:
<acción S3> System.out.println("Case3 ");
SI <condición=4> ENTONCES break;
<acción S4> case 4:
… System.out.println("Case4 ");
SI <condición=n> ENTONCES break;
<acción Sn> default:
FIN SI System.out.println("Default ");
}
Curso : Lógica de Programación– Clases Teóricas 24
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 EJEMPLO C O N ESTRUC TU RA CO N D I C I O N A L

Ejemplo 2: Realizar un algoritmo que lea el número que representa el día de la semana y diga que día es, teniendo
en cuenta Lunes=1, Martes 2…,Domingo=7

Curso : Lógica de Programación– Clases Teóricas 25


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.2 EJEMPLO C O N ESTRUC TU RA CO N D I C I O N A L
Ejemplo 2: Realizar un algoritmo que lea el número que representa el día de la semana y diga que día es, teniendo en cuenta Lunes=1, Martes 2…,Domingo=7

INICIO SI <pn_NumDiaSem=1> ENTONCES


Escribir “LUNES”
SI <pn_NumDiaSem=2> ENTONCES
Escribir “MARTES”
Leer: SI <pn_NumDiaSem=3> ENTONCES
pn_NumDiaSem Escribir “MIERCOLES”
SI <pn_NumDiaSem=4> ENTONCES
Escribir “JUEVES”

SI <pn_NumDiaSem=7> ENTONCES
Escribir “DOMINGO”
FIN SI
1 2 3 4 5 6 7

Escribir: Escribir: Escribir: Escribir: Escribir: Escribir: Escribir:


“LUNES” “MARTES” “MIERCOLES” “JUEVES” “VIERNES” “SABADO” “DOMINGO”

FIN

Curso : Lógica de Programación– Clases Teóricas 26


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
INTRODUCCION A LAS ESTRUCTURAS
DE DATOS

CAPITULO 1.3
ESTRUCTURAS
REPETITIVAS

OBJETIVOS A ALCANZAR:
• Usted será capaz de “conocer e identificar la
terminología para construir y resolver
algoritmos con las estructuras de datos más
adecuadas”.

Curso : Lógica de Programación– Clases Teóricas 27


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS
Ejemplo 3: Imprimir un listado con los números del 1 al 100, un número en cada línea.

INICIO

PRINT “1”

PRINT “2”
Y si le piden que imprima
del 1 al 1’000,000 pero
… considerando solo los
números primos?
¿cuántos días sin dormir
PRINT “99” necesita para hacer su
diagrama de flujo?
PRINT “100”

FIN

Curso : Lógica de Programación– Clases Teóricas 28


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS

Se utiliza cuando es necesario repetir una o varias acciones un determinado número de veces. A esto se le llama
BUCLE. Cada repetición es una ITERACION.

Repite el bucle de
Instrucciones de 1 a N
veces.
Luego de cumplirse las
“N” iteraciones (vueltas),
se procederá a
ejecutarse las
instrucciones que se
encuentran después del
bucle (en el ejemplo I=N,…3,2,1
ejecutará al terminar la
Instrucción Z).
La variable I va
incrementando (o
I=1,2,3, … N Instrucción Z disminuyendo) su valor
de 1 en 1 Instrucción Z
automáticamente por
cada iteración.
Curso : Lógica de Programación– Clases Teóricas 29
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS

Se utiliza cuando es necesario repetir una o varias acciones un determinado número de veces. A esto se le llama
BUCLE. Cada repetición es una ITERACION.

• Repite el bucle de Instrucciones de pero con diferente inicio y fin


y utilizando un salto de 2 posiciones. (Inicia en 2)
• En el ejemplo, la variable I va incrementando su valor de 2 en
2 automáticamente por cada iteración.
• Valores de I = 2,4, 6, 8, ….., N

PARA I de 2 a N veces
<acción S1>
<acción S2>
<acción S3>
……
<acción Sn>
FIN PARA
<acción Z1>
<acción Z2>
Instrucción Z

Curso : Lógica de Programación– Clases Teóricas 30


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS
Ejemplo 3a: Imprimir un listado con los números del 1 al 100, un número en cada línea.

Lo que se
quiere obtener: INICIO INICIO
Nro
Conceptos:
PRINT nContador = 1 • V ARIAB L E.- aquella
1 “1” cuyo
valor puede cambiar durante la
ejecución del programa.
2 PRINT • C O N TAD O R.- Es
“2” una
variable que se utiliza para
PRINT nContador
3 “contar” y llevar el control de
… la estructura repetitiva
nContador = (bucle). Su valor puede
4 nContador + 1
incrementar o decrecer en
PRINT forma constante. Ejemplo:
…. nContador NO
“99” variable nContador.
= 100 ?
99 PRINT
SI
“100”
100
FIN FIN
¿y si uso
1.1?
Curso : Lógica de Programación– Clases Teóricas 31
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS
Ejemplo 3b: Imprimir un listado con los números del 1 al 100, un número en cada línea. Al lado de cada número un acumulador que
muestre el número actual sumado al número anterior.
Lo que se
quiere obtener: INICIO INICIO
Conceptos:
Nro Acum • CONTADOR.- Es una variable que se utiliza
nContador = 1
PRINT “1”, nAcum = 0 para llevar el control de la estructura repetitiva.
1 1 “1” Ejemplo: variable nContador
• ACUMULADOR.- Es una variable que se
nAcum = nAcum +
PRINT “2”, utiliza para acumular valores que se
2 3 nContador
“3”
quieren totalizar. La cantidad de
3 6 PRINT nContador,
… incremento no es constante. Ejemplo:
nAcum nAcum
4 10
nContador =
PRINT “99”, nContador + 1
…. “197” Una vez construido el
nContador SI
algoritmo, no lo declare
99 197 PRINT “100”, <= 100 ? finalizado. Haga primero
“297” su prueba de escritorio!
100 297 NO
FIN
FIN < 100

Curso : Lógica de Programación– Clases Teóricas 32


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS – ESTRUCTURA “HACER
HASTA”

INICIO
nContador = 1
nAcum = 0

nAcum = nAcum +
nContador

PRINT nContador,
nAcum
nContador =
nContador + 1

nContador SI
< 100 ?

NO

“Primero hago, luego FIN


evalúo”

Curso : Lógica de Programación– Clases Teóricas 33


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS – ESTRUCTURA “HACER
MIENTRAS”

INICIO
nContador = 1
nAcum = 0

SI
nContador
<= 100 ?

nAcum = nAcum +
NO nContador

PRINT nContador, nContador =


nAcum nContador + 1
“Primero evalúo, luego
hago”
¿No se olvida
de nada?

FIN
nContador
nAcum

Curso : Lógica de Programación– Clases Teóricas 34


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
1.3 ESTRUCTURAS REPETITIVAS
Ejemplo 3c: Imprimir un listado con los números del 1 al 1’000,000 pero considerando solo los números
primos. Debe salir un número en cada línea. Al lado de cada número un acumulador que muestre el número actual sumado al número
anterior.

INICIO

nContador = 1
nAcum = 0
Ya hizo su
prueba de
nContador =
escritorio?
¿ NO nContador + 1
nContador >
1’000,000? nContador
NO
es
Número
SI nContador nAcum
Primo?
SI

FIN
nAcum = nAcum +
nContador

PRINT nContador,
nAcum

Curso : Lógica de Programación– Clases Teóricas 35


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
INTRODUCCION A LAS ESTRUCTURAS
DE DATOS

CAPITULO 1.1 - 1.3


EJERCICIOS

OBJETIVOS A ALCANZAR:
• Usted será capaz de “practicar con ejercicios
para conocer e identificar la terminología
para construir y resolver algoritmos con las
estructuras de datos más adecuadas”.

Curso : Lógica de Programación– Clases Teóricas 36


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
Diagrama de Flujo Ejemplo 2 : El Señor DATA
INICIO
Ejemplo 2:
Supongamos que usted necesita programar
un robot autómata, el Sr. Data para que Sacar la llanta de
conduzca un auto de una ciudad a otra. repuesto
Usted necesitará considerar muchas situaciones,
pero por ahora solo deberá centrar su atención
Quitar la Llanta
en un solo problema: Pinchada
cómo cambiar una llanta cuando se pinche
durante el viaje.
El auto tiene una llanta de repuesto y las
herramientas para cambiar la llanta. Poner la llanta buena

Elabore un diagrama de flujo que represente Guardar la llanta mala y


el proceso de cambio de llanta y que las herramientas Está
contemple todas las actividades que deberá considerado
realizar el Sr todo lo que
Guardar la llanta mala y
Data en caso se pinche una llanta. FIN puede pasar?
las herramientas

Curso : Lógica de Programación– Clases Teóricas 37


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
Diagrama de Flujo Ejemplo 2 : El Señor DATA
1
Ejemplo 2: INICIO
Que hay de los siguientes aspectos?
Encender las luces
 Si el auto va en movimiento y se pincha la llanta, ya
de emergencia Sacar la llanta de repuesto
se debe aplicar el procedimiento así como está?
 No se debe detener primero para que el Sr Data
pueda bajar?
 Pero si está conduciendo en plena vía, si se detiene Auto se
SI
intempestivamente, no causará un accidente si viene encuentra Orillar el auto a
en medio la vereda Quitar la Llanta Pinchada
otro carro atrás? Lo lógico podría ser que primero se
orille en una vereda con luces de emergencia y luego de la pista?
detenga el auto, no cree?
NO
 Y las señales de peligro que se deben poner a prudente
distancia del auto? Lo lógico es que deben ser
Detener el auto en Poner la llanta buena
utilizadas, por lo cual el autómata debe abrir el baúl,
zona segura
sacar las señales de peligro y ponerlas a prudente
distancia del auto. Ya está para
 Y que pasa si cuando abrimos la maletera, no se ¿Se que lo
encuentra la llanta o las herramientas? En el caso de la Abrir la maletera y SI Guardar la llanta mala y haga el
encuentra la
llanta de repuesto, que pasa si se encuentra en mal colocar las señales 1 las herramientas robot?
llanta en
estado? de peligro
buen estado?
SI
NO
¿Se Guardar la llanta mala y
encuentran la FIN
las herramientas
llanta de
Buscar otras
repuesto y las NO
soluciones
herramientas?
Curso : Lógica de Programación– Clases Teóricas 38
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
Diagrama de 1
INICIO
Flujo Ejemplo 2
El Señor DATA Encender las luces
de emergencia
Sacar las herramientas y Bajar el auto y ajustar
la llanta de repuesto las tuercas
Que hay de los siguientes Auto se
aspectos? encuentra
SI
Orillar el auto a
Poner Palanca de cambios
en medio la vereda Guardar la llanta mala y
 ¿Cómo el Sr. Data va retirar la en Neutro para Bloquear
de la pista? las herramientas
llanta? Si no lo especifica, puede el auto y colocar la gata
tirar de la llanta y malograr el NO abajo
auto.
Detener el auto en Aflojar las tuercas de Recoger las señales de
zona segura la llanta mala a emergencia y cerrar la
cambiar maletera

Abrir la maletera y 1
Subir el auto con la gata y
colocar las señales
retirar las tuercas y la llanta Desbloquear el auto
de peligro SI
mala
¿Se
encuentra la
llanta en Colocar la llanta de
¿Se
SI buen estado? repuesto y poner Proseguir con el viaje
encuentran la
las tuercas
llanta de
NO
repuesto y las
Buscar otras
herramientas? soluciones 2 FIN
NO
Curso : Lógica de Programación– Clases Teóricas 39
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N ALGORITMO

En Diagramación, la lógica juega


un papel fundamental.
Si las cosas no se plantean en el
orden correcto, y no se
consideran todas las posibles
condiciones, probablemente no
se consiga el resultado
esperado.

Curso : Lógica de Programación– Clases Teóricas 40


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
M E TO D OLOG I A PARA CONSTRUIR U N DIAGRAMA D E F LUJ O D E DATO S

Características:
 Todo diagrama debe indicar claramente en dónde empieza y en donde
termina.
 Se debe desarrollar preferiblemente de arriba hacia abajo y de
izquierda a derecha.
 Los símbolos deben dibujarse proporcionados y
balanceados unos a otros.
 En el diagrama de flujo se escribe qué se hace, no se
codifican instrucciones.
 Un diagrama debe ser claro y bien presentado.
 El uso de conectores en ocasiones elimina flechas que dan una mala
imagen: sin embargo el uso exagerado de conectores dificulta el
entendimiento del diagrama.
 Los nombres que se asignen a las variables o campos se
recomienda que sean nemotécnicos; es decir, que indiquen para que
sirven.
 El símbolo para operaciones de asignación (rectángulo) y para
operaciones de entrada o salida pueden ser precedidos por una o
varias flechas, pero sólo pueden ser seguidos por una flecha.
 No deben existir ciclos (bucles o loops) infinitos o partes por cuales
nunca pase la lógica del programa en ejecución.

Curso : Lógica de Programación– Clases Teóricas 41


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
Ejercicios de Diagramas de Flujo

Ejemplo 3:
Se entrega un libro no numerado al señor DATA
2.0 (el autómata) y se le solicita que cuente las
hojas (no las páginas) e informe
cuantas hay.

Sugerencias

 Empiece una cuenta en cero


 Pase hoja por hoja, desde el principio, y
aumente la cuenta con cada hoja que pasa.

Curso : Lógica de Programación– Clases Teóricas 42


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
Ejercicios de Diagramas de Flujo

Ejemplo 4:
Se entrega una moneda de S/1, un número
telefónico y un mensaje al señor DATA 2.1 (el Sugerencias de análisis:
autómata).
El Señor DATA debe buscar un teléfono público ,  El teléfono público encontrado puede estar
marque el número señalado y transmita el mensaje. dañado, pero habrá otros buenos en la ciudad.
No se espera respuesta  Posiblemente haya personas en la cola y el
alguna. Finalmente el señor DATA debe regresar e señor DATA deberá esperar su turno.
informar si pudo dar el mensaje o no.  Si no encontró un teléfono pública deberá buscar
otros más hasta un máximo de 5 intentos.
 Puede ocurrir que no le contestan o que esté
No se preocupe porque el señor DATA: ocupado y deberá hacer otro intento, hasta un
máximo de 3 veces.
 Se olvidó el número telefónico o el  Si el número está timbrando deberá cuidar
mensaje. que no pase de 3 timbradas y colgar
 Marcó un número equivocado. inmediatamente, sino entrará la
 Encontró que todos los teléfonos de la ciudad casilla de voz y se comerá la moneda.
están dañados.  En uno de los intentos, el teléfono no le
 Lo atropelló un auto al cruzar la calle, devolvió la moneda.
 Etc.

Curso : Lógica de Programación– Clases Teóricas 43


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
ALGORITMOS Y ESTRUCTURA DE DATOS
Ejercicios de Diagramas de Flujo

Ejemplo 5: Ejemplo 6:

Juan, Raquel y Daniel aportan cantidades de dinero A un trabajador le descuentan de su sueldo el 10%, si
para formar un capital. Juan y Raquel aportan en su sueldo es menor o igual a S/ 1,000, si es por encima
dólares y Daniel en soles. Diseñe un programa que de S/1,000 y hasta S/2,000 el 5% del adicional (es
determine el capital total en dólares y que porcentaje decir del monto que sobrepasa de S/1,000), y por
de dicho capital aporta cada uno. Considere que: 1 encima de S/2,000 el 3% del adicional (es decir del
dólar = moto que sobrepasa de S/2,000).
3.25 soles.
Calcular el descuento y sueldo neto que recibe el
Haga el Diagrama de Flujo y el Pseudocódigo trabajador dado su sueldo.

Haga el Diagrama de Flujo y el Pseudocódigo

Curso : Lógica de Programación– Clases Teóricas 44


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
INTRODUCCION A LAS ESTRUCTURAS
DE DATOS

CAPITULO 1.4
CLASIFICACION DE LAS ESTRUCTURAS
DE
DATOS

OBJETIVOS A ALCANZAR:
• Usted será capaz de “conocer e identificar
las diferentes clasificaciones de las
estructuras de datos”.

Curso : Lógica de Programación– Clases Teóricas 45


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1.4
ALGORITMOS Y ESTRUCTURA DE DATOS
EXPRESION

nAcum = 0 nAcum = nAcum +


Pi = 3.1416 nContador = nContador + 1 nContador <= 100 ? CALL MCD( )
nContador

Símbolos de Nombres de
Variables Constantes Funciones
Operación
NO
c = {…, -2,-1, 0, 1, … 50, 101, …}
TIPOS D E OPE RADORES
a = {51, 52, … 100} Y
Operadores VERDADER
nContador <= 100
O ó FALSO
Relacionales (comparan valores del mismo tipo)

Operadores a) nContador > 50 A N D nContador <= 100 50 100


Lógicos b) nContador > 50 O R nContador <= 100
c) N O T (nContador > 50 A N D nContador <= 100)

b = {…, -3, -2, -1, 0, 1, 2, …50, 51, … 100, 101, …} O


Curso : Lógica de Programación– Clases Teóricas 46
Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1.4
ALGORITMOS Y ESTRUCTURA DE DATOS

VARIABLE D E DATO S SIMPLES VARIABLE D E L TIPO ESTRUC TU RA D E DATO S

Una variable se crea en memoria en el momento que INICIA el Es una colección de datos que ocupan varias casillas de memoria con
algoritmo, se mantiene durante la EJECUCION, su valor puede muchos valores a la vez (siempre y cuando sean del mismo tipo de
cambiar durante la misma. Al TERMINAR, la variable se destruye dato Numérico, Texto, etc.). Se caracterizan por su organización y las
liberando el espacio que ocupaba en la memoria. Cada variable ocupa operaciones que se pueden hacer dentro de ella.
un solo valor. Ejemplo de Estructura de datos: Arreglos, Archivos, Cadenas
y Listas
Programa Memoria RAM
Arreglo de Datos
nContador = 1
nAcum = 0 nContador nAcum

Tipos de Datos Simples:


 Numéricos.- Números Enteros, Reales
 Lógicos.- Verdadero, Falso
Alfanuméricos.- caracteres como a, b, Katty, paloma Tipos de
Variables:
 Variables de Trabajo (a = b*c)
 Contadores (n = n+1)
 Acumuladores (nAcum = nAcum + b)

Curso : Lógica de Programación– Clases Teóricas 47


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1.4
ALGORITMOS Y ESTRUCTURA DE DATOS
CLASIFICACION D E LAS ESTRUCTURAS D E DATO S

ESTRUCTURA D E DATO S ESTATICAS ESTRUCTURAS D E DATO S DINAMICAS

 Su tamaño en memoria es fijo. Se asigna en tiempo de  Su tamaño en memoria es variable, es decir, se crea con un
compilación y no puede ser modificado durante la ejecución del tamaño inicialmente y puede ser modificado en tiempo de
programa. ejecución. Ejemplos: Listas Enlazadas, Pilas, Colas, árboles,
Arreglo de Datos Unidimensionales (Vectores) conjuntos, grafos, tablas Hash, etc.
 Se clasifican en:
 LINEALES: Son aquellas estructuras donde los datos se
almacenan en zonas continuas (sucesivas

o adyacentes), una detrás de otra. Ejemplo: pilas, colas, listas.


 N O LINEALES: Son aquellas estructuras donde los datos
no se encuentra en forma continua, es decir hay Pila de
“bifurcación”. Ejemplo árboles, grafos.
• Arreglo de Datos Bidimensional (2 dimensiones, Llantas
Tablas ó Matrices).
• Arreglo de Datos Multidimensionales (3 ó más
dimensiones)

Curso : Lógica de Programación– Clases Teóricas 48


Docente : Leonardo Castro Gallo
UNIDAD DE APRENDIZAJE 1
INTRODUCCION A LAS ESTRUCTURAS DE DATOS

OBJETIVOS ALCANZADOS:
• Usted es capaz de “conocer e identificar la
terminología para construir y resolver
algoritmos con las estructuras de datos más
adecuadas”.

Curso : Lógica de Programación– Clases Teóricas 49


Docente : Leonardo Castro Gallo

También podría gustarte