Algoritmos y Estructuras de Programación en MATLAB

Resumen completo de Algoritmos y Estructuras de Programación: fases de desarrollo, diagramas ANSI, if-else, switch, bucles for/while y funciones en MATLAB.

Fundamentos de Programación · Universidad Politécnica de Cataluña · Grado en Ingeniería Informática · 1.º curso

34 páginas · 5 temas · 11 flashcards · 20 preguntas tipo test

Índice

  1. Metodología de desarrollo de programas y concepto de algoritmo · p. 3-8
  2. Representación de algoritmos y estructura secuencial · p. 8-12
  3. Estructuras condicionales y de selección múltiple · p. 12-19
  4. Estructuras iterativas e interrupción de ciclos · p. 19-25
  5. Modularización y funciones en MATLAB · p. 25-33

Metodología de desarrollo de programas y concepto de algoritmo

Flashcards

¿Cuáles son las tres propiedades obligatorias que definen a un algoritmo?
Debe ser preciso (pasos sin ambigüedad y ordenados), definido (mismo resultado ante iguales entradas) y finito (número delimitado de pasos).
¿Por qué un error de lógica resulta más peligroso y difícil de subsanar que uno de compilación?
Porque el compilador no genera avisos de parada al ser la sintaxis válida, obligando al programador a revisar el método conceptual para descubrir por qué la salida calculada no coincide con la esperada.
¿Qué elementos integran los tres componentes esenciales de cualquier algoritmo?
La entrada (datos o recursos de partida), el proceso (secuencia de operaciones y transformaciones) y la salida (resultados finales producidos).

Preguntas tipo test

  1. ¿Cuál es la fase en la que se descompone el problema antes de escribir código?
    • a) Compilación
    • b) Edición de código
    • c) Planificación en papel
    • d) Documentación

    Respuesta: c) Planificación en papel. La planificación en papel permite diseñar la secuencia de etapas y algoritmos antes de codificar.

  2. ¿Qué propiedad asegura que un algoritmo arroje siempre el mismo resultado con los mismos datos?
    • a) Finitud
    • b) Definición
    • c) Precisión
    • d) Modularidad

    Respuesta: b) Definición. La propiedad de ser definido garantiza que al repetirse con idénticas entradas se obtiene idéntica salida.

  3. ¿Qué manifestación caracteriza a un error de lógica algorítmica?
    • a) Fallo de sintaxis léxica
    • b) Resultados erróneos sin aviso
    • c) El editor borra el texto
    • d) El programa no compila

    Respuesta: b) Resultados erróneos sin aviso. El programa funciona y se ejecuta normalmente, pero arroja salidas incorrectas por un fallo conceptual.

Representación de algoritmos y estructura secuencial

Flashcards

¿Qué símbolo estandarizado ANSI se utiliza para representar la lectura por teclado o la escritura de datos?
El paralelogramo, empleado tanto para operaciones de entrada como de salida de información.
¿Cuál es la principal limitación técnica de los diagramas de flujo frente al pseudocódigo en programas extensos?
Su escasa escalabilidad espacial, ya que abarcan demasiado espacio sobre el papel o la pantalla en comparación con la compacidad del texto.

Preguntas tipo test

  1. ¿Qué figura geométrica ANSI representa una operación de cálculo o asignación?
    • a) Rombo
    • b) Óvalo
    • c) Rectángulo
    • d) Paralelogramo

    Respuesta: c) Rectángulo. El rectángulo denota procesamiento o cálculo, mientras que el paralelogramo indica entrada/salida y el rombo decisión.

  2. ¿Qué característica define esencialmente a una estructura algorítmica secuencial?
    • a) Presenta caminos alternativos según condiciones
    • b) Requiere evaluación condicional en cada bloque
    • c) Ejecuta pasos uno tras otro sin bifurcaciones
    • d) Repite bloques mediante ciclos iterativos

    Respuesta: c) Ejecuta pasos uno tras otro sin bifurcaciones. En la estructura secuencial cada instrucción se procesa inmediatamente después de la anterior en orden lineal estricto.

  3. ¿Cuál de las siguientes es una ventaja destacada del pseudocódigo?
    • a) Ocupa menos espacio y es más compacto
    • b) Ejecuta directamente instrucciones en el procesador
    • c) Sigue una estricta normativa ANSI gráfica
    • d) Evita el uso de variables numéricas

    Respuesta: a) Ocupa menos espacio y es más compacto. El pseudocódigo resulta mucho más compacto y rápido de redactar o modificar que un diagrama de flujo.

Estructuras condicionales y de selección múltiple

Flashcards

En el cálculo de raíces cuadráticas con coeficientes A, B y C, ¿cuál es la condición que define si las soluciones pertenecen al conjunto de los números reales?
La condición lógica es que el discriminante sea mayor o igual a cero (D e 0, calculado como B^2 - 4AC e 0).
¿Qué función cumple la cláusula otherwise dentro de una sentencia switch en MATLAB?
Ejecuta un bloque de instrucciones de reserva o por defecto únicamente cuando el valor evaluado en la expresión no coincide con ninguno de los casos case declarados.

Preguntas tipo test

  1. ¿Cuántas entradas y salidas conceptuales posee un bloque de control condicional estructurado?
    • a) Una única entrada y una única salida
    • b) Múltiples entradas y una única salida
    • c) Tantas salidas como ramas case existan
    • d) Una entrada y dos salidas independientes

    Respuesta: a) Una única entrada y una única salida. Todo bloque de control bien estructurado dispone conceptualmente de un único punto de entrada y una única salida común.

  2. ¿Cómo se comporta la estructura if-elseif-else al encontrar una condición verdadera?
    • a) Requiere una instrucción break para finalizar
    • b) Ejecuta dicho bloque y abandona la estructura
    • c) Evalúa todas las condiciones intermedias restantes
    • d) Ejecuta además obligatoriamente la cláusula else

    Respuesta: b) Ejecuta dicho bloque y abandona la estructura. Al cumplirse un predicado, se ejecutan sus instrucciones subordinadas y el control salta directamente al final de la estructura.

  3. ¿Qué sucede en MATLAB tras ejecutar las sentencias de un case coincidente dentro de un switch?
    • a) Se produce un error si no hay break
    • b) Se evalúan en cascada los casos inferiores
    • c) Se ejecuta siempre la cláusula otherwise
    • d) Se sale inmediatamente sin requerir break

    Respuesta: d) Se sale inmediatamente sin requerir break. MATLAB finaliza la ejecución del switch de forma automática tras procesar el primer caso válido sin necesitar la cláusula break.

Estructuras iterativas e interrupción de ciclos

Flashcards

¿En qué se diferencian conceptualmente las estructuras for y while respecto a la cantidad de iteraciones?
La estructura for define a priori el número de repeticiones mediante la longitud de su vector, mientras que while supedita las iteraciones a una condición lógica dinámica cuyo número de repeticiones no se conoce de antemano.
¿Cuál es la diferencia fundamental entre el efecto de break y continue al presentarse una condición de ruptura?
break aborta de manera definitiva el ciclo transfiriendo el control fuera de la estructura, mientras que continue interrumpe únicamente la iteración en curso y da paso a la siguiente evaluación o incremento.

Preguntas tipo test

  1. ¿Qué ocurre si el vector asociado a la variable de control for tiene longitud N = 0?
    • a) Se ejecuta al menos una iteración
    • b) El cuerpo no se ejecuta ninguna vez
    • c) Se produce un ciclo infinito
    • d) El bucle produce un error sintáctico

    Respuesta: b) El cuerpo no se ejecuta ninguna vez. Al no contener elementos el vector de iteración, el cuerpo del ciclo for se omite por completo.

  2. ¿Qué acción realiza la instrucción continue al ejecutarse dentro de un bucle?
    • a) Aborta definitivamente todo el bucle
    • b) Detiene temporalmente el programa
    • c) Finaliza la iteración actual e inicia la siguiente
    • d) Reinicia el bucle desde el principio

    Respuesta: c) Finaliza la iteración actual e inicia la siguiente. continue interrumpe las instrucciones restantes de la pasada actual y salta de inmediato a la siguiente iteración.

  3. ¿Qué estado conserva el índice de un bucle for tras salir mediante break?
    • a) Conserva el último valor que tomó
    • b) Se destruye de la memoria
    • c) Regresa al valor del primer elemento
    • d) Pasa a valer indefinido o nulo

    Respuesta: a) Conserva el último valor que tomó. Al interrumpir for con break, la variable de control retiene fuera del ciclo el último valor alcanzado.

