pro ge structur ada

116
Programación Estructurada Lic. Guadalupe Flores Díaz

Upload: guadalupe-flores-diaz

Post on 31-Dec-2014

39 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Pro Ge Structur Ada

Programación Estructurada

Lic. Guadalupe Flores Díaz

Page 2: Pro Ge Structur Ada

¿Qué es lo que observas?

Un nuevo semestre, cosas nuevas que aprender, cosas nuevas que hacer...¿que observas en el presente semestre?... ¿Cómo te sientes?...¿Que te gustaría?

Todo depende de ti……Video motivacional

Page 3: Pro Ge Structur Ada

Forma de Evaluación

Actividades en Clase 20%Tareas 15%Examen 30%Participación 10%Diagramas de flujo / programas 25%

Page 4: Pro Ge Structur Ada

SISTEMAS DE PROCESAMIENTO DE INFORMACION

Computadora: Maquina o aparato electrónico capaz de ejecutar operaciones repetitivas a muy alta velocidad.

Entrada = Datos Salida = InformaciónPROCESADOR

Representación de algún hecho, concepto o entidad real (los datos pueden tomar diferentes formas; por ejemplo palabras escritas o habladas, números y dibujos).

Datos procesados y organizados.

COMPONENTES DE UN SISTEMA DE PROCESAMIENTO DE INFORMACION

Page 5: Pro Ge Structur Ada

SISTEMAS DE PROCESAMIENTO DE INFORMACION

Ejemplos:• El termostato.• Arturito• Nosotros mismos.

¿Cómo el procesador transforma esos datos de entrada en información procesada?

Algoritmo: Conjunto de instrucciones que especifica la secuencia de operaciones a realizar, en orden, para resolver un problema especifico, en otras palabras un algoritmo es una formula para la resolución de un problema.

Page 6: Pro Ge Structur Ada

SISTEMAS DE PROCESAMIENTO DE INFORMACION

HARDWARE: Conjunto de componentes físicos de la computadora (equipo físico)

SOFTWARE: Conjunto de programas que controlan el funcionamiento de una computadora (equipo lógico).

Memoria central

Unidad central de

procesamiento

Dispositivos de

entrada/salida E/s

(Periféricos)

Almacenamiento secundario (memoria auxiliar)

Page 7: Pro Ge Structur Ada

1.7

La computadora manipula únicamente información digital:

Datos e instrucciones se codifican como dígitos binarios (0’s y 1’s)

¿Por qué no se usa una representación de otro tipo? Problema tecnológico (es más fácil representar ceros y

unos) ¿A qué nos conduce la solución adoptada para

evitar el problema tecnológico? La máquina sólo puede trabajar con cadenas de ceros

y unos

¿Qué entiende la computadora?

Page 8: Pro Ge Structur Ada

Lenguajes de Programación Sirven para escribir programas que

permitan la comunicación usuario y maquina. Unos programas especiales llamados traductores convierten las instrucciones escritas en lenguajes de programación en instrucciones escritas en lenguajes de maquina que este pueda entender.

Estos lenguajes de programación se clasifican en:

Maquina: Código maquina. Bajo Nivel: Ensamblador. Alto Nivel: Son los mas usados por

los programadores, son los mas fáciles de transportar a maquinas diferentes y la escritura de programas es mas sencilla.

Page 9: Pro Ge Structur Ada

1.9

a = (b + c)/(d + e)Pasos

sumar b y c, y guardar el resultado en una dirección de memoria temporal X

sumar d y e, y guardar el resultado en una dirección de memoria temporal Y

dividir el contenido de X por el de Y y guardar el resultado en la dirección de memoria de a

Ejemplo de código máquina codigoOp direccOp1 direccOp2 direccRes

0000 00001000 00001100 000011100000 00011000 00011100 000111100101 00011110 00001110 00000100

Código de la división

Direcc. Temporal X

Direcc. Temporal Y

Código de la suma

Lenguaje máquinax y

Page 10: Pro Ge Structur Ada

1.10

Lenguaje máquina (cont.)

InconvenientesGrandes posibilidades de errorPortabilidad: máquina-dependiente

No se puede llevar el programa a otra máquina porque, entre otras cosas, el repertorio de instrucciones es distinto

TediosoNula capacidad de abstracción

Es muy complicado formular una solución a problemas del mundo real con ese lenguaje tan específico

Page 11: Pro Ge Structur Ada

Lenguaje Máquina

En los primeros tiempos del desarrollo de los ordenadores era necesario programarlos directamente de esta forma, sin embargo, eran máquinas extraordinariamente limitadas, con muy pocas instrucciones por lo que aún era posible; en la actualidad esto es completamente irrealizable por lo que es necesario utilizar lenguajes más fácilmente comprensibles para los humanos que deben ser traducidos a código máquina para su ejecución.

Page 12: Pro Ge Structur Ada

Actividad. Codificación con números binarios

Escribir tu nombre con el siguiente código binario

