Estructuras de Control

Documentos relacionados
Conceptos. Generales ALGORITMOS

Capítulo 13 INSTRUCCIONES DE CONTROL REPETITIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados.

Lógica de programación

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Tema 3. Estructuras de Datos

Tema 3. Estructuras de control

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

Programación Estructurada

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

UNIDAD III. Funciones de Entrada y Salida de Datos. Estructuras de Control

INSTITUTO TECNOLÓGICO

Valentín Moreno Programación en FORTRAN ESQUEMA DE SELECCIÓN

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

5. ESTRUCTURAS DE REPETICIÓN

Programación en Lenguaje C

Introducción a los Computadores (CNM-130) Estructuras de control repetitivas en FreeMat

Estructuras de Repetición

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Lógica de programación

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Universidad Autónoma del Estado de México Facultad de Medicina

TEMA 5. PROGRAMACIÓN BÁSICA EN MATLAB /OCTAVE

Fundamentos de Programación

TEMA 3: Estructuras de Control: Iterativas

TEMA 4: Programación estructurada

DISEÑO ESTRUCTURADO. Herramientas de representación de algoritmos

LENGUAJE DE PSEUDOCÓDIGO

Estructuras de control

Objetivo específico: Maneja los elementos básicos de algoritmos utilizados para resolver un problema por computadora.

TEMA 4. ESTRUCTURAS DE CONTROL

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

EJEMPLOS Y EJERCICIOS

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Introducción a c++ Introducción a la programación EIS Informática III

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

1. Detalle de los Comandos:

EJEMPLOS Y EJERCICIOS

Estructuras Repetitivas

TEMA 4: ALGORITMOS Y PROGRAMAS

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

ASECOMPU. PORTAL DE REFUERZO ACADEMICO EN PROGRAMACIÓN LISTA DE EJERCICIOS. CICLOS REPETITIVOS Fecha de impresión:

Informática Ingeniería en Electrónica y Automática Industrial

suma de los n>0 primeros números que se lean del teclado. El número n es un dato y es

GUÍA DE TRABAJO N 1 C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 13

ESTRUCTURA DE ASIGNACIÓN

Dobles: Es el caso de la instrucción if-else (punto 1.2).

ESTRUCTURAS DE REPETICIÓN AREA PROGRAMACIÓN 1

UNIVERSIDAD LUTERANA SALVADOREÑA. Docente: ANA LISSETTE GIRÓN

MODULO SOBRE PROGRAMACION MATLAB

EJEMPLOS Y EJERCICIOS

Sentencias iterativas

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Tema: Estructuras de Repetición en C#.

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).

Introducción a la programación: Algoritmos

FACULTAD DE INGENIERIA

