Anda di halaman 1dari 70

Introducci

on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Analisis Numerico
Introduccion a Octave

CNM-425

Departamento de Matem aticas


Facultad de Ciencias Exactas y Naturales
Universidad de Antioquia

Copyleft 2010. Reproduccion permitida bajo los


t on libre GNU.
erminos de la licencia de documentaci
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Contenido

1 Introducci
on

2 Estructuras Selectivas

3 Estructura repetitivas

4 Vectores y Matrices
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Aspectos basicos

Lenguaje de alto nivel interpretado, orientado principalmente a


computaci
on cientfica

Pretende ser compatible con MATLAB

Proporciona una lnea de comandos interactiva para resolver problemas


matematicos numericamente

Incluye una colecci


on de algoritmos y funciones matem
aticas
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Aspectos basicos

Ventajas

Sencillo de utilizar

Software libre: se distribuye bajo licencia GNU, GPL (General Public


License)

Sint
axis muy similar a MATLAB

C
odigo abierto: amplia comunidad de soporte (foros, etc.)

A diferencia de MATLAB. . .

No soporta programaci
on orientada a objetos

Capacidad de gr
aficos limitada (GUIs)

Pocos toolboxes disponibles

No dispone de los millones de una compa


na como MathWorks, Inc.
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Instalacion de GNU Octave

GNU Octave
http://www.gnu.org/software/octave/

GNU/Linux (distribuciones basadas en debian):

sudo aptitude install octave

Windows y Mac OSX:

http://octave.sourceforge.net/
(Octave-Forge - Extra packages for GNU Octave)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Iniciando sesion de Octave en Windows


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Iniciando sesion de Octave en Windows


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Iniciando sesion de Octave en GNU/Linux

~$ octave

GNU Octave, version 3.0.1


Copyright (C) 2008 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or
FITNESS FOR A PARTICULAR PURPOSE. For details, type warranty.

Octave was configured for "x86_64-pc-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.


For more information, visit http://www.octave.org/help-wanted.html