A 0 0 0 0 0 L 0 1 0 1 1 W 1 0 1 1 0

B 0 0 0 0 1 M 0 1 1 0 0 X 1 0 1 1 1

C 0 0 0 1 0 N 0 1 1 0 1 Y 1 1 0 0 0

D 0 0 0 1 1 O 0 1 1 1 0 Z 1 1 0 0 1

E 0 0 1 0 0 P 0 1 1 1 1

F 0 0 1 0 1 Q 1 0 0 0 0

G 0 0 1 1 0 R 1 0 0 0 1

H 0 0 1 1 1 S 1 0 0 1 0

I 0 1 0 0 0 T 1 0 0 1 1

J 0 1 0 0 1 U 1 0 1 0 0

K 0 1 0 1 0 V 1 0 1 0 1

Page 13: Pro Ge Structur Ada

1.13

Lenguaje ensamblador

Ejemplo de instrucción de código ensamblador

codigoSimbOp direccSimbOp1, direccSimbOp2, direccSimbRes

Códigos simbólicos de las operacionesSUM = La suma DIV = La división

a = (b + c)/(d + e)

SUM B, C, XSUM D, E, YDIV X, Y, A

Page 14: Pro Ge Structur Ada

Lenguaje Ensamblador

Los lenguajes ensambladores son en esencia una versión simbólica de los lenguajes máquina; por cada instrucción de la máquina o cada elemento capaz de almacenar datos se crea un símbolo que puede utilizar el programador; así, las instrucciones anteriores se escribirían como:add. i c a bsub. f c a b

Page 15: Pro Ge Structur Ada

Cuestiones ¿Cómo entiende la máquina el lenguaje ensamblador? Si las direcciones de memoria son simbólicas ¿en qué

direcciones de memoria se colocan los datos?

Programa ensamblador Traducción a código binario de códigos simbólicos de

operación Traducción de las direcciones simbólicas a direcciones reales

de memoria Inconveniente: sigue siendo dependiente de la máquina

1.15

Lenguaje ensamblador (cont.)

Código fuente(lenguaje ensamblador)

Programa ensamblador Código objeto(lenguaje máquina)

Page 16: Pro Ge Structur Ada

1.16

Lenguajes de alto nivel

Lenguaje que permite representar el mecanismo de resolución de los problemas usando instrucciones independientemente de la computadora Cercanía conceptual al programador Pascal, C, Java, etc. son lenguajes de alto

nivel

Page 17: Pro Ge Structur Ada

Lenguaje de Programación

Un lenguaje de programación es aquel elemento dentro de la informática que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis; que pone a disposición del programador para que este pueda comunicarse con los dispositivos hardware y software existentes. Algunos ejemplos son:

Page 18: Pro Ge Structur Ada

LENGUAJES DE PROGRAMACION

LENGUAJE DE ALTO NIVEL• Diseñados para que las personas

entiendan y escriban los programas de un modo mas fácil que usando lenguajes de maquina y ensamblador.

• Es independiente de la maquina pues las instrucciones no dependen del hardware o maquina en particular.

• Los programas escritos en lenguaje de alto nivel son portables o transportables, es decir que pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de maquinas.

C, C++, COBOL, FORTRAN, Pascal, Java, Phyton.

Page 19: Pro Ge Structur Ada

LENGUAJES DE PROGRAMACION

Alto Nivel

Bajo Nivel

Maquina

;Lenguaje ensamblador, sintaxis Intel para procesadores x86mov eax,1 ;mueve a al registro eax el valor 1 xor ebx, ebx ;pone en 0 el registro ebx int 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)

{Lenguaje Pascal} program suma;

var x,s,r:integer; {declaración de las variables} begin {comienzo del programa principal} writeln('Ingrese 2 números enteros');{imprime el texto} readln(x,s); {lee 2 números y los coloca en las variables x y s} r:= x + s; {suma los 2 números y coloca el resultado en r} writeln('La suma es ',r); {imprime el resultado} readln; end.{termina el programa principal}

Page 20: Pro Ge Structur Ada

Lenguajes de Programación

Un LP posee dos componentes:Léxico. Conjunto de símbolos que se

pueden usar en un lenguaje. Sintaxis. Conjunto de reglas formales que

especifican la composición de programas a partir de ciertas unidades de construcción (Caracteres)

Semántica. Especifica el significado de un programa sintácticamente válido escrito en el lenguaje

Page 21: Pro Ge Structur Ada

Léxico

Identificadores: nombres que se le darán a ciertos elementos de programación (p.e. nombres de variables, tipos, módulos, etc.).

Constantes: datos que no cambiarán su valor a lo largo del programa.

Operadores: símbolos que representarán operaciones entre variables y constantes.

Instrucciones: símbolos especiales que representarán estructuras de procesamiento, y de definición de elementos de programación.

Comentarios: texto que se usará para documentar los programas

Page 22: Pro Ge Structur Ada

Sintaxis

