Algoritmos II

39
Algoritmos y Estructura de Datos •Declaración de variables •Declaración de constantes •Lenguajes algorítmicos •Estructuras secuenciales FACULTAD DE INGENIERIA, ARQUITECTURA Y URBANISMO ESCUELA DE INGENIERIA DE SISTEMAS Ing. Rosa América Cobeñas Sánchez

description

¿que son algoritmos? Clase Prof. Rosa A. Cobeñas S.

Transcript of Algoritmos II

Page 1: Algoritmos II

Algoritmos y Estructura de Datos

•Declaración de variables•Declaración de constantes•Lenguajes algorítmicos•Estructuras secuenciales

FACULTAD DE INGENIERIA, ARQUITECTURA Y URBANISMO

ESCUELA DE INGENIERIA DE SISTEMAS

Ing. Rosa América Cobeñas Sánchez

Page 2: Algoritmos II

Declaración de variables

var entera: Numero_empleado real: horas real: impuesto real: salario

var tipo-1 : lista de variables-1 tipo-2 : lista de variables-2 tipo-3 : lista de variables-3

var entera: Numero_empleado real: horas, impuesto, salario

Page 3: Algoritmos II

Declaración de Constantes

const pi = 3,1416 tamaño = 43 horas= 6.50

Page 4: Algoritmos II

Lenguajes Algorítmicos

DIAGRAMAS DE FLUJORepresentación grafica de un algoritmo

TerminalTerminal E/SE/S

ProcesoProceso

DecisiónDecisión

SISI

NONO

ConectoresConectores

Page 5: Algoritmos II
Page 6: Algoritmos II

EJEMPLO DE APLICACIÓN:

Calculo de la suma y producto de dos números:Solución:En PseudocódigoInicio

Var:Enteros: a, b, suma←0, prod←0Leer(a, b)suma←a+bprod←a*bescribir (suma, prod)

Fin

A,b,suma<-0,prod<-0

suma<-a+bprod<-a*b

Inicio

Leer:a,b

Escribir:suma, prod

Fin

Page 7: Algoritmos II

Reglas para el uso de algoritmos y diagramas de flujo

• El Diagrama se dibuja de arriba hacia abajo, las figuras se conectan con flechas, en caso de faltar espacio en el papel, se usan conectores para saber donde continua el diagrama.

• Se debe de declarar las variables que se van a utilizar, algunas variables que se reutilizaran constantemente para almacenar un valor, deben de inicializar en 0.

a, b, suma<-0, prod<-0

Page 8: Algoritmos II

• Las variables deben de ser utilizadas de la mismas manera como fueron declaradas, respetando las mayúsculas y minúsculas.

• En un Símbolo de Entrada/Salida o Leer/Mostrar debe especificarse si se está usando para entrada o salida en el encabezado del símbolo.

• El Símbolo de entrada puede representar la entrada de varias variables a la vez pero deben estar separadas por comas.

Leer:a, b

Reglas para el uso de algoritmos y diagramas de flujo

Page 9: Algoritmos II

• El símbolo de salida puede representar la salida de varias variables a la vez pero deben estar separadas por comas

Escribir:suma, prod

•El símbolo de Proceso puede incluir hasta 3 procesos separados por línea

suma<-a+bprod<- a*b

Reglas para el uso de algoritmos y diagramas de flujo

Page 10: Algoritmos II

• Todo diagrama debe tener un terminal de INICIO y uno de FINAL.

• Los Rombos de Decisión solo pueden tener una flecha de llegada, pero deben tener 2 salidas obligatorias y el participante debe indicar con un SI el flujo en caso el TEST sea verdadero y con un NO el flujo a seguir en caso el TEST sea Falso.

Reglas para el uso de algoritmos y diagramas de flujo

Page 11: Algoritmos II

Estilo de Escritura de Algoritmos / ProgramasEstilo de Escritura de Algoritmos / Programas