Modularización y funciones en MATLAB

Flashcards

¿Qué función cumple la sentencia return dentro del cuerpo de una M-función?
Provoca el abandono inmediato de la función y devuelve el control al punto de llamada antes de alcanzar la última instrucción.
¿Por qué a los parámetros de entrada y salida se les denomina variables mudas?
Porque actúan como meros símbolos o marcadores de posición para definir las operaciones matemáticas y no retienen valores fijos fuera de la ejecución local.

Preguntas tipo test

  1. ¿Qué ventaja aporta descomponer un algoritmo monolítico en funciones externas?
    • a) Prescindir del directorio actual de trabajo
    • b) Acelerar automáticamente el hardware disponible
    • c) Eliminar la necesidad de definir variables
    • d) Reutilizar código y facilitar su depuración

    Respuesta: d) Reutilizar código y facilitar su depuración. La modularización permite fragmentar problemas complejos en bloques reutilizables y más fáciles de revisar y corregir.

  2. ¿Dónde debe residir una M-función para poder invocarse desde la línea de comandos?
    • a) En la memoria caché del procesador
    • b) En un servidor de red externo
    • c) En un fichero de texto plano .txt
    • d) En el directorio actual de trabajo

    Respuesta: d) En el directorio actual de trabajo. Para que MATLAB localice el fichero .m correspondiente al nombre de la función, este debe estar en el directorio de trabajo activo.

  3. ¿Qué ocurre si una función interna define una variable con el mismo nombre que una del workspace?
    • a) Se produce un error de sintaxis fatal
    • b) La variable externa se borra automáticamente
    • c) La función adopta el valor exterior obligatoriamente
    • d) Permanecen aisladas en posiciones distintas de memoria

    Respuesta: d) Permanecen aisladas en posiciones distintas de memoria. Las funciones poseen un espacio de trabajo local independiente; sus variables locales no colisionan con las del workspace principal.

Y 0 flashcards y 5 preguntas más en el documento.

Texto del documento

APUNTES FUNDAMENTOS DE PROGRAMACIÓN Grado en Ingeniería Informática Universidad Politécnica de Cataluña AprenAI 2026-2027 Resumen completo de Algoritmos y Estructuras de Programación: fases de desarrollo, diagramas ANSI, if-else, switch, bucles for/while y funciones en MATLAB.

APREN.AI Índice 1 Metodología de desarrollo de programas y concepto de algoritmo Fases del desarrollo de un programa Naturaleza de los errores de programación Concepto de algoritmo y propiedades obligatorias Estructura elemental: entrada, proceso y salida 2 Representación de algoritmos y estructura secuencial Herramientas de representación: diagramas de flujo y pseudocódigo La estructura secuencial Ejemplo de aplicación: conversión métrica 3 Estructuras condicionales y de selección múltiple Estructura condicional simple (if) Estructura condicional doble (if-else) Estructuras condicionales múltiples (if-elseif-else) y anidamiento Estructura de selección múltiple (switch) 4 Estructuras iterativas e interrupción de ciclos Estructura repetitiva indexada (for) Estructura repetitiva condicional (while) Interrupción y alteración del flujo de iteración 5 Modularización y funciones en MATLAB Principios de modularización y tipos de funciones Estructura canónica y almacenamiento de una función externa Control de flujo, espacio de trabajo y variables locales 6 Formulario Metodología y algoritmos Estructuras condicionales y selección múltiple Estructuras iterativas y control de ciclos Modularización y funciones en MATLAB Errores típicos Soluciones de las preguntas de repaso Estos apuntes pueden contener errores u omisiones.

Son un material de apoyo y no sustituyen al temario oficial ni al profesorado: contrasta la información importante. Algoritmos y Estructuras de Programación en MATLAB 1 1 Metodología de desarrollo de programas y concepto de algoritmo AL ACABAR SABRÁS Diferenciar las seis etapas secuenciales del desarrollo de software desde el análisis hasta la documentación. Distinguir con claridad los errores de sintaxis o compilación frente a los errores de lógica algorítmica. Comprobar si un procedimiento cumple las tres propiedades obligatorias de un algoritmo: precisión, definición y finitud. Identificar los componentes de entrada, proceso y salida en un algoritmo determinado.

PIÉNSALO ANTES DE LEER 1 ¿Por qué un programa de ordenador puede compilar y ejecutarse sin mostrar ningún error, pero fallar estrepitosamente en su cometido? La resolución de problemas computacionales requiere transformar necesidades humanas en instrucciones ejecutables por una máquina. Los ordenadores solo ejecutan directamente operaciones elementales como sumar, comparar valores o transferir datos. Por ello, la programación exige descomponer un método general en pasos elementales perfectamente orquestados.

ESQUEMA Estructura general de Algoritmos y Programación Metodología y algoritmos Fases, definición y componentes Representación y secuencia Diagramas de flujo y pseudocódigo Estructuras condicionales Bifurcaciones y selección múltiple Estructuras iterativas Bucles for y while Modularización Funciones y subprogramas Algoritmos y Estructuras de Programación en MATLAB 2 Fases del desarrollo de un programa La creación de un programa sigue un ciclo ordenado compuesto por seis fases esenciales: PARA RECORDARLO El trabajo previo de planificación sobre papel previene fallos estructurales graves.

Intentar programar directamente en el ordenador sin haber diseñado la secuencia de pasos multiplica los errores de diseño. COMPRUEBA 2 ¿Por qué se debe volver a la fase de planificación en papel si se detecta un fallo de lógica en el programa? Naturaleza de los errores de programación Durante la puesta a punto de un programa surgen dos categorías fundamentales de fallos que exigen tratamientos distintos: Tipo de error Origen Detección Forma de resolución Error de compilación / sintaxis Incumplimiento de las reglas gramaticales del lenguaje (palabras mal escritas, signos omitidos). El compilador o intérprete detiene el proceso e indica la línea del fallo.

Corregir el texto en el código fuente y volver a compilar. Error de lógica algorítmica Defecto en el razonamiento o en el método de resolución planteado. Muy difícil de detectar; el programa se ejecuta sin avisos pero devuelve datos incorrectos. Rediseñar el algoritmo volviendo a la fase de planificación en papel. Análisis del problema: consiste en comprender con precisión en qué consiste el problema planteado y definir con exactitud los resultados esperados. 1 Planificación en papel: consiste en descomponer la solución en etapas más simples antes de tocar el teclado. En esta fase se determinan los datos de partida, los resultados esperados y los pasos algorítmicos necesarios.

2 Edición del código fuente: consiste en escribir las instrucciones mediante un editor de texto sin formato, empleando la sintaxis propia de un lenguaje de programación y guardando el archivo en disco duro. 3 Compilación y ejecución: consiste en traducir el programa fuente a lenguaje máquina para que el ordenador lo ejecute. 4 Corrección de errores: consiste en depurar las fallas detectadas, modificando el código fuente y repitiendo la edición y ejecución tantas veces como sea necesario.

5 Documentación: consiste en revisar el código fuente una vez operativo para limpiarlo, suprimir operaciones innecesarias e incluir líneas de comentarios con descripciones del objetivo del programa y de sus variables. 6 Algoritmos y Estructuras de Programación en MATLAB 3 ERROR FRECUENTE Creer que un programa está libre de fallos solo porque compila y ejecuta sin lanzar mensajes de alerta. Un error de lógica permite que el programa funcione formalmente, pero produce resultados totalmente equivocados al aplicar un razonamiento defectuoso. COMPRUEBA 3 ¿Qué diferencia principal existe en la detección de un fallo de sintaxis frente a uno de lógica?