Consta de unas definiciones, denominadas reglas sintácticas o producciones que especifican la secuencia de símbolos que forman una frase del lenguaje. Estas reglas dicen si una frase está bien escrita o no.

Page 23: Pro Ge Structur Ada

Actividad

Dadas las siguientes expresiones, ordénelas, aplicando la sintaxis adecuada, de tal manera que el mensaje sea entendible.orientarse Es saber importante iba el saco ladrón a meterla en El lección El explica los niños a maestro la para tinta La escribir sirve prisa Ven tengo porque pronto

Page 24: Pro Ge Structur Ada

Actividad. Pon los signos de puntuación donde corresponda

En base al texto proporcionado por el docente, escribe los signos de puntuación según corresponda, de tal manera que quede de acuerdo a lo que se indica:

Escribe los signos de puntuación según corresponda, de tal manera que en la primera vez le quede al sobrino Juan, en el segundo intento le quede a Luís, en el tercero al Sastre, el cuarto a los Jesuitas y en el último caso no le quede a ninguna persona.

Page 25: Pro Ge Structur Ada

Texto a poner puntuación

“Dejo mis bienes a mi sobrino Juan no a mi hermano Luis tampoco jamás se pagará la cuenta al sastre nunca de ningún modo para los jesuitas todo lo dicho es mi deseo”

Page 26: Pro Ge Structur Ada

Solución para Juan:

Dejo mis bienes a mi sobrino Juan. No a mi hermano Luis. Tampoco, jamás, se pagará la cuenta al sastre. Nunca, de ningún modo, para los jesuitas. Todo lo dicho es mi deseo

Page 27: Pro Ge Structur Ada

Solución para Luis:

¿Dejo mis bienes a mi sobrino Juan? No. ¡A mi hermano Luis!. Tampoco, jamás, se pagará la cuenta al sastre. Nunca, de ningún modo, para los jesuitas. Todo lo dicho es mi deseo

Page 28: Pro Ge Structur Ada

Solución para el Sastre:

¿Dejo mis bienes a mi sobrino Juan? No. ¿A mi hermano Luis? Tampoco, jamás. Se pagará la cuenta al sastre. Nunca, de ningún modo, para los jesuitas. Todo lo dicho es mi deseo

Page 29: Pro Ge Structur Ada

Solución para los jesuitas:

¿Dejo mis bienes a mi sobrino Juan? No. ¿A mi hermano Luis? Tampoco, jamás. ¿Se pagará la cuenta al sastre? Nunca, de ningún modo. Para los jesuitas todo. Lo dicho es mi deseo

Page 30: Pro Ge Structur Ada

Solución para ninguno:

¿Dejo mis bienes a mi sobrino Juan? No. ¿A mi hermano Luis? Tampoco. Jamás se pagará la cuenta al sastre. Nunca, de ningún modo, para los jesuitas. Todo lo dicho es mi deseo

Page 31: Pro Ge Structur Ada

¿Cómo entiende la maquina los lenguajes de prog.?

Un Lenguaje de programación requiere 0’s y 1’s.

Un lenguaje de alto nivel son palabras fácilmente entendibles.

Se requieren Traductores

Page 32: Pro Ge Structur Ada

TRADUCTORES DE LENGUAJE

Traductores de lenguaje Son los programas que

traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código de maquina.

Clasificación: Compiladores: Lenguaje de

alto nivel --> Lenguaje de maquina.

Interprete: Un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta.

Page 33: Pro Ge Structur Ada

Traductores de Lenguaje

Para que un procesador ejecute un programa escrito en un lenguaje de alto nivel es necesario que lo transforme a su equivalente en lenguaje máquina. Para ello existen dos posibilidades, la interpretación y la traducción.

Page 34: Pro Ge Structur Ada

Interpretación

Un intérprete traduce y ejecuta sentencia a sentencia el programa original (programa fuente.)

Page 35: Pro Ge Structur Ada

Compilación

Traduce el programa original en un programa escrito en lenguaje máquina.

Page 36: Pro Ge Structur Ada

Comparación compiladores -intérpretes

Un intérprete puede ejecutar un programa directamente, incluso sin estar completo. Un compilador ha de traducirlo completamente antes de ejecutarlo.

Un programa interpretado ocupa poca memoria.

Un programa compilado es más rápido. El compilador crea un ejecutable

independiente del propio compilador. Un programa interpretado necesita siempre su intérprete.

Page 37: Pro Ge Structur Ada

OPERADORESSon elementos que relacionan de forma diferente, los valores, es decir, los operadores nos permiten manipular valores. Existen tres operadores utilizados por las computadoras:

AritméticosRelacionales Lógicos

Page 38: Pro Ge Structur Ada

Aritméticos

Operadores aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores a utilizar

Page 39: Pro Ge Structur Ada

Operadores lógicos

Operadores que permiten comparar dos valores o variables. Se dividen en operadores lógicos relacionales y operadores lógicos boléanos

