algoitmia(Definitivo)

20
REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION ESCUELA TECNICA INDUSTRIAL ”LARA” BARQUISIMETO Material de Apoyo para los contenidos: Diagramas de Flujo y Pseudolenguaje (Secuencia de dato) Profesores: Oscar Suárez Liliana Mendoza

Transcript of algoitmia(Definitivo)

Page 1: algoitmia(Definitivo)

REPUBLICA BOLIVARIANA DE VENEZUELAMINISTERIO DEL PODER POPULAR PARA LA EDUCACION

ESCUELA TECNICA INDUSTRIAL ”LARA”BARQUISIMETO

Material de Apoyo para los contenidos: Diagramas de Flujo y Pseudolenguaje (Secuencia de dato)

Profesores: Oscar Suárez

Liliana Mendoza

BARQUISIMETO, OCTUBRE 2008

Page 2: algoitmia(Definitivo)

Estas notas son una Introducción a la Resolución Sistemática de Problemas mediante

Algoritmos. El objetivo de las notas es presentar una metodología que permita obtener

soluciones algorítmicas correctas de un problema dado.

La Programación de computadoras comenzó como un arte, y aún hoy en día mucha gente

aprende a programar sólo mirando a otros procederes (ej Un profesor, un amigo, etc.), y

mediante el hábito, sin conocimiento de los principios que hay detrás de esta actividad. Es

por ello que se busca fortalecer los pasos básicos en el desarrollo de la algoritmia como lo

es los diagramas de Flujo y el Pseudolenguaje como un paso primordial e introductorio a la

programación

Conscientes de que estas notas van dirigidas a un grupo aspirante a futuros técnicos Medios

en Informática, el enfoque que llevaremos a cabo trata de balancear el uso de la intuición y

el sentido común, con la única finalidad de explicar a los jóvenes la lógica de Programación

con el fin de promover la capacidad de solucionar problemas

“PARA OBTENER EL APRENDIZAJE, HAY QUE VIVIR LA EXPERIENCIA”

Page 3: algoitmia(Definitivo)

Diagrama de Flujo

- Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede

decir que es la representación detallada en forma gráfica de como deben realizarse los pasos

en la computadora para producir resultados.

- Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos

en la computadora), se relacionan entre si mediante líneas que indican el orden en que se

deben ejecutar los procesos.

Elementos de un diagrama de Flujo

Bloque de proceso o de instrucción: Es un rectángulo dentro del cual se escribe la acción a ejecutar.

Bloque de Entrada. Usualmente se emplea un paralelogramo o un bloque en forma de tarjeta.

Bloque de Salida. Es el que indica lo que se quiere escribir al final. (O mostrar)

Bloques de Decisión: Indica el comienzo y el fin del algoritmo. Para ello se utilizan circunferencias.

Bloque de Decisión: Se suelen utilizar rombos u óvalos. Tienen una entrada y dos o tres salidas.

(Decisión Lógica) (Decisión Aritmética)

Comprar

Leer Leer

Mostrar X

Inicio Fin

NoSi

Es X < 0 Como es A

A= 0

A< 0A> 0

Page 4: algoitmia(Definitivo)

Ventajas de usar Diagramas de Flujo

1 . Rápida comprensión de las relaciones.

2. Análisis de las diferentes secciones del programa

3. Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas.

4. Enriquece la comunicación con el usuario.

5. Permite la documentación adecuada de los programas.

6. Mejor codificación de los programas.

7. Depuración y pruebas ordenadas de programas

Desventajas de los Diagramas de Flujo

1. Cuando estamos en presencia de diagramas complejos y detallados pueden resultar

laboriosos en su planteamiento y diseño.

2. Las acciones a seguir tras la salida de un símbolo de decisión, pueden ser difíciles de

seguir si existen más caminos de los contemplados.

3. No existen normas fijas para su elaboración, por lo tanto incluir todos los detalles que se

deseen considerar queda a criterio del diseñador. Su diseño al igual que el algoritmo en

pseudocodificación debe estar centrado en el cumplimiento de los pasos necesarios para

obtener el resultado que se quiere.

Ejemplo 1: Se desea realizar la operación de adición de 2 números y poder visualizar su resultado

Inicio

Fin

A, B

DestápeloC= A+B

C

Ejercicio propuesto: Realice

los respectivos diagramas de

flujo para la operación de

multiplicación y División

Page 5: algoitmia(Definitivo)

Ejemplo 2: Consideremos una maquina automática de refresco con una ranura para monedas de Bs. 500 (Únicamente) y que además, devuelve la moneda cuando no hay refresco.

Realice un diagrama de flujo que explique su funcionamiento.