inicioinicioAlgoritmoAlgoritmo Identificador Identificador //cabecera//cabeceraVarVar tipo: lista de identificadores de variables tipo: lista de identificadores de variablesConstConst: lista de identificadores de constantes = valor: lista de identificadores de constantes = valor

sentencia S1sentencia S1sentencia S2sentencia S2....sentencia Snsentencia Sn

finfin

Page 12: Algoritmos II

Pseudocódigo

Herramienta de programación en que las instrucciones se escriben en ingles o en castellano.Facilita la escritura y lectura de los programas

Es un lenguaje de especificación (descripción) de algoritmos.

Page 13: Algoritmos II

TIPOS DE INSTRUCCIONESTIPOS DE INSTRUCCIONES

Tipos de Tipos de InstruccionesInstrucciones

Pseudocódigo Pseudocódigo InglesIngles

PseudocódigPseudocódigo Españolo Español

InicioInicio BeginBegin InicioInicioFinFin EndEnd FinFin

Entrada(lectura)Entrada(lectura) ReadRead LeerLeerSalida (Escritura)Salida (Escritura) WriteWrite EscribirEscribir

AsignaciónAsignación A A ←5←5 A A ←5←5

Page 14: Algoritmos II

Instrucciones de AsignaciónInstrucciones de AsignaciónA ←5 la variable A toma el valor de 5A ←5 la variable A toma el valor de 5¿ Cuál será el valor que tomará la variable C tras la ejecución de las ¿ Cuál será el valor que tomará la variable C tras la ejecución de las siguientes instrucciones?siguientes instrucciones?

A A ←80 ←80 B B ←A ←A C C ←B ←B

¿ Cual será el valor que tomará la variable AUX tras la ejecución ¿ Cual será el valor que tomará la variable AUX tras la ejecución de las siguientes instrucciones?de las siguientes instrucciones?

A A ←10←10 B B ←20 ←20 AUX AUX ← A← A A A ←B←B B B ←AUX←AUX

Page 15: Algoritmos II

¿ Que hacer para ver la película de Harry Potter?¿ Que hacer para ver la película de Harry Potter?

INICIOINICIOIr al cineIr al cineComprar una entradaComprar una entradaVer la películaVer la películaRegresar a casaRegresar a casaFINFIN

Page 16: Algoritmos II

starstar// Calculo de impuesto y salarios.read nombre, horas, precio_horasalario_bruto ← horas * precio_horaimpuesto ← 0,19 * salario_brutosalario_neto← salario_bruto – Impuestowrite nombre, salario_neto, salario_bruto, impuesto

end

inicio// Calculo de impuesto y salarios.leer nombre, horas, precio_horasalario_bruto ← horas * precio_horaimpuesto ← 0,19 * salario_brutosalario_neto← salario_bruto – Impuestoescribir nombre, salario_neto, salario_bruto, impuestofin

Page 17: Algoritmos II

Ejemplo: Ejemplo: Un cliente solicita un pedido a una Fabrica. La fabrica examina en su banco de datos la ficha del cliente. Si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechaza el pedido. Redactar el algoritmo correspondiente.

Los pasos del algoritmo son:

1.Inicio2.Leer el pedido3.Examinar la ficha del cliente.4.Si el cliente es solvente, aceptar el pedido; en caso contrario rechazar el pedido.5.fin

Page 18: Algoritmos II

Ejemplo:Calcular el Pago Neto de un trabajador, si se sabe que trabajó 50 horas; el costo por hora es de S/. 30 Nuevos Soles y la tasa de Impuesto(IGV) es de 19.

Calcular el Pago neto de un trabajador, conociendo el numero de horas trabajadas, el costo de hora y la tasa de impuesto.

Page 19: Algoritmos II

FLUJO DE CONTROL IFLUJO DE CONTROL IEstructuras SelectivasEstructuras Selectivas

• El Flujo de Control de un programaEl Flujo de Control de un programa

• Estructuras SecuencialesEstructuras Secuenciales