Operadores lógicos relacionales: Se utilizan para establecer una relación entre dos valores. Compara estos valores entre si y esta comparación produce un resultado de Verdadero o Falso. Los operadores relaciónales comparan valores del mismo tipo, tienen el mismo nivel de prioridad en su evaluación y tienen menor prioridad que los aritméticos. Los operadores relaciónales son

Page 40: Pro Ge Structur Ada

Operadores Relacionales

Page 41: Pro Ge Structur Ada

OPERADORES LÓGICOS

Estos operadores se utilizan para establecer relaciones entre valores lógicos.

Estos valores pueden ser resultado de una expresión relacional. Los operadores lógicos son:And ( y)Or (ó)Not (Negación)

Page 42: Pro Ge Structur Ada

Jerarquía de los operadores

Para resolver cualquier operación o ejercicio se debe desarrollar teniendo en cuenta el siguiente orden:

Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan desde el centro hacia fuera, el paréntesis mas interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden.

1. Exponenciación2. Multiplicación, División (Con decimales)3. División Entera y División Modular.4. Suma y resta

Page 43: Pro Ge Structur Ada

Jerarquía de los operadores

Cuando se encuentran operadores del mismo nivel, estos se desarrollan de izquierda a derecha. Cuando se encuentran varios paréntesis, se empiezan a desarrollar por el más interno. Un paréntesis, sólo desaparece, cuando queda un solo término en medio de ellos

Page 44: Pro Ge Structur Ada

Jerarquía de los operadores

Para desarrollar cualquier operación algorítmica es necesario utilizar la jerarquía de los operadores, ya que ella indica el orden e importancia de cada uno de los operadores aritméticos

Page 45: Pro Ge Structur Ada

Jerarquía de operadores

Tomaremos como ejemplo la expresión

2 * 5 + 3 = ?

Y si ponemos :

2 + 5 * 3 = ?

Page 46: Pro Ge Structur Ada

Jerarquía de Operadores

2 * 5 + 3

10 + 3

13 Resultado Correcto

Page 47: Pro Ge Structur Ada

Ejemplo1. 40 / 5 + 8 ^ 2 * 3 ------> 1° es la exponenciación

2. 40 / 5 + 64 * 3 ---------> Primero se resuelve la división (de izquierda a derecha)

3. 8 + 64 * 3 --------------> Luego división (mismo nivel jerárquico de multiplicación)

4. 8 + 192-----------------> Por último se realiza la suma

5. 200

Page 48: Pro Ge Structur Ada

Jerarquía de Operadores

51 / 2 + 3 ---> La división ( / ) indica que se manejan decimales. 51 / 2= 25.5

25.5 + 3 -----> Luego se realiza la suma de los dos valores 28.5

51 \ 2 + 3 ---> La división ( \ ) indica que sólo se maneja la parte entera. 51 \ 2= 25

Page 49: Pro Ge Structur Ada

Jerarquía de operadores

25 + 3 -----> Luego se realiza la suma de los dos valores 28

51 mod 2 + 3 ---> (mod) indica que se usa el residuo de la división 51 mod 2 = 1

1 + 3 -----> Luego se realiza la suma de los dos valores 4

Page 50: Pro Ge Structur Ada

Observe lo distinto de los resultados. La división modular toma sólo el residuo de la división: El 2 en el 51 está 25 veces. 25 x 2 = 50. Por lo tanto de 50 a 51 hay 1 (este es el residuo de la división). Para entender mejor observemos los siguientes Ejercicios

Page 51: Pro Ge Structur Ada

Ejercicios con Operadores Relacionales:

Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa.

Page 52: Pro Ge Structur Ada

Ejemplo:

Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se representa por el valor true, 8<4 (ocho menor que cuatro) es falsa, false.

Page 53: Pro Ge Structur Ada

Ejemplos Sencillos

Operador nombre ejemplo resultado

< menor que 5<7 Verdadero

> mayor que 6>3 Verdadero

== igual a 3==5 Falso

!= no igual a 5!=7 Verdadero

<= menor que o igual a

8<=10 Verdadero

>= mayor que o igual a

10>=12 Falso

Page 54: Pro Ge Structur Ada

Ejercicios para resolver

(4*4+10/2)+5*4+8/2*5 < 6*(5+10*4-22)*2

(16+10/2)+5*4+8/2*5 < 6*23*2

(16+5)+20+4*5 < 138* 2

21+20+20 < 276

61 < 276

Verdadero

Page 55: Pro Ge Structur Ada

Ejercicios para resolver

5*5+10*50+120*3+8*5/2+10 >= 5*5+(10*50+12) *3+8*5/2+10+120

25+10*50+120*3+8*5/2+10 >= 5*5 + (500+12)*3+8*5/2+10+120

25+500+120*3+8*5/2+10 >= 5*5 + 512*3 + 8/2+10+120

25+500+360+8*5/2+10 >= 25+512*3+8/2+10+120

25+500+360+40/2+10 >= 25+1536+8/2+10+120

25+500+360+20+10 >= 25+1536+4+10+120