Concepto de algoritmo y propiedades obligatorias No todos los métodos de resolución son aptos para un ordenador. Para que una máquina pueda ejecutar una solución, el procedimiento debe formalizarse como un algoritmo. DEFINICIÓN Un algoritmo es un método para resolver un problema mediante una secuencia de pasos bien definidos, ordenados y finitos. Todo algoritmo válido debe satisfacer estrictamente tres propiedades obligatorias: Preciso: sus pasos están completamente definidos, carecen de ambigüedad y siguen un orden estricto de ejecución. Definido: si se ejecuta varias veces partiendo de los mismos datos iniciales, produce exactamente el mismo resultado en cada ocasión.

Finito: consta de un número determinado de pasos y culmina tras un tiempo delimitado. Para su ejecución material, se debe contar con las herramientas adecuadas para realizar cada acción; de no ser así, esa acción debe descomponerse a su vez en pasos elementales. Un programa de ordenador consiste precisamente en la transcripción de un algoritmo en una sucesión de órdenes codificadas en un lenguaje formal comprensible por la máquina.

PROCESO Componentes esenciales de un algoritmo 1 Entrada Datos iniciales requeridos 2 Proceso Operaciones y transformaciones ordenadas 3 Salida Resultados finales obtenidos Estructura elemental: entrada, proceso y salida Tanto los algoritmos como los programas de ordenador articulan su funcionamiento en torno a tres componentes canónicos: Entrada (input): información o elementos iniciales necesarios para que el algoritmo pueda comenzar a operar. Algoritmos y Estructuras de Programación en MATLAB 4 Proceso: conjunto ordenado de instrucciones, operaciones y transformaciones que se ejecutan sobre los datos de entrada.

Salida (output): conjunto final de resultados obtenidos tras concluir el procesamiento. EJEMPLO Algoritmo para preparar una taza de té: Entrada: tetera, taza, bolsa de té. Salida: taza de té. Proceso: En las secciones siguientes se estudiarán las técnicas para formalizar gráficamente estos pasos (véase «Representación de algoritmos y estructura secuencial») y las estructuras de control para tomar decisiones o repetir bloques de instrucciones (véase «Estructuras condicionales y de selección múltiple» y véase «Estructuras iterativas e interrupción de ciclos»).

COMPRUEBA 4 ¿En qué componente esencial (entrada, proceso o salida) se encuadra la instrucción «esperar a que hierva el agua» en el ejemplo del té? Tomar la tetera. 1 Llenarla de agua. 2 Encender el fuego. 3 Poner la tetera en el fuego. 4 Esperar a que hierva el agua. 5 Tomar la bolsa de té. 6 Introducirla en la tetera. 7 Esperar 1 minuto. 8 Echar el té en la taza. 9 Algoritmos y Estructuras de Programación en MATLAB 5 IDEAS CLAVE El ciclo de creación de software consta de seis fases: análisis, planificación en papel, edición del código, compilación y ejecución, corrección de errores y documentación.

Planificar la solución en papel antes de codificar resulta indispensable para estructurar la descomposición de problemas complejos. Los errores de lógica algorítmica son los más complejos de detectar porque el programa se ejecuta sin advertencias del sistema, pero arroja resultados erróneos. Un algoritmo es un método de resolución compuesto por una secuencia de pasos que deben ser obligatoriamente precisos, definidos y finitos. Todo algoritmo y programa se vertebra en tres componentes universales: entrada de datos, proceso de transformación y salida de resultados. COMPRUEBA LO QUE HAS APRENDIDO 5. ¿Cuáles son las tres propiedades obligatorias que definen a un algoritmo? 6.

¿Por qué un error de lógica resulta más peligroso y difícil de subsanar que uno de compilación? 7. ¿Qué elementos integran los tres componentes esenciales de cualquier algoritmo? Test Rodea la respuesta correcta. Las soluciones están al final. 8. ¿Cuál es la fase en la que se descompone el problema antes de escribir código? 9. ¿Qué propiedad asegura que un algoritmo arroje siempre el mismo resultado con los mismos datos? 10. ¿Qué manifestación caracteriza a un error de lógica algorítmica? 11. ¿Cuál es la última fase formal en el desarrollo de un programa según la metodología estándar?

Compilación a) Edición de código b) Planificación en papel c) Documentación d) Finitud a) Definición b) Precisión c) Modularidad d) Fallo de sintaxis léxica a) Resultados erróneos sin aviso b) El editor borra el texto c) El programa no compila d) Documentación a) Corrección de errores b) Ejecución c) Compilación d) Algoritmos y Estructuras de Programación en MATLAB 6 2 Representación de algoritmos y estructura secuencial AL ACABAR SABRÁS Diferenciar las ventajas e inconvenientes de los diagramas de flujo y el pseudocódigo. Identificar los símbolos ANSI normalizados según su significado operativo. Modelar problemas sencillos mediante estructuras puramente secuenciales.

PIÉNSALO ANTES DE LEER 12 ¿Por qué los programadores no suelen dibujar diagramas de flujo para planificar aplicaciones completas de software profesional? Herramientas de representación: diagramas de flujo y pseudocódigo Para describir la lógica de resolución de un problema antes de su codificación se emplean dos herramientas principales: el diagrama de flujo y el pseudocódigo. Cada una ofrece un nivel distinto de abstracción gráfica y textual. DEFINICIÓN Un diagrama de flujo es una representación gráfica que modela paso a paso las acciones de un algoritmo mediante figuras geométricas conectadas por líneas con flechas orientadas.

Para estandarizar el significado de las figuras, se utiliza la norma del ANSI (American National Standards Institute). Las líneas orientadas indican la secuencia cronológica de control, mientras que cada bloque cumple un cometido unívoco: Elemento gráfico Figura ANSI Significado operativo Terminal Óvalo o rectángulo redondeado Punto de inicio o fin del algoritmo. Entrada / Salida Paralelogramo Operaciones de lectura de datos externos o escritura/impresión de resultados. Proceso Rectángulo Ejecución de cálculos matemáticos, transformaciones o asignación de variables. Decisión Rombo Bifurcación lógica sujeta a una condición con ramas de salida alternativas (Sí/No).

Frente a la notación gráfica, el pseudocódigo constituye una descripción textual estructurada que imita la sintaxis de un lenguaje de programación, pero empleando términos más próximos al lenguaje natural y prescindiendo de una sintaxis rígida. A diferencia de los diagramas, no responde a un Algoritmos y Estructuras de Programación en MATLAB 7 estándar cerrado universal. Para las operaciones de entrada y salida se suelen emplear palabras reservadas convencionales como LEER (adquisición de datos por teclado o archivo) e IMPRIMIR (emisión de resultados por pantalla o soporte externo).

Criterio Diagrama de flujo Pseudocódigo Formato Gráfico bidimensional normalizado Textual lineal Escalabilidad Baja; consume demasiado espacio visual Alta; formato compacto y conciso Complejidad de edición Laborioso ante algoritmos extensos Sencillo de redactar y modificar Traslado al código real Intermedio Directo e inmediato a cualquier sintaxis ERROR FRECUENTE Intentar representar algoritmos extensos o con múltiples bifurcaciones mediante diagramas de flujo. En problemas de envergadura, el esquema gráfico resulta inmanejable y poco escalable debido a la gran cantidad de espacio físico que demanda; en tales circunstancias, debe recurrirse siempre al pseudocódigo.

COMPRUEBA 13 ¿Por qué el pseudocódigo resulta más ventajoso que el diagrama de flujo al diseñar algoritmos con expresiones matemáticas complejas? La estructura secuencial La estructura secuencial es la forma de control más básica. En ella, las instrucciones se ejecutan de forma estrictamente lineal, una tras otra, exactamente en el orden cronológico en que fueron escritas. No existen desviaciones condicionales, retornos ni bifurcaciones. Algoritmos y Estructuras de Programación en MATLAB 8 Esquema de la estructura secuencial en pseudocódigo y diagrama de flujo. PROCESO Flujo secuencial de instrucciones 1 Instrucción inicial Comienza la ejecución secuencial.

