clase iv ejerciciopseudocodigoss pseudocodigo diag.flujo python

56
Pseudocódigo y Diagramas de Flujos Ing. Sonia Alexandra Pinzón Nuñez - Ing. Rocío Rodríguez Guerrero Humberto Urrutia López [email protected]

Upload: fox-lylat-mccloud

Post on 15-Jan-2016

229 views

Category:

Documents


0 download

DESCRIPTION

pseudocodigos

TRANSCRIPT

Page 1: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Pseudocódigo y Diagramas de

Flujos

Ing. Sonia Alexandra Pinzón Nuñez - Ing. Rocío Rodríguez

Guerrero

Humberto Urrutia López

[email protected]

Page 2: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Ventajas de utilizar un Pseudocódigo a un Diagrama

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

Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.

Page 3: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Diagrama de FlujoUn diagrama de flujo es una forma

de representar gráficamente los pasos para resolver un problema en específico. Estos diagramas utilizan una serie de símbolos con significados especiales y son la representación gráfica de los pasos de un proceso. En computación es un primer enfoque con lo que sería la programación formal.

Page 4: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Simbología

Page 5: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Estructuras de Programación

• Se identifican un conjunto mínimo de estructuras básicas de programación:– Secuencia– Selección– Iteración– Función o Procedimiento

• Los programas serán:– Más fiables– Más eficientes– Adaptables

Page 6: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Secuencia

• Un único hilo de ejecución• Sucesivos pasos o acciones

que se ejecutan en estricto orden

Page 7: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Secuencia (ordinograma)

Page 8: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Hola Mundo

Page 9: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python
Page 10: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Escribir Hola Mundo

Page 11: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Sumar 2 números

Proceso sumar_2_numeros

Escribir "ingresa a"

Leer a

Escribir "Ingresa b"

Leer b

suma<- a+b

Escribir "El resultado de la suma es: ",suma

FinProceso

Page 12: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Construya un programa en seudocódigo que intercambie los valores de sus variables.

Variables enteras cuyos valores serán intercambiados

var1 = 10, var2 = 30;

Imprime el valor luego del intercambiovar1 = 30, var2 = 10;

IntercambioIntercambio

Page 13: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Construya un programa en pseudocódigo que reciba como entrada el radio de una circunferencia y retorne su perímetro y su área.

• Recuerde que:perímetro = 2 * PI * radio; área = PI * radio * radio

área = PI * radio ^2

CIRCULOCIRCULORadio

Perímetro

Área

Page 14: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Selección • Dirigir el flujo de ejecución a una

de entre varias alternativas• Escoge en función de condiciones

establecidas sobre los datos• Expresiones booleanas, valores

lógicos– CIERTO– FALSO

Page 15: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Selección IF-THEN

Page 16: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Selección IF-THEN-ELSE

Page 17: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Mayor de tres númerosProceso mayor_tres_numero

Escribir 'Leer a'

Leer a

Escribir 'Leer b'

Leer b

Escribir 'Leer c'

Leer c

Si a>b Entonces

Si a>c Entonces

Escribir 'El mayor es a: ',a

Sino

Escribir 'El mayor es c: ',c

FinSi

Sino

Si b>c Entonces

Escribir 'El mayor es b: ',b

Sino

Escribir 'El mayor es c: ',c

FinSi

FinSi

FinProceso

Page 18: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Lea tres lados de un triangulo, determina si corresponden (por Pitágoras) a un rectángulo y en caso afirmativo calcula el área

Proceso TrianguloRectangulo Leer l1 Escribir "Ingrese el lado 2:" Leer l2 Escribir "Ingrese el lado 3:" Leer l3 Si l1>l2 Entonces // encontrar la hipotenusa (mayor lado) cat1<-l2 Si l1>l3 Entonces hip<-l1 cat2<-l3 Sino hip<-l3 cat2<-l1 FinSi Sino cat1<-l1 Si l2>l3 Entonces hip<-l2 cat2<-l3 Sino hip<-l3 cat2<-l2 FinSi FinSi Si hip^2 = cat1^2 + cat2^2 Entonces // ver si cumple con Pitágoras area<-(cat1*cat2)/2 // calcular área Escribir "El área es: ",area Sino Escribir "No es un triangulo rectángulo." FinSiFinProceso