525+360+20+10 >= 1561+4+10+120

885+20+10 > =1565+10+120

1005+10 > = 1575+120

1015 >= 1690

Falso

Page 56: Pro Ge Structur Ada

5*5+10*5+20*3(+8*5/2+10) <= 5(*5+(10*50+12)) *3+8*5/2+10 5*2+(10*50+120*3+8*5)/2+10 != 8*5+(10*5+100) *3+(8*5/2+10+120) 3+10*50/2+10*3+(8*5/2+10) < 5*3+(5*3+12*2) *2+8*5/2+15+100 5*5+10*50+120*3+8*5/2+10 == 120/2*3+8*4+(10/5*3-10+85) 5*5+10*50+120*3+8*5/2+10 >= 5*5+(10*50+10) *3+(8*5/2+10)/10

Page 57: Pro Ge Structur Ada

Operadores Lógicos

Los operadores lógicos permiten unir valores o expresiones lógicas, obteniendo como resultado si es verdadera o falsa la expresión combinada. Son los siguientes:&& (Y lógico - conjunción) || (O lógico - disyunción) ! (NO lógico)

Page 58: Pro Ge Structur Ada

Tablas de Verdad: Conector and(&&)

Page 59: Pro Ge Structur Ada

Tabla de verdad:Conector lógico or (||)

Page 60: Pro Ge Structur Ada

Ejemplos de Uso de conectores

6 >= 5 && 7 != 8 && 4<=6

V && V && V = Verdadero

6 >= 5 && 7 != 8 && 4>=6

V && V && F = Falso

Page 61: Pro Ge Structur Ada

Ejemplo de uso de conectores

6 >= 5 || 7 != 8 || 4<=6

V || V || V = Verdadero

6 >= 5 || 7 == 8 || 4>=6

V || F || F = Verdadero

6 >= 5 || 7 != 8 || 4>=6

V || V || F = Verdadero

Page 62: Pro Ge Structur Ada

Ejemplo de uso de conectores

6 >= 5 && 7 == 8 || 4>=6

V && F || V = Verdadero

F || V

6 >= 5 || 7 == 8 && 4>=6

V || F && F = FALSO

V && F

Page 63: Pro Ge Structur Ada

Introducción a los algoritmos

Page 64: Pro Ge Structur Ada

Ejemplo 1.

¿Cuáles son los pasos para que una persona pueda caminar adelante suponiendo que está sentado?1. Tomar impulso para levantarse

2. Ponerse de pie

3. Mover una pierna hacia adelante

4. Mover la otra pierna delante de la primera

5. Repetir pasos 3 y 4 hasta que ya no se quiera caminar

Page 65: Pro Ge Structur Ada

Ejercicio 1.

Escriba los pasos necesarios para hacer un agua de limón, considere que cuenta con los siguientes utensilios y alimentos:Cuchillo, Jarra, Cuchara exprimidorLimones lavados enterosAzúcar

Page 66: Pro Ge Structur Ada

Ejercicio 2.

Escriba la serie de pasos para llamar de un teléfono público a un teléfono celular. Suponga que ya se encuentra en el lugar donde está el teléfono y ya cuenta con tarjeta.

Page 67: Pro Ge Structur Ada

Definición de algoritmos

Page 68: Pro Ge Structur Ada

GENERALIDADES SOBRE LOS ALGORITMOS

Metodología de programación: Consiste en la metodología aplicada para la resolución de problemas mediante programas.

Problema Diseño del algoritmo

Programa de

computador

Descripción ordenada de la secuencia de pasos (sin ambigüedades) que conducen a la solución de problema dado (Análisis del problema y desarrollo del algoritmo).

Expresar el algoritmo como un programa en el lenguaje de programación adecuado.

Ejecución y validación del programa de computadora.

Tarea que se desea resolver.

La definición de un algoritmo debe describir tres partes: Entrada, proceso y salida. Ejemplo: La receta de un sancocho.

Page 69: Pro Ge Structur Ada

Programa de Aplicación

Programa que permite resolver la ecuación de primer grado

73

Programa que permite resolver la ecuación de primer grado

a x + b = 0

?a

bx = -b / a

#include <stdio.h>int a,b,x;main(){ printf(“Ingrese valores de EC”); scanf(“%d %d”,&a,&b); if a ==0 printf (“error”); else { x = -b / a; printf(“La solución es %d:”,x); } printf(“Fin programa”);}

Algoritmo EC 1er GradoVariables a,b,x de tipo enteroInicio Escribir(“Ingrese valores de EC”) Leer (a,b) Si a = 0 entonces escribir (“Error”) sino Inicio x=-b/a Escribir (“La solución es:”,x) Fin Escribir(“Fin programa”)

Fin

ALGORITMO

Programa

Page 70: Pro Ge Structur Ada

¿Qué es un problema?

Es una situación concreta sobre la cual se quiere implementar una solución (ejemplos)

Solución: procedimiento que nos lleva a satisfacer ciertos requerimientos