2 Instrucción inter media Se procesa inmediatamente después. 3 Instrucción final Termina la secuencia unilineal. En la representación gráfica secuencial, el flujo de control ingresa por la parte superior de cada bloque y sale por la base hacia la instrucción sucesiva mediante un único canal sin divisiones. Ejemplo de aplicación: conversión métrica Consideremos un algoritmo secuencial destinado a transformar una longitud ingresada en centímetros a sus equivalentes en pulgadas y pies.

Las equivalencias de medida son exactas: 1 pulgada = 2.54 cm 1 pie = 12 pulgadas En pseudocódigo, la secuencia de lectura, procesamiento aritmético e impresión se formula ordenadamente: Inicio 1 IMPRIMIR 'Introduce la altura en centimetros: ' 2 LEER: altura 3 CALCULAR pulgadas = altura / 2.54 4 CALCULAR pies = pulgadas / 12 5 IMPRIMIR 'La altura en pulgadas es: ', pulgadas 6 Algoritmos y Estructuras de Programación en MATLAB 9 La traducción directa de estas acciones a diagrama de flujo ilustra la disposición unilineal de los símbolos ANSI correspondientes: Diagrama de flujo de conversión de centímetros a pulgadas y pies.

COMPRUEBA 14 En el algoritmo de conversión métrica, ¿por qué el cálculo de pies debe figurar necesariamente después del cálculo de pulgadas? IDEAS CLAVE Los diagramas de flujo representan algoritmos mediante símbolos gráficos ANSI conectados por líneas direccionales. El pseudocódigo describe la lógica algorítmica de forma textual compacta, flexible y sin la rigidez de un lenguaje formal. En la simbología ANSI, el óvalo marca inicio/fin, el paralelogramo entrada/salida, el rectángulo proceso y el rombo decisión. Los diagramas de flujo carecen de escalabilidad para programas extensos debido al excesivo espacio físico que requieren.

Una estructura secuencial ejecuta las instrucciones una detrás de otra sin saltos, bifurcaciones ni evaluaciones lógicas. COMPRUEBA LO QUE HAS APRENDIDO 15. ¿Qué símbolo estandarizado ANSI se utiliza para representar la lectura por teclado o la escritura de datos? 16. ¿Cuál es la principal limitación técnica de los diagramas de flujo frente al pseudocódigo en programas extensos? IMPRIMIR 'La altura en pies es : ', pies 7 Fin 8 Algoritmos y Estructuras de Programación en MATLAB 10 Test Rodea la respuesta correcta. Las soluciones están al final. 17. ¿Qué figura geométrica ANSI representa una operación de cálculo o asignación? 18.

¿Qué característica define esencialmente a una estructura algorítmica secuencial? 19. ¿Cuál de las siguientes es una ventaja destacada del pseudocódigo? 20. En el ejemplo métrico analizado, ¿cuál es el cálculo para obtener pies a partir de pulgadas? 3 Estructuras condicionales y de selección múltiple AL ACABAR SABRÁS Diseñar algoritmos que utilicen estructuras condicionales simples, dobles y múltiples. Implementar la discriminación entre raíces reales y complejas en una ecuación cuadrática. Construir estructuras switch en MATLAB gestionando casos individuales, conjuntos y cláusula otherwise.

PIÉNSALO ANTES DE LEER 21 ¿Por qué un lenguaje de programación estructurada no permite bifurcaciones con múltiples salidas independientes? En un programa lineal, las instrucciones se procesan exclusivamente según el orden en el que están escritas. Para dotar al algoritmo de capacidad de adaptación frente a diferentes datos de entrada, se emplean las estructuras de control condicionales o bifurcaciones.

Estas herramientas permiten Rombo a) Óvalo b) Rectángulo c) Paralelogramo d) Presenta caminos alternativos según condiciones a) Requiere evaluación condicional en cada bloque b) Ejecuta pasos uno tras otro sin bifurcaciones c) Repite bloques mediante ciclos iterativos d) Ocupa menos espacio y es más compacto a) Ejecuta directamente instrucciones en el procesador b) Sigue una estricta normativa ANSI gráfica c) Evita el uso de variables numéricas d) pulgadas / 2.54 a) pulgadas / 12 b) pulgadas * 12 c) altura / 12 d) Algoritmos y Estructuras de Programación en MATLAB 11 desviar el flujo de cómputo hacia conjuntos específicos de instrucciones según el valor de verdad (verdadero o falso) que adopte una expresión lógica.

Como principio arquitectónico básico de la programación estructurada, toda estructura de control posee de forma conceptual una única entrada y una única salida. Una vez ejecutada la rama seleccionada, las trayectorias convergen en un único punto para proseguir secuencialmente. Estructura condicional simple (if) La estructura condicional simple representa la bifurcación unidireccional más elemental. En este esquema, un bloque de instrucciones se ejecuta únicamente si una condición lógica resulta verdadera. Si dicha condición se evalúa como falsa, el programa ignora esas sentencias y continúa de inmediato con la instrucción posterior.

DEFINICIÓN Un condicional simple (if) evalúa un predicado booleano y condiciona la ejecución de un bloque de código subordinado sin ofrecer una ruta alternativa explícita en caso de falsedad. Un caso de aplicación habitual consiste en la asignación por tramos de una función matemática donde se establece un valor por defecto. Por ejemplo, al evaluar la función partida dada por para (específicamente con no positivo, es decir en ) o más concretamente si (con ) y si , se puede preasignar y activar la reasignación solo bajo la condición mediante un bloque if . Estructura condicional doble (if-else) Cuando el problema impone dos alternativas mutuamente excluyentes, se emplea el condicional doble.

Si la evaluación lógica es verdadera, se ejecuta el primer bloque de instrucciones; si resulta falsa, el control pasa al bloque alternativo definido tras la cláusula else . La sintaxis general en MATLAB se articula del siguiente modo: if condición bloque_1 else bloque_2 end Un ejemplo fundamental es la resolución de las raíces de una ecuación cuadrática de la forma . El comportamiento de las soluciones depende directamente del signo del discriminante, definido mediante la relación: Si se cumple como (es decir, en el semiplano positivo o nulo, escrito como ), o de forma rigurosa si satisface , se obtienen soluciones reales.

En cambio, si resulta estrictamente negativo, las raíces corresponden a un par de complejos conjugados con parte f(x) = 0 x = 0 x = 0 x = 0 x = 0 x = 0 f(x) = 0 x = 0 x = 0 f(x) = x2 x > 0 f = 0 f = x2 x > 0 Ax + 2 Bx + C = 0 D = B 2 4AC D 0 D 0 D 0 D 0 D 0 D 0 D 0 Algoritmos y Estructuras de Programación en MATLAB 12 real y parte imaginaria asociada a , calculada numéricamente con sobre el valor positivo . Diagrama de flujo para calcular raíces reales o complejas cuadráticas. COMPRUEBA 22 ¿Por qué se calcula la raíz cuadrada de -D y no directamente de D cuando la condición D 0 resulta falsa?

Estructuras condicionales múltiples (if-elseif-else) y anidamiento Para abordar decisiones con más de dos alternativas encadenadas, se incorporan cláusulas intermedias elseif . El intérprete evalúa las condiciones de forma estrictamente secuencial de arriba abajo: en el instante en que una condición resulta verdadera, se ejecuta su bloque asociado y se abandona de forma inmediata toda la estructura sin verificar los predicados restantes. Re = B/(2A) Im = 0 0 0 D Algoritmos y Estructuras de Programación en MATLAB 13 Esquema sintáctico y organigrama del condicional múltiple if-elseif-else.

Si ninguna de las condiciones precedentes se satisface, se procesan las instrucciones englobadas en el bloque opcional else . Un caso clásico es la determinación del signo de un número : evaluar secuencialmente si (positivo), (negativo) y, por descarte final en el else , identificarlo como nulo. Asimismo, los condicionales admiten anidamiento: situar una estructura de decisión completa dentro del bloque interno de otra. Al implementar condicionales anidados, debe evitarse el solapamiento y garantizarse que cada if cuente con su correspondiente palabra de cierre end . Este anidamiento resulta esencial en operaciones aritméticas condicionales.