1. Escribir un algoritmo que resuelva A-B*((B+C) / (C-C 2 ). Considerar que no es posible la división por 0, detectar este caso y salvar el error.

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Unidad 4. Lógica de Programación. Prof. Eliana Guzmán U.

INTRODUCCIÓN A LA PROGRAMACIÓN. 1º Bachillerato

La resolución de un problema

Unidad 3. Estructuras de control en diagrama de Flujo y pseudocódigo Tema Iteración o Repetitivas (mientras)

Ejercicios de Programación

Estructuras de Repetición: Repita Mientras.

Sentencias de Procesamiento Iterativo: while y do-while

Tema: Estructuras de Repetición en C#.

El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan

Iniciación a La Programación Prof. Carolina Cols

Resolución de problemas mediante algoritmos

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

Sintaxis de PSeInt Tutorial

MÓDULO SOBRE PROGRAMACIÓN MATLAB

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA

Lógica de programación 1

Estructuras de Decisión Simples y Dobles

1. Escriba el siguiente código, compílelo y ejecútelo. Obtiene el resultado esperado? Modifíquelo para que se comporte como debe:

GUÍA DE TRABAJO Tecnología en Sistemas de Información

RECORDAR TIPOS DE DATOS

Capítulo 12 INSTRUCCIONES DE CONTROL ALTERNATIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Unidad 3. Estructuras de control en diagrama de Flujo y pseudocódigo Tema Iteración o Repetitivas (repite - mientras) Juan Pablo Cobá Juárez Pegueros

PRESENTACIÓN DEL ALGORITMO

Al igual que las instrucciones alternativas, las instrucciones repetitivas también se pueden anidar, permitiendo las siguientes combinaciones de

Programación: Estructuras de Control

Introducción a la Informática Estructuras de control repetitivas

Estructuras de Control Selección o Decisión

Introducción a la programación

Transcripción:

Estructuras de Control Lissette Alvarez Abril-Julio, 2004 1 Estructura general de un programa Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de datos para que realice una tarea específica. En general, un programa está formado por dos bloques: 1. Bloque de declaraciones. En este bloque se especifican todos los objetos que utilizará el programa (constantes, variables, tablas, registros, archivos, etc.). Las declaraciones se utilizan en aquellos lenguajes de programación que no tienen declaración explícita de los objetos. Su misión consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y características. 2. Bloque de instrucciones. Lo constituye el conjunto de operaciones y la secuencia de instrucciones que se han de realizar para la obtención de los resultados deseados. Dentro de éste bloque se diferencian tres partes fundamentales: (a) Entrada de datos: conformada por todas las instrucciones que toman datos de un dispositivo externo, almacenándolos en la memoria central para que puedan ser procesados. (b) Proceso: formado por las instrucciones que modifican/procesan los datos, dejando éstos disponibles en la memoria central. (c) Salida de resultados: conjunto de instrucciones que toman los datos finales de la memoria central y los envían a los dispositivos externos. A fin de facilitar los cómputos y la programación, Octave/Matlab tiene declaración explícita de objetos, siendo posible prescindir del bloque de declaraciones. En consecuencia, los algoritmos estudiados en este curso sólo desarrollarán el bloque de instrucciones. Las instrucciones pueden ser: 1

1. básicas (primitivas). Las instrucciones básicas son aquellas que ejecuta el procesador de modo inmediato. Las principales son asignación, entrada y salida: (a) Instrucción de asignación: consiste en calcular/indicar el valor de una expresión y almacenarlo en una variable 1. (b) Instrucción de entrada: toma un dato de un dispositivo de entrada y lo almacena en una variable. (c) Instrucción de salida: toma el valor de una expresión o variable y lo lleva a un dispositivo externo. 2. de control. Este tipo de instrucciones controlan la ejecución de otras instrucciones. Existen varios tipos: (a) Selectivas (alternativas): controlan la ejecución de unas u otras instrucciones según una condición. (b) Saltos: alteran la secuencia normal de ejecución de un programa únicamente en el caso de cumplimiento de una condición asociada a la propia instrucción (c) Iterativas: repiten, un número finito de veces, una o varias instrucciones. 3. compuestas. Son aquellas que el procesador no puede ejecutar directamente, sino que realiza una llamada a un subprograma, subrutina o párrafo. 1.1 Pseudocódigo Es un lenguaje de especificación de algoritmos muy parecido a la mayoría de los actuales lenguajes de programación, lo que facilita su traducción al lenguaje en sí. El pseudocódigo utilizar unas pocas palabras clave o palabras especiales que indican la evolución del algoritmo. El pseudocódigo tiene algunas ventajas sobre otras técnicas de diseño de algoritmos: La modificación es muy sencilla si nos equivocamos en la lógica del programa Es independiente del lenguaje de programación que se utilice: un algoritmo escrito en pseudocódigo es fácilmente traducible a muchos lenguajes de programación. 1 Variable: objeto que almacena valores o datos que pueden cambiar durante la ejecución del programa. Ocupa espacio en memoria, por lo tanto, se localiza en una posición de memoria y tiene asociado un nombre (identificador) que se utiliza en lugar de la posición de memoria. 2

2 Instrucciones Básicas 2.1 Inicio y Fin Delimitan el comienzo y el final de un algoritmo, de la siguiente manera: Inicio. ALGORITMO. fin También, en vez de inicio y fin se puede utilizar empezar y fin, pero siempre quedando clara la intención. En Octave/Matlab las palabras inicio y fin deben ser colocadas a modo de comentarios, para una buena documentación: %Inicio. %Fin 2.2 Asignaciones Cuando se quiere asignar un valor a una variable, la asignación se ajusta al siguiente patrón: variable valor o expresión Ejemplo 2.1. I 3 x 5ˆ(1/2) z y + 1 Observaciones: La parte izquierda de la asignación siempre es una variable. Las expresiones representan operaciones que pueden evaluarse. 3

En Octave/Matlab las asignaciones tienen la misma sintaxis, cambiando el símbolo por =. asignaciones del ejemplo se implementarían de la siguiente manera: Las I = 3; x = 5ˆ(1/2); z = y + 1; 2.3 Lectura Una acción de lectura se ajusta al siguiente patrón: LEER(variable) Ejemplo 2.2. LEER(x) LEER (x, matriza) Observaciones: El argumento de la acción LEER siempre debe ser una variable. Se pueden leer varios datos, colocando la lista de variables separadas por comas. El valor leído se almacena directamente en la variable que se indica. La acción LEER es otra forma de dar valor a una variable. La implementación de la instrucción LEER en Octave/Matlab depende, básicamente, del dispositivo desde donde se leerá la variable. Si el valor es ingresado por el usuario a través del teclado el comando correspondiente es input: x = input( texto ); Entre las comillas debe escribirse un texto que indique claramente al usuario la información que debe introducir. Si el valor debe leerse de un archivo en formato ASCII (por ejemplo) se utiliza el comando load con la sintaxis load nombre archivo. En sesiones posteriores estudiaremos este comando más a fondo. 4

2.4 Escritura Una acción de escritura se ajusta al siguiente patrón: ESCRIBIR(variable o expresión) Ejemplo 2.3. ESCRIBIR(x) ESCRIBIR(x + y) Observaciones: El argumento de la acción ESCRIBIR puede ser una variable o expresión. Se pueden escribir varias expresiones, señalando la lista de expresiones separadas por comas. Los comandos deoctave/matlab que corresponden a la acción ESCRIBIR son, entre otros, disp y fprintf 2. Los ejemplos serían implementados de la forma: disp(x); fprintf( El resultado es %1.5d,x+y); Ejemplo 2.4. Elabore el algoritmo de un programa que convierta grados a radianes. Inicio LEER(grados) radianes grados / 180 ESCRIBIR (radianes) FIN La implementación en Octave/Matlab correspondería a: % Inicio grados = input( Introduzca el valor de los grados ); radianes = grados / 180; disp(radianes); % FIN 2 En la ventana de comandos e Octave/matlab teclee help disp o help fprintf para obtener mayor información acerca de estas instrucciones 5

Problemas Propuestos 2.5. Para los siguientes planteamientos elabore el algoritmo e implemente el programa en Octave/Matlab. 1. Solicite al usuario dos números, A y B, y muestre el resultado de elevar A a B. 2. Calcule la longitud de la circunferencia que tenga por radio un número introducido por el usuario. 3. Intercambie el valor de dos variables numéricas.* 4. Dada una cantidad en grados, determine el número de vueltas y el ángulo correspondiente en el círculo trigonométrico. Grados = 390 Vueltas = 1 Ángulo = 30 5. Dada una cantidad (válida) de días, determine su equivalente en años y meses. Asuma que todos los años tienen 365 días y los meses 30. 6. Dadas las pendientes M1 y M2 y los cortes con el eje Y B1 y B2 de dos rectas L1 y L2 (L1: Y = M1 X + B1; L2: Y = M2 X + B2), determine en punto de intersección entre las dos rectas. Asuma que M1 M2. 7. Determinar el área de la base y el volumen de un cilindro conocidos su radio y su altura. 8. Calcule el área de un triángulo en función de las longitudes de sus lados. (Si a, b, c son las longitudes de los lados de un triángulo, su área viene dada por la expresión A = p (p a) (p b) (p c) donde p = a+b+c 2. 9. Realice la conversión de grados Celsius ( o C) a grados Fahrenheit ( o F ). Cómo sería el algoritmo que realizase la conversión contraria, es decir, de o F a o C?. expresión F = 9 5 C + 32 10. Convertir coordenadas cartesianas en esféricas y viceversa. La fórmula de conversión viene dada por la 6

3 Estructuras de Control Las estructuras de control tienen una finalidad bastante definida: señalar orden en que tienen que sucederse los pasos de un algoritmo. Si un programa muestra un mensaje en la pantalla que pregunta al usuario Desea seguir adelante?, obviamente, de la respuesta del usuario dependerá la siguiente acción del programa. El programador debe escribir el código para las dos posibilidades (sí y no), aunque cuando el programa esté funcionando, sólo se elegirá una. 3.1 Selectivas Las estructuras selectivas se utilizan para tomar decisiones (por eso también se llaman estructuras de decisión o alternativas). El mecanismo de acción evalúa una condición, y, a continuación, en función del resultado, se lleva a cabo una opción u otra. Es importante asentar esta idea: el programa está diseñado para evaluar una condición, y actuar en consecuencia, según que la condición sea verdadera o falsa. 3.1.1 Selección Simple Si... entonces... Se evalúa una condición y si ésta resulta verdadera entonces se ejecuta una o varias instrucciones. La sintaxis básica es: SI (condición) entonces instrucciones F INSI Es importante cerrar el SI (FINSI), ya que, si no se cumple la condición, el programa continua en la instrucción que sigue a FINSI. Ejemplo 3.1. Se desea calcular la raíz cuadrada de un número, de forma que tras leer el número introducido por el usuario, es necesario validarlo, -esto es, verificar que cumple las hipótesis-. En nuestro caso, hay que verificar que el número sea no negativo. INICIO LEER ( numero ) SI (numero 0) entonces 7

raíz = numero FINSI ESCRIBIR (raiz) FIN En Octave/Matlab la instrucción que corresponde a las alternativas simples es IF (condición)... END. En el caso de Octave también es válida la instrucción. IF (condición)... ENDIF. 3.1.2 Selección Doble. Si... entonces... sino.... Lo más frecuente es encontrar situaciones donde si una condición se cumple se ejecuta un grupo de instrucciones, pero si no se cumple, deben ejecutarse otras. La instrucción Si... entonces... Sino... facilita este tipo de programación. La estructura que le corresponde es: SI (condición) entonces instrucciones 1 SINO instrucciones 2 F INSI Con esta estructura puede mejorarse el algoritmo del ejemplo anterior, señalando error si el usuario ingresa valores negativos. Ejemplo 3.2. Se desea calcular la raíz cuadrada de un número... INICIO LEER ( numero ) SI (numero 0) entonces raíz = numero SINO ESCRIBIR ( Error. Debe ingresar valores positivos! ) FINSI ESCRIBIR (raíz) FIN 8

El comando de alternativas dobles para Octave/Matlab IF (condición)... ELSE... END.. En el caso de Octave también es válida la instrucción. IF (condición)... ELSE... ENDIF. 3.1.3 Selección Múltiple También hay programas que nos llevan a considerar alternativas con varias opciones posibles. Hay dos formas de escribir esto en pseudocódigo. La primera de ellas modifica la estructura de selección doble: SI (condición1) entonces intrucciones 1 SI (condicion2) entonces. instrucciones 2 SI (condicion k) entonces F INSI instrucciones k La instrucción IF(condicion1) instrucciones 1 ELSEIF(condicion2) instrucciones 2... ELSEIF(condicion K) instrucciones k END. corresponde a selecciones multiples en Octave/Matlab. podemos intercambiar END por ENDIF. Nuevamente, el ambiente Octave La segunda: OPCION es particularmente útil cuando se elabora un menú. La OPCION toma distintos valores y según la respuesta del usuario ejecuta las acciones bajo dicha opción. LEER (opcion) 9

OPCION (valor 1): intrucciones 1 (valor 2): instrucciones 2 : (valor k): instrucciones k {las acciones que toque} en otro caso instrucciones k + 1 FINOPCION La opción en otro caso no es más que una alternativa en caso que ell usuario seleccione alguna opción no contemplada entre las que se ofrece. Ejemplo 3.3. El usuario ingresa dos valores y se desea elaborar un menu cuyas opciones sean calcular multiplicación, division de ambos números y salir del programa. Asuma que el segundo número siempre es distinto de cero. Inicio ESCRIBIR (Ingrese dos numeros: ) LEER (x, y) ESCRIBIR (Menu de opciones.) ESCRIBIR (1. Multiplicacion.) ESCRIBIR (2. Division.) ESCRIBIR (3. Salir del programa.) LEER(opcion) OPCION 1: mult = x y ESCRIBIR (mult) 2: div = x/y ESCRIBIR (div) 10

3: SALIR en otro caso: ESCRIBIR (Debe escoger una opción entre 1 y 3) FIN OPCION En Octave/Matlab la instrucción que corresponde a OPCION es SWITCH (expresión) case (valor 1) instrucciones 1 case(valor2) instrucciones 2 : otherwise instrucciones end La implementación del ejemplo anterior sería: % Inicio x=input( Por favor ingrese un numero ); y=input( Ingrese un numero distinto de cero ); disp( Menu de opciones ); disp(1. Multiplicación.); disp(2. Division.); disp(3. Salir del programa.); opcion=input(seleccione una opción ); SWITCH (opción) case 1: mult = x y; disp (mult) case 2: div = x/y disp (div) case 3: 11

end otherwise break; disp( Seleccione una opción entre 1 y 3 ) 3.2 Repetitivas Las estructuras repetitivas, que también reciben el nombre de bucle (loop, en inglés) controlan un conjunto de instrucciones que deben repetirse cierto número de veces, mientras se cumple una condición que ha de ser claramente especificada. La condición podrá ser verdadera o falsa, y se comprobará en cada paso o iteración del bucle. Todo bucle consta de tres partes básicas, a saber: Decisión: donde se evalúa la condición y, en caso de ser cierta, se ejecuta el cuerpo del bucle. Cuerpo del bucle: son las instrucciones que se ejecutarán repetidamente, un número determinado de veces, cuando la decisión es verdadera. Salida del bucle: es la condición que indica cuándo terminan las iteraciones. Básicamente, existen tres tipos de estructuras repetitivas: 1. Mientras... (while), 2. Repetir... hasta... (do... until) 3. Desde (for). Una forma de controlar un bucle es mediante una variable llamada contador cuyo valor se incrementa o decrementa en una cantidad constante en cada repetición que se produzca. También, los bucles suelen utilizar otro tipo de variables llamadas acumulador, cuya misión es almacenar una cantidad variable resultante de operaciones sucesivas y repetidas. Es como un contador, con la diferencia que el incremento/decremento es variable. 12

3.2.1 MIENTRAS (while) En este tipo de estructura, el cuerpo del bucle se repite MIENTRAS se cumple una determinada condición. La sintaxis básica es: M IEN T RAS (condición - expresión lógica) hacer instrucciones F INMIENT RAS Ejemplo 3.4. Dado un número entero N calcular la suma de todos los números entre 1 y N.. INICIO LEER(N) I 1; SUMA 0 MIENTRAS (I N) SUMA SUMA + I; I I + 1; FINMIENTRAS FIN Frecuentemente se utiliza el bucle while para validar los datos de entrada de un programa. siguiente: Veamos el Ejemplo 3.5. Solicitar al usuario un valor positivo y validarlo. INICIO LEER(x) Contador 0; MIENTRAS (x < 0) hacer LEER(x) Cont Cont + 1 FINMIENTRAS FIN En los ejemplos las la variable I y Cont son contadores y la variable SUMA es un acumulador. cree Ud. que pasaría si se omitiera la línea I I + 1 en del cuerpo del bucle? Qué Observaciones: 13

Ya que primero se comprueba la condición y luego se ejecuta el cuerpo del bucle, esta construcción implica que el cuerpo del bucle puede realizarse 0, 1 ó más veces. La estructura correspondiente en Octave/Matlab es: while (condición) instrucciones end La implementación de ambos ejemplos queda como sigue: Ejemplo 3.4 %Inicio x=input( Por favor, ingrese el valor de x: ); Cont=0; suma=0; while (x<0) disp( Es necesario que el valor de x sea positivo. ); x=input( Por favor, ingrese el valor de x: ); Cont = Cont+1; end Ejemplo 3.5 %Inicio N=input( Por favor, ingrese un valor para N: ); i=1; suma=0; while (i<=n) suma = suma + i; i = i+1; end 14

3.2.2 DESDE (for) El bucle for permite repetir un conjunto de instrucciones un número determinado de veces, con la peculiaridad que la instrucción incrementa (o decrementa), automáticamente y de uno en uno, la variable que se utiliza como contador. La sintaxis básica es: DESDE < valor inicio > : < valor final > HACER instrucciones F INDESDE o DESDE < valor inicio > : < decremento > : < valor final > HACER instrucciones F INDESDE El incremento es opcional. Si no se coloca, el bucle aumenta de uno en uno -de forma automática- el valor del contador. Si se desea decrementar la variable es necesario colocar el valor del decremento ( 1). Retomando el ejemplo 3.4: INICIO LEER(N) SUMA 0 DESDE I = 1 : N SUMA SUMA + I; FINDESDE FIN Observaciones: El contador siempre se inicializa -automáticamente- en el valor inicial indicado en la estructura. El comando de Octave/Matlab para esta estructura es: for contador = inicio : espaciado : fin end instrucciones 15

El programa en Octave/Matlab para el ejemplo es: %Inicio N=input( Por favor, ingrese un valor para N: ); suma=0; for i=1:n suma = suma + i; end 3 IMPORTANTE: Las estructuras no utilizan ; al final de la línea!!! 3.3 Saltos Otro tipo de instrucciones nos permiten salir de un bucle en ejecución o ir al ciclo siguiente sin terminar el actual. La instrucción break detiene la ejecución de un bucle while y for. Debe escribirse -únicamente- en el cuerpo del bucle. Octave/Matlab ejecuta la instrucción que se encuentra inmediatamente después del bucle y continua el programa. La instrucción continue salta las instrucciones siguientes del bucle -en un paso k, digamos-y continua con la siguiente iteración -paso k+1 del bucle-. Debe escribirse en el cuerpo del bucle y se utiliza sólo en estructuras iterativas. 3 En Octave pueden utilizarse, alternativamente, las palabras endfor, endif y endwhile para cerrar los ciclos for, if y while respectivamente. 16

4 Bucles Anidados Es posible construir un programa donde se aniden los bucles; esto es, ejecutar un bucle dentro de otro, siempre que el bucle interno esté totalmente contenido dentro del bucle externo, si no, el algoritmo no es válido. El caso típico de bucle anidado es la asignación de valores a una matriz. Supongamos que se desea leer los valores de una matriz de orden mxn. (m y n dados por el usuario). El pseudocódigo que resuelve el planteamiento es: INICIO HACER LEER(m, n) HASTA QUE ((m > 0) & (n > 0)) DESDE i = 1 : m HACER DESDE j = 1 : n HACER LEER A(i, j) FINDESDE -j- FINDESDE -i- FIN Y la implementación correspondiente: %Inicio do m=input( Por favor introduzca el número de filas: ); n=input( y el número de columnas: ); until ((m > 0) & (n > 0)) disp( Introduzca los valores por filas. ); for i = 1 : m for j = 1 : n A(i,j)=input( ); end end %Fin 17

5 Problemas propuestos Para los siguientes planteamientos elabore el algoritmo el implemente el programa en Octave/Matlab. 1. Indique si la suma de dos números introducidos por teclado es mayor que un tercer número, también introducido por teclado. 2. Calcule las raíces de un polinomio de segundo grado. 3. Redondee un número al número entero más cercano. 4. Dados n numeros cuente la cantidad de numeros positivos, negativos y cero. 5. Escribir un programa que, tras pedir al usuario un número, le informe de si es par, impar o no entero. 6. Dados tres números reales determine el mayor y el menor de ellos. 7. Dados dos números reales, A y B, determine (sin realizar la operación aritmética) el signo de la suma, el producto y la resta de A+-*B. 8. Determine si un año es o no bisiesto. Son bisiestos los años que sean múltiplos de 4, salvo los que finalizan en 00, que sólo lo serán cuando también sean múltiplos de 400. 9. Determine al valor absoluto de un número ingresado por el usuario. 10. Dos números reales LS y LI que representan los límites superior e inferior de un intervalo, respectivamente. Dado un número n determine si dicho número pertenece al intervalo. En caso contrario, indique si está a la derecha o izquierda del intervalo. 11. Pedir un número al usuario y mostrar su tabla de multiplicar del 1 al 10. 12. Mostrar los mil primeros números pares. (utilizando while y for) 13. Escribir un programa que calcule las N primeras fracciones del tipo 1 i, i = 1, 2,..., N, tras pedir N al usuario. 14. Escribir un programa que calcule los cuadrados de los números enteros, hasta que el cuadrado sea mayor o igual que 2100. 15. Evalúe las siguientes expresiones, donde i y n son dados por el usuario: (a) n 1 i i=1 18

(b) (c) (d) (e) (f) (g) (h) n x2 4 i=1 n i=1 ( n 3x 2 2x+8 x 2 16 1 n+i i=1 n i=1 n i=1 n i=1 ( log ) log (n) ( 2 i+1 2 i i+1 i+1 i 1 ( 1) i+1 1 2 i n n (n + 1) i=1 ) i ) 16. Calcule el factorial de un número. 17. Dados dos números, escriba su multiplicación y luego pregunte si quiere repetir el proceso. 18. Lea un vector de orden n y calcule su norma euclídea. La norma euclídea de un vector x = (x 1, x 2,...x n ) viene dada por la fórmula (x 1 ) 2 + (x 2 ) 2 + + (x n ) 2 19. Convertir un número entero dado en base 10 a base binaria. 20. Calcule los n primeros números de la serie Fibonacci. La serie de Fibonacci se genera de la siguiente manera: F 0 = 1 F 1 = 1 F n = F n 1 + F n 2 ; n 2 21. Para una matriz A, cuadrada, de 10 x 10 elementos, muestre los siguientes resultados: (a) Número de elementos distintos de cero. (b) La suma de los elementos situados encima de la diagonal principal, es decir, los elementos A(i, j) tales que i < j. (c) El producto de los elementos de la diagonal principal (A(1, 1) A(2, 2) A(10, 10)). 22. Dada una secuencia de N números enteros determine: 19

(a) Cantidad de números positivos (b) Suma de los números positivos (c) Promedio de los números positivos (d) Cantidad de números negativos (e) Suma de los números negativos (f) Promedio de números negativos 23. Dado un número indique si es o no primo. 24. Dada una matriz de orden mxn determine (a) Suma de los elementos de cada fila. (b) Suma de los elementos de cada columna. 25. Se dice que un vector v = (v 1, v 2,..., v n ) es una mochila perfecta si cada elemento del vector es mayor que la suma de todos los anteriores. Lea un vector de orden n e indique si es o no una mochila perfecta. 20