Esquema básico para la resolución de un problema a través de un programa con un enfoque sistémico

74

ProcesoEntrada Salida

• Datos Externos• Datos auto generados• Lectura de dispositivo

de almacenamiento

• Informes• Datos para otro

programa• Datos grabados en

dispositivos externos de almacenamiento

Page 71: Pro Ge Structur Ada

Pasos en la resolución de un problema

Entender el problema Conceptualización Objetivo Contexto

Buscar soluciones Elegir solución Diseñar solución

Descomposición Especificar tareas Modelar solución

Implementar solución Validar solución

75

Page 72: Pro Ge Structur Ada

Datos y Variables

Datos: objetos simbólicos que representan objetos del mundo real.Ejemplos: 10 de Marzo de 2003, 3.14

Variables: no hace referencia a un objeto explícitoEjemplos: velocidad del móvil, factor de

crecimiento

76

Page 73: Pro Ge Structur Ada

¿Qué es un Modelo?

Estructura para dar razón y abstraer una realidad

Ejemplo:

77

Asignaturas

Carrera

Estudiantes

EstudiaPlan de Estudios

Inscrita

Page 74: Pro Ge Structur Ada

¿Qué es un algoritmo?

Procedimiento detallado para resolver un problema en pasos y en un tiempo finito.

Se especifican en base a operaciones básicas que controlan las variables y el flujo del algoritmo

El algoritmo lleva desde un estado inicial a un estado final

El algoritmo recibe Entradas y entrega Salidas

78

Page 75: Pro Ge Structur Ada

¿Cómo desarrollar un algoritmo?

ImaginaciónNo reinventar la ruedaDividir para conquistarPara ser efectivo se requiere practicar

constantementeEl diseño de algoritmos es una rama de la

Ciencia de la Computación

79

Page 76: Pro Ge Structur Ada

¿Cómo se describe un algoritmo?

Lenguaje naturalPseudo códigoLenguaje de programaciónLa precisión es importante

Un algoritmo no puede ser descrito de forma ambigua:

Todos tienen que entender lo mismo (incluido el computador!)

80

Page 77: Pro Ge Structur Ada

Llamada telefónica

Se desea conceptualizar el problema de efectuar una llamada telefónica en un teléfono público que recibe monedas de $10, $50 y $100. El costo mínimo de la llamada es de $100 por 5 minutos. El proceso se inicia desde que se levanta el auricular y finaliza cuando se cuelga.

81

Page 78: Pro Ge Structur Ada

Árboles de decisión

Herramienta útil para describir algoritmos que involucran gran cantidad de decisiones

82

Page 79: Pro Ge Structur Ada

Conceptos Básicos de Algoritmos

La forma en que se ejecutan las operaciones básicas en un computador, es similar a lo que ocurre en nuestro cerebro.

Por ejemplo, para sumar dos valores: Primero debemos pedirle a alguien que nos diga el

primer valor. Luego de que conocemos este valor, debemos

almacenarlo (para recordarlo después) en una neurona (Suponemos que un valor se puede almacenar en una neurona).

Ya conocemos el primer valor y está almacenado en nuestro cerebro.

Page 80: Pro Ge Structur Ada

Conceptos Básicos de Algoritmos

Ahora debemos pedir el segundo valor. Una vez conocido, lo almacenamos en otra neurona

distinta de la anterior. ¿ Por qué? Ahora que conocemos los dos valores procedemos a

sumarlos, y dicho resultado lo almacenamos en otra neurona distinta de las anteriores.

Por último, le decimos el resultado a la persona que nos entrego los números.

Page 81: Pro Ge Structur Ada

Conceptos Básicos de Algoritmos

De lo anterior, al menos necesitamos 3 neuronas para sumar dos números.

Le pedimos explícitamente que nos dijeran dichos valores.

Le asignamos dichos valores a las neuronas

La suma la realizó nuestro cerebro de forma mecánica. Note que no existen detalles de la operaciones básicas (*,/,+, -).

Finalmente se da el resultado

Page 82: Pro Ge Structur Ada

Conceptos Básicos de Algoritmos

Algoritmo para sumar dos números: Definimos tres neuronas Pedimos el primer valor Almacenamos ese valor en la neurona 1. Pedimos el segundo valor Almacenamos ese valor en la neurona 2. Almacenamos la suma de las neuronas 1 y 2 en la

neurona 3 Entregamos el resultado que se encuentra en la

neurona 3.

Page 83: Pro Ge Structur Ada

Conceptos Básicos de Algoritmos

Sin embargo, en los lenguajes no se pueden usar neuronas, pero podemos definir variables (Recuerde que las variables pueden tomar cualquier valor)

En lugar de usar neurona 1 y neurona 2, se utilizan espacios de memoria que llamaremos “var 1” y “var 2”, y así sucesivamente. También las podemos llamar “x1” y “x2” ó “x” e “y” ….

Page 84: Pro Ge Structur Ada

Conceptos Básicos de AlgoritmosEjercicio: Cree un algoritmo que multiplique tres