Por ejemplo, al evaluar una división , si se detecta que el divisor satisface , un condicional interno permite discriminar con precisión si el dividendo también se anula ( , produciendo una indeterminación tratada como NaN ) o si no lo es (originando un valor infinito representado por Inf ). ERROR FRECUENTE En MATLAB, escribir por error la cláusula intermedia separada como else if en lugar de la palabra compacta elseif genera un nuevo bloque condicional anidado. Esto provoca un fallo de sintaxis por falta de cierres, pues el intérprete requerirá un comando end adicional para cada bloque abierto indebidamente.

COMPRUEBA 23 ¿Qué ocurre en una estructura if-elseif-else si dos condiciones distintas son simultáneamente verdaderas? X X > 0 X < 0 a/b b = 0 a = 0 Algoritmos y Estructuras de Programación en MATLAB 14 Estructura de selección múltiple (switch) La sentencia switch ofrece un mecanismo claro y legible para dirigir el flujo hacia múltiples ramificaciones basándose en el valor discreto exacto que adopta una única expresión de prueba. Sintaxis y bifurcación multifurcada de la sentencia switch.

La sintaxis se articula enfrentando la expresión contra sucesivos casos rotulados con case : switch expresión case valor_1 instrucciones_1 case valor_2 instrucciones_2 case {val_A, val_B} instrucciones_conjunto otherwise instrucciones_defecto end Entre sus características distintivas en MATLAB destacan: Valores individuales o listas: Cada bloque case puede comparar frente a un único valor escalar o frente a una colección de alternativas agrupadas entre llaves {val_1, val_2, ...} . Salida automática sin break: A diferencia de otros lenguajes como C, en MATLAB la ejecución abandona la estructura en cuanto finaliza el bloque correspondiente al primer caso coincidente.

No se evalúan los casos posteriores ni es necesario colocar instrucciones de parada manual (véase «Estructuras iterativas e interrupción de ciclos» para el uso de break en bucles). Cláusula otherwise: Actúa como opción por defecto cuando el valor de la expresión no encaja en ninguno de los casos especificados. Su inclusión es opcional. La selección múltiple permite simplificar la resolución de una calculadora aritmética elemental que procese un operador de tipo carácter (como '+' , '-' , '*' o '/' ), canalizando cada símbolo a su operación correspondiente y reservando otherwise para alertar de que el operador introducido no se reconoce.

Algoritmos y Estructuras de Programación en MATLAB 15 ESQUEMA Estructuras de control condicionales Estructura Criterio de bifurcación Flexibilidad lógica Cláusula por defecto if / elseif Expresiones relacionales y lógicas diversas Alta (permite evaluar rangos y operadores complejos) else switch Coincidencia exacta de un valor o conjunto discreto Específica (ideal para menús, códigos y caracteres) otherwise COMPRUEBA 24 ¿En qué difiere el comportamiento del switch en MATLAB frente al de lenguajes como C al coincidir un case? IDEAS CLAVE Las bifurcaciones condicionales modifican el flujo secuencial y cuentan siempre conceptualmente con una única entrada y una única salida.

La estructura condicional doble (if-else) bifurca la ejecución entre dos caminos disjuntos según la evaluación de un predicado booleano. El signo del discriminante determina la bifurcación entre raíces reales o raíces complejas conjugadas en una ecuación cuadrática. En una cadena if-elseif-else las condiciones se evalúan secuencialmente y solo se procesa el primer bloque cuya condición resulte verdadera. En MATLAB, la estructura switch finaliza y sale automáticamente tras ejecutar el primer caso coincidente sin requerir la cláusula break.

Bifurcaciones condicionales Desvían el flujo según expresiones lógicas Condicional simple (if) Bifurcación unidireccional sin ruta alternativa Condicional doble (if- else) Dos alternativas mutuamente excluyentes Condicional en cascada Evaluación secuencial if-elseif- else Selección múltiple (switch) Comparación directa de casos discretos D = B 2 4AC Algoritmos y Estructuras de Programación en MATLAB 16 COMPRUEBA LO QUE HAS APRENDIDO 25. En el cálculo de raíces cuadráticas con coeficientes , y , ¿cuál es la condición que define si las soluciones pertenecen al conjunto de los números reales? 26. ¿Qué función cumple la cláusula otherwise dentro de una sentencia switch en MATLAB?

Test Rodea la respuesta correcta. Las soluciones están al final. 27. ¿Cuántas entradas y salidas conceptuales posee un bloque de control condicional estructurado? 28. ¿Cómo se comporta la estructura if-elseif-else al encontrar una condición verdadera? 29. ¿Qué sucede en MATLAB tras ejecutar las sentencias de un case coincidente dentro de un switch? 30. ¿Cómo se agrupan múltiples valores admisibles dentro de un mismo bloque case en MATLAB?

A B C Una única entrada y una única salida a) Múltiples entradas y una única salida b) Tantas salidas como ramas case existan c) Una entrada y dos salidas independientes d) Requiere una instrucción break para finalizar a) Ejecuta dicho bloque y abandona la estructura b) Evalúa todas las condiciones intermedias restantes c) Ejecuta además obligatoriamente la cláusula else d) Se produce un error si no hay break a) Se evalúan en cascada los casos inferiores b) Se ejecuta siempre la cláusula otherwise c) Se sale inmediatamente sin requerir break d) Repitiendo consecutivamente la etiqueta case a) Encerrados entre corchetes simples b) Englobados dentro de llaves {} c) Separados por operadores lógicos or d) Algoritmos y Estructuras de Programación en MATLAB 17 4 Estructuras iterativas e interrupción de ciclos AL ACABAR SABRÁS Diferenciar los casos de aplicación de un bucle indexado for frente a un bucle condicional while.

Controlar la ejecución interna de un bucle evitando la modificación indebida del índice y los ciclos infinitos. Aplicar las sentencias break y continue para la alteración del flujo iterativo según condiciones de ruptura. PIÉNSALO ANTES DE LEER 31 ¿Por qué no se debe utilizar un bucle for cuando la finalización de una tarea depende del resultado impredecible de un cálculo? Las estructuras repetitivas o bucles permiten ejecutar un mismo bloque de instrucciones varias veces. Como cualquier estructura de control bien formada (véase «Estructuras condicionales y de selección múltiple»), los bucles poseen conceptualmente una única entrada y una única salida.

Estructura repetitiva indexada (for) La estructura for permite ejecutar un bloque de instrucciones un número predeterminado de veces. Para gestionar el avance de las iteraciones, utiliza una variable de control del bucle, denominada habitualmente índice. Este índice toma sucesivamente los valores contenidos en una colección ordenada o vector de longitud . V N Algoritmos y Estructuras de Programación en MATLAB 18 Diagrama de flujo y sintaxis de la estructura indexada for. En cada paso, el índice adopta el elemento correspondiente del vector y se ejecutan las sentencias internas.

Este proceso se repite hasta agotar la secuencia prefijada: DEFINICIÓN Un bucle indexado asocia a su variable de control cada uno de los elementos de un vector directriz en orden sucesivo, repitiendo el cuerpo del ciclo exactamente tantas veces como elementos contenga dicho vector. El comportamiento del bucle indexado presenta particularidades esenciales que condicionan su diseño: Vector vacío: Si el conjunto de valores asignado al índice carece de elementos ( ), el bloque interno no se ejecuta ninguna vez. Uso del índice: El valor del índice puede consultarse libremente dentro del cuerpo, pero no debe ser modificado por las instrucciones internas.

Anidamiento: Es posible incluir estructuras for e if unas dentro de otras, siempre que la estructura interna quede completamente contenida en un bloque de la externa. ERROR FRECUENTE Intentar modificar manualmente la variable índice dentro del cuerpo de un bucle for para acelerar o alterar el recorrido. En MATLAB, la cabecera reasigna el índice al inicio de cada iteración según el vector original, por lo que alterar su valor dentro del bloque genera errores lógicos o comportamientos inesperados. Si necesitas saltos dinámicos dependientes del cálculo, debes emplear un bucle while .

