ESTRUCTURAS DE CONTROL, FUNCIONES Y ARREGLOS.
2.1 Estructura selectiva
Las Estructuras Selectivas también conocidas como Estructuras Condicionales, es una
estructura de control de flujo que permite que desarrollemos lo que se conoce como lógica
de programación. Por decir de otra manera son aquellas que dirigen la ejecución de un
programa hacia un grupo de sentencias del resultado de la condición.
Esta permite bifurcar el “flujo ” del programa en función de una expresión lógica, es decir,
que permiten escoger entre dos o más acciones, estás evalúan una condición y ejecutan
una sentencia, pero no se ejecutan todas al mismo tiempo.
Según el control que se realice, las estructuras selectivas pueden clasificarse como:
Selectiva Simple. Selectiva Doble. Selectiva Anidadas. Selectiva Múltiple.
2.1.1 Selectiva Simple
La estructura selectiva simple es aquella que evalua la condición, por verdadera
ejecuta una instrucción y si es falsa no ejecuta ninguna instrucción.
Este tipo alternativa es la más simple de todas, permite evaluar una expresión lógica
y en función de dicha evaluación ejecutar una acción, composición de acciones o
no ejecutarla; también se la suele denominar SI-ENTONCES.
Representación de una Selectiva Simple
En la sección de abajo se encuentran un ejemplo de comó representar una Selectiva
Simple usando el diagrama de flujo y pseudocódigo.
2.1.2 Selectiva Doble
La estructura Selectiva doble es similar a la anterior con la salvedad de que en este
tipo de estructura se indican acciones no sólo para la rama “ verdadera ” sino
también para la “falsa ” ; es decir, en caso de la expresión lógica evaluada sea cierta
se ejecutan una acción o grupo de acciones y en caso de que sea falsa se ejecuta
un grupo diferente.
Se creó debido a que la Estructura Selectiva Simple es muy limitada. Esta estructura
acepta dos opciones, de esta forma siempre va a ocurrir algo porque se va a evaluar
una condición, si es verdadera, entonces ejecuta una sentencia, si es falsa, se
ejecuta otra.
Se le denomina Selectiva Doble pues existen dos caminos, a estos se le suele
denominar también bifurcación pues el control del flujo se dirige hacia una rama de
dos posibles.
Representación de una Selectiva Doble
En la sección de abajo se encuentran un ejemplo de cómo representar una Selectiva
Doble usando el diagrama de flujo y pseudocódigo.
2.1.3 Selectiva Anidadas
Tal como se ha planteado, la Estructura Selectiva permite tomar decisiones sobre
el control de flujo. Si se desea tomar la decisión de ejecutar o no un conjunto de
instrucciones, se puede usar una Selectiva Simple. Además, si se desea decidir la
ejecución de entre dos conjunto de instrucciones, podemos usar una Selectiva
Doble. Pero, si se quiere tomar decisiones sobre más de dos conjuntos de
instrucciones se debe usar la Estructura Selectiva Anidada también denominada
Estructura Selectiva Compuesta.
En el diseño algorítmico, la anidación no es más que la inclusión de una o más
estructuras de determinado tipo en otra estructura del mismo tipo. En nuestro caso,
la Estructura Selectiva Anidada no es más que usar una Estructura Selectiva dentro
de otra Estructura Selectiva.
Representación de una Selectiva Anidada
En la sección de abajo se encuentran un ejemplo de cómo representar una Selectiva
Anidada usando el diagrama de flujo y pseudocódigo.
2.1.4 Selectiva Múltiple
Como vemos, siempre habrá un punto en donde tengamos múltiples opciones, para
resolver este problema utilizamos una estructura de alternativas múltiples ya que en
ocasiones puede ser más cómodo de utilizar, luego veremos que también lo
podemos hacer con Selectivas Dobles Anidadas. La Selectiva Múltiple (según-
hacer-caso) va a evaluar una condición que podrá tomar distintos valores, según
sea el resultado de esta condición, se va a ejecutar una acción específica.
La Estructura Selectiva Múltiple permite al algoritmo tomar la decisión de ejecutar
un conjunto de instrucciones de entre varios disponibles. En esencia, tiene la misma
finalidad que la Estructura Selectiva Anidada, pero para poder usarla, hay que tener
en consideración lo siguiente:
Cada conjunto de instrucciones tiene asociado uno o más valores, cuando el
selector tome el valor asociado con este conjunto, sus instrucciones se ejecutarán.
En la Selectiva Múltiple no existen condiciones, sino una variable, denominada
muchas veces selector, a través de la cuál el algoritmo comparará su valor. En las
implementaciones de la Estructura Selectiva Múltiple en los lenguajes de
programación, esta variable selector debe ser de tipo ordinal (como los enteros, los
caracteres y los enumerados).
La Estructura Selectiva Múltiple es un caso particular de la Estructura Selectiva
Anidada. Se da cuando la variable usada en el condición es ordinal y además la
condición es una simple operación relacional de comparación. Por esto su uso es
muy reducido a cierto tipo de situaciones como los menú de opciones por ejemplo.
Representación de una Selectiva Múltiple
En la sección de abajo se encuentran un ejemplo de cómo representar una Selectiva
Múltiple usando el diagrama de flujo y pseudocódigo.
2.2 Estructuras de repetición
Las estructuras de repetición son también llamadas estructuras cíclicas, iterativas o
de bucles. Estas estructuras permiten ejecutar un conjunto de instrucciones de
manera repetida (o cíclica), mientras que una expresión lógica evalúa que se
cumpla, es decir, que sea verdadera.
En lenguaje C existen tres estructuras de repetición: while, do-while y for. Las
estructuras while y do-while son estructuras repetitivas de propósito general. La
estructura de repetición for se suele utilizar cuando se conoce de antemano el
número de elementos que se desea recorrer (o iterar).
2.2.1 For
Lenguaje C posee la estructura de repetición for, la cual permite realizar
repeticiones cuando se conoce el número de elementos que se quiere recorrer.
La instrucción for es quizá la más frecuentemente usada de las instrucciones para
crear ciclos en C. Esta instrucción incluye una expresión que especifica el valor
inicial de un índice, otra expresión que determina si se continúa o no el ciclo y una
tercera expresión que permite que el índice se modifique al final de cada iteración o
ciclo.
La sintaxis que generalmente se usa es la siguiente:
Iniciar
La estructura for ejecuta tres acciones básicas antes o después de ejecutar el
bloque de código:
Nota: Se pueden omitir las expresiones primera y tercera si se inicializa y/o altera
el índice de alguna otra forma; sin embargo, si se omite la segunda expresión, se
asumirá que ésta tiene un valor permanente de 1 (cierta); por lo tanto, el ciclo
continuará ejecutándose repetidamente de forma indefinida, a menos que se finalice
mediante algún otro mecanismo.
Código (estructura de repetición for)
2.2.2 Estructura de control repetitiva while
La estructura repetitiva (o iterativa) while se utiliza para generar ciclos, en los cuales
un grupo de instrucciones se ejecuta de forma repetida, hasta que se satisface
alguna condición.
La estructura while primero valida la expresión lógica. Su sintaxis es la siguiente:
Iniciar
Si el bloque de código a repetir consta de una sola sentencia, entonces se pueden
omitir las llaves.
Código (estructura de repetición while)
Nota: Es muy importante que dentro del bloque de código a repetir se incluya algún
elemento que altere el valor de expresión lógica, proporcionando entonces la
condición de salida del ciclo; de no ser así, puede generarse un ciclo infinito (que
nunca termine de ejecutarse).
Código (estructura de repetición infinita)
2.2.3 Do-while
Cuando se construye un ciclo utilizando la instrucción while, la comprobación para
la continuación del ciclo se realiza al comienzo de cada ciclo o iteración; sin
embargo, a veces es deseable disponer de un ciclo en el que se realice la
comprobación al final de cada iteración.
Su sintaxis es la siguiente:
Iniciar
Si el bloque de código a repetir consta de una sola sentencia, entonces se pueden
omitir las llaves. Esta estructura de control siempre termina con el signo de
puntuación ';'.
Nota: Al igual que en la estructura while, se debe incluir algún elemento que altere
el valor de expresión para que el ciclo tenga un final.
Código (estructura de repetición do-while)
Para la mayoría de las aplicaciones es más natural comprobar la condición al
comienzo del ciclo que al final. Por esta razón, la instrucción do-while se utiliza con
menor frecuencia que la instrucción while.
2.3 Funciones
2.3.1 Funciones estándar
Las funciones de fórmula son un conjunto de funciones predefinidas del Asistente
para edición de fórmulas y literales: cadenas y números, además del retorno de
otras funciones. Al pulsar la tecla F4 se abrirá un panel pop-up con la lista de
funciones disponibles, agrupadas por categorías.
Si situamos el puntero del ratón sobre una función, se mostrará un tooltip con
información sobre la misma.
Podremos usar el teclado para localizar una función por su nombre, una vez
desplegada la carpeta que la contenga.
Las funciones de fórmula se engloban en los grupos siguientes:
• Funciones API:
• Funciones básicas.
• Funciones de cadenas.
• Funciones científicas.
• Funciones de cliente-servidor.
• Funciones de color.
• Funciones de códigos.
• Funciones de directorios.
• Funciones de fechas.
• Funciones de ficha en curso.
• Funciones de horas.
• Funciones JSON.
• Funciones de Internet.
• Funciones de juego de caracteres.
• Funciones numéricas.
• Funciones de sistema.
• Funciones de tiempo.
• Funciones trigonométricas.
2.3.2 Funciones definidas por el usuario
Las funciones definidas por el usuario permiten crear scripts estructurados. Las
funciones definidas por el usuario se deben declarar al principio de un script. La
palabra clave FUNCTION identifica el bloque de sentencias de una función definida
por el usuario.
Las declaraciones de funciones deben seguir un formato específico: Tipo-retorno
FUNCTION nombre-función (parámetros opcionales) { variables locales opcionales;
sentencias...}
Lasa reglas descritas en el tema "Constantes y variables" se aplican a los
parámetros y variables locales que se utilizan en una función. Se da por supuesto
que los nombres de los parámetros opcionales de la función son locales. Se pueden
declarar otras variables locales que sean exclusivas para la función. El flujo de
control de las sentencias de una función sigue las mismas reglas que se aplican a
los bloques normales de sentencias de programa. Una sentencia RETURN
devuelve el control al punto en el que estaba el programa cuando se llamó a una
función. Se puede volver a pasar un valor de retorno como parte de la sentencia
return.
Ejemplo:
2.3.3 Paso de parámetros por valor y referencia
Dependiendo del tipo de dato que enviemos a la función, podemos diferenciar dos
comportamientos:
• Paso por valor: Se crea una copia local de la variable dentro de la función.
• Paso por referencia: Se maneja directamente la variable, los cambios
realizados dentro de la función le afectarán también fuera.
Tradicionalmente:
• Los tipos simples se pasan por valor: Enteros, flotantes, cadenas, lógicos.
• Los tipos compuestos se pasan por referencia: Listas, diccionarios,
conjuntos.
2.4 Arreglos
Las estructuras de datos que hemos visto hasta ahora (listas, tuplas, diccionarios,
conjuntos) permiten manipular datos de manera muy flexible. Combinándolas y
anidándolas, es posible organizar información de manera estructurada para
representar sistemas del mundo real.
En muchas aplicaciones de Ingeniería, por otra parte, más importante que la
organización de los datos es la capacidad de hacer muchas operaciones a la vez
sobre grandes conjuntos de datos numéricos de manera eficiente. Algunos ejemplos
de problemas que requieren manipular grandes secuencias de números son: la
predicción del clima, la construcción de edificios, y el análisis de indicadores
financieros entre muchos otros.
La estructura de datos que sirve para almacenar estas grandes secuencias de
números (generalmente de tipo float) es el arreglo.
Los arreglos tienen algunas similitudes con las listas:
• los elementos tienen un orden y se pueden acceder mediante su posición,
• los elementos se pueden recorrer usando un ciclo for.
Sin embargo, también tienen algunas restricciones:
• todos los elementos del arreglo deben tener el mismo tipo,
• en general, el tamaño del arreglo es fijo (no van creciendo dinámicamente
como las listas),
• se ocupan principalmente para almacenar datos numéricos.
A la vez, los arreglos tienen muchas ventajas por sobre las listas, que iremos
descubriendo a medida que avancemos en la materia.
Los arreglos son los equivalentes en programación de las matrices y vectores de
las matemáticas. Precisamente, una gran motivación para usar arreglos es que hay
mucha teoría detrás de ellos que puede ser usada en el diseño de algoritmos para
resolver problemas verdaderamente interesantes.
2.4.2 Arreglos unidimensionales
Cada elemento del arreglo (cada dato individual) es referenciado mediante la
especificación del nombre del arreglo, seguido por uno o más índices, con cada
índice encerrado entre paréntesis cuadrados. Cada índice debe ser expresado
como un entero no negativo.
Así, en un arreglo de n elementos, los elementos del arreglo son los siguientes:
La primera localidad del arreglo corresponde al índice 0 y la última corresponde al
índice n-1, donde n es el tamaño del arreglo.
El valor de cada índice puede ser expresado como una constante entera, una
variable entera o una expresión entera más compleja.
El número de índices determina la dimensión del arreglo; por ejemplo:
Se pueden formular arreglos de mayor dimensión, añadiendo índices adicionales de
la misma manera (por ejemplo, z[i] [j] [k]).
Los arreglos se definen como las variables normales, acompañando a cada nombre
de arreglo con una especificación de tamaño (número de elementos). Cabe aclarar
que todos los elementos serán del mismo tipo de datos.
2.4.3 Arreglos multidimensionales
Lenguaje C permite crear arreglos de varias dimensiones, con la siguiente sintaxis:
Un arreglo unidimensional de n elementos puede ser visto como una lista de valores
(o un vector). Análogamente, un arreglo bidimensional de m x n puede ser visto
como una tabla (o una matriz) de valores que tienen m renglones y n columnas.
De manera práctica se puede considerar que la primera dimensión corresponde a
los renglones, la segunda a las columnas, la tercera al plano, y así sucesivamente;
sin embargo, en la memoria cada elemento del arreglo se guarda de forma contigua.