• Estructuras SelectivasEstructuras Selectivas

• Alternativa SimpleAlternativa Simple

•Alternativa MúltipleAlternativa Múltiple

•Estructura de decisiones AnidadasEstructura de decisiones Anidadas

Page 20: Algoritmos II

FLUJO DE CONTROL DE UN PROGRAMAFLUJO DE CONTROL DE UN PROGRAMA

Se refiere al orden de control en que se ejecuta las sentencias de un programa.

Existen 3 Estructuras de control estandarizadas:

• Secuenciales• Selección: si (if) y según _sea (switch)• Repetitivas o interactivas.- desde (for); mientras (while); hacer-miestras(do-while); repetir-hasta que(repeat –until)• Invocación o salto*: romper(break); continuar (continue)

Page 21: Algoritmos II

ESTRUCTURAS SECUENCIALESESTRUCTURAS SECUENCIALES

Es aquélla en la que una acción (instrucción) sigue a otra en secuencia.

Diagrama de FlujoDiagrama de Flujo

Inicio Inicio <accion 1><accion 1> <accion 2><accion 2> .. .. ..finfinPseudocódigoPseudocódigo

Accion 1

.

.

Accion n

Diagrama N-SDiagrama N-S

Page 22: Algoritmos II

Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (25%).

Solución:En PseudocódigoInicioVar:

Enteros: ht,ph,sb,sn,igv

Leer (ht, ph)sb← ht*phigv←sb*0.25sn←sb-igvescribir (sb,sn,igv)

Fin

ht: Horas Trabajadasph: Pago por hora trabajadasb: Salario brutosn: Salario Netoigv: Impuesto peruano IGV

ht,ph,sb,igv,sn

sb<- ht*phigv<- sb*0.25sn<- sb-igv

Inicio

Leer:ht,ph

Escribir:sb,igv,sn

Fin

Page 23: Algoritmos II

Ejercicios• Hacer un algoritmo que te permita sumar dos números.• Hacer un algoritmo que te permita restar dos números.• Hacer un algoritmo que te permita multiplicar dos números.• Hacer un algoritmo que te permita dividir un número entero por otro.• Escribir un algoritmo que calcule la suma de los 20 primeros números

naturales. • Se desea obtener el salario neto de un trabajador conociendo el numero

de horas trabajadas, el salario hora y la tasa de impuestos que se ha de aplicar como deducciones.

• Escribir un número que calcule y escriba su cuadrado.• Calcular la superficie de un circulo• Calcular el perímetro de un rectángulo dada la base y la altura• Hacer un programa que ingrese 3 notas de un Alumno y calcule el

promedio.

Page 24: Algoritmos II

• Hacer un programa que ingrese 3 notas de un Alumno y calcule el promedio• Hacer un programa que pida 2 Radios R1 y R2, Calcule las respectivas áreas de

los círculos y halle la diferencia de áreas y muestre esta diferencia como respuesta.

• Hacer un programa que pida 2 Radios R1 y R2, Calcule las respectivas áreas de los círculos y halle la diferencia de áreas y muestre ésta diferencia como respuesta pero deberá mostrar el valor absoluto de la diferencia.

• Escribir un algoritmo que calcule la superficie de un triangulo en función de la base y la altura.

• Calcular la suma de los cincuenta primeros números enteros.• Determinar la hipotenusa de un triangulo rectángulo conocidas las longitudes

de sus catetos.• Hacer un algoritmo que te permita convertir una temperatura dada en grados

a Celsius a grados Fahrenheit. (La formula es: F=(9/5)C+32).

Ejercicios

Page 25: Algoritmos II

• En un curso se han establecido tres notas: nota de trabajos T, nota de medio ciclo M y nota de fin de ciclo F, cada una con un peso de 40%, 30% y 30% respectivamente. Calcular el promedio de un alumno.

• Calcular el salario que recibirá un trabajador, si se conoce el número de horas trabajadas y el pago que recibe por hora. Considere además que por concepto de AFP se le descuenta el 7%.