N = 0 Algoritmos y Estructuras de Programación en MATLAB 19 COMPRUEBA 32 ¿Cuántas veces se ejecuta el cuerpo de un bucle for si el vector de iteración está vacío (N = 0)? Estructura repetitiva condicional (while) A diferencia del bucle indexado, la estructura while repite un bloque mientras se verifique una condición lógica. En este caso, el número total de repeticiones no está fijado de antemano. El flujo de ejecución de esta estructura sigue una secuencia estricta: PARA RECORDARLO Dado que la evaluación de la condición ocurre siempre de forma previa al ciclo, si la condición resulta falsa desde el primer intento, el cuerpo del bucle no llegará a ejecutarse ni una sola vez.

COMPRUEBA 33 ¿Qué ocurre si la condición de un bucle while nunca se vuelve falsa durante la ejecución? Interrupción y alteración del flujo de iteración En determinadas situaciones resulta necesario interrumpir el ciclo en algún punto intermedio de su bloque repetitivo al cumplirse una condición específica. Esta alteración puede realizarse de dos formas: Mecanismo Comportamiento de flujo Efecto en el índice (en ciclos for) break Abandona el ciclo de repetición definitivamente. Conserva fuera del bucle el último valor que tomó. continue Abandona la iteración en curso e inicia de inmediato la siguiente. Avanza al siguiente valor del vector de iteración.

Ambas instrucciones son aplicables tanto a ciclos for como a ciclos while. El diagrama de flujo siguiente ilustra la salida definitiva del ciclo mediante break: Al inicio de cada iteración, se evalúa la expresión lógica asociada al ciclo. 1 Si el resultado es verdadero, se ejecutan las instrucciones del bloque interno y el flujo regresa al paso 1. 2 Si el resultado es falso, finaliza el ciclo while y el programa continúa con la sentencia siguiente a la palabra de cierre. 3 Algoritmos y Estructuras de Programación en MATLAB 20 Diagrama de flujo de la ruptura definitiva con break.

Por su parte, cuando se ejecuta la instrucción continue, se omiten las instrucciones restantes de la iteración actual y el flujo salta directamente a la comprobación de la condición o al siguiente valor del índice: Algoritmos y Estructuras de Programación en MATLAB 21 Diagrama de flujo del salto de iteración con continue. ESQUEMA Mecanismos de control iterativo COMPRUEBA 34 Si un bucle for se aborta prematuramente mediante break, ¿qué valor almacena la variable índice al salir?

Bucles repetitivos Estructuras de ejecución cíclica Bucle for Número predeterminado de iteraciones Bucle while Condición lógica previa Ruptura de ciclos Alteración del flujo normal break Abandono definitivo del bucle continue Salto a la siguiente iteración Algoritmos y Estructuras de Programación en MATLAB 22 IDEAS CLAVE Un bucle for ejecuta un conjunto prefijado de iteraciones asociadas a los elementos sucesivos de un vector. Si el vector asignado a un bucle indexado está vacío ( ), el bloque interno no se ejecuta ninguna vez. La variable de control o índice no debe modificarse dentro del cuerpo de un ciclo for.

El ciclo while evalúa la condición de permanencia antes de cada iteración y repite el bloque mientras resulte verdadera. La orden break finaliza definitivamente el ciclo preservando el último valor del índice, mientras que continue salta directamente a la siguiente repetición. COMPRUEBA LO QUE HAS APRENDIDO 35. ¿En qué se diferencian conceptualmente las estructuras for y while respecto a la cantidad de iteraciones? 36. ¿Cuál es la diferencia fundamental entre el efecto de break y continue al presentarse una condición de ruptura? Test Rodea la respuesta correcta. Las soluciones están al final. 37. ¿Qué ocurre si el vector asociado a la variable de control for tiene longitud N = 0? 38.

¿Qué acción realiza la instrucción continue al ejecutarse dentro de un bucle? 39. ¿Qué estado conserva el índice de un bucle for tras salir mediante break? 40. ¿En qué momento evalúa el bucle while su condición lógica de permanencia?

N = 0 Se ejecuta al menos una iteración a) El cuerpo no se ejecuta ninguna vez b) Se produce un ciclo infinito c) El bucle produce un error sintáctico d) Aborta definitivamente todo el bucle a) Detiene temporalmente el programa b) Finaliza la iteración actual e inicia la siguiente c) Reinicia el bucle desde el principio d) Conserva el último valor que tomó a) Se destruye de la memoria b) Regresa al valor del primer elemento c) Pasa a valer indefinido o nulo d) Únicamente al finalizar la repetición a) Solo una vez al inicio del programa b) Al comienzo de cada iteración c) Tras ejecutar la primera instrucción interna d) Algoritmos y Estructuras de Programación en MATLAB 23 5 Modularización y funciones en MATLAB AL ACABAR SABRÁS Declarar funciones en MATLAB mediante la sintaxis canónica formal.

Diferenciar las funciones intrínsecas de las funciones externas de usuario. Organizar ficheros .m respetando la concordancia de nombres y rutas de trabajo. Explicar el aislamiento del espacio de trabajo local frente al workspace global. PIÉNSALO ANTES DE LEER 41 ¿Qué ocurre si creas dentro de una función una variable con el mismo nombre que una que ya tienes en la pantalla principal de MATLAB? Principios de modularización y tipos de funciones Al desarrollar programas para resolver problemas extensos, escribir todo el código en un único archivo secuencial resulta poco práctico.

Los programas monolíticos y excesivamente largos dificultan la localización de fallos, complican la depuración y entorpecen la lectura lógica del algoritmo (véase «Metodología de desarrollo de programas y concepto de algoritmo»). Además, en la resolución de problemas suelen aparecer operaciones que se repiten con frecuencia en distintas partes del flujo de ejecución. La programación modular descompone un problema global complejo en subproblemas más breves y manejables. Cada una de estas etapas se implementa mediante bloques de código independientes llamados funciones.

Este enfoque ofrece dos grandes ventajas: Reutilización de código: permite programar una operación una única vez y ejecutarla tantas veces como sea necesario desde diferentes puntos del sistema. Mantenimiento y legibilidad: facilita aislar errores y verificar cada etapa por separado antes de integrarla en el programa global. En cualquier entorno de programación conviven dos categorías fundamentales de funciones según su procedencia: Tipo de función Origen y disponibilidad Ejemplo en MATLAB Intrínsecas (incorporadas) Vienen predefinidas dentro del lenguaje para cálculos habituales; el usuario solo las invoca. Funciones matemáticas como sin() , cos() o exp() .

Externas (definidas por el usuario) Son programadas por el usuario para resolver tareas o cálculos específicos no cubiertos por las nativas. Archivos propios como mifun.m . Algoritmos y Estructuras de Programación en MATLAB 24 COMPRUEBA 42 ¿Qué dos motivos técnicos justifican dividir un algoritmo extenso en varias funciones externas? Estructura canónica y almacenamiento de una función externa En MATLAB, las funciones externas se definen formalmente como M-funciones.

Su declaración obedece a una cabecera estricta que especifica el flujo de datos: Esta sintaxis consta de los siguientes componentes reglamentarios: La palabra reservada function: indica al intérprete el inicio de la definición y no puede modificarse. La lista de argumentos de salida: se encierra entre corchetes [] y separa las variables devueltas mediante comas. Si la función no devuelve ningún valor, se omiten tanto los corchetes como el signo igual ( = ). El nombre de la función: identificador único con el que se invocará la rutina. La lista de argumentos de entrada: se ubica entre paréntesis () con las variables separadas por comas.

Si la función no requiere datos de entrada, los paréntesis se omiten por completo. Los identificadores colocados en la cabecera actúan como variables mudas. Al igual que en el análisis matemático formal, son meros símbolos de referencia para describir las operaciones internas y no quedan ligados a ningún dato previo fuera de la función.

