Sie sind auf Seite 1von 56

Pseudocdigo y

Diagramas de
Flujos
Humberto Urrutia Lpez
hurrutia@uta.cl

Ing. Sonia Alexandra Pinzn


Nuez - Ing. Roco Rodrguez

Ventajas de utilizar un
Pseudocdigo a un Diagrama
de Flujo
Ocupa menos espacio en una hoja
de papel
Permite representar en forma fcil
operaciones repetitivas complejas
Es muy fcil pasar de
Pseudocdigo a un programa en
algn lenguaje de programacin.
Si se siguen las reglas se puede
observar claramente los niveles
que tiene cada operacin.

Diagrama de Flujo
Un diagrama de flujo es una forma
de representar grficamente los
pasos para resolver un problema en
especfico. Estos diagramas utilizan
una
serie
de
smbolos
con
significados especiales y son la
representacin grfica de los pasos
de un proceso. En computacin es
un primer enfoque con lo que sera
la programacin formal.

Simbologa

Estructuras de
Programacin
Se identifican un conjunto mnimo de
estructuras bsicas de programacin:

Secuencia
Seleccin
Iteracin
Funcin o Procedimiento

Los programas sern:


Ms fiables
Ms eficientes
Adaptables

Secuencia
Un nico hilo de ejecucin
Sucesivos pasos o acciones
que se ejecutan en estricto
orden

Secuencia (ordinograma)

Hola Mundo

Escribir Hola Mundo

Sumar 2 nmeros
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 seudocdigo que


intercambie los valores de sus variables.

Variables enteras cuyos valores sern


intercambiados
var1 = 10, var2 = 30;

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

Construya un programa en pseudocdigo que


reciba como entrada el radio de una
circunferencia y retorne su permetro y su rea.

Recuerde que:
permetro = 2 * PI * radio;
rea = PI * radio * radio
rea = PI * radio ^2
Radio

CIRCULO

Permetro
rea

Seleccin
Dirigir el flujo de ejecucin a una
de entre varias alternativas
Escoge en funcin de condiciones
establecidas sobre los datos
Expresiones booleanas, valores
lgicos
CIERTO
FALSO

Seleccin

IF-THEN

Seleccin IF-THEN-ELSE

Mayor de tres nmeros


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


Pitgoras) a un rectngulo 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
Pitgoras
area<-(cat1*cat2)/2
// calcular rea
Escribir "El rea es: ",area
Sino
Escribir "No es un triangulo rectngulo."
FinSi
FinProceso

Seleccin SWITCH

1
2
3
4
5
6
7
8

IV

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


nmero natural y escriba su tabla de
multiplicar

Proceso tabla_mult

Escribir "Ingrese Nmero 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 nmero 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

Iteracin

Estructuras llamadas bucles


Ejecutar ninguna, una o varias veces
cuerpo del bucle
La iteracin est controlada por una
condicin
La condicin ha de cambiar de estado en
el cuerpo del bucle para que pueda
terminar
De otro modo, bucle infinito

Iteracin WHILE (Mientras)

Mientras la condicin se evale


a CIERTO
Puede no ser ejecutado ni una
sola vez

Desarrolle un algoritmo que realice la sumatoria de los nmeros


enteros comprendidos entre el 1 y el 10, es decir, 1 + 2 + 3 + . + 10

Construya un programa que lea un


nmero natural y escriba su tabla de
multiplicar

Adivine un nmero 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

Iteracin

FOR

IV

Construya un programa que lea un


nmero 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 nmeros enteros, obtener el producto


de estos nmeros y la suma de los nmeros 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 nmero 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:

FUNCIN
O
PROCEDIMIENTO

Profesor: Humberto Urrutia Lpez

34

Funciones
Cundo se Utilizan?
La idea es Dividir y Conquistar, es decir,
particionar el problema en pequeas
subtareas las cuales son ms fciles de
abordar.
Todo problema se puede resolver con
funciones o sin ellas, pero la aplicacin
de stas hace el programa ms eficiente,
fcil de analizar y testear.
Profesor: Humberto Urrutia Lpez

