Sie sind auf Seite 1von 56

Pseudocódigo y Diagramas de Flujos

Humberto Urrutia López hurrutia@uta.cl

Ing. Sonia Alexandra Pinzón

Nuñez

-

Ing. Rocío Rodríguez Guerrero

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.

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

Diagrama de Flujo

 Un diagrama de flujo es una forma de representar gráficamente los pasos para resolver
 Un 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

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)

Secuencia (ordinograma)

Hola Mundo

Hola Mundo
Hola Mundo

Escribir Hola Mundo

Escribir Hola Mundo
Escribir Hola Mundo

Sumar 2 números

Sumar 2 números Proceso sumar_2_numeros Escribir "ingresa a" Leer a Escribir "Ingresa b" Leer b

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;

IntercambioIntercambio

Imprime el valor luego del intercambio var1 = 30, var2 = 10;

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

Radio

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

CIRCULOCIRCULO

Perímetro

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

Á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

Selección IF-THEN

IF-THEN

Selección IF-THEN

Selección IF-THEN-ELSE

Selección IF-THEN-ELSE
Selección IF-THEN-ELSE

Mayor de tres números

Proceso 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 Pitágoras

area<-(cat1*cat2)/2

// ver si cumple con

// calcular área

Escribir "El área es: ",area Sino Escribir "No es un triangulo rectángulo." FinSi FinProceso

Selección SWITCH

IV

Selección SWITCH IV 1 if n == 0: 2 print "You typed zero.\n" 3 elif n==

1 if n == 0:

2 print "You typed zero.\n"

3 elif n== 1 or n == 9 or n == 4:

4 print "n is a perfect square\n" 5 elif n == 2:

6 print "n is an even number\n"

7 elif

8 print "n is a prime number\n"

n== 3 or n == 5 or n == 7:

Construya un programa que

número natural y escriba su tabla de multiplicar

un

lea

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

• 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_impar Escribir "Ingresar el numero" Leer n Si (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)

Iteración WHILE (Mientras)  Mientras la condición se evalúe a CIERTO  Puede no ser ejecutado
Iteración WHILE (Mientras)  Mientras la condición se evalúe a CIERTO  Puede no ser ejecutado

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

que realice la sumatoria de los números enteros comprendidos entre el 1 y el 10, es

el

10, es decir,

1 + 2 + 3 + …. + 10

que realice la sumatoria de los números enteros comprendidos entre el 1 y el 10, es

Construya un programa que

número natural y escriba su tabla de multiplicar

un

lea

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

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

Proceso 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

Iteración FOR IV

FOR

IV

Iteración FOR IV

Construya un programa que

número natural y escriba su tabla de multiplicar

un

lea

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

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 intentos

Proceso 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 Funciones

Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:

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

FUNCIÓN

O

PROCEDIMIENTO

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.

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

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

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

Función principal

• Es el punto de entrada al programa

• Mínimo programa C correcto

principal • Es el punto de entrada al programa • Mínimo programa C correcto Profesor: Humberto

Funciones (subprocesos) en PSeInt

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.

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

Función sin parámetros y sin retorno

Función sin parámetros y sin retorno Profesor: Humberto Urrutia López 42

Función con 1 parámetro y sin retorno

Función con 1 parámetro y sin retorno Profesor: Humberto Urrutia López 43

Función sin parámetros y con retorno.

Función sin parámetros y con retorno . Profesor: Humberto Urrutia López 44

Función con parámetros y con retorno

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
Profesor: Humberto Urrutia López
47

Función suma dos números

Función suma dos números 48 Profesor: Humberto Urrutia López
48
48

Profesor: Humberto Urrutia López

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 51

• 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

• 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

EjerciciosEjercicios

a.a.DesarrolleDesarrolle unun algoritmoalgoritmo queque realicerealice lala sumatoriasumatoria dede

loslos númerosnúmeros enterosenteros múltiplosmúltiplos dede 5,5, comprendidoscomprendidos entreentre

elel

11

yy

elel

100,100, eses

decir,decir, 55

++

1010

++

1515

+….+…. ++

100.100. ElEl

programaprograma deberádeberá imprimirimprimir loslos númerosnúmeros enen cuestióncuestión yy finalmentefinalmente susu sumatoriasumatoria

a.a.DesarrolleDesarrolle unun algoritmoalgoritmo queque realicerealice lala sumatoriasumatoria dede

loslos

númerosnúmeros enterosenteros parespares comprendidoscomprendidos entreentre elel 11 yy

elel 100,100,

eses

decir,decir, 22

++

44

++

66

+….+…. ++

100.100. ElEl programaprograma

deberádeberá

imprimirimprimir loslos

númerosnúmeros

enen

cuestióncuestión

yy finalmentefinalmente

susu sumatoriasumatoria

a.a.DesarrolleDesarrolle unun algoritmoalgoritmo queque lealea loslos primerosprimeros 300300 númerosnúmeros enterosenteros yy determinedetermine cuántoscuántos dede ellosellos sonson impares;impares; alal finalfinal deberádeberá indicarindicar susu sumatoria.sumatoria.

Adivine un número secreto en 10 intentos

Proceso 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 Profesor: 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