números.• Algoritmo para multiplicar tres números:

– Definimos cuatro variables– Pedimos el primer valor– Almacenamos ese valor en var 1.– Pedimos el segundo valor– Almacenamos ese valor en var 2.– Pedimos el tercer valor– Almacenamos ese valor en var 3.– Almacenamos la multiplicación de las variables en var 4– Entregamos el resultado que se encuentra en var 4.

Page 85: Pro Ge Structur Ada

Conceptos Básicos de Algoritmos

La manera en que hemos detallado nuestros dos algoritmos se llama PSEUDO-CÓDIGO. Y este pseudo-código fue escrito en lenguaje natural.

Otra manera de poder detallar nuestros algoritmos es a través de los diagrama de flujo. Un diagrama de flujo es una representación simbólica de la lógica del algoritmo.

Page 86: Pro Ge Structur Ada

Diagrama de Fujo

Nomenclatura: Inicio del algoritmo Término del algoritmo Impresión de

mensajes Receptor de datos Operación de datos Bifurcación (Decisión) Definición de variables Conector

Inicio

Termino

?F V

Page 87: Pro Ge Structur Ada

Diagrama de Flujo y Pseudo-Código

Inicio

Escribir“Mensaje 1”

Fin

Leervar1,x, y

a = 3 * x + yb = a / var1

Entero var1, x , yReal a, b

Si a > bVF

Inicio de Algoritmo

Definición de variables

Impresión de mensajes

Lectura de mensajes

Transformación de datosOperaciones sobre los datos

Bifurcación en la ejecución de instrucciones

Conector

Fin de algoritmo

DIAGRAMA DE FLUJO NOMENCLATURA PSEUDO-CÓDIGO

Inicio

Variables Entero var1, x, y Real a, b

Escribir (“Mensaje 1”)

Leer (var1, x, y)

a = 3 * x + yb = a / var1

Si a > b Entonces Inicio Instrucciones FinSino Inicio Instrucciones Fin

Fin

Page 88: Pro Ge Structur Ada

Diagrama de Fujo para el algoritmo que suma dos valores

Inicio

Termino

var1,var,var3

Ingrese el primer valor

var 1

Ingrese el segundo valor

var 2

var3=var1+var2

El resultado es : var3

Se pide ingresar el segundo valor

Se pide ingresar el primer valor

Se asocia el número ingresado a var1

Se definen las variables var1, var2, var3

Se asocia el número ingresado a var1

Se asigna el resultado de la suma entre var1 y var2 a var3

Se muestra el resultado

Page 89: Pro Ge Structur Ada

Diagrama de Flujo

Ejercicio: Cree el diagrama de flujo para el algoritmo que multiplica tres números y muestre el resultado

Ejercicio: Cree el diagrama de flujo para que divida dos números y muestre el resultado

Page 90: Pro Ge Structur Ada

¿Preguntas?

Page 91: Pro Ge Structur Ada

Algoritmos

Ejercicio. Usando diagrama de Flujo. Cree un algoritmos donde una persona ingrese su edad y muestre por pantalla si es mayor de edad.

Page 92: Pro Ge Structur Ada

AlgoritmosInicio

Edad

Ingrese suedad

Edad

Edad>=18Usted esmayor de

edad

Usted esmenor de

edad

Fin

si

No

Page 93: Pro Ge Structur Ada

Algoritmos

Del ejemplo anterior podemos observar que la bifurcación permite seguir el flujo adecuado dada una condición.

Las condiciones que se evalúan en las bifurcaciones son siempre verdaderas o falsas.

Por ende, hay que colocar las instrucciones adecuadas a los valores que se evaluan en las bifurcaciones.

Page 94: Pro Ge Structur Ada

Algoritmos

También es posible que existan bifurcaciones contiguas.

En las bifurcaciones o estructura de control, se evalúan proposiciones utilizando:

Operadores lógicosOperadores aritméticosOperadores Relacionales

Page 95: Pro Ge Structur Ada

Algoritmos

Operadores Aritméticos: * multiplicación / División + Suma - Resta % Módulo

Ejemplo de módulo (o residuo de la división):

5%2 es 1

4%2 es 0

Page 96: Pro Ge Structur Ada

Algoritmos

Operadores Lógicos: Y, And, && Y V F

V V F

F F F

Page 97: Pro Ge Structur Ada

Algoritmos

Operadores Lógicos: O, Or, || O V F

V V V

F V F

Page 98: Pro Ge Structur Ada

Algoritmos

Operadores Lógicos: No, Not, !

No V F

F V

Page 99: Pro Ge Structur Ada

Algoritmos

Analicemos los siguientes casos

var1=2, var2=0,var3=4

var4=(var1*var1)/var3

var4>=1 && var1!=0

Si

No

var4=1

Si

Page 100: Pro Ge Structur Ada

Algoritmos

Analicemos los siguientes casos

var1=2, var2=0,var3=4

var4=(var3%var1)