EJEMPLO Para evaluar la expresión matemática , se define la siguiente función externa: function [y] = mifun(x)v = exp(x .* sin(x / 3));w = cos((x + pi) / 2);y = v .* w; Para que el entorno reconozca y pueda ejecutar una M-función (ya sea invocada desde la ventana de comandos, desde un script u otra función), debe cumplirse una doble condición operativa: function [y , y , ...] = 1 2 nombre(x , x , ...) 1 2 f(x) = e cos( ) xsen(x/3) 2 x+π El código debe guardarse en un fichero con extensión .m cuyo nombre coincida de forma exacta con el identificador asignado tras la palabra function (por ejemplo, mifun.m para la función mifun ).

1 Dicho archivo debe residir obligatoriamente en el directorio actual de trabajo de MATLAB (o en una ruta accesible en su ruta de búsqueda activa). 2 Algoritmos y Estructuras de Programación en MATLAB 25 ERROR FRECUENTE Guardar el archivo con un nombre diferente al especificado en la cabecera de la función (por ejemplo, guardar la cabecera function [y] = calcula(x) dentro de ejercicio1.m ). MATLAB prioriza el nombre del archivo para su invocación, lo que genera fallos de reconocimiento de identificador y comportamientos inesperados en las llamadas del programa. COMPRUEBA 43 Si una función no recibe ningún parámetro ni entrega resultados, ¿cómo queda redactada su cabecera?

Control de flujo, espacio de trabajo y variables locales La ejecución de una M-función finaliza cuando se agotan todas sus instrucciones secuenciales. En ese instante, el flujo de control regresa de manera automática al punto exacto desde el que fue invocada (la línea de comandos, un script o una función externa previa). No obstante, es posible forzar una interrupción prematura antes de alcanzar la última línea mediante la sentencia return. Esta instrucción provoca el abandono inmediato del cuerpo de la función o script, transfiriendo el control al llamador en ese mismo instante.

PROCESO Ciclo de ejecución de una función externa Una característica central de las funciones es el aislamiento de su memoria. Toda variable creada en el cuerpo de una función es una variable local y pertenece en exclusiva a su propio espacio de trabajo (workspace). Las variables locales son completamente inaccesibles desde el exterior y no interfieren con el espacio de trabajo global de MATLAB. Llamada a la función El programa principal o terminal invoca la función pasando datos de entrada. 1 Espacio local Se crea un workspace aislado con variables locales y parámetros mudos. 2 Ejecución de instrucciones Se procesan los cálculos hasta el final o hasta una sentencia return.

3 Devolución de salida Se entregan los argumentos de salida y se destruye el entorno local. 4 Retorno del control El flujo de ejecución vuelve al punto de invocación original. 5 Algoritmos y Estructuras de Programación en MATLAB 26 Si en la línea de comandos existe una variable llamada w y dentro de una función se emplea también otra variable llamada w , ambas son entidades totalmente independientes. El sistema las aloja en posiciones de memoria distintas, garantizando que los cálculos internos de la función no alteren ni sobrescriban los datos del usuario.

COMPRUEBA 44 Si un script define una variable interna con el mismo nombre que una variable del workspace global, ¿se modifica el dato exterior al ejecutar la función? IDEAS CLAVE La modularización descompone problemas extensos en funciones para reutilizar código y facilitar la corrección de errores. Las funciones intrínsecas están integradas en MATLAB, mientras que las externas las define el usuario en archivos independientes. La cabecera de una función sigue la regla obligatoria: function [argumentos de salida] = nombre(argumentos de entrada). El archivo debe guardarse obligatoriamente con extensión .m y coincidir exactamente con el nombre de la función dentro del directorio de trabajo.

Las variables declaradas dentro de una función son locales: residen en un espacio de trabajo propio e independiente del workspace global. COMPRUEBA LO QUE HAS APRENDIDO 45. ¿Qué función cumple la sentencia return dentro del cuerpo de una M-función? 46. ¿Por qué a los parámetros de entrada y salida se les denomina variables mudas? Test Rodea la respuesta correcta. Las soluciones están al final. 47. ¿Qué ventaja aporta descomponer un algoritmo monolítico en funciones externas? 48. ¿Dónde debe residir una M-función para poder invocarse desde la línea de comandos?

Prescindir del directorio actual de trabajo a) Acelerar automáticamente el hardware disponible b) Eliminar la necesidad de definir variables c) Reutilizar código y facilitar su depuración d) En la memoria caché del procesador a) En un servidor de red externo b) En un fichero de texto plano .txt c) En el directorio actual de trabajo d) Algoritmos y Estructuras de Programación en MATLAB 27 49. ¿Qué ocurre si una función interna define una variable con el mismo nombre que una del workspace? 50. ¿Cuál es la instrucción que finaliza prematuramente la ejecución de una función?

6 Formulario Metodología y algoritmos Procedimiento o concepto Definición o regla Cuándo se usa Fases de desarrollo Análisis Planificación en papel Edición del código fuente Compilación y ejecución Corrección de errores Documentación Ciclo completo de diseño y programación de cualquier software. Requisitos de un algoritmo Preciso (pasos unívocos y ordenados) + Definido (mismo resultado ante iguales entradas) + Finito (número acotado de pasos) Criterio para validar si un método es computable por un ordenador. Componentes algorítmicos Entrada (datos iniciales) Proceso (operaciones) Salida (resultados) Estructura canónica de todo algoritmo o programa.

Símbolos de diagrama de flujo (ANSI) Óvalo (Inicio/Fin) " Paralelogramo (Lectura/Escritura) " Rectángulo (Proceso/Cálculo) " Rombo (Decisión) Modelado visual de algoritmos de tamaño reducido. Estructuras condicionales y selección múltiple Estructura o fórmula Sintaxis / Elementos Cuándo se usa Condicional simple (if) if condicion instrucciones end Ejecutar instrucciones solo si una condición lógica es verdadera. Condicional doble (if-else) if condicion bloque_1 else bloque_2 end Bifurcación binaria entre dos alternativas mutuamente excluyentes. Discriminante cuadrático ; reales si ; complejas conjugadas si Determinación del tipo de raíces en .

Se produce un error de sintaxis fatal a) La variable externa se borra automáticamente b) La función adopta el valor exterior obligatoriamente c) Permanecen aisladas en posiciones distintas de memoria d) continue a) return b) break c) function d) D = B 2 4AC D 0 D < 0 Ax + 2 Bx + C = 0 Algoritmos y Estructuras de Programación en MATLAB 28 Estructura o fórmula Sintaxis / Elementos Cuándo se usa Condicional en cascada if cond1 elseif cond2 ... else end Decisión secuencial entre más de dos condiciones encadenadas. Selección múltiple (switch) switch expr case valor otherwise end Bifurcar según el valor discreto de una variable (sale sin requerir break ).

Estructuras iterativas y control de ciclos Estructura o instrucción Sintaxis / Comportamiento Cuándo se usa Bucle indexado (for) for indice = V instrucciones end Repetir instrucciones un número prefijado de veces (según longitud de ). Bucle condicional (while) while expresion_logica instrucciones end Repetir instrucciones mientras se cumpla una condición no fija a priori. Sentencia break Abandona el bucle definitivamente; el índice conserva el último valor Interrupción prematura ante una condición de parada en for o while . Sentencia continue Abandona la iteración actual y salta de inmediato a la siguiente Omitir el resto del bloque en la pasada en curso sin cancelar el ciclo.

Modularización y funciones en MATLAB Procedimiento o recurso Sintaxis / Regla Cuándo se usa Definición de función externa function [arg_salida] = nombre(arg_entrada) Creación de subprogramas en archivos nombre.m en el directorio activo. Sentencia return Interrumpe la función y devuelve el control al llamador de inmediato Terminación temprana antes de agotar las instrucciones de la función. Variables locales Pertenecen exclusivamente al espacio de trabajo (workspace) propio de la función Aislamiento de memoria frente a variables externas del mismo nombre.

Errores típicos Modificar la variable índice dentro de un bucle for : genera inconsistencias lógicas; para incrementos variables debe emplearse un while . Confundir error de sintaxis con error de lógica: el error de lógica no genera avisos del compilador pero produce resultados erróneos y requiere rediseñar en papel. V Algoritmos y Estructuras de Programación en MATLAB 29 Nombre de archivo discrepante: el fichero debe llamarse exactamente igual que la función ( nombre.m ) para que MATLAB pueda localizarla y ejecutarla. Uso innecesario de break en switch : en MATLAB el flujo abandona la estructura tras el primer case coincidente de forma automática.