Análisis:- Si tengo una moneda de Bs. 500 sigo el proceso. De lo contrario termina.- Si la respuesta fue positiva, introduzco la moneda y apretó el botón para que baje el

refresco.- Si hay refrescos, la maquina provee el refresco, pero en caso contrario, la maquina

devuelve la moneda y el proceso termina.- Si hay refresco, lo destapamos y termina el proceso.

Ejemplo 3: Desarrolle un algoritmo que permita leer dos valores distintos, determinar cual de los dos valores es el mayor y escribirlo.

Inicio

Fin

¿Tengo una moneda de 500?

Introduzca en la moneda en la ranura

Si

Apriete el botón proveedor

¿Hay

refresco?

NoTome su moneda Si Destápelo

Ejercicio propuesto: Realice el respectivos diagrama de flujo para “una”

operación de transacción bancaria a través de un telecajero

Page 6: algoitmia(Definitivo)

Pseudocódigo Diagrama de Flujo

1.Inicio

2.Inicializar variables: A = 0, B = 0

3.Solicitar la introducción de dos valores distintos

4.Leer los dos valores

5.Asignarlos a las variables A y B

6.Si A = B Entonces vuelve a 3 porque los valores deben ser distintos

7.Si A>B Entonces

Escribir A, “Es el mayor”

8.De lo contrario: Escribir B, “Es el mayor”

9.Fin_Si

10. Fin

Ejercicios propuesto:

a. Realizar un algoritmo que permita leer dos valores, determinar cual de los dos valores es el menor y escríbalo

Estructuras condicionales

Inicio

A, B

A = B

A “Es el mayor”B “Es el mayor”

Si

No

Fin

A > B

No

“Introduzca dos valores distintos”

Si

Page 7: algoitmia(Definitivo)

Las estructuras condicionales comparan una variable contra otro(s) valor (es), para que en

base al resultado de esta comparación, se siga un curso de acción dentro del programa.

Cabe mencionar que la comparación se puede hacer contra otra variable o contra una

constante, según se necesite. Existen tres tipos básicos, las simples, las dobles y las

múltiples.

• Tipos de Estructuras Condicionales:

1. Simples: Las estructuras condicionales simples se les conoce como “Tomas de

decisión”. Estas tomas de decisión tienen la siguiente forma:

2. Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o

alternativas posibles en función del cumplimiento o no de una determinada condición. Se

representa de la siguiente forma:

Donde:

• Si: Indica el comando de comparación

• Condición: Indica la condición a evaluar • Entonces: Precede a las acciones a realizar cuando se cumple la condición • Instrucción(es): Son las acciones a realizar cuando se cumple o no la condición • si no: Precede a las acciones a realizar cuando no se cumple la condición • (Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más acciones.)

3. Múltiples (Si anidado):

Page 8: algoitmia(Definitivo)

Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones específicas. La forma común es la siguiente:

Ejemplo 4: Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un mensaje indicándolo. Expresarlo en Seudo código y Diagrama de flujos.

Ejercicio Propuesto: Realizar dicho algoritmo en donde se muestre que el usuario es menor de edad

Page 9: algoitmia(Definitivo)

Ejemplo 5: Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar un mensaje donde diga si el alumno aprobó o reprobó el curso. Exprese el algoritmo usando Seudo código y diagrama de flujos.

INICIO Not1, Not2,

Not 3 :REAL Def: REAL

LEA Not1, Not2, Not3 Def = (Not1 + Not2 + Not3) /3 Si Def < 3 entonces

Escriba “Reprobó el curso”

Sino Escriba “Aprobó el curso”

Fin-Si FIN

Ejercicio Propuesto: Desarrollo el algoritmo y el diagrama de flujo, en donde se pida el las notas de 4 asignaturas (Matemática, Programación, Algoritmia, Educación Física) se calcule el promedio y se indique al usuario si es sobresaliente o distinguido (Promedio es mayor que 18 es sobresaliente de lo contrario es distinguido)

Page 10: algoitmia(Definitivo)

Ejemplo 6: Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm envíe el mensaje: “Persona de altura baja”; si la altura está entre 151 y 170 escriba el mensaje: “Persona de altura media” y si la altura es mayor al 171 escriba el mensaje: “Persona alta”. Exprese el algoritmo usando Seudo código y diagrama de flujos.

Pseudocódigo

INICIO Altura: ENTERO ESCRIBA “Cuál es tu altura?” LEA Altura Si Altura <=150 entonces ESCRIBA “persona de altura baja” Sino Si Altura <=170 entonces ESCRIBA “persona de altura media” Sino Si Altura>170 ENTONCES ESCRIBA “persona alta” Fin-Si Fin-Si Fin-Si FIN