(var4!=0 || var2>0) && (var3==4)

Si

No

var4=0

No

Page 101: Pro Ge Structur Ada

Algoritmos

• Analicemos los siguientes casos

var1=2, var4=1,var3=4

var4=(var4+var1)

!(var1 && (var4>=var1))

Si

No

var4=3

No

Cualquier proposición distinta de ceroEs VERDADERO

Page 102: Pro Ge Structur Ada

Algoritmos

Es importante notar que existen prioridades entre los operadores. Por lo tanto deben utilizarse paréntesis en los casos que correspondan

Page 103: Pro Ge Structur Ada

Algoritmos

Ejercicio. Crear un algoritmo que muestre en forma ordenada tres número enteros ingresados desde teclado.

Page 104: Pro Ge Structur Ada

Inicio

var1,var,var3

Ingrese elprimer valor

var1

Ingrese elsegundo

valor

var2

Ingrese eltercer valor

var3

1

1

var1>var2 &&var1>var3

var2>var3El orden esvar1,var2,

var3

El orden esvar1,var3

var2

Fin

var2>var3 var1>var3El orden esvar2,var1,

var3

El orden esvar2,var3

var1

var2>var1El orden esvar3,var2

var1

El orden esv3,var1

var2

si

No

si

si si

si

No

No No

No

Page 105: Pro Ge Structur Ada

Diagrama de Flujo Ejercicio: Cree el diagrama de flujo para el algoritmo que multiplica

tres números y muestre el resultado Ejercicio: Cree el diagrama de flujo para que divida dos números y

muestre el resultado Ejercicio: Cree el diagrama de flujo para que resuelva la ecuación de

primer grado y muestre el resultado Ejercicio: Cree el diagrama de flujo para que resuelva la ecuación de

segundo grado, para valores reales e imaginarios, y muestre el resultado

Ejercicio: Cree el diagrama de flujo permita sumar tres números ingresados por teclado y muestre el resultado

Ejercicio: Cree el diagrama de flujo que permita sumar “n” números y muestre el resultado. El valor de “n” debe ser ingresado por teclado al igual que los números que se sumarán.

Page 106: Pro Ge Structur Ada

Algoritmos

Repaso de BifurcacionesAprendizajes Esperados

Conceptos de CiclosCuándo se aplican los ciclos

Page 107: Pro Ge Structur Ada

Algoritmos

Ejercicio. Crear un algoritmo que muestre en forma ordenada tres número enteros ingresados desde teclado

Page 108: Pro Ge Structur Ada

Inicio

var1,var,var3

Ingrese elprimer valor

var1

Ingrese elsegundo

valor

var2

Ingrese eltercer valor

var3

1

1

var1>var2 &&var1>var3

var2>var3El orden esvar1,var2,

var3

El orden esvar1,var3

var2

Fin

var2>var3 var1>var3El orden esvar2,var1,

var3

El orden esvar2,var3

var1

var2>var1El orden esvar3,var2

var1

El orden esv3,var1

var2

si

No

si

si si

si

No

No No

No

Page 109: Pro Ge Structur Ada

Concepto de CicloUn ciclo es la repetición de un conjunto de

instrucciones. Dicho ciclo culmina cuando se cumple una condición de termino.

Cuándo se aplican los CiclosSe aplican cuando queremos ejecutar un

conjunto de instrucciones varias veces.

Algoritmos

Page 110: Pro Ge Structur Ada

Algoritmos

Estructura de un ciclo

Inicialización

Condición de Termino

Instrucción 1

Instrucción 2

Instrucción N

Incremento/Decremento

V

F

Page 111: Pro Ge Structur Ada

Algoritmos

Ejemplo: Crear un algoritmo que sume N elementos y muestre el resultado

Page 112: Pro Ge Structur Ada

N var cont suma

02 11

122

33

Inicio

N,var,cont,Suma=0

Ingrese cuantos

números va a sumar

N

cont=1

cont<=NIngrese elcont valor

var

suma=suma+var

cont=cont+1

V

El resultado es suma

Fin

Page 113: Pro Ge Structur Ada

Algoritmos

Ejemplo: Crear un algoritmo que encuentre el número mayor de N números enteros positivos ingresados por teclado.

Page 114: Pro Ge Structur Ada

= -1

Inicio

N,var,cont,mayor

Ingrese cuantos

números va a sumar

N

cont=1

cont<=NIngrese elcont valor

var

cont=cont+1

V

El resultado es mayor

Fin

cont==1 || var>mayor

mayor=var

V

F

Page 115: Pro Ge Structur Ada

Algoritmos

Ejemplo: Crear un algoritmo que calcule

n

i1

Page 116: Pro Ge Structur Ada

GENERALIDADES SOBRE LOS ALGORITMOS

• Describir los pasos para cruzar la calle.

• Describa los pasos para llevar a una amiga a cine.

• Describa los pasos para cambiar la llanta pinchada de una cicla.

• Describa los pasos para cambiar un bombillo quemado.