• Calcular el número de días que ha vivido una persona a partir de su edad. Considere cada año como 365 días.

• Ingrese una cantidad expresada en centímetros y conviértala a su equivalente en metros.

• La distancia entre dos puntos (X1, Y1) y (X2, Y2) de un plano se puede obtener sacando la raíz cuadrada de la expresión (X2 – X1)2 + (Y2 – Y1)2. Escribir un programa que dados dos puntos por el usuario, calcule la distancia entre esos dos puntos.

Ejercicios

Page 26: Algoritmos II

Trabajo de Extensión

• Construya 6 programas de su invención usando diagramas de flujo y envíelos al aula virtual.

Page 27: Algoritmos II

ESTRUCTURAS SELECTIVASESTRUCTURAS SELECTIVAS

Se utilizan cuando el algoritmo requiere una descripción mas complicada.Se utilizan para tomar decisiones lógicas, se le suelen denominar estructuras de decisión o alternativasPueden ser:• Simples• Dobles• Múltiples

Page 28: Algoritmos II

ALTERNATIVAS SIMPLES: ALTERNATIVAS SIMPLES: SI SI – – ENTONCESENTONCES ( ( ifif – –thenthen))

si(condicion) entonces <accion S1>fin_si

if(condicion) then <accion S1>end_if

si(condicion) entonces <accion S1> <accion S2> <accion S3> . . . <accion Sn>fin_si

La estructura alternativa simple si-entonces ejecuta una determinada acción cuando se cumple una determinada condición.

Page 29: Algoritmos II

PseudocodigoPseudocodigo

si(condicion) entoncessi(condicion) entonces accionesaccionesfin_sifin_si

C/C++C/C++

if(condicion) if(condicion) {{ sentencias;sentencias;}}

Page 30: Algoritmos II

Ejemplo:

• Diseñar un algoritmo que envié un mensaje “número valido” si un número es mayor o igual a cero de lo contrario no haga nada.

Page 31: Algoritmos II

