Professional Documents
Culture Documents
CNM-130
Departamento de Matemáticas
Facultad de Ciencias Exactas y Naturales
Universidad de Antioquia
Contenido
1 Introducción
2 Diagramas de flujo
4 Pseudocódigo
5 GNU Octave
6 Ejemplos
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Algoritmos
Ejemplo
Algoritmo para preparar “frı́joles con chicharrón” para 8 raciones. Los
datos de entrada (ingredientes) son:
2 libras de frı́joles. 2 zanahorias peladas.
Algoritmo
Otros ejemplos
Ir a un restaurante a comer
Diseño de algoritmos
Diagramas de flujo
Diagramas de flujo
Diagramas de flujo
Las lineas utilizadas para indicar la dirección del flujo del diagrama
deben ser rectas verticales y horizontales y no se deben cruzar.
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 3.1
Solución
Escriba (en papel) un diagrama de flujo que tenga como entradas los datos
enteros A y B y escriba el resultado de la siguiente expresión:
(A + B)2
3
Implemente el diagrama también en DFD.
Solución
Consideraciones:
Datos: A y B (variables de tipo entero).
# A B RES
1 5 6 40, 33
2 7 10 96,33
3 0 3 3,00
4 12 2 65,33
5 14 -5 27,00
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 3.3
Solución
Consideraciones:
Datos:
CAL1, CAL2, CAL3, CAL4, CAL5
variables de tipo real que representan las 5 calificaciones del alumno.
Ejemplo 3.4
Solución
Escriba (en papel) un diagrama de flujo tal que dado como datos la base y la
altura de un rectángulo, calcule su perı́metro y área. Realice el diagrama
también en DFD.
Solución
Consideraciones:
Datos: BASE, ALTURA
Donde:
BASE: variable de tipo real que representa la base del rectángulo.
ALTURA: variable de tipo real que representa la altura del rectángulo.
Recuerde que:
El área de un rectángulo está dada por
área = base × altura
El perı́metro de un rectángulo está dada por
perı́metro = 2 × (base + altura)
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Terminologı́a básica
Programa: conjunto de instrucciones que ejecuta un computador para
alcanzar un resultado especı́fico (Von Neumann, 1946).
Instrucciones en pseudocódigo
Lectura de datos:
Leer A, VEL, C
Proceso:
Escritura:
Escribir A, VEL
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplos
Programa en pseudocódigo para el diagrama de flujo del ejemplo (3.1)
INVERTIR DATOS
{ Dado un conjunto de datos de entrada el
programa invierte el orden de los mismos y
los imprime }
{ A, B, C y D son variables de tipo entero }
1 Leer A, B, C, D
2 Escribir D, C, B, A
Observaciones
Todo programa tiene un nombre que lo define y que se elige teniendo en
cuenta las reglas para la construcción de identificadores.
Entre llaves {· · · } van comentarios que indican la función del programa.
Escribir un programa es sencillo cuando se conoce las instrucciones del
pseudocódigo. La “tarea intelectual” consiste en la construcción del
diagrama de flujo.
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplos
CALCULA
{ Dado dos enteros A y B, el programa
calcula el resultado de una expresión }
{ A y B son variables de tipo entero, RES es
una variable de tipo real }
1 Leer A, B
2 Hacer RES ← (A + B) ∧ 2/3
3 Escribir RES
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplos
PROMEDIO CALIFICACION
{ Dadas las calificaciones de un estudiante,
calcula su promedio }
{ CAL1, CAL2, CAL3, CAL4, CAL5 y PRO
son variables de tipo real}
1 Leer CAL1, CAL2, CAL3, CAL4, CAL5
2 Hacer PRO ← (CAL1 + CAL2 + CAL3
+ CAL4 + CAL5)/5
3 Escribir PRO
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplos
CUADRADO CUBO
{ Dado un entero positivo, el programa
calcula el cuadrado y el cubo de dicho
número. }
{ NUM es una variable de tipo entero, CUA y
CUB son variables de tipo real }
1 Leer NUM
2 Hacer CUA ← NUM*NUM
3 Hacer CUB ← NUM∧3
4 Escribir CUA y CUB
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplos
CUADRADO CUBO
{ Dados la base y la altura de un rectángulo,
calcula su perı́metro y su área. }
{ BASE, ALTURA, AREA Y PERIMETRO
son variables de tipo real }
1 Leer BASE, ALTURA
2 Hacer AREA ← BASE*ALTURA
3 Hacer PERIMETRO ←
2*(BASE+ALTURA)
4 Escribir AREA y PERIMETRO
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Aspectos básicos
Aspectos básicos
Ventajas
Sencillo de utilizar
A diferencia de MATLAB. . .
~$ octave
octave:1>
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Variables y formatos
Variables: expresiones (identificadores) asociados a datos almacenados
en un sistema de memoria
Variables y formatos
Tipo Formato π
short punto fijo, 5 dı́gitos 3.1416
long punto fijo, 15 dı́gitos 3.14159265358979
short e punto flotante, 5 dı́gitos 3.1416e+000
long e punto flotante, 15 dı́gitos 3.141592653589793e+000
short g punto fijo o flotante, 5 dı́gitos 3.1416
long g punto fijo o flotante, 15 dı́gitos 3.14159265358979
Variables predefinidas
Variable Uso
ans almacena el último resultado
pi almacena el valor de π = 3,1415 . . .
e almacena el valor de √e = 2,7183 . . .
i almacena el valor de −1
eps epsilon de la máquina
Inf infinito
NaN resultado no númerico (Not a Number)
Entorno de trabajo
Variables utilizadas en una sesión de trabajo (who, whos)
octave:#> who -v
c cadena perim
octave:#> who -v
c perim
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Entorno de trabajo
octave:#> who -v
octave-3.0.1:32> whos -v
Funciones matemáticas
Función Uso
sqrt(x) calcula la raı́z cuadrada de x
exp(x) función exponencial
log(x) función logaritmo natural
sin(x) calcula sen(x)
cos(x) calcula cos(x)
tan(x) calcula tan(x)
asin(x) calcula sen−1 (x)
acos(x) calcula cos−1 (x)
atan(x) calcula tan−1 (x)
Instrucciones de entrada/salida
Salida de datos: Entero d, i
Punto fijo f, g
disp("texto") Punto flotante e
Caracter c
printf("cadena de formato", arg1, arg2,...) Cadena de caracteres s
octave:#> m=3;
octave:#> disp(m)
3
Instrucciones de entrada/salida
Entrada de datos por teclado:
input("texto")
input("texto", "s")
octave:#> palabra
palabra = casa
octave:#> letras
letras = 4
Scripts
Archivos de texto plano sin formato, con extensión .m, que contienen
una sucesión de comandos de Octave
Se editan con cualquier editor de texto (usaremos geany)
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplos de scripts
hola mundo.m
promedio.m
Ejemplos de scripts
pmol.m
Ejemplos de scripts
Ejemplo 5.1
Escriba un programa (script) en Octave que tenga como entradas los datos
enteros A y B y escriba el resultado de la siguiente expresión:
(A + B)2
3
Solución
operacion.m
Ejemplos de scripts
Escriba un programa (script) en Octave tal que dado como datos la base y la
altura de un rectángulo, calcule su perı́metro y área.
Solución
rectangulo.m
AREA = BASE*ALTURA;
PERIMETRO = 2*(BASE+ALTURA);
Funciones
Son scripts que tienen una sintaxis predefinida Sintaxis de una función
Ejemplo de función
Solución
area.m rectangulo2.m
octave:#> rectangulo2
function z = perimetro(x,y) Ingrese la base: 2
% Calcula el perı́metro de un Ingrese la altura: 3
% cuadrado de lados x e y El área es 6.000000 y el perı́metro es 10.000000
z = 2*(x+y);
end
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.1
Ejemplo 6.1
Solución
Datos:
PRECIO: variable de tipo real que representa el precio del producto.
Variables de salida:
DEVO: variable de tipo real. Almacen el cambio que se le debe entregar
al cliente.
Nota: asumimos que el pago del cliente es mayor que el precio del producto.
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.1
DEVUELTO
{ Dado el costo de un producto y la cantidad
de dinero entregada por el cliente, calcula el
vuelto que hay que entregar al cliente. }
{ PRECIO, PAGO Y DEVO son variables de tipo
real. }
1 Leer PRECIO, PAGO
2 Hacer DEVO ← PAGO − PRECIO
3 Escribir DEVO
Ejemplo 6.2
Ejemplo 6.2
Solución
Datos:
NOM: variable de tipo cadena de caracteres que indica el nombre del
dinosaurio.
PES: variable de tipo real que representa el peso del dinosaurio.
ALT: variable de tipo real que representa la altura del dinosaurio.
Variables de salida:
PESKG: variable de tipo real, almacena el peso del dinosaurio en Kg.
ALTMT: variable de tipo real, almacena el peso del dinosaurio en mt.
Consideraciones:
1 tonelada equivale a 1000 kilogramos.
1 pie equivale a 0.3047 metros.
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.2
DINOSAURIO
{ Dado el nombre de un dinosaurio, su peso
en toneladas y su altura en pies, el programa
escribe el nombre del dinosaurio, su peso en
kilogramos y su altura en metros. }
{ NOM es una variable de tipo cadena de
caracteres. PES, ALT, PESKG, y ALTMT son
variables de tipo real. }
1 Leer NOM, PES, ALT
2 Hacer PESOKG ← PESO∗1000
3 Hacer ALTMT ← ALT∗0,3047
4 Escribir NOM, PESOKG, ALTMT
Ejemplo 6.3
Ejemplo 6.3
Solución
Datos:
GAL: variable de tipo real que representa los galones de gasolina
surtidos al cliente.
Variables de salida:
TOTAL: variable de tipo real, almacena el total que debe pagar el cliente.
Consideraciones:
1 galón equivale a 3.785 litros.
1 litro de gasolina cuesta $1480.
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.3
GASOLINA
{ Dado los galones de gasolina surtidos a un
cliente, calcula el precio que debe pagar el
cliente. }
{ GAL y TOTAL son variableS de tipo real. }
1 Leer GAL
2 Hacer TOTAL ← GAL∗3,785 ∗ 1480
3 Escribir TOTAL
# GAL TOTAL
1 10,38 58146,684
2 15,90 89068,62
3 8,40 47055,12
4 9,66 54113,388
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.4
Ejemplo 6.4
Solución
Datos:
RADIO: variable de tipo real que representa el radio del cilindro.
ALT: variable de tipo real que representa la altura del cilindro.
Variables de salida:
VOL: variable de tipo real, almacena el volumen del cilindro.
AREA: variable de tipo real, almacena el área del cilindro.
Consideraciones:
El volumen y el área de un cilindro están dados respectivamente por
volumen = πr2 × h y area = 2πr × h
donde r es el radio de la base, h es su altura y π = 3,141592 . . .
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.4
CILINDRO
{ Dado el radio y la altura de un cilindro,
calcula su área y su volumen.}
{ RADIO, ALT, VOL y AREA son variables de tipo
real. }
1 Leer RADIO, ALT
2 Hacer VOL ← 3.141592 ∗ RADIO∧2 ∗ ALT
3 Hacer AREA ← 2 ∗ 3,141592∗ RADIO ∗ ALT
4 Escribir VOL, AREA
Ejemplo 6.5
Ejemplo 6.5
Solución
Datos:
DIAS: variable de tipo entero que representa el número de dı́as.
Variables de salida:
SEG: variable de tipo real. Almacena la cantidad de segundos que hay
en un número determinado de dı́as.
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.5
SEGUNDOS EN DIAS
{ Dado un número determinado de dı́as,
calcula cuántos segundos tienen éstos. }
{ DIAS es una variable de tipo entero y SEG es
una variable de tipo real. }
1 Leer DIAS
2 Hacer SEG ← DIAS∗24 ∗ 60 ∗ 60
3 Escribir DIAS
# DIAS SEG
1 1 86400
2 7 604800
3 15 1296000
4 30 2592000
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.6
Ejemplo 6.6
Solución
Variables:
ATRANS: variable de tipo entero; almacena el número de meses que hay
entre 1949 y 2002.
MESES
{ Determina el número de meses que hay
entre 1949 y 2002. }
1 Hacer ATRANS ← (2002 − 1949) ∗ 12
2 Escribir ATRANS
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.7
Se desea determinar los meses transcurridos entre los inicios de dos años
cualesquiera. Realice un algoritmo (diagrama de flujo, pseudocódigo) que
resuelva dicho problema e impleméntelo en DFD.
Solución
Datos:
AINICIAL: variable de tipo entero, representa el año inicial.
AFINAL: variable de tipo entero, representa el año final.
ATRANS: variable de tipo entero; almacena el número de años que hay
entre el año inicial y el año final.
Variables de salida:
MTRANS: variable de tipo entero; almacena el número de meses
transcurridos entre el año inicial y el año final.
Introducción Diagramas de flujo Diseño de diagramas Pseudocódigo GNU Octave Ejemplos
Ejemplo 6.7
MESES GENERAL
{ Dado un número determinado de dı́as,
calcula cuántos segundos tienen éstos. }
{ DIAS es una variable de tipo entero y SEG es
una variable de tipo real. }
1 Leer AINICIAL, AFINAL
2 Hacer ATRANS ← AFINAL−AINICIAL
3 Hacer MTRANS ← 12∗MTRANS
4 Escribir ATRANS
Referencias
O. Cairó
Metodologı́a de la programación
Segunda edición. Alfaomega Grupo Editor, S.A., 2005
J.W. Eaton
GNU Octave: A high-level interactive language for numerical
computations
Network Theory Ltd., 2002