Clase IV Ejerciciopseudocodigoss Pseudocodigo Diag.flujo Python

Post on 15-Jan-2016

232 views 0 download

description

pseudocodigos

Transcript of 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

hurrutia@uta.cl

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.

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.

Simbología

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

Secuencia

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

que se ejecutan en estricto orden

Secuencia (ordinograma)

Hola Mundo

Escribir Hola Mundo

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

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

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

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

Selección IF-THEN

Selección IF-THEN-ELSE

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

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

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"

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

• 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

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

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

Iteración WHILE (Mientras)

Mientras la condición se evalúe a CIERTO

Puede no ser ejecutado ni una sola vez

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

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

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

Iteración FOR IV

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

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

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

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

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

FUNCIÓN O

PROCEDIMIENTO

Profesor: Humberto Urrutia López 34

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

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

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

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

Función principal

• Es el punto de entrada al programa

• Mínimo programa C correcto

Profesor: Humberto Urrutia López 39

• 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

• 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

Función sin parámetros y sin retorno

Profesor: Humberto Urrutia López 42

Función con 1 parámetro y sin retorno

Profesor: Humberto Urrutia López 43

Función sin parámetros y con retorno.

Profesor: Humberto Urrutia López 44

Función con parámetros y con retorno

Profesor: Humberto Urrutia López 45

Profesor: Humberto Urrutia López 46

Función suma dos números

Profesor: Humberto Urrutia López 47

Función suma dos números

Profesor: Humberto Urrutia López 48

Profesor: Humberto Urrutia López 49

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

Profesor: Humberto Urrutia López 51

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

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

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

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

• // 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