Report bugs to <bug@octave.org> (but first, please read


http://www.octave.org/bugs.html to learn how to write a helpful report).

For information about changes from previous versions, type news.

octave:1>
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Algunos operadores aritmeticos


Operador Operaci
on Ejemplo Resultado
Potencia 23 8
Multiplicaci
on 73 21
/ Division 10/4 2.5000
+ Suma 34 1
Resta 74 3
rem M
odulo (residuo) rem(10, 3) 1

octave:#> 3+4 octave:#> 4+6/2+3


ans = 7 ans = 10

octave:#> 5/10*2+5 octave:#> (4+6)/(2+3)


ans = 6 ans = 2

octave:#> 5/(10*2+5) octave:#> 00


ans = 0.20000 ans = 1

octave:#> 2+4*3^2 octave:#> rem(17,3)


ans = 38 ans = 2
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Operadores relacionales (de comparaci


on)
Operador Operaci
on Ejemplo Resultado
== Igual 4 == 5 0
!= Diferente de 2!=3 1
< Menor que 10 < 4 0
> Mayor que 5>-4 1
<= Menor o igual que 7<=7 1
>= Mayor o igual que 3.5 >= 10 0

octave:#> 1+2>7-3 octave:#> 3>4<5


ans = 0 ans = 1

octave:#> 1<2<3 octave:#> 1/3<0.33333


ans = 1 ans = 0

octave:#> 1>2==2<3 octave:#> 5/3>=11/7


ans = 1 ans = 1

octave:#> 1>2==(2<3) octave:#> 2(2/3) < 3(3/4)


ans = 0 ans = 1
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Operadores logicos (booleanos)

Operador Operaci
on Ejemplo Resultado
& y 2&3 1
| o 3|5 1
! negaci
on !7 0

A B A&B A|B !A Operador Jerarqu


a
0 0 0 0 1 () (mayor)
0 1 0 1 1
1 0 0 1 0 , /, rem
1 1 1 1 0 ==, ! =, <, >, <=, >= 
!
&
| (menor)

octave:#> 0&1|1 octave:#> 5*4>4&0<3


ans = 1 ans = 1

octave:#> 1&(1|0) octave:#> 2(3&0/5)>rem(45,6)


ans = 0 ans = 0
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Variables y formatos
Variables: expresiones (identificadores) asociados a datos almacenados
en un sistema de memoria

Algunos tipos de datos:


Real de doble precisi
on: 8 bytes (15 cifras exactas)
String: cadena de caracteres

octave:#> base=3 octave:#> cadena=hola; a=3;


base = 3

octave:#> alt=4 octave:#> cadena


altura = 4 cadena = hola

octave:#> area = base*alt octave:#> a=2*a


area = 12 a = 6

octave:#> perim = 2*base+2*alt octave:#> area == 2*a


perim = 14 ans = 1
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Variables y formatos
Tipo Formato
short punto fijo, 5 dgitos 3.1416
long punto fijo, 15 dgitos 3.14159265358979
short e punto flotante, 5 dgitos 3.1416e+000
long e punto flotante, 15 dgitos 3.141592653589793e+000
short g punto fijo o flotante, 5 dgitos 3.1416
long g punto fijo o flotante, 15 dgitos 3.14159265358979

octave:#> b=1/3 octave:#> format long e


b = 0.33333

octave:#> format long octave:#> c


c = 1.23123123123123e-01

octave:#> b octave:#> format


b = 0.333333333333333

octave:#> c = 41/333 octave:#> c


c = 0.123123123123123 c = 0.12312
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Variables predefinidas
Variable Uso
ans almacena el u 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 aquina
Inf infinito
NaN resultado no n umerico (Not a Number)

octave:#> pi octave:#> eps


ans = 3.1416 ans = 2.22044604925031e-16

octave:#> format long


octave:#> 1/0
warning: division by zero
ans = Inf
octave:#> pi
ans = 3.14159265358979
octave:#> 0/0
warning: division by zero
octave:#> e ans = NaN
ans = 2.71828182845905
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Entorno de trabajo
Variables utilizadas en una sesi
on de trabajo (who, whos)

rdenes ejecutadas (, )
Historial de o

octave:#> who -v

*** local user variables:

__nargin__ a alt ans area b base

c cadena perim

octave:#> clear cadena

octave:#> who -v

*** local user variables:

__nargin__ a alt ans area b base

c perim
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Entorno de trabajo

octave:#> who -v

*** local user variables:

__nargin__ alt area base perim


a ans b c

octave-3.0.1:32> whos -v

*** local user variables:

Prot Name Size Bytes Class


==== ==== ==== ===== =====
rw- __nargin__ 1x1 8 double
rwd a 1x1 8 double
rwd alt 1x1 8 double
rwd ans 1x1 1 logical
rwd area 1x1 8 double
rwd b 1x1 8 double
rwd base 1x1 8 double
rwd c 1x1 8 double
rwd perim 1x1 8 double

Total is 9 elements using 65 bytes


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Funciones matematicas

Funci
on Uso
sqrt(x) calcula la raz cuadrada de x
exp(x) funci
on exponencial
log(x) funci
on logaritmo natural
sin(x) calcula sen(x)
cos(x) calcula cos(x)
tan(x) calcula tan(x)
asin(x) calcula sen1 (x)
acos(x) calcula cos1 (x)
atan(x) calcula tan1 (x)

octave:#> cos(pi) octave:#> cos(a)2+sen(a)2


ans = -1 ans = 1.0000

octave:#> exp(1) octave:#> log(e)


ans = 2.7183 ans = 1

octave:#> 4*atan(1) octave:#> 2*sin(3*pi/2)


ans = 3.1416 ans = -2
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

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:#> disp("hola, mundo!")


hola, mundo!

octave:#> m=3;
octave:#> disp(m)
3

octave:#> pulg=2.54; cent=6.4516;

metros \n", m, cent);


octave:#> printf(" %d pulgadas equivalen a %f cen
3 pulgadas equivalen a 6.451600 centmetros

metros \n", pulg, cent);


octave:#> printf(" %f pulgadas equivalen a %f cent
2.540000 pulgadas equivale a 6.451600 cent
metros

metros \n", pulg, cent);


octave:#> printf(" %f pulgadas equivalen a %e cen
2.540000 pulgadas equivale a 6.451600e+00 cent
metros
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Instrucciones de entrada/salida
Entrada de datos por teclado:
input("texto")
input("texto", "s")

octave:#> palabra = input("Ingrese una palabra: ","s");


Ingrese una palabra: casa

octave:#> palabra
palabra = casa

octave:#> letras = input("Ingrese el n


umero de letras: ");
Ingrese el n
umero de letras: 4

octave:#> letras
letras = 4

octave:#> printf("La palabra %s tiene %d letras \n", palabra, letras);


La palabra casa tiene 4 letras
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Scripts
Archivos de texto plano sin formato, con extensi
on .m, que contienen
una sucesi
on de comandos de Octave
Se editan con cualquier editor de texto (usaremos QtOctave)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplos de scripts

hola mundo.m

% Progarma Hola mundo en Octave, versi


on "emo"
printf("Hola, maldito mundo!\n");

promedio.m

% Calcula el promedio de dos n


umeros reales

% Lee los valores de num1 y num2


num1 = input("Ingrese el primer n
umero: ");
num2 = input("Ingrese el segundo numero: ");

% Calcula el promedio y lo almacena en la variable prom


prom = (num1+num2)/2;

% Imprime los n
umeros ingresados y su promedio
printf("El promedio de %g y %g es: %g \n", num1, num2, prom);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplos de scripts

pmol.m

% Este programa calcula el peso molecular de una molecula


% organica.

% Calculo de los g/mol de cada elemento.


peso C = 12*9 ;
peso H = 1*6 ;
peso O = 16*4;

% Calculo del peso molecular


peso molecular = peso C + peso H + peso O

% Calculo del porcentaje de oxigeno


porcentaje O = peso O/peso molecular*100
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplos de scripts

Ejemplo 1.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
on:
(A + B)2
3

Soluci
on

operacion.m

% Dados dos enteros A y B, calcula


% (A+B)2/3

% Lee los valores de A y B


A = input("Ingrese A: ");
B = input("Ingrese B: ");
RES = (A+B)2/3;

% Imprime contenido de la variable RES


disp(RES);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplos de scripts

Ejemplo 1.2 (Area y permetro de un rect
angulo)

Escriba un programa (script) en Octave tal que dado como datos la base y la
altura de un rect
angulo, calcule su permetro y a
rea.

Soluci
on

rectangulo.m

% Dados la base y la altura de un rect


angulo, el programa
% calcula su
area y su per
metro

% Lee los valores de la base y la altura


BASE = input("Ingrese la base: ");
ALTURA = input("Ingrese la altura: ");

AREA = BASE*ALTURA;
PERIMETRO = 2*(BASE+ALTURA);

printf("El metro es %f \n", AREA, PERIMETRO);


area es %f y el per
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Funciones

Son scripts que tienen una sintaxis predefinida Sintaxis de una funci
on

Programas que resultan complejos por medio de function nombre(argumentos)


scripts, se simplifican por medio de funciones
sentencias
Una vez definidas, las funciones se invocan desde end
la lnea de comandos o desde un script

cuadrado.m octave:#> cuadrado(3)


ans = 9
function y = cuadrado(x)
% Calcula el cuadrado de octave:#> cuadrado(-2.5678)
% un n
umero ans = 6.5936
y = x*x;
end octave:#> cuadrado(t)
error: t undefined near line 2 column 10
error: evaluating argument list element number 1

octave:#> help cuadrado


calcula el cuadrado de un n
umero real
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplo de funcion

Ejemplo 1.3 (Area y permetro de un rect
angulo con funciones)
Resuelva el ejemplo (1.2) del rect
angulo utilizando funciones.

Soluci
on
area.m rectangulo2.m

% Dados la base y la altura de un rect


angulo, el programa
function z = area(x,y) % calcula su
area y su per
metro
% Calcula el
area de un % Lee los valores de la base y la altura
% cuadrado de lados x e y BASE = input("Ingrese la base: ");
ALTURA = input("Ingrese la altura: ");
z = x*y;
AREA = area(BASE,ALTURA);
PERIMETRO = perimetro(BASE,ALTURA);
end
printf("El metro es %f \n", AREA, PERIMETRO);
area es %f y el per
perimetro.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
area es 6.000000 y el per
metro es 10.000000

z = 2*(x+y);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Funciones inline
Sintaxis:
f = inline("expresion")

octave:#> f = inline("x2-1") octave:#> f(y(pi))


f = ans = -1
f(x) = x2-1
octave:#> x(f(1))
ans = 1
octave:#> f(1.5)
ans = 1.2500
octave:#> formula(f)
ans = x2-1
octave:#> x = inline("cos(t)");
octave:#>g=input("Ingrese g(x):","s");
octave:#>Ingrese g(x): exp(x)*cos(x)
octave:#> y = inline("sin(t)");

octave:#> g = inline("g")
octave:#> x(10)2 + y(10)2 g =
ans = 1 f(x) = exp(x)*cos(x)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva simple

La instrucci
on selectiva determina si una instrucci
on particular se
ejecuta o no, seg
un el cumplimiento de una condici on P.

La representaci
on de una estructura selectiva se hace con palabras
(pseudoc
odigo) o por medio de una figura geometrica (diagrama de
flujo).

Sintaxis en Octave
if P
Instrucciones;
end

donde
P: condici
on o conjunto de condiciones a
evaluar.
Intrucciones: instrucciones a realizar si
la condici
on P es verdadera.
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva simple

Ejemplo 2.1

Ralice un algoritmo (implementelo en Octave) tal que dado como dato la


calificaci
on de un alumno en un examen, escriba reprobado en caso de que
dicha nota sea menor a 3.

Soluci
on

nota.m

% Programa : nota.m
% Descripcion: Dada la calificaci
on de un
% alumno en un examen, se imprime "reprobado"
% si la calificaci
on menor a 3.

% Lee la calificaci
on del alumno
NOTA = input("Ingrese la nota: ");
if NOTA<3.0
disp("Reprobado");
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva simple

Ejemplo 2.2

A un trabajador se le aplica un aumento del 15 % en su salario si este es


menor a 400 mil pesos. Realice un algoritmo que imprima el sueldo del
trabajador. Implementelo en Octave.

Soluci
on

Datos:

SUE: variable de tipo real que representa el salario del trabajador.

Variables de salida:

AUM: variable de tipo real; almacena el aumento del trabajador.

NSUE: variable de tipo real; almacena el nuevo sueldo del trabajador.


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva simple

sueldo.m

% Dado como dato el sueldo de un trabajador,


% el programa aplica un aumento del 15 % si
% el sueldo es inferior a 400 mil pesos.

% Lee el sueldo del empleado


SUE = input("Ingrese el sueldo: ");
if SUE<400000
AUM = SUE*0.15;
NSUE = SUE + AUM;
fprintf("El nuevo sueldo es %g \n", NSUE);
end

# SUE AUM NSUE


1 145000 21750 166750
2 517320
3 284215 42632,25 326847,25
4 180500 27075 207575
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva doble

La instrucci
on selectiva doble si entonces / sino permite que el flujo
del diagrama se bifurque por dos ramas diferentes dependiendo del
cumplimiento de una condici on P.

Si al evaluar la condici
on P el resultado es verdadero, entonces se
ejecuta un conjunto de instrucciones; si el resultado es falso se
ejecutan otro conjunto de instrucciones.

Sintaxis en Octave
if P
Instrucciones1;
else
Instrucciones2;
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva doble

Ejemplo 2.3

Realice un algoritmo ( Octave) tal que dado como dato la calificaci


on de un
alumno en un examen, escriba aprobado si su calificaci
on es mayor o
igual a 3 y reprobado en caso contrario.

Soluci
on
nota2.m

% Dada la calificaci
on de un alumno en
% un examen, se imprime "aprobado"si la
% calificaci
on mayor o igual a 3 y
% "reprobado" en caso contrario

% Lee la calificaci
on del alumno
NOTA = input("Ingrese la nota: ");
if NOTA>=3.0
disp("aprobado");
else
disp("reprobado");
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva doble

Ejemplo 2.4

A un trabajador se le aplica un aumento del 15 % en su salario si este es


menor a 400 mil pesos y 8 % en caso contrario. Realice un algoritmo que
imprima el sueldo del trabajador. Implementelo en Octave.

Soluci
on

Datos:

SUE: variable de tipo real que representa el salario del trabajador.

Variables de salida:

NSUE: variable de tipo real; almacena el nuevo sueldo del trabajador.


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva doble


sueldo2.m

% Dado como dato el sueldo de un trabajador,


% el programa aplica un aumento del 15 % si
% el sueldo es inferior a 400 mil pesos y en
% caso contrario el aumento es del 8 %.

% Lee el sueldo del empleado


SUE = input("Ingrese el sueldo: ");
if SUE<=400000
NSUE = SUE*1.15;
else
NSUE = SUE*1.08;
end
printf("El nuevo sueldo es %f \n", NSUE);

# SUE NSUE
1 200000 230000
2 550000 594000
3 140000 161000
4 400000 460000
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

Son estructuras selectivas que contienen a otras estructuras selectivas

Sintaxis en Octave
if Condicion1
if Condicion2
Operacion21;
else
Operacion22;
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

Sintaxis en Octave
if P1
Operacion11;
elseif P2
Operacion21;
else
Operacion22;
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

Sintaxis en Octave
if Condicion1
if Condicion2
Operacion21;
else
Operacion22;
end
else
if Condicion3
Operacion31;
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada


Ejemplo 2.5

Realice un algoritmo ( Octave) tal que dado como dato un entero, determine
si es par y en caso de no serlo, determine si es divisble por 3.

Soluci
on

par.m

% Determina si un entero es par y en caso


% de no serlo, determina si es divisible
% por 3

% Lee entero
a = input("Ingrese un entero: ");
if (rem (a, 2) == 0)
printf ("El numero es par \n");
elseif (rem (a, 3) == 0)
printf("El n
umero es impar...
y no es divisible por 3 \n");
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

Ejemplo 2.6

Realice un algoritmo ( Octave) que reciba como datos de entrada tres


n
umeros enteros distintos A, B y C y los escriba de mayor a menor.

Soluci
on

Datos:

A, B, C: variables de tipo entero.

Variables de salida:

A, B, C: variables de tipo entero; se imprimen en orden descendente.


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

comparar.m

%*******************************************
% Descripci
on: Dado tres enteros distintos,
% el programa los ordena de mayor a menor.
%*******************************************
% Lee tres enteros distintos
A = input("Ingrese un entero: ");
B = input("Ingrese un entero: ");
C = input("Ingrese un entero: ");
if A>B
if A>C
if B>C
printf(" %d, %d, %d \n", A, B, C);
else
printf(" %d, %d, %d \n", A, C, B);
end
else
printf(" %d, %d, %d \n", C, A, B);
end
else
if B>C
if A>C
printf(" %d, %d, %d \n", B, A, C);
else
printf(" %d, %d, %d \n", B, C, A);
end
else
printf(" %d, %d, %d \n", C, B, A);
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


El ciclo para es una estructura de control en la que se puede indicar el
n
umero m aximo de iteraciones
Elementos del bucle:
V: variable de control del ciclo VF: valor final
VI: valor inicial ID: incremento o decremento

Sintaxis en Octave

for V=VI:ID:VF
sentencias
end

Figura: General Figura: DFD


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

Ejemplo 3.1

Realice una algoritmo ( Octave) que imprima los enteros desde el 1 hasta el
10. No utilice estructuras repetitivas.

Soluci
on

naturales1.m

disp(1);
disp(2);
disp(3);
disp(4);
disp(5);
disp(6);
disp(7);
disp(8);
disp(9);
disp(10);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


Ejemplo 3.2

Resuelva el ejemplo (3.1) utilizando estructuras repetitivas. Implementelo en


Octave.
Soluci
on

naturales2.m

for i=1:10
disp(i);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplo 3.3
Ejemplo 3.3

Realice una algoritmo ( Octave) que imprima los enteros impares desde el 1
hasta el 10.
Soluci
on

naturales2.m

for i=1:2:10
disp(i);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


Ejemplo 3.4

Realice una algoritmo ( Octave) que imprima los enteros desde el 10 hasta
el 1.
Soluci
on

naturales2.m

for i=10:-1:1
disp(i);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


Contador: variable que se incrementa o decrementa de forma
constante cada vez que se ejecuta la instrucci
on que lo contiene

Utilizaci
on:
Cuentan las veces que ocurre un determinado suceso
Controlan la ejecuci
on de un bucle que se realiza un determinado
n
umero de veces.

Inicializaci
on: todo contador debe tomar un valor inicial antes de ser
usado

Sintaxis de un contador:

Variable Contador Variable Contador + constante


Variable Contador Variable Contador - constante

o tambien

Variable Contador = Variable Contador + constante


Variable Contador = Variable Contador - constante
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

Ejemplo 3.5

Realice un algoritmo ( Octave) que lea N n


umeros enteros desde el teclado y
cuente cu
antos de ellos son ceros.

Soluci
on

Datos:

N: variable de tipo entero que representa el n


umero de datos que se
ingresan

NUM: variable de tipo entero, se utilizar


a para almacenar los valores de
los enteros ingresados.

Variables de salida:

NUMCEROS: variable de tipo entero que actuar


a de contador, cuenta el
n
umero de ceros
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

cuenta ceros.m

N = input("Ingrese el n
umero de datos: ");
NUMCEROS = 0; % inicializa el contador

for i=1:N
NUM = input("Ingrese n
umero: ");
if NUM == 0
NUMCEROS = NUMCEROS + 1;
end
end

disp(NUMCEROS)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

Acumulador: variable que almacena un valor que se incrementa o


decrementa de forma variable durante un proceso repetitivo.

Sintaxis de un acumulador:

Variable Acumulador Variable Acumulador + variable


Variable Acumulador Variable Acumulador - variable
Variable Acumulador Variable Acumulador * variable

Inicializaci
on: todo acumulador debe tomar un valor inicial antes de ser
usado

Cuando el acumulador vara por suma sucesiva de variables se inicializa


a 0:
Variable Acumulador 0

Cuando el acumulador vara por producto sucesiva de variables se


inicializa a 1:
Variable Acumulador 1
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


Ejemplo 3.6

Realice un algoritmo ( Octave) que sume los n


umeros enteros desde 1 hasta
N.

Soluci
on

Datos:

N: variable de tipo entero que representa el entero hasta donde se


realiza la suma

SUMA: variable de tipo entero que actuar


a de acumulador; almacena la
suma de los primeros N numeros naturales
1 + 2 + + N

Variables de salida:

SUMA
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

sumaN.m

N = input("Ingrese enteros a sumar: ");


SUMA = 0; % inicializa acumulador

for i=1:N
SUMA = SUMA+i;
end

disp(SUMA);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


Ejemplo 3.7

El factorial de un n
umero entero no negativo n se define como

n! = 1 2 (n 1) n , con 0! = 1 y 1! = 1

Escriba un algoritmo que calcule el factorial de un entero N 1 e


implementelo en Octave.

Soluci
on
Datos:

N: variable de tipo entero que representa el entero hasta donde se


realiza el producto

PROD: variable de tipo entero que actuar


a de acumulador; almacena el
producto de los primeros N numeros naturales
1 * 2 * * N
Variables de salida:
PROD
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

factorial.m

N = input("Ingrese enteros a multiplicar: ");


PROD = 1; % inicializa acumulador

for i=1:N
PROD = PROD*i;
endfor

disp(PROD);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva mientras

La estructura repetitiva mientras (while) es utilizada en un ciclo


cuando no sabemos el n umero de veces que este se ha de repetir

Elementos del bucle:


EXPRESION: sentencia booleana que determina si se ejecuta el bucle
INSTRUCCIONES: sentencias a ejecutar si EXPRESION es verdadera

Sintaxis en Octave

while EXPRESION
INSTRUCCIONES
end

Figura: General Figura: DFD


Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva mientras

Ejemplo 3.8

Realice un algoritmo ( Octave) que calcule el promedio de los primeros N


n
umeros naturales. Utilice las estructurtas repetitivas mientras y para.

Soluci
on

Variables:

N: variable de tipo entero, almacena el u


ltimo entero

NUM: variable de tipo entero, almacena uno a uno cada n


umero a sumar

SUM: variable de tipo entero que actuar


a de acumulador, almacena la
suma de los naturales

PROM: variable de tipo real, almacena almacena el promedio de los


datos
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva mientras


promedio mientras.m

N = input("Ingrese N: ");
NUM = 1;
SUM = 0;
while NUM <= N
SUM = SUM + NUM;
NUM = NUM + 1;
end
PROM = SUM/N;
printf("Promedio = %g \n", PROM);

promedio para.m

N = input("Ingrese N: ");
SUM = 0;
for i=1:N
SUM = SUM + i;
end
PROM = SUM/N;
printf("Promedio = %g \n", PROM);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva mientras

Banderas: variables booleanas; determinan dos alternativas a seguir


dentro del algoritmo

Posibles valores de las banderas:


"VERDADERO"
o "FALSO"
"SI"
o "NO"
1
o0

Usos de las banderas:


Controlan el flujo l
ogico de un programa

Permiten variar la secuencia de ejecuci


on del algoritmo dependiendo de
su valor en cada instante

Dependiendo de su valor, determinan si el algoritmo ha pasado por un


determnado punto

Salir de un ciclo

Ejecutar una u otra acci


on dependiendo de su valor
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva mientras

Ejemplo 3.9 (variable bandera)

Realice un algoritmo ( Octave) que genere los primeros N terminos de la


sucesi
on

17 , 15 , 18 , 16 , 19 , 17 , 20 , 18 , 21 , ...

Soluci
on

Variables:

NT: variable de tipo entero; n


umero de terminos a generar

CONT: variable de tipo entero que actuar


a de contador para controlar el
ciclo

TER: variable de tipo entero, almacena cada termino de la sucesi


on

BAN: variable de tipo bandera, selecciona si se suma -2 o


+3 a TER
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

sucesion mientras.m

NT = input("Ingrese n
umero de t
erminos: ");
TER = 17; % primer t
ermino
CONT = 1; % inicializa contador
BAN = 1; % inicializa bandera

while CONT <= NT


disp(TER);
if BAN == 1
TER = TER - 2;
BAN = 2;
else
TER = TER + 3;
BAN = 1;
end
CONT = CONT + 1;
end

sucesion para.m

NT = input("Ingrese n
umero de t
erminos: ");
TER = 17; % primer t
ermino
BAN = 1; % inicializa bandera

for CONT=1:NT
disp(TER);
if BAN == 1
TER = TER - 2;
BAN = 2;
else
TER = TER + 3;
BAN = 1;
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva mientras

Ejemplo 3.10 (variable bandera)

Realice un algoritmo ( Octave) que lea desde el teclado enteros positivos y


sume los multiplos de 3. El algoritmo debe finalizar al ingresar un n
umero
negativo.

Soluci
on

Variables:

CONTINUAR: variable de tipo bandera, determina cuando finaliza el


algoritmo

NUM: variable de tipo entero; almacena el entero ingresado en cada


iteraci
on

SUMA: variable de tipo entero que actuar


a de acumulador, almacena la
suma de los m ultiplos de 3
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

multiplos3.m

CONTINUAR = "si"; % inicializa bandera


SUMA = 0; % inicializa acumulador

while strcmp(CONTINUAR,"si")
NUM = input("Ingrese entero: ");
if NUM < 0
CONTINUAR = "no";
elseif rem(NUM,3) == 0
SUMA = SUMA + NUM;
end
end

disp(SUMA);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ruptura de ciclos y salidas

break:

Instrucci
on utilizada dentro de un bucle (for o while)

Permite terminar el bucle envolvente m


as cercano que lo contiene

continue:

Instrucci
on utilizada dentro de un bucle (for o while)

Se utiliza para saltarse parte de una iteracion del bucle y continuar


con la siguiente iteraci
on del bucle (sin salirse)

return:

Instrucci
on utilizada dentro del cuerpo de una funci
on

La instrucci
on return permite salir (retornar) a una funci
on de un
ciclo anidado o una estructura selectiva
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ruptura de ciclos y salidas: break


Ejemplo 3.11 (break)
Realice un programa en Octave que lea desde el teclado un entero n y
determine si es primo.

Soluci
on

primo break.m

N = input("Ingrese un entero positivo: ");


k = 2; % inicializa contador del ciclo

while k<=n
if rem(N,k) == 0
break;
end
k++;
end

if (rem (N, k) == 0)
printf("El menor divisor propio de %d es %d \n", N, k);
else
printf(" %d is primo\n", N);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ruptura de ciclos y salidas: continue


Ejemplo 3.12 (continue)
Realice un programa en Octave que lea desde el teclado N enteros e
imprima solo los impares.

Soluci
on

primo continue.m

N = input("Numero de enteros a ingresar: ");


for i=1:N
num = input("Ingrese entero: ");
if rem(num,2) != 0
continue;
end
disp(num);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ruptura de ciclos y salidas: return

Ejemplo 3.13 (return)


Implemente una funci on en Octave que que reciba como argumento un
entero positivo n y devuelva 1 sin n es primo y 0 si no lo es.

Soluci
on

primo.m

function y = primo(n)
i = 2; % inicializa contador del ciclo
while i<n
if rem(n,i) == 0
y = 0;
return
end
i++;
end
y = 1;
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Vectores
octave:#> x = [1 2 3] octave:#> z(2:5)
x = z =
1 2 3 2 3 4 5

octave:#> x(1) octave:#> x


ans = 1 ans =
1
octave:#> 2*x 2
ans = 3
2 4 6
octave:#> x.2
ans =
octave:#> y = [4 5 6];
1 4 9

octave:#> length(y) octave:#> alfa = [0 pi/2 3*pi/2 2*pi];


ans = 3

octave:#> cos(alfa)
octave:#> z = [1:6] ans =
z = 1.0000e+00 6.1232e-17 -1.8370e-16
1 2 3 4 5 6 1.0000e+00
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

octave:#> x, y octave:#> iz = 2:-0.2:1


x = iz =
1 2 3 2.0000 1.8000 1.6000 1.4000 1.2000
y = 1.0000
4 5 6
octave:#> inter = linspace(1,2,7)
octave:#> x==y inter =
ans =
1.0000 1.1667 1.3333 1.5000 1.6667
0 0 0 1.8333 2.0000

octave:#> x+y octave:#> t = 0:0.1:2*pi;


ans =
5 7 9
octave:#> u = cos(t);
octave:#> x.*y
ans = octave:#> v = sin(t);
4 10 18

octave:#> plot(t,u);
octave:#> der = 1:0.2:2
der =
1.0000 1.2000 1.4000 1.6000 1.8000 octave:#> hold on
2.0000 octave:#> plot(t,u);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Material en construccion. . .
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Referencias

O. Cair
o
Metodologa de la programaci
on
Segunda edicion. Alfaomega Grupo Editor, S.A., 2005

M.A. Criado
Programaci
on en lenguajes estructurados
Alfaomega Grupo Editor, S.A. de C.V. Primera Edici
on, 2006

J.W. Eaton
GNU Octave: A high-level interactive language for numerical
computations
Network Theory Ltd., 2002
http://www.network-theory.co.uk/octave/manual/

Anda mungkin juga menyukai