Page 19: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Selección SWITCH IV

12345678

if n == 0: print "You typed zero.\n"elif n== 1 or n == 9 or n == 4: print "n is a perfect square\n"elif n == 2: print "n is an even number\n"elif n== 3 or n == 5 or n == 7: print "n is a prime number\n"

Page 20: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Construya un programa que lea un número natural y escriba su tabla de multiplicar

Page 21: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

• Proceso tabla_mult

• Escribir "Ingrese Número a multiplicar"

• Leer n

• Escribir "1 X ",n," = ", n

• Escribir "2 X ",n," = ", n*2

• Escribir "3 X ",n," = ", n*3

• Escribir "4 X ",n," = ", n*4

• Escribir "5 X ",n," = ", n*5

• Escribir "6 X ",n," = ", n*6

• Escribir "7 X ",n," = ", n*7

• Escribir "8 X ",n," = ", n*8

• Escribir "9 X ",n," = ", n*9

• FinProceso

Page 22: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Desarrolle un algoritmo que permita leer un valor cualquiera N y escriba si dicho número es par o impar..

Proceso par_imparEscribir "Ingresar el numero"Leer nSi (nMOD2=0) Entonces

Escribir a,"Es Par"Sino

Escribir a, "Es Impar"Fin Si

FinProceso

Page 23: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Iteración I

• Estructuras llamadas bucles• Ejecutar ninguna, una o varias veces

cuerpo del bucle

• La iteración está controlada por una condición

• La condición ha de cambiar de estado en el cuerpo del bucle para que pueda terminar

• De otro modo, bucle infinito

Page 24: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Iteración WHILE (Mientras)

Mientras la condición se evalúe a CIERTO

Puede no ser ejecutado ni una sola vez

Page 25: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Desarrolle un algoritmo que realice la sumatoria de los números enteros comprendidos entre el 1 y el 10, es decir, 1 + 2 + 3 + …. + 10

Page 26: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Construya un programa que lea un número natural y escriba su tabla de multiplicar

Page 27: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Adivine un número en 10 intentos del 1 al 100Proceso Adivina_Numero

intentos<-10

num_secreto <- azar(100)+1

Escribir "Adivine el numero (de 1 a 100):"

Leer num_ingresado

Mientras num_secreto<>num_ingresado Y intentos>1 Hacer

Si num_secreto>num_ingresado Entonces

Escribir "Muy bajo"

Sino

Escribir "Muy alto"

FinSi

intentos <- intentos-1

Escribir "Le quedan ",intentos," intentos:"

Leer num_ingresado

FinMientras

Si num_secreto=num_ingresado Entonces

Escribir "Exacto! Usted adivino en ",11-intentos," intentos."

Sino

Escribir "El numero era: ",num_secreto

FinSi

FinProceso

Page 28: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Iteración FOR IV

Page 29: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Construya un programa que lea un número natural y escriba su tabla de multiplicar

Page 30: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Calcula el promedio de una lista de N datos

Proceso Promedio

Escribir "Ingrese la cantidad de datos:"

Leer n

acum<-0

Para i<-1 Hasta n Hacer

Escribir "Ingrese el dato ",i,":"

Leer dato

acum<-acum+dato

FinPara

prom<-acum/n

Escribir "El promedio es: ",prom

FinProceso

Page 31: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Dado un conjunto de números enteros, obtener el producto de estos números y la suma de los números pares

Proceso producto_suma

Escribir "Ingrese numero de notas"

Leer n

suma<-0

producto<-1

Para i<-1 Hasta n Hacer

Escribir "Ingrese Nota"

Leer nota

producto<-nota*producto

Si (nota MOD 2)=0 Entonces

suma<- suma + nota

Fin Si

Fin Para

Escribir"El producto es: ", producto," la suma de pares es:",suma

FinProceso

Page 32: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Adivine un número secreto en 10 intentosProceso Adivina_Numero

intentos<-10

num_secreto <- azar(100)+1

