informatica
description
Transcript of informatica
![Page 1: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/1.jpg)
Tema 6: Estructuras básicas
Programación estructurada. El flujo de control de un programa. Estructura
Secuencial. Estructura de selección: simple y múltiple. Estructuras de
selección anidadas. Estructuras de repetición. Estructura mientras: Estructura
hacer mientras y hacer hasta. Estructura Desde / Para. Salidas internas del
bucle. Estructuras repetitivas anidadas.
6.1 Programación estructurada
La programación estructurada es una forma de escribir programas de computadora utilizando únicamente tres estructuras: secuencia, selección e
iteración; siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional.
La programación estructurada surge a finales de los años 1960 con el
objetivo de realizar programas confiables y eficientes, y que además fueran escritos de manera de facilitar su comprensión posterior.
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de aquellos años, por lo que se desarrollaron nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos
de programación que facilitan la programación de grandes aplicaciones.
De todas formas, el paradigma estructurado tiene vigencia en muchos
ámbitos de desarrollo de programas y constituye una buena forma de iniciarse en la programación de computadoras.
El teorema del programa estructurado, de Böhm-Jacopini, demuestra que
todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:
● secuencial (es decir, poner instrucciones en orden, una detrás de otra, y que sean ejecutadas en ese orden)
● selectiva/condicional (es decir, hacer una cosa en función de una condición -con estructuras como if, o if/else)
● repetitiva (es decir, hacer una cosa varias veces, con bucles)
Solamente con estas tres estructuras o “patrones lógicos” se pueden
escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control,
éstas pueden ser construidas mediante las tres básicas mencionadas.
![Page 2: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/2.jpg)
Tema 6: Estructuras básicas
Informática Página 2
6.1.1 El flujo de control de un programa
La expresión flujo de control hace referencia al orden en el que se
ejecutarán las instrucciones de un programa, desde su comienzo hasta que finaliza. El flujo normal de ejecución es el secuencial. Si no se especifica lo
contrario, la ejecución de un programa empezaría por la primera instrucción e iría procesando una a una en el orden en que aparecen, hasta llegar a la última.
Algunos programas muy simples pueden escribirse sólo con este flujo unidireccional. No obstante, la mayor eficacia y utilidad de cualquier
lenguaje de programación se deriva de la posibilidad de cambiar el orden de ejecución según la necesidad de elegir uno de entre varios caminos en función de ciertas condiciones, o de ejecutar algo repetidas veces, sin tener
que escribir el código para cada vez.
Con frecuencia, el programador necesita que el programa no se comporte
sólo de modo secuencial. Por ejemplo, calcular una bonificación sólo para los empleados con más de 10 años de antigüedad, o calcular un descuento si abona en efectivo.
También puede ocurrir que interese que un grupo de instrucciones se ejecute repetidamente hasta que se le indique que se detenga. Por ejemplo,
calcular el promedio de notas para cada uno de los alumnos de un curso, o realizar algún cálculo con cada uno de los elementos de un vector.
Para las dos situaciones planteadas existen dos soluciones: las sentencias de control selectivas y las repetitivas. Éstas permiten que el flujo secuencial del programa sea modificado. También cumplen con este
objetivo las sentencias denominadas de invocación o salto.
Las sentencias alternativas también son conocidas como sentencias
selectivas porque permiten seleccionar uno de entre varios caminos por donde seguirá la ejecución del programa. En algunos casos esta selección viene determinada por la evaluación de una expresión lógica. Este tipo de
sentencias se clasifican en tres:
![Page 3: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/3.jpg)
Tema 6: Estructuras básicas
Informática Página 3
simples: SI
dobles: SI-SINO múltiples: SEGÚN-SEA
A las sentencias repetitivas se les conoce también como sentencias iterativas ya que permiten realizar algo varias veces (repetir, iterar).
Dentro de ellas se distinguen:
desde
mientras repetir – hasta – que
Las sentencias de salto o invocación permiten realizar saltos en el flujo de control de un programa, es decir, permiten transferir el control del
programa, alterando bruscamente el flujo de control del mismo. En programación estructurada se considera una mala práctica el uso de las condiciones de salto, ya que, entre otras cosas, restan legibilidad al código.
Sin embargo, si bien se debe evitar su uso, la mayoría de los lenguajes las incluyen.
Las sentencias de salto o invocación son:
ROMPER
CONTINUAR IR-A VOLVER
6.2 Estructura secuencial
Una estructura secuencial es aquella en la que una acción (instrucción)
sigue a otra en secuencia. Las tareas se suceden de tal forma que la salida de una es la entrada de la siguiente y así sucesivamente hasta el final del proceso. La estructura secuencial tiene una entrada y una salida. Su
representación grafica es:
Pseudocodigo
inicio
<accion1>
<accion2>
<accion n>
Inicio
Accion 1
Accion 2
Accion n
![Page 4: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/4.jpg)
Tema 6: Estructuras básicas
Informática Página 4
6.3 Estructura de selección
Al escribir un programa muchas veces nos encontramos con ciertas condiciones que influyen sobre la secuencia de pasos que hay que dar para resolver el problema. En este caso estamos en presencia de una sentencia
de selección o condicional: alternativa simple
SI <expresión> ENTONCES
< acción >
FIN-SI
La sentencia if
En C, la sentencia principal de selección es la sentencia if. La sentencia if
tiene dos alternativas o formatos posibles, el más sencillo es:
if (expresión) acciòn
La sentencia IF funciona de la siguiente manera. Cuando un programa
alcanza esta sentencia, evalúa la expresión que esta entre paréntesis. Si la
expresión es verdadera, se ejecuta la acciòn, caso contrario no se ejecuta
la acciòn y continúa con el flujo del programa.
Expresión lógica que
determina si la acción
se ha de ejecutar
La acción se ejecuta se la
expresión lógica es
verdadera
Expresion AccionSI
NO
![Page 5: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/5.jpg)
Tema 6: Estructuras básicas
Informática Página 5
Ejemplo: Prueba de divisibilidad
include <stdio.h>
main ()
{
int n,d;
printf (“ingresar dos numeros:”);
scanf(“%d %d”,&n,&d);
if ( n%d == 0)
{Printf (“ %d es divisible por
%d\n”,n,d);
}
}
Ejecución
Ingresar dos números: 18 6
18 es divisible por 6
Sentencia if de dos alternativas: if-else
La instrucción SI-ENTONCES (if) puede ser utilizada también en casos de selección
de más de dos alternativas. El segundo formato de la sentencia if es la
sentencia if-else.
SI <expresión> ENTONCES
< accion1 >
SINO
< accion2>
FIN-SI
Inicio
“ingresar dos
numeros” n,d
n%d
== 0
d“ es
divisible por”
n
Fin
si
n
o
Expresion Accion 1SIAccion 2 NO
![Page 6: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/6.jpg)
Tema 6: Estructuras básicas
Informática Página 6
include <stdio.h>
main ()
{
int n,d;
printf (“ingresar dos
numeros:”);
scanf(“%d %d”,&n,&d);
if ( n/d == 0)
Printf (“%d es divisible
por %d\n”,n,d);
else
Printf (“%d no es divisible
por %d\n”,n,d);
}
Ejecución
Ingresar dos numeros: 18 5
18 no es divisible por 5
El segundo formato de la sentencia if es la sentencia if-else.
if (expresión) acciòn1 else acciòn2
Cuando se ejecuta la sentencia if-else, se evalúa la expresión. Si expresión
es verdadera ejecuta acciòn1, y en caso contrario se ejecuta la acciòn2.
Ejemplo: Prueba de divisibilidad con dos alternativas
%
Expresión lógica que
determina si la acción
se ha de ejecutar La acción1 se ejecuta se
la expresión lógica es
verdadera
La acción2 se ejecuta se
la expresión lógica es
verdadera
n%d == 0NO
“Ingresar dos
numeros” n,d
d, “es divisible
por” nSI
d, “NO es divisible
por” n
Inicio
Fin
![Page 7: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/7.jpg)
Tema 6: Estructuras básicas
Informática Página 7
6.3.1. Estructuras de selección anidadas
Según lo expresado, las estructuras de decisión simple y doble permiten seleccionar entre dos alternativas posibles. Sin embargo, la instrucción SI-
ENTONCES puede ser utilizada también en casos de selección de más de dos alternativas. Esto es posible anidando estas instrucciones. Es decir, una
estructura SI-ENTONCES puede contener a otra, y esta a su vez a otra. La representación gráfica y pseudocódigo es la siguiente:
SI <expresion_1>
ENTONCES
< accion_1 >
SINO
SI < expresión_2>
ENTONCES
< accion_2 >
SINO
SI <
expresión_3>
ENTONCES
< accion_3
>
SINO
.....
FIN-SI
FIN-SI
FIN-SI
Como se puede observar, el anidamiento de instrucciones alternativas permite ir descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.
A fin de que las estructuras anidadas sean más fáciles de leer, es práctica habitual aplicar sangría al cuerpo de cada una.
6.4 Estructuras de repetición
En muchas ocasiones la forma más apropiada de expresar un algoritmo
consiste en la repetición de una misma instrucción de manera controlada, una cantidad finita de veces determinada de antemano (al diseñar el programa) o en tiempo de ejecución (cada vez que se ejecuta el programa).
Por ejemplo, podría ser necesario diseñar un algoritmo similar al de los cajeros automáticos, que solicite una clave al usuario y bloquee el acceso
en caso de no ingresar la contraseña correcta luego de tres intentos. O bien, si se desea procesar grupos de datos ingresados por teclado o leídos desde un archivo, hasta que no se encuentren más datos.
Las estructuras algorítmicas que permiten realizar operaciones de este tipo se conocen con el nombre de estructuras repetitivas o iterativas o
bucles.
Expresion 1 Accion 1
Expresion 2 Accion 2
Expresion 3 Accion 3
SI
NO
SI
NO
SI
NO
![Page 8: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/8.jpg)
Tema 6: Estructuras básicas
Informática Página 8
Definición: Las estructuras que repiten una secuencia de instrucciones un
número determinado de veces se denominan bucles y se denomina iteración a la ejecución de cada repetición.
Ejemplo
Se desea sumar una lista de números que ingresa desde teclado (por
ejemplo, edades de los alumnos de una clase). El algoritmo debería
ingresar el valor y sumarlo a una variable SUMA que contenga las
sucesivas sumas parciales.
ALGORITMO suma
INICIO
Suma=0
LEER número
Suma = suma + número
LEER número
Suma = suma + número
….
FIN
Como podemos observar, si no utilizamos alguna instrucción de repetir, el algoritmo deberá realizar tantas lecturas y sumas como alumnos se
procesen: 10, 100, 1000,...
Es evidente que el método no es óptimo, pero el ejemplo sirve para identificar las instrucciones que se repiten. En este caso, el bucle está
formado por las instrucciones:
LEER número
suma = suma + número
y la cantidad de iteraciones estará relacionada con el número de alumnos que se procesen durante la ejecución.
Entonces, las dos cuestiones importantes cuando se utilizan estructuras repetitivas son: ¿qué contiene el bucle? y ¿cuántas veces se repite?.
Las estructuras repetitivas se diferencian en la forma en que se produce la condición de fin del bucle y deberá utilizarse aquella más apropiada al problema particular de que se trate.
Las más usuales son:
mientras (while)
desde (for)
repetir (repeat)
6.4.1 Estructura mientras (while/do..while)
A veces no se conoce de antemano la cantidad de veces que será necesario
repetir un conjunto de instrucciones para solucionar el problema, o bien es
conveniente que estas instrucciones sean repetidas hasta alcanzar una
![Page 9: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/9.jpg)
Tema 6: Estructuras básicas
Informática Página 9
determinada condición (llamada condición de parada). En estas situaciones
se emplean estructuras repetitivas como la estructura MIENTRAS.
La condición esta situada al principio del bucle y las instrucciones interiores
al bucle se repetirán mientras sea cierta la condición.
Estructura Hacer Mientras
Sintaxis:
while (condicion bucle) sentencia; // cuerpo
while (condicion bucle) {
sentencia-1; sentencia-2;
sentencia-3; Cuerpo sentencia-n;
}
El comportamiento es el
siguiente:
1) se evalúa la condición bucle
2) Si condición bucle es
verdadera:
a) se ejecuta la/las
sentencia especificada
denominada cuerpo.
b) Vuelve el control al
paso 1
3) En caso contrario el control
se transfiere a la sentencia
siguiente al bucle
Condición
bucle
sentencia
Falsa
Verdadera
![Page 10: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/10.jpg)
Tema 6: Estructuras básicas
Informática Página 10
Ejemplo
Contar y mostrar un numero hasta 5
Pseudocódigo
inicio contador = 0
mientras contador < 5 contador = contador + 1
mostrar “contador:” , contador fin mientras
mostrar “terminado. Contador:”, contador
Estructura Hacer Hasta
La estructura Hacer-Hasta (do-while) se utiliza para especificar un bucle
condicional que se ejecuta al menos una vez. Se emplea cuando se tiene la
seguridad de que una determinada acción se ejecutará una o mas veces,
pero al menos una vez.
El comportamiento es el siguiente:
1) se ejecuta la sentencia
2) Si condición bucle es verdadera
vuelve a ejecutar la sentencia. Cuerpo
del bucle.
3) En caso contrario el control se
transfiere a la sentencia siguiente al
bucle
Condición
bucle
sentencia
Falsa
Verdadera
Contador < 5Contador =
contador +1SI
NO
Contador = 0
Inicio
“contador” ,
contador
Terminado
contador”,
contador
Fin
![Page 11: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/11.jpg)
Tema 6: Estructuras básicas
Informática Página 11
Sintaxis:
Do
sentencia /*la sentencia se ejecuta al menos una vez */
while (expresion) /*expresión lógica que determina si la acción se repite*/
Ejemplo
Bucle para introducir un digito
Pseudocodigo
inicio Hacer
Mostar “introducir un digito de 0 a 9” Leer digito
mientras digito < 0 o digito > 9 fin
Codigo C include <stdio.h>
main ()
do
{
Printf (“introduzca un digito (0 – 9)”; /* cuerpo del bucle*/
scanf (“%c”,&digito);
}
while ((digito < 0) or (digito > 9);
Ejecución
introduzca un digito (0 – 9)
2 introduzca un digito (0 – 9)
4
introduzca un digito (0 – 9)
8
introduzca un digito (0 – 9)
10
Una sentencia hacer hasta (do-while) es similar a la sentencia
hacer mientras (while) excepto que el cuerpo del bucle se ejecuta
siempre al menos una vez.
![Page 12: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/12.jpg)
Tema 6: Estructuras básicas
Informática Página 12
6.4.2 La estructura PARA (for)
Cuando se conoce exactamente la cantidad de veces que es necesario
repetir una instrucción, la estructura más apropiada para expresarlo como
algoritmo es la estructura PARA.
La estructura para (bucle for) es un método para ejecutar un bloque de
sentencias un número fijo de veces. El bucle for se diferencia del bucle
while en que las operaciones de control del bucle se sitúan en un solo sitio:
la cabecera de la sentencia.
La estructura PARA en forma general es:
PARA variable DESDE inicial HASTA final [INCREMENTO incremento]
INSTRUCCIÓN
[…]
INSTRUCCIÓN
FIN-PARA
Donde:
variable es el nombre de una variable de tipo numérico, en particular entero,
definida en el programa, cuyos valores se irán modificando en cada
repetición. Es común utilizar como nombre de esta variable i, que proviene
de la palabra índice (index en inglés), y si se utilizan varias instrucciones
PARA, emplear las letras siguientes del abecedario: j, k, l.
inicial es el valor que toma la variable en la primera repetición.
final es el valor que toma la variable en la última repetición.
incremento es el incremento que recibirá la variable entre repeticiones, es
decir, el valor que se le sumará a variable cada vez que se termine una
repetición y antes de iniciar la siguiente. Si se omite, se considera que vale
1. También puede tomar valores negativos.
Inicial
Condició
n de fin
sentencias
incremento
Verdadero
Falso
![Page 13: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/13.jpg)
Tema 6: Estructuras básicas
Informática Página 13
Problema: Se desea un programa que muestre en pantalla los números
pares entre 1 y 9.
Una forma de resolver este problema es sencillamente mostrar los números
solicitados:
INICIO
ESCRIBIR 2
ESCRIBIR 4
ESCRIBIR 6
ESCRIBIR 8
FIN
Pero esta solución se vuelve larga y tediosa si hay un pequeño cambio en la solicitud, por ejemplo:
Problema: Se desea un programa que muestre en pantalla los números
pares entre 1 y 99.
INICIO
ESCRIBIR 2
ESCRIBIR 4
[…]
ESCRIBIR 96
ESCRIBIR 98
FIN
Se dijo que la computadora es muy hábil para repetir tareas sencillas, como
la del problema. Cuando se necesita que la computadora repita una
operación, con una pequeña variación cada vez, se deben identificar las
condiciones para la repetición, y expresar esta variación de una forma
comprensible para la máquina.
En este caso, lo que se desea es una secuencia de números pares, que van
desde 2 hasta 98. Estos números pueden expresarse como 2 x k, siendo k
un entero que varía entre 1 y 98/2 = 49.
Cuando se conoce exactamente la cantidad de veces que es necesario
repetir una instrucción, la estructura más apropiada para expresarlo como
algoritmo es la estructura PARA. En este caso se puede escribir:
INICIO
PARA k DESDE 1 HASTA 49
ESCRIBIR k * 2
FIN-PARA
FIN
![Page 14: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/14.jpg)
Tema 6: Estructuras básicas
Informática Página 14
Otra opción sería:
INICIO
PARA i DESDE 2 HASTA 98 INCREMENTO 2
ESCRIBIR i
FIN-PARA
FIN
Si ahora se solicita:
Problema: Se desea un programa que muestre en pantalla los números
pares entre 1 y 200.
la solución mantiene su sencillez de expresión:
INICIO
PARA i DESDE 2 HASTA 200 INCREMENTO 2
ESCRIBIR i
FIN-PARA
FIN
i = 2
i = 200 i = i + 2
Verdadero
Falso
i
![Page 15: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/15.jpg)
Tema 6: Estructuras básicas
Informática Página 15
La sintaxis en lenguaje C
For (Inicializacion; condicionIteracion; incremento)
Sentencias
Ejemplo en C
include <stdio.h>
main ()
int i;
For (i = 2; i<200; i+=2);
Printf i;
Inicializa la
variable de
control del
bucle
Expresión lógica que
determina si las
sentencias se han de
ejecutar mientras
sea verdadera
Incrementa o
decrementa la variable
de control del bucle Sentencias a
ejecutar en cada
iteración del bucle
![Page 16: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/16.jpg)
Tema 6: Estructuras básicas
Informática Página 16
6.5 Salidas internas del bucle
Instrucción INTERRUMPIR (BREAK) Esta instrucción se utiliza cuando se desea terminar un bucle en un lugar
determinado del cuerpo del bucle sin esperar a que este termine de modo
natural por su entrada o su salida. Esta instrucción corta el ciclo de
ejecución, debe ser utilizada con precaución.
Ejemplo:
LEER número
HACER
IF número <= 0 INTERRUMPIR
suma = suma + número
LEER número
HASTA número > 100
La instrucción Interrumpir sale del bucle HACER y sigue con la instrucción
siguiente a la instrucción HASTA.
La sentencia INTERRUMPIR (BREAK) se utiliza frecuentemente junto con
una sentencia SI (IF) actuando como una condición interna del bucle.
6.6 Estructuras repetitivas anidadas
En un algoritmo puede existir y es muy frecuente que existan 2 o más
bucles. Dependiendo de la forma en que estén dispuestos, estos pueden ser
anidados o independientes. Decimos que los bucles están anidados cuando
están dispuestos de forma tal que unos son interiores a otros; y los bucles
serán independientes cuando son extremos unos con otros.
Así como se podían anidar estructuras de selección, también es posible
insertar un bucle dentro de otro. Las reglas para construir estructuras
repetitivas anidadas son iguales en ambos casos: la estructura interna debe
estar incluida totalmente dentro de la externa y no puede existir
solapamiento.
La figura nos representa en forma esquemática las instrucciones repetitivas
anidadas prohibidas y permitidas:
![Page 17: informatica](https://reader033.fdocumento.com/reader033/viewer/2022042821/563db8db550346aa9a979e12/html5/thumbnails/17.jpg)
Tema 6: Estructuras básicas
Informática Página 17
IN D E P E N D IE N T E S A N ID A D A SP ER M IT ID A S Y P R O H IB ID A S N ID O S C R U Z A D O SS AL IR D E L B U C L E E N T R A R A L B U C L E