Ejercicio propuesto: Se desea escribir un algoritmo que le permita solicitar la edad de una persona, si la edad es menor o igual a 12 indique que es un “Niño”, si la edad esta comprendida entre 13 a 18 años indique que es un “Adolescente”, y si la edad es mayor de 18 años indique “Adulto”. Exprese el algoritmo usando Seudo código y diagrama de flujos.

Page 11: algoitmia(Definitivo)

Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado.

Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo - Ocupa menos espacio en una hoja de papel - Permite representar en forma fácil operaciones repetitivas complejas - Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de programación.

Estructura de un Programa

Programa *Acá se le coloca Nombre del Programa* Constantes * En esta sección se definen las constantes*

Variables * En esta sección se definen las variables*

Inicio * Inicio del Programa* * acá se colocan las secuencias de pasos /algoritmo *

Fin *Culminación del Programa*

Ejemplo

Programa SumaVariablesA, B, C: Enteros

Inicio Escriba “Introduzca Primer Numero” Leer A Escriba “Introduzca Segundo Numero” Leer B C = A + B Mostrar CFin

Identificadores: Representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que nos permite acceder a su contenido.

Page 12: algoitmia(Definitivo)

Ejemplo: NombreNum_hrsCalif2

Constantes y Variables ¢ Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

Ejemplo:pi = 3.1416

¢ Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo.

Ejemplo:área = pi * radio ^ 2

Las variables son : el radio, el área y la constate es pi

Clasificación de las Variables Numéricas (enteras, reales)

LógicasAlfanuméricas (String)

¢ Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.

Ejemplo:iva=0.15 pi=3.1416 costo=2500

¢ Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos.¢ Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales).

Ejemplo:letra='a' apellido='lopez' direccion='Av. Libertad #190'

¢ Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno. ¢ Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente.

Page 13: algoitmia(Definitivo)

Ejemplos Problemas Secuénciales 1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara después de un mes si el banco paga a razón de 2% mensual. Programa Banco Constante Porcentaje: 0.02 Variables Ganancia, cap_inv: real

Inicio Leer cap_inv gan = cap_inv * Porcentaje Imprimir ganFin

2) Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas, el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones.

Inicio Leer sb, v1, v2, v3 tot_vta = v1 + v2 + v3 com = tot_vta * 0.10 tpag = sb + com Imprimir tpag, comFin

3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar finalmente por su compra.

Inicio Leer tc d = tc * 0.15 tp = tc - d Imprimir tp

Fin4) Un alumno desea saber cual será su calificación final en la materia de Algoritmos. Dicha calificación se compone de los siguientes porcentajes:

55% del promedio de sus tres calificaciones parciales.30% de la calificación del examen final. 15% de la calificación de un trabajo final.

Inicio Leer c1, c2, c3, ef, tf prom = (c1 + c2 + c3)/3 ppar = prom * 0.55 pef = ef * 0.30 ptf = tf * 0.15 cf = ppar + pef + ptf Imprimir cfFin

Page 14: algoitmia(Definitivo)

5) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.

Inicio Leer nh, nm ta = nh + nm ph = nh * 100 / ta pm = nm * 100 / ta Imprimir ph, pmFin

6) Realizar un algoritmo que calcule la edad de una persona.Inicio Leer fnac, fact edad = fact - fnac Imprimir edadFin.

Ejemplos Condicionales Simples1) Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta.

Inicio Leer p_int, cap int = cap * p_int si int > 7000 entonces

capf = cap + int fin-si Imprimir capffin

2) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario.

Inicio Leer calif1, calif2, calif3 prom = (calif1 + calif2 + calif3)/3 Si prom >= 70 entonces

Imprimir "alumno aprobado" si no

Imprimir "alumno reprobado" Fin-siFin

3) En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra?

Inicio Leer compra

Page 15: algoitmia(Definitivo)

Si compra > 1000 entonces desc = compra * 0.20 si no

desc = 0 fin-si tot_pag = compra - desc imprimir tot_pagfin.

4) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera:Si trabaja 40 horas o menos se le paga $16 por horaSi trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra.

Inicio Leer ht Si ht > 40 entonces he = ht - 40

ss = he * 20 + 40 * 16 si no

ss = ht * 16 Fin-si Imprimir ssFin

Sección de ejerciciosa) Secuénciales1) Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.2) Calcular el valor de un Producto en el Sistema del “Bolívar fuerte” dado que dicho producto esta etiquetado en Bolívares Normales

b) Condicionales simples1) Realizar la operación de División entre 2 números (Sabiendo que el segundo numero debe ser diferente de cero)2) Indique cuando un numero es primo, sabiendo que el dicho numero se divide entre 2 y si su residuo es cero se cataloga como numero primo de lo contrario no es un numero primo.