Escribir "Adivine el numero (de 1 a 100):"

Leer num_ingresado

Mientras num_secreto<>num_ingresado Y intentos>1 Hacer

Si num_secreto>num_ingresado Entonces

Escribir "Muy bajo"

Sino

Escribir "Muy alto"

FinSi

intentos <- intentos-1

Escribir "Le quedan ",intentos," intentos:"

Leer num_ingresado

FinMientras

Si num_secreto=num_ingresado Entonces

Escribir "Exacto! Usted adivino en ",11-intentos," intentos."

Sino

Escribir "El numero era: ",num_secreto

FinSi

FinProceso

Page 33: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Operadores y FuncionesLas siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:

Page 34: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

FUNCIÓN O

PROCEDIMIENTO

Profesor: Humberto Urrutia López 34

Page 35: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Funciones

• ¿Cuándo se Utilizan?

– La idea es “Dividir y Conquistar”, es decir, particionar el problema en pequeñas subtareas las cuales son más fáciles de abordar.

– Todo problema se puede resolver con funciones o sin ellas, pero la aplicación de éstas hace el programa más eficiente, fácil de analizar y testear.

Profesor: Humberto Urrutia López 35

Page 36: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Funciones

• Ventajas:1.-Facilita el diseño descendente.

2.- Los procedimientos se ejecutan más de una vez.

3.- Facilita la división de tareas.

4.- Se pueden comprobar(testear) individualmente

Profesor: Humberto Urrutia López 36

Page 37: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función – Procedimiento

• Semejante a función matemática• Invocación, argumentos, valor

devuelto– Un único punto de entrada– Un único punto de salida

• Procedimiento– Si no devuelve ningún valor

Profesor: Humberto Urrutia López 37

Page 38: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Funcionalidades

Crear una función para cada funcionalidad o método de cada módulo del programa

¡Aunque sólo se use una vez!

Programa = conjunto de funciones

Profesor: Humberto Urrutia López 38

Page 39: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función principal

• Es el punto de entrada al programa

• Mínimo programa C correcto

Profesor: Humberto Urrutia López 39

Page 40: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

• PSeInt permite la posibilidad de definir funciones al que el creador del mismo bautizó como subprocesos,

• Para empezar una función no es más que un bloque de código con un determinado fin o propósito, podemos definir más de una y nos permiten ahorrar líneas código si nuestros programas son muy extensos o hay codificación redundante.

Funciones (subprocesos) en PSeInt

Profesor: Humberto Urrutia López 40

Page 41: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

• Las funciones en PSeInt se identifican por un nombre, comienzan con la palabra reservada

Funcion y terminan con

FinFuncion.

• Tambien podemos utilizar

SubProceso

FinSubProceso que sería lo mismo.

• Siempre se declaran afuera del proceso principal para ser llamados o invocados en éste.

• También opcionalmente pueden retornar un valor o recibir cierta cantidad de argumentos.

Profesor: Humberto Urrutia López 41

Page 42: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función sin parámetros y sin retorno

Profesor: Humberto Urrutia López 42

Page 43: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función con 1 parámetro y sin retorno

Profesor: Humberto Urrutia López 43

Page 44: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función sin parámetros y con retorno.

Profesor: Humberto Urrutia López 44

Page 45: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función con parámetros y con retorno

Profesor: Humberto Urrutia López 45

Page 46: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Profesor: Humberto Urrutia López 46

Page 47: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función suma dos números

Profesor: Humberto Urrutia López 47

Page 48: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Función suma dos números

Profesor: Humberto Urrutia López 48

Page 49: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Profesor: Humberto Urrutia López 49

Page 50: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Cadenas en PSeInt • PSeInt incluye algunas funciones predefinidas para

operar con cadenas de caracteres. Veamos cuales son y que propósito tienen:

• Longitud(x): Retorna la cantidad de caracteres de una cadena x.

• Mayusculas(x): Convierte a mayúsculas la cadena x.

• Minusculas(x): Convierte a minúsculas la cadena x.

• Subcadena(x,inicio,fin): Extrae una parte de la cadena x indicando desde cúal hasta que letra.

