Vous êtes sur la page 1sur 70

Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Analisis Numerico
Introduccion a Octave

CNM-425

Departamento de Matematicas
Facultad de Ciencias Exactas y Naturales
Universidad de Antioquia

Copyleft 2010. Reproduccion permitida bajo los


terminos de la licencia de documentacion libre GNU.
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Contenido

1 Introduccion

2 Estructuras Selectivas

3 Estructura repetitivas

4 Vectores y Matrices
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Aspectos basicos

Lenguaje de alto nivel interpretado, orientado principalmente a


computacion cientfica

Pretende ser compatible con MATLAB

Proporciona una lnea de comandos interactiva para resolver problemas


matematicos numericamente

Incluye una coleccion de algoritmos y funciones matematicas


Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Aspectos basicos

Ventajas

Sencillo de utilizar

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


License)

Sintaxis muy similar a MATLAB

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

A diferencia de MATLAB. . .

No soporta programacion orientada a objetos

Capacidad de graficos limitada (GUIs)

Pocos toolboxes disponibles

No dispone de los millones de una compana como MathWorks, Inc.


Introduccion 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)
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Iniciando sesion de Octave en Windows


Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Iniciando sesion de Octave en Windows


Introduccion 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>
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Algunos operadores aritmeticos


Operador Operacion Ejemplo Resultado
Potencia 23 8
Multiplicacion 73 21
/ Division 10/4 2.5000
+ Suma 34 1
Resta 74 3
rem Modulo (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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Operadores relacionales (de comparacion)


Operador Operacion 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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Operadores logicos (booleanos)

Operador Operacion Ejemplo Resultado


& y 2&3 1
| o 3|5 1
! negacion !7 0

A B A&B A|B !A Operador Jerarqua


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
Introduccion 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 precision: 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
Introduccion 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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Variables predefinidas
Variable Uso
ans almacena el ultimo 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 maquina
Inf infinito
NaN resultado no numerico (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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

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

Historial de ordenes ejecutadas (, )

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
Introduccion 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


Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Funciones matematicas

Funcion Uso
sqrt(x) calcula la raz cuadrada de x
exp(x) funcion exponencial
log(x) funcion 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
Introduccion 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;

octave:#> printf(" %d pulgadas equivalen a %f cenmetros \n", m, cent);


3 pulgadas equivalen a 6.451600 centmetros

octave:#> printf(" %f pulgadas equivalen a %f centmetros \n", pulg, cent);


2.540000 pulgadas equivale a 6.451600 centmetros

octave:#> printf(" %f pulgadas equivalen a %e cenmetros \n", pulg, cent);


2.540000 pulgadas equivale a 6.451600e+00 centmetros
Introduccion 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 numero de letras: ");


Ingrese el numero de letras: 4

octave:#> letras
letras = 4

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


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

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

Ejemplos de scripts

hola mundo.m

% Progarma Hola mundo en Octave, version "emo"


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

promedio.m

% Calcula el promedio de dos numeros reales

% Lee los valores de num1 y num2


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

% Calcula el promedio y lo almacena en la variable prom


prom = (num1+num2)/2;

% Imprime los numeros ingresados y su promedio


printf("El promedio de %g y %g es: %g \n", num1, num2, prom);
Introduccion 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
Introduccion 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 expresion:
(A + B)2
3

Solucion

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);
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplos de scripts

Ejemplo 1.2 (Area y permetro de un rectangulo)

Escriba un programa (script) en Octave tal que dado como datos la base y la
altura de un rectangulo, calcule su permetro y area.

Solucion

rectangulo.m

% Dados la base y la altura de un rectangulo, el programa


% calcula su area y su permetro

% 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 area es %f y el permetro es %f \n", AREA, PERIMETRO);


Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Funciones

Son scripts que tienen una sintaxis predefinida Sintaxis de una funcion

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 numero 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 numero real
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ejemplo de funcion

Ejemplo 1.3 (Area y permetro de un rectangulo con funciones)


Resuelva el ejemplo (1.2) del rectangulo utilizando funciones.

Solucion
area.m rectangulo2.m

% Dados la base y la altura de un rectangulo, el programa


function z = area(x,y) % calcula su area y su permetro
% 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 area es %f y el permetro es %f \n", AREA, PERIMETRO);
perimetro.m

octave:#> rectangulo2
function z = perimetro(x,y) Ingrese la base: 2
% Calcula el permetro de un Ingrese la altura: 3
% cuadrado de lados x e y El area es 6.000000 y el permetro es 10.000000

z = 2*(x+y);
end
Introduccion 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)
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva simple

La instruccion selectiva determina si una instruccion particular se


ejecuta o no, segun el cumplimiento de una condicion P.

La representacion de una estructura selectiva se hace con palabras


(pseudocodigo) o por medio de una figura geometrica (diagrama de
flujo).

Sintaxis en Octave
if P
Instrucciones;
end

donde
P: condicion o conjunto de condiciones a
evaluar.
Intrucciones: instrucciones a realizar si
la condicion P es verdadera.
Introduccion 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


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

Solucion

nota.m

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

% Lee la calificacion del alumno


NOTA = input("Ingrese la nota: ");
if NOTA<3.0
disp("Reprobado");
end
Introduccion 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.

Solucion

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.


Introduccion 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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva doble

La instruccion selectiva doble si entonces / sino permite que el flujo