35

Funciones
Ventajas:
1.- Facilita el diseo descendente.
2.- Los procedimientos se ejecutan
ms de una vez.
3.- Facilita la divisin de tareas.
4.- Se pueden comprobar(testear)
individualmente

Profesor: Humberto Urrutia Lpez

36

Funcin Procedimiento

Semejante a funcin matemtica


Invocacin, argumentos, valor
devuelto
Un nico punto de entrada
Un nico punto de salida

Procedimiento
Si no devuelve ningn valor
Profesor: Humberto Urrutia Lpez

37

Funcionalidades
Crear una funcin para cada
funcionalidad o mtodo de
cada mdulo del programa
Aunque slo se use una
vez!
Programa = conjunto de
funciones
Profesor: Humberto Urrutia Lpez

38

Funcin principal
Es el punto de entrada al
programa
Mnimo programa C correcto

Profesor: Humberto Urrutia Lpez

39

Funciones (subprocesos) en PSeInt


PSeInt permite la posibilidad de definir
funciones al que el creador del mismo
bautiz como subprocesos,
Para empezar una funcin no es ms
que un bloque de cdigo con un
determinado fin o propsito, podemos
definir ms de una y nos permiten
ahorrar lneas cdigo si nuestros
programas son muy extensos o hay
codificacin redundante.
Profesor: Humberto Urrutia Lpez

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 sera lo mismo.
Siempre se declaran afuera del proceso
principal para ser llamados o invocados en ste.
Tambin opcionalmente pueden retornar un
valor o recibir cierta cantidad de argumentos.

Profesor: Humberto Urrutia Lpez

41

Funcin sin parmetros y sin retorno

Profesor: Humberto Urrutia Lpez

42

Funcin con 1 parmetro y sin retorno

Profesor: Humberto Urrutia Lpez

43

Funcin sin parmetros y con retorno.

Profesor: Humberto Urrutia Lpez

44

Funcin con parmetros y con retorno

Profesor: Humberto Urrutia Lpez

45

Profesor: Humberto Urrutia Lpez

46

Funcin suma dos nmeros

Profesor: Humberto Urrutia Lpez

47

Funcin suma dos nmeros

Profesor: Humberto Urrutia Lpez

48

Profesor: Humberto Urrutia Lpez

49

Cadenas en PSeInt
PSeInt incluye algunas funciones predefinidas para
operar con cadenas de caracteres. Veamos cuales
son y que propsito tienen:
Longitud(x): Retorna la cantidad de caracteres
de una cadena x.
Mayusculas(x): Convierte a maysculas la
cadena x.
Minusculas(x): Convierte a minsculas la
cadena x.
Subcadena(x,inicio,fin): Extrae una parte de la
cadena x indicando desde cal hasta que letra.
Concatenar(x,y): Une las cadenas x y y.
Profesor: Humberto Urrutia Lpez

50

Profesor: Humberto Urrutia Lpez

51

Calcular potencia de un nmero


Algoritmo que calcula la potencia de un
nmero 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 Lpez

52

Factorial de un nmero
El siguiente pseudocodigo calcula el
factorial de un nmero 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 Lpez

53

Ejercicios
a.Desarrolle un algoritmo que realice la sumatoria de
los nmeros enteros mltiplos de 5, comprendidos entre
el 1 y el 100, es decir, 5 + 10 + 15 +. + 100. El
programa deber imprimir los nmeros en cuestin y
finalmente su sumatoria
a.Desarrolle un algoritmo que realice la sumatoria de
los nmeros enteros pares comprendidos entre el 1 y
el 100, es decir, 2 + 4 + 6 +. + 100. El programa
deber imprimir los nmeros en cuestin y finalmente
su sumatoria
a.Desarrolle un algoritmo que lea los primeros 300
nmeros enteros y determine cuntos de ellos son
impares; al final deber indicar su sumatoria.
Profesor: Humberto Urrutia Lpez

54

Adivine un nmero 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 Lpez

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

Das könnte Ihnen auch gefallen