• Concatenar(x,y): Une las cadenas x y y.

Profesor: Humberto Urrutia López 50

Page 51: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Profesor: Humberto Urrutia López 51

Page 52: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Calcular potencia de un número

• Algoritmo que calcula la potencia de un número ingresado por el usuario:

Proceso potencia acum<-1

Escribir "Digite base"Leer base

Escribir "Digite exponente"

Leer exponente

Para i<-1 Hasta exponente Con Paso 1 Hacer

acum<-acum*base

FinPara

Escribir base," elevado a la ",exponente," es: ",acum

FinProceso Profesor: Humberto Urrutia López 52

Page 53: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Factorial de un número

• El siguiente pseudocodigo calcula el factorial de un número ingresado por el usuario:

Proceso factorial acum<-1; Escribir "Digite un numero para calcular su factorial";

Leer num;

Para i<-1 Hasta num Con Paso 1 Hacer

acum<-acum*i;

FinPara

Escribir "El factorial de ",num," es ",acum;

FinProceso Profesor: Humberto Urrutia López 53

Page 54: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

EjerciciosEjercicios

a.a.Desarrolle un algoritmo que realice la sumatoria de Desarrolle un algoritmo que realice la sumatoria de los números enteros múltiplos de 5, comprendidos entre los números enteros múltiplos de 5, comprendidos entre el 1 y el 100, es decir, 5 + 10 + 15 +…. + 100. El el 1 y el 100, es decir, 5 + 10 + 15 +…. + 100. El programa deberá imprimir los números en cuestión y programa deberá imprimir los números en cuestión y finalmente su sumatoriafinalmente su sumatoria

a.a.Desarrolle un algoritmo que realice la sumatoria de Desarrolle un algoritmo que realice la sumatoria de los números enteros pares comprendidos entre el 1 y los números enteros pares comprendidos entre el 1 y el 100, es decir, 2 + 4 + 6 +…. + 100. El programa el 100, es decir, 2 + 4 + 6 +…. + 100. El programa deberá imprimir los números en cuestión y finalmente deberá imprimir los números en cuestión y finalmente su sumatoriasu sumatoria

a.a.Desarrolle un algoritmo que lea los primeros 300 Desarrolle un algoritmo que lea los primeros 300 números enteros y determine cuántos de ellos son números enteros y determine cuántos de ellos son impares; al final deberá indicar su sumatoria. impares; al final deberá indicar su sumatoria.

Profesor: Humberto Urrutia López 54

Page 55: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Adivine un número secreto en 10 intentosProceso Adivina_Numero

intentos<-10

num_secreto <- azar(100)+1

Escribir "Adivine el numero (de 1 a 100):"

Leer num_ingresado

Mientras num_secreto<>num_ingresado Y intentos>1 Hacer

Si num_secreto>num_ingresado Entonces

Escribir "Muy bajo"

Sino

Escribir "Muy alto"

FinSi

intentos <- intentos-1

Escribir "Le quedan ",intentos," intentos:"

Leer num_ingresado

FinMientras

Si num_secreto=num_ingresado Entonces

Escribir "Exacto! Usted adivino en ",11-intentos," intentos."

Sino

Escribir "El numero era: ",num_secreto

FinSi

FinProcesoProfesor: Humberto Urrutia López 55

Page 56: Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

• // Separa un numero entero en sus digitos

• Proceso Digitos• • Escribir "Ingrese un numero entero postivo:"• Leer n• • // primero, contar cuantos digitos• cont <- 0 • aux <- n• Mientras aux>0 hacer // mientras no sea cero• cont <- cont + 1 // contar cuantos digitos• aux <- trunc(aux/10) // dividir por 10 y despreciar los de• FinMientras• Escribir "El numero tiene ",cont," digitos"• • // luego, mostrarlos uno por uno • aux<-n• Para i<-1 hasta cont Hacer• pot <- 10^(cont-i) // por cuanto hay que dividir para obtener el

primer digito• digito <- trunc (aux / pot) // obtener el digito• aux <- aux - digito*pot // quitar ese digito al numero• Escribir "El digito ",i," es ",digito• FinPara• • FinProceso