ALTERNATIVAS DOBLESALTERNATIVAS DOBLES: (: (SISI –– ENTONCESENTONCES- - SINOSINO / / IFIF--THENTHEN -- ELSEELSE Permite elegir entre 2 alternativas posibles, en función del Permite elegir entre 2 alternativas posibles, en función del cumplimiento o no de una alternativa condicióncumplimiento o no de una alternativa condición

Grupo de Grupo de sentencias 1sentencias 1

Grupo de Grupo de sentencias 2sentencias 2

CondiciónCondición

si (condicion) entoncessi (condicion) entonces <accion S1><accion S1>si_nosi_no <accion S2><accion S2>

fin_si fin_si

if (condicion) thenif (condicion) then <accion S1><accion S1>elseelse <accion S2><accion S2>

end_if end_if

Page 32: Algoritmos II

Elaborar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayoría o minoría de edad según sea el caso.

Solución:En PseudocódigoInicio

Var:Entero: edad

escribir(“Ingrese su edad: ”)leer(edad)si (edad>=18) entonces

Escribir(“Ud. es mayor de edad”)si_no

Escribir(“Ud aun no cumple la mayoría de edad”)

fin_siFin

edad

Inicio

Leer:edad

Escribir:UD. es mayor de

edad

Fin

edad >=18Si No

Escribir:Ud. aun no cumple la mayoría de edad

Page 33: Algoritmos II

Si la ecuación es ax+b = 0, a y b son los datos y las posibles soluciones son:

• a<>0 x = - b/a • a=0 y b<>0 entonces “solucion imposible”• a=0 y b=0 entonces “solucion indeterminada”

Ejercicio

Page 34: Algoritmos II

ALTERNATIVAS MULTIPLES (ALTERNATIVAS MULTIPLES (SEGUN_SEASEGUN_SEA; ; CASO DE CASO DE // CASE CASE))Evaluara una expresión que podrá tomar n valores distintos (1,2,3,4,n); según se elija uno de estos valores en la condición, se realizara una de las n acciones

Page 35: Algoritmos II

Sentencia switch (Algoritmo)Sentencia switch (Algoritmo)

segun_seasegun_sea (expresion) (expresion) hacerhacer caso valor1:caso valor1: sentencia 1sentencia 1 sentencia 2sentencia 2 .. .. .. sentencia de ruptura / Ir_asentencia de ruptura / Ir_a caso valor 2:caso valor 2: sentencia1sentencia1 sentencia2sentencia2 .. .. .. sentencia de ruptura / Ir_asentencia de ruptura / Ir_a caso valor ncaso valor n .. .. sentencia de ruptura / Ir_asentencia de ruptura / Ir_afin_segunfin_segun

Sentencia switch (C/C++, java, C#Sentencia switch (C/C++, java, C#

switchswitch (expresion) (expresion) {{ case valor1:case valor1: sentencia 1;sentencia 1; sentencia 2;sentencia 2; .. .. .. break;break; case valor 2:case valor 2: sentencia1;sentencia1; sentencia2;sentencia2; .. .. .. break;break; case valor ncase valor n .. .. break;break;}}

Page 36: Algoritmos II

EjerciciosSe desea diseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por teclado.

Solución:En PseudocódigoAlgoritmo diasSemanaInicioVar:entero: diaescribir(“Ingrese un numero del 1 – 7 para saber q día de la semana es: ”)leer(dia)

Según_sea (dia) hacerCaso 1:escribir(“Domingo”)ruptura,Caso 2:escribir(“Lunes”)ruptura,Caso 3:escribir(“Martes”)ruptura,Caso 4:escribir(“Miércoles”)ruptura,Caso 5:escribir(“Jueves”)ruptura,Caso 6:escribir(“Viernes”)ruptura,Caso 7:escribir(“Sábado”)ruptura,Por_defectoescribir(“Valor no permitido”)ruptura,fin_según

Fin

Page 37: Algoritmos II

ESTRUCTURAS DE DECISIONES ANIDADASESTRUCTURAS DE DECISIONES ANIDADASsi si (condicion) entonces(condicion) entonces sentencia1sentencia1si_nosi_no si (condicion) entoncessi (condicion) entonces sentenciasentencia si_nosi_no sisi(condicion) entonces(condicion) entonces sentenciasentencia si_nosi_no sisi(condicion) entonces(condicion) entonces sentenciasentencia si_nosi_no .. .. .. fin_sifin_si fin_sifin_si fin_sifin_sifin_si fin_si

Page 38: Algoritmos II

Diseñar un algoritmo que lea tres números A, B, C y visualice por pantalla el valor del más grande. Se supone que los tres valores son diferentes.

En PseudocódigoInicio

Var:entero: a,b,cleer(a,b,c)si (a<b) entoncessi (a<c)entoncesescribir(“a es mayor”)si_noescribir(“c es mayor”)fin_sisi_nosi (b>c)entoncesescribir(“b es mayor”)si_noescribir(“c es mayor”)fin_sifin_si

Fin

Inicio

a,b,c

Leera,b,c

a<b

a<c

Escribira es

mayor

Escribirc es

mayor

b<c

Escribirb es

mayor

Escribirc es

mayor

Inicio

Page 39: Algoritmos II

Ejercicios• Construya un programa que pida un número A y muestre si el número

ingresado es PAR o IMPAR• Hacer un algoritmo que determine qué número es el mayor de 2 números

ingresados• Hacer un algoritmo que permita ingresar un día de la semana y según el

día permita ingresar al Restaurant “Gourmet” el plato del día. Teniendo en cuenta que el día 1 es lunes y el menú es espesado, martes el menú es arroz con pato, el miércoles el menú es arroz con pollo, el jueves el menú es lomito saltado, el viernes el menú es tallarines con salsa roja, el sábado el menú es ceviche y cabrito, el día domingo buffet dominical