del diagrama se bifurque por dos ramas diferentes dependiendo del
cumplimiento de una condicion P.

Si al evaluar la condicion 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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva doble

Ejemplo 2.3

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


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

Solucion
nota2.m

% Dada la calificacion de un alumno en


% un examen, se imprime "aprobado"si la
% calificacion mayor o igual a 3 y
% "reprobado" en caso contrario

% Lee la calificacion del alumno


NOTA = input("Ingrese la nota: ");
if NOTA>=3.0
disp("aprobado");
else
disp("reprobado");
end
Introduccion 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.

Solucion

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.


Introduccion 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
Introduccion 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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

Sintaxis en Octave
if P1
Operacion11;
elseif P2
Operacion21;
else
Operacion22;
end
Introduccion 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
Introduccion 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.

Solucion

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 numero es impar...
y no es divisible por 3 \n");
end
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

Ejemplo 2.6

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


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

Solucion

Datos:

A, B, C: variables de tipo entero.

Variables de salida:

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


Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura selectiva anidada

comparar.m

%*******************************************
% Descripcion: 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
Introduccion 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
numero maximo 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


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

Solucion

naturales1.m

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

Estructura repetitiva para


Ejemplo 3.2

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


Octave.
Solucion

naturales2.m

for i=1:10
disp(i);
end
Introduccion 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.
Solucion

naturales2.m

for i=1:2:10
disp(i);
end
Introduccion 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.
Solucion

naturales2.m

for i=10:-1:1
disp(i);
end
Introduccion 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 instruccion que lo contiene

Utilizacion:
Cuentan las veces que ocurre un determinado suceso
Controlan la ejecucion de un bucle que se realiza un determinado
numero de veces.

Inicializacion: 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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

Ejemplo 3.5

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


cuente cuantos de ellos son ceros.

Solucion

Datos:

N: variable de tipo entero que representa el numero de datos que se


ingresan

NUM: variable de tipo entero, se utilizara para almacenar los valores de


los enteros ingresados.

Variables de salida:

NUMCEROS: variable de tipo entero que actuara de contador, cuenta el


numero de ceros
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para

cuenta ceros.m

N = input("Ingrese el numero de datos: ");


NUMCEROS = 0; % inicializa el contador

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

disp(NUMCEROS)
Introduccion 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

Inicializacion: 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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


Ejemplo 3.6

Realice un algoritmo ( Octave) que sume los numeros enteros desde 1 hasta
N.

Solucion

Datos:

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


realiza la suma

SUMA: variable de tipo entero que actuara de acumulador; almacena la


suma de los primeros N numeros naturales
1 + 2 + + N

Variables de salida:

SUMA
Introduccion 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);
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva para


Ejemplo 3.7

El factorial de un numero 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.

Solucion
Datos:

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


realiza el producto

PROD: variable de tipo entero que actuara de acumulador; almacena el


producto de los primeros N numeros naturales
1 * 2 * * N
Variables de salida:
PROD
Introduccion 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);
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Estructura repetitiva mientras

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


cuando no sabemos el numero 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


Introduccion 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


numeros naturales. Utilice las estructurtas repetitivas mientras y para.

Solucion

Variables:

N: variable de tipo entero, almacena el ultimo entero

NUM: variable de tipo entero, almacena uno a uno cada numero a sumar

SUM: variable de tipo entero que actuara de acumulador, almacena la


suma de los naturales

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


datos
Introduccion 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);
Introduccion 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 o 0

Usos de las banderas:


Controlan el flujo logico de un programa

Permiten variar la secuencia de ejecucion 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 accion dependiendo de su valor


Introduccion 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


sucesion

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

Solucion

Variables:

NT: variable de tipo entero; numero de terminos a generar

CONT: variable de tipo entero que actuara de contador para controlar el


ciclo

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

BAN: variable de tipo bandera, selecciona si se suma -2 o +3 a TER


Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

sucesion mientras.m

NT = input("Ingrese numero de terminos: ");


TER = 17; % primer termino
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 numero de terminos: ");


TER = 17; % primer termino
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
Introduccion 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 numero
negativo.

Solucion

Variables:

CONTINUAR: variable de tipo bandera, determina cuando finaliza el


algoritmo

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


iteracion

SUMA: variable de tipo entero que actuara de acumulador, almacena la


suma de los multiplos de 3
Introduccion 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);
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ruptura de ciclos y salidas

break:

Instruccion utilizada dentro de un bucle (for o while)

Permite terminar el bucle envolvente mas cercano que lo contiene

continue:

Instruccion utilizada dentro de un bucle (for o while)

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


con la siguiente iteracion del bucle (sin salirse)

return:

Instruccion utilizada dentro del cuerpo de una funcion

La instruccion return permite salir (retornar) a una funcion de un


ciclo anidado o una estructura selectiva
Introduccion 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.

Solucion

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

Solucion

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
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Ruptura de ciclos y salidas: return

Ejemplo 3.13 (return)


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

Solucion

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
Introduccion 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
Introduccion 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);
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Material en construccion. . .
Introduccion Estructuras Selectivas Estructuras repetitivas Vectores y Matrices

Referencias

O. Cairo
Metodologa de la programacion
Segunda edicion. Alfaomega Grupo Editor, S.A., 2005

M.A. Criado
Programacion en lenguajes estructurados
Alfaomega Grupo Editor, S.A. de C.V. Primera Edicion, 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/

Vous aimerez peut-être aussi