Algoritmos y Estructuras de Programación en MATLAB 30 Soluciones de las preguntas de repaso 1. Porque el ordenador acata de forma estricta las instrucciones recibidas; si la lógica o el planteamiento del método están equivocados, calculará resultados incorrectos sin advertir anomalías sintácticas. 2. Porque los errores de lógica indican que el método de resolución o la secuencia algorítmica están mal planteados de base, por lo que retocar código a ciegas suele generar nuevas inconsistencias. 3.

El fallo de sintaxis es advertido automáticamente por el compilador, mientras que el error de lógica no genera alertas de ejecución y requiere contrastar los resultados obtenidos con los valores esperados. 4. Forma parte del proceso, ya que constituye una operación de transformación temporal requerida para transformar los elementos iniciales en el producto final. 5. Debe ser preciso (pasos sin ambigüedad y ordenados), definido (mismo resultado ante iguales entradas) y finito (número delimitado de pasos). 6.

Porque el compilador no genera avisos de parada al ser la sintaxis válida, obligando al programador a revisar el método conceptual para descubrir por qué la salida calculada no coincide con la esperada. 7. La entrada (datos o recursos de partida), el proceso (secuencia de operaciones y transformaciones) y la salida (resultados finales producidos). 8. c) Planificación en papel. La planificación en papel permite diseñar la secuencia de etapas y algoritmos antes de codificar. 9. b) Definición. La propiedad de ser definido garantiza que al repetirse con idénticas entradas se obtiene idéntica salida. 10. b) Resultados erróneos sin aviso.

El programa funciona y se ejecuta normalmente, pero arroja salidas incorrectas por un fallo conceptual. 11. a) Documentación. Tras verificar el funcionamiento correcto, se documenta el código con explicaciones, variables y comentarios. 12. Porque los diagramas ocupan demasiado espacio y se vuelven difíciles de leer y mantener cuando el programa crece en tamaño y complejidad lógica. 13. Porque ofrece mayor compacidad textual y facilidad de edición, evitando la dispersión espacial y la rigidez de trazado que conllevan los bloques gráficos. 14.

Porque la variable pies depende directamente del valor previamente calculado en pulgadas ; en una estructura secuencial no se puede operar con una variable antes de definirla. 15. El paralelogramo, empleado tanto para operaciones de entrada como de salida de información. 16. Su escasa escalabilidad espacial, ya que abarcan demasiado espacio sobre el papel o la pantalla en comparación con la compacidad del texto. 17. c) Rectángulo. El rectángulo denota procesamiento o cálculo, mientras que el paralelogramo indica entrada/salida y el rombo decisión. 18. c) Ejecuta pasos uno tras otro sin bifurcaciones.

En la estructura secuencial cada instrucción se procesa inmediatamente después de la anterior en orden lineal estricto. 19. a) Ocupa menos espacio y es más compacto. El pseudocódigo resulta mucho más compacto y rápido de redactar o modificar que un diagrama de flujo. 20. b) pulgadas / 12. Dado que 1 pie contiene 12 pulgadas, la conversión se obtiene dividiendo las pulgadas calculadas entre 12. Algoritmos y Estructuras de Programación en MATLAB 31 21. Porque rompería la predictibilidad del flujo del programa; mantener una única entrada y una única salida garantiza que el código sea modular, secuencial y fácil de depurar. 22. Porque al ser D negativo, -D se convierte en una cantidad positiva.

Esto permite calcular directamente la magnitud real de la componente imaginaria de las raíces complejas conjugadas. 23. Solo se ejecuta el bloque correspondiente a la primera condición verdadera que aparezca en el orden de escritura. Los bloques posteriores quedan completamente omitidos. 24. En MATLAB no se produce caída en cascada hacia los siguientes bloques; se ejecuta el caso coincidente y se sale automáticamente sin necesidad de emplear la sentencia break. 25. La condición lógica es que el discriminante sea mayor o igual a cero ( , calculado como ). 26.

Ejecuta un bloque de instrucciones de reserva o por defecto únicamente cuando el valor evaluado en la expresión no coincide con ninguno de los casos case declarados. 27. a) Una única entrada y una única salida. Todo bloque de control bien estructurado dispone conceptualmente de un único punto de entrada y una única salida común. 28. b) Ejecuta dicho bloque y abandona la estructura. Al cumplirse un predicado, se ejecutan sus instrucciones subordinadas y el control salta directamente al final de la estructura. 29. d) Se sale inmediatamente sin requerir break. MATLAB finaliza la ejecución del switch de forma automática tras procesar el primer caso válido sin necesitar la cláusula break. 30.

c) Englobados dentro de llaves {}. Para asociar un conjunto de valores a un mismo case en MATLAB se definen agrupados mediante llaves como una celda. 31. Porque for está diseñado para recorrer secuencias de valores predeterminadas; cuando la parada depende de un estado que cambia dinámicamente, debe emplearse un bucle condicional while. 32. No se ejecuta ninguna vez, continuando la ejecución directamente en la instrucción posterior al bucle. 33. El programa entra en un bucle infinito, repitiendo las instrucciones de forma indefinida al no alcanzarse la condición de parada. 34.

La variable índice conserva en el espacio de trabajo el último valor que adoptó antes de que se ejecutara la instrucción break. 35. La estructura for define a priori el número de repeticiones mediante la longitud de su vector, mientras que while supedita las iteraciones a una condición lógica dinámica cuyo número de repeticiones no se conoce de antemano. 36. break aborta de manera definitiva el ciclo transfiriendo el control fuera de la estructura, mientras que continue interrumpe únicamente la iteración en curso y da paso a la siguiente evaluación o incremento. 37. b) El cuerpo no se ejecuta ninguna vez.

Al no contener elementos el vector de iteración, el cuerpo del ciclo for se omite por completo. 38. c) Finaliza la iteración actual e inicia la siguiente. continue interrumpe las instrucciones restantes de la pasada actual y salta de inmediato a la siguiente iteración. 39. a) Conserva el último valor que tomó. Al interrumpir for con break, la variable de control retiene fuera del ciclo el último valor alcanzado. 40. c) Al comienzo de cada iteración. while comprueba la expresión lógica antes de ejecutar el bloque; si es falsa al inicio, nunca entra. De0 B 2 4ACe0 Algoritmos y Estructuras de Programación en MATLAB 32 41.

No ocurre ningún conflicto ni se sobreescribe el dato externo, ya que la función trabaja en su propia memoria local aislada del espacio de trabajo principal. 42. La modularización permite reutilizar bloques de código que repiten cálculos y simplifica la detección de fallos al trabajar con etapas breves e independientes en lugar de un bloque monolítico. 43. Se escribe únicamente la palabra reservada function seguida del identificador de la función, sin corchetes, sin signo igual y sin paréntesis ( function nombre ). 44. No; al operar en espacios de trabajo independientes, la variable interna reside en una posición de memoria local distinta y no altera el valor del workspace exterior. 45.

Provoca el abandono inmediato de la función y devuelve el control al punto de llamada antes de alcanzar la última instrucción. 46. Porque actúan como meros símbolos o marcadores de posición para definir las operaciones matemáticas y no retienen valores fijos fuera de la ejecución local. 47. d) Reutilizar código y facilitar su depuración. La modularización permite fragmentar problemas complejos en bloques reutilizables y más fáciles de revisar y corregir. 48. d) En el directorio actual de trabajo. Para que MATLAB localice el fichero .m correspondiente al nombre de la función, este debe estar en el directorio de trabajo activo. 49. d) Permanecen aisladas en posiciones distintas de memoria.

Las funciones poseen un espacio de trabajo local independiente; sus variables locales no colisionan con las del workspace principal. 50. b) return. La sentencia return abandona de inmediato el cuerpo de la función devolviendo el control al llamador. Algoritmos y Estructuras de Programación en MATLAB 33

Más apuntes de Fundamentos de Programación

Exámenes, temas y apuntes de Fundamentos de Programación