0% encontró este documento útil (0 votos)
22 vistas26 páginas

Algoritmica 3.0

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas26 páginas

Algoritmica 3.0

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 26

REPUBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACION

UNIVERDAD POLITECNICA TERRITORIAL DEL

ESTADO BOLIVAR

U.P.T.E.B

PROGRAMCION ESTRUCTURADA

Prof: Jose Jimenez Realizado por:

Materia: Algoritmica Geremi Martinez

Carrera: Informatica C.I: 31.805.269

Semestre: T1 Alejandro Garcia

Seccion: 1 C.I: 31.484.510

Jorge Hernandez

C.I: 31.867.914

Jatniel Navas

C.I: 32.254.467

Ciudad Bolivar, 01-12-24


Desarrollo:

1) Teoremas de la programacion estructurada.

El teorema del programa estructurado es un resultado en la teoría de lenguajes de


programación. Establece que toda función computable puede ser implementada en un
lenguaje de programación que combine sólo tres estructuras lógicas. Esas tres formas
(también llamadas estructuras de control) específicamente son:

Secuencia: ejecución de una instrucción tras otra.

Selección: ejecución de una de dos instrucciones (o conjuntos), según el valor de una


variable booleana.

Iteración: ejecución de una instrucción (o conjunto) mientras una variable booleana


sea 'verdadera'. Esta estructura lógica también se conoce como ciclo o bucle.

Este teorema demuestra que la instrucción GOTO no es estrictamente necesaria y que


para todo programa que la utilice existe otro equivalente que no hace uso de dicha
instrucción.

Los científicos de la computación usualmente acreditan el teorema a un artículo de


1966 escrito por Corrado Böhm y Giuseppe Jacopini. Sin embargo, David Harel rastreó
sus orígenes hasta la descripción de 1946 de la arquitectura de von Neumann y el
teorema de la forma normal de Kleene.

La demostración de Böhm-Jacopini describe cómo construir diagramas de flujo


estructurados a partir de cualquier diagrama de flujo, usando los bits de una variable
entera extra para dar seguimiento a la información que el programa original representa
mediante puntos de entrada en el código. Esta construcción estuvo basada en el
lenguaje de programación P′′ de Böhm. La demostración de Böhm-Jacopini no
esclareció la cuestión sobre cuándo convendría usar programación estructurada para el
desarrollo de software, en parte porque la construcción ofuscaba el código del
programa en lugar de mejorarlo. Por otro lado, fue el punto de partida para iniciar el
debate. Edsger Dijkstra escribió una importante carta titulada "La sentencia Go To
considerada dañina" en el año 1968. Posteriores estudios agregaron aproximaciones
más prácticas a la demostración de Böhm-Jacopini, que mantenían o mejoraban la
claridad del programa original.
2) Estructura de control:

*estructura de decisión: Concepto, tipos y sintaxis: multiples anidadas y selectiva.

Las Estructura de Control de Algoritmo, son las estructuras que contienen las
instrucciones que permiten romper la secuencialidad de la ejecución de un programa;
esto significa que una estructura de control permite que se realicen unas instrucciones y
omitir otras, de acuerdo a la evaluación de una condición.

Todas las estructuras de control tienen un único punto de entrada. Las estructuras de
control se pueden clasificar en: secuenciales, iterativas y de control avanzadas. Esta es
una de las cosas que permiten que la programación se rija por los principios de la
programación estructurada.

Advertisement

Los lenguajes de programación modernos tienen estructuras de control similares.


Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es
su sintaxis; cada lenguaje tiene una sintaxis propia para expresar la estructura.

Las denominadas estructuras de control poseen las siguientes características:

Una estructura de control tiene un único punto de entrada y un único punto de salida.

Una estructura de control se compone de sentencias o de otras estructuras de control.

Tales características permiten desarrollar de forma muy flexible todo tipo de algoritmos
aún cuando sólo existen tres tipos fundamentales de estructuras de control ques son
denominadas Selectiva, Secuencial y Interactiva.

A lo largo de esta revista se presentarán las distintas estructuras de control, la forma de


representarlas para poder utilizarlas en nuestros programas.

Estructuras de decisión

La Estructura de decisión es una herramienta fundamental en programación que


permite la toma de decisiones basadas en ciertas condiciones lógicas, lo que ayuda a
mejorar la eficiencia y efectividad del software desarrollado. La estructura de decisión
permite al programador dar instrucciones al programa y especificar lo que éste debe
hacer en función de una serie de criterios previamente definidos.

Para implementar una Estructura de decisión, es necesario contar con conocimientos


básicos en programación y tener en cuenta que las condiciones que se establezcan
deben ser claras y precisas para que el programa pueda ejecutar la instrucción
adecuada.

La Estructura de decisión es muy común en diferentes lenguajes de programación,


como C++++, Python, Java, entre otros; y se utiliza en una variedad de aplicaciones,
desde sistemas de información empresarial hasta videojuegos. Es importante
mencionar que la eficacia de la Estructura de decisión dependerá de la calidad de la
programación y la capacidad del programador para identificar y establecer las diferentes
condiciones necesarias para su funcionamiento adecuado.

Tipos.

if: es un estamento que se utiliza para probar si una determinada condición se ha


alcanzado, como por ejemplo averiguar si un valor analógico está por encima de un
cierto número, y ejecutar una serie de declaraciones (operaciones) que se escriben
dentro de llaves, si es verdad. Si es falso (la condición no se cumple) el programa salta
y no ejecuta las operaciones que están dentro de las llaves.

if… else: viene a ser un estructura que se ejecuta en respuesta a la idea “si esto no se cumple
haz esto otro”. Por ejemplo, si se desea probar una entrada digital, y hacer una cosa si la
entrada fue alto o hacer otra cosa si la entrada es baja.

else: puede ir precedido de otra condición de manera que se pueden establecer varias
estructuras condicionales de tipo unas dentro de las otras (anidamiento) de forma que
sean mutuamente excluyentes pudiéndose ejecutar a la vez. Es incluso posible tener un
número ilimitado de estos condicionales. Recuerde sin embargo que sólo un conjunto
de declaraciones se llevará a cabo dependiendo de la condición probada.

switch..case: Al igual que if, switch..case controla el flujo del programa especificando
en el programa que código se debe ejecutar en función de unas variables. En este caso
en la instrucción switch se compara el valor de una variable sobre los valores
especificados en la instrucción case.

break es la palabra usada para salir del switch. Si no hay break en cada case, se
ejecutará la siguiente instrucción case hasta que encuentre un break o alcance el final
de la instrucción.

default es la palabra que se usa para ejecutar el bloque en caso que ninguna de las
condiciones se cumpla.

Sintaxis

### Python

```python
If condición:

# bloque de código si la condición es verdadera

Elif otra_condición:

# bloque de código si la otra condición es verdadera

Else:

# bloque de código si ninguna condición es verdadera

```

### Java

```java

If (condición) {

// bloque de código si la condición es verdadera

} else if (otraCondición) {

// bloque de código si la otra condición es verdadera

} else {

// bloque de código si ninguna condición es verdadera

```

### JavaScript

```javascript

If (condición) {

// bloque de código si la condición es verdadera

} else if (otraCondición) {

// bloque de código si la otra condición es verdadera


} else {

// bloque de código si ninguna condición es verdadera

```

### C++

```cpp

If (condición) {

// bloque de código si la condición es verdadera

} else if (otraCondición) {

// bloque de código si la otra condición es verdadera

} else {

// bloque de código si ninguna condición es verdadera

```

### PHP

```php

If ($condición) {

// bloque de código si la condición es verdadera

} elseif ($otraCondición) {

// bloque de código si la otra condición es verdadera

} else {
// bloque de código si ninguna condición es verdadera

```

Estructura de decisiones Condicional

*Estructura condicional simple.

Cuando se presenta la elección tenemos la opción de realizar una actividad o no


realizar ninguna.

Representación gráfica:

estructura condicional simple

Podemos observar: El rombo representa la condición. Hay dos opciones que se pueden
tomar. Si la condición da verdadera se sigue el camino del verdadero, o sea el de la
derecha, si la condición da falsa se sigue el camino de la izquierda.

Se trata de una estructura CONDICIONAL SIMPLE porque por el camino del verdadero
hay actividades y por el camino del falso no hay actividades.

Por el camino del verdadero pueden existir varias operaciones, entradas y salidas,
inclusive ya veremos que puede haber otras estructuras condicionales.

Problema:

Ingresar el sueldo de una persona, si supera los 3000 pesos mostrar un mensaje en
pantalla indicando que debe abonar impuestos.

Diagrama de flujo:

problema estructura condicional simple

Podemos observar lo siguiente: Siempre se hace la carga del sueldo, pero si el sueldo
que ingresamos supera 3000 pesos se mostrará por pantalla el mensaje "Esta persona
debe abonar impuestos", en caso que la persona cobre 3000 o menos no aparece nada
por pantalla.
Programa:

import java.util.Scanner;

public class EstructuraCondicionalSimple1 {

public static void main(String[] ar) {

Scanner teclado=new Scanner(System.in);

float sueldo;

System.out.print("Ingrese el sueldo:");

sueldo=teclado.nextFloat();

if (sueldo>3000) {

System.out.println("Esta persona debe abonar impuestos");

La palabra clave "if" indica que estamos en presencia de una estructura condicional;
seguidamente disponemos la condición entre paréntesis. Por último encerrada entre
llaves las instrucciones de la rama del verdadero.

Es necesario que las instrucciones a ejecutar en caso que la condición sea verdadera
estén encerradas entre llaves { }, con ellas marcamos el comienzo y el fin del bloque del
verdadero.

Ejecutando el programa e ingresamos un sueldo superior a 3000 pesos. Podemos


observar como aparece en pantalla el mensaje "Esta persona debe abonar impuestos",
ya que la condición del if es verdadera.

Volvamos a ejecutar el programa y carguemos un sueldo menor o igual a 3000 pesos.


No debe aparecer mensaje en pantalla.

Estructura condicional compuesta.

Cuando se presenta la elección tenemos la opción de realizar una actividad u otra. Es


decir tenemos actividades por el verdadero y por el falso de la condición. Lo más
importante que hay que tener en cuenta que se realizan las actividades de la rama del
verdadero o las del falso, NUNCA se realizan las actividades de las dos ramas.
estructura condicional compuesta

En una estructura condicional compuesta tenemos entradas, salidas, operaciones, tanto


por la rama del verdadero como por la rama del falso.

Problema:

Realizar un programa que solicite ingresar dos números distintos y muestre por pantalla
el mayor de ellos.

problema estructura condicional compuesta

Se hace la entrada de num1 y num2 por teclado. Para saber cual variable tiene un valor
mayor preguntamos si el contenido de num1 es mayor (>) que el contenido de num2, si
la respuesta es verdadera vamos por la rama de la derecha e imprimimos num1, en
caso que la condición sea falsa vamos por la rama de la izquierda (Falsa) e imprimimos
num2.

Como podemos observar nunca se imprimen num1 y num2 simultáneamente.

Estamos en presencia de una ESTRUCTURA CONDICIONAL COMPUESTA ya que


tenemos actividades por la rama del verdadero y del falso.

Programa:

import java.util.Scanner;

public class EstructuraCondicionalCompuesta1 {

public static void main(String[] ar) {

Scanner teclado=new Scanner(System.in);

int num1,num2;

System.out.print("Ingrese primer valor:");

num1=teclado.nextInt();

System.out.print("Ingrese segundo valor:");

num2=teclado.nextInt();

if (num1>num2) {

System.out.print(num1);

} else {
System.out.print(num2);

Cotejemos el diagrama de flujo y la codificación y observemos que el primer bloque de


llaves después del if representa la rama del verdadero y el segundo bloque de llaves
representa la rama del falso.

Compilemos el programa, si hubo errores sintácticos corrijamos y carguemos dos


valores, como por ejemplo:

Ingrese el primer valor: 10

Ingrese el segundo valor: 4

10

Si ingresamos los valores 10 y 4 la condición del if retorna verdadero y ejecuta el primer


bloque.

Un programa se controla y corrige probando todos sus posibles resultados.

Ejecutemos nuevamente el programa e ingresemos:

Ingrese el primer valor: 10

Ingrese el segundo valor: 54

54

Cuando a un programa le corregimos todos los errores sintácticos y lógicos ha


terminado nuestra tarea y podemos entregar el mismo al USUARIO que nos lo solicitó.

Estructura de decisiones simples.

Las estructuras de decisión son aquellas que permiten elegir entre dos o más opciones
en función de una condición. La condición es una expresión lógica que puede ser
verdadera o falsa, y según su valor se ejecuta una opción u otra.

Por ejemplo, si tenemos un programa que determina si un número es par o impar, la


estructura de decisión sería:

1. Pedir al usuario un número.


2. Evaluar SI el número es divisible entre 2 (condición).

3. Si la condición es verdadera, mostrar el mensaje “El número es par”.

4. En cambio, si la condición es falsa, mostrar el mensaje “El número es impar”.

Clasificación de las estructuras de decisión.

Existen diferentes tipos de estructuras de decisión según el número de opciones y la


forma de evaluar la condición. Los más habituales son:

If – Else: es la estructura de decisión más simple, que permite elegir entre dos
opciones

If – ElseIf – Else: es una extensión de la estructura anterior, permite evaluar varias


condiciones en cascada, y ejecutar una opción diferente para cada una, se usa cuando
hay más de dos opciones posibles y son excluyentes entre sí.

Switch – Case: es otra forma de evaluar varias condiciones, pero en lugar de usar
expresiones lógicas, se usa una variable o expresión que puede tomar distintos valores.
Se usa cuando hay más de dos opciones posibles y son independientes entre sí.

Estas son las estructuras más comunes que podemos encontrar en los lenguajes de
programación, pero existen otras más complejas que veremos en próximos temas.

Definición de una estructura de decisión simple.

Este tipo de decisiones solo toma dos posibles respuestas: TRUE y FALSE, cuando el
resultado es verdadero se ejecutará una instrucción específica, en cambio si el
resultado es falso. Inmediatamente se finalizará el programa.

El pseudocódigo de una estructura de decisión simple es el siguiente:

Algoritmo <Decision simple>

Variable type IDENTIFICADOR //o constante

Variable-N type IDENTIFICADOR-N //o constante

Si (condicion)

instruccion-1

instruccion-N
FinSi

FinAlgoritmo

Planteamiento del problema:

Desarrolle un algoritmo que permita conocer la media de cuatro calificaciones de un


semestre, si el promedio es mayor a 8.0 imprima en pantalla “Semestre aprobado”.

Descripción narrada:

Algoritmo <Promedio de calificaciones>

1. Leer las calificaciones proporcionadas (c1, c2, c3, c4).

2. Calcular el promedio.

3. Sí el promedio es mayor a 8.0 imprimir “Semestre aprobado”.

FinAlgoritmo

Pseudocódigo:

Algoritmo <Promedio de calificaciones>

Variable Real c1, c2, c3, c4, p;

Imprimir(“Ingrese la primera calificación: ”);

Leer(c1);

Imprimir(“Ingrese la segunda calificación: ”);

Leer(c2);

Imprimir(“Ingrese la tercera calificación: ”);

Leer(c3);

Imprimir(“Ingrese la cuarta calificación: ”);

Leer(c4);

p = (c1 + c2 + c3 + c4) / 4;

Si(p >= 8.0)

Imprimir(“Semestre aprobado: “, p);


FinSi

FinAlgoritmo

Estructura de decisiones dobles.

Las estructuras de decisión doble

permiten ejecutar dos conjuntos de

sentencias alternativos en función del

resultado de la evaluación de una

condición lógica.

➲ Si el resultado es “cierto” se ejecuta

un grupo de sentencias.

➲ Si el resultado es “falso”se ejecuta

otro grupo de sentencias.

Formato en pseudo código

Si ( decisión ) entonces

sentencias....

Si no

sentencias....

fin si

La sentencia if - else es utilizada para

tomar decisiones y su formato es:

if ( expresión lógica){

sentencias....

else{

sentencias....
}

Ejemplo:

if ( Edad < 18 ){

printf(“Necesita autorizacion\n”);

else{

if ( Edad > 30 ){

printf(“No aplica\n”);

else{

printf(“Puede continuar\n”);

Estructura de decisiones multiples.

La decisión múltiple o estructura selectiva se emplea cuando el programa no puede


ejecutar una bifurcación, debido a que se tienen más de dos opciones para resolver un
problema.

En lugar de ser denominados como decisión, se llamará selector con el cual se


delimitarán las opciones (llamadas casos, case) para que ejecuten las instrucciones
específicas. Es importante que, para cada caso, se debe explicar la condición (o valor)
para que el programa tome esa opción. Para que, al momento de cumplir con una
condición se detenga el programa y no evalúe el resto de las condiciones, se debe
declarar un parámetro de ruptura o break.

El pseudocódigo de una estructura de decisión múltiple es el siguiente:

Algoritmo <Decision multiple>

Variable type IDENTIFICADOR //o constante

Variable-N type IDENTIFICADOR-N //o constante

Segun
Caso valor1: Instruccion-1

Instruccion-n1

Romper

FinCaso

Caso valork: Instruccion-k1

Instruccion-nk

Romper

FinCaso

EnOtroCaso: InstruccionIOC-1

InstruccionIOC-n

Romper

FinCaso

FinSegun

FinAlgoritmo

Estructura de decisiones anidadas.

Dentro de este tipo de estructura se puede validar nuevamente una decisión si


anteriormente ya se había tomado una. En pocas palabras, la primera bifurcación
heredará una nueva decisión si esta corresponde al resultado verdadero o falso, según
sean las condiciones del programa.

El pseudocódigo de una estructura de decisión anidada es el siguiente:

Algoritmo <Decision anidada>

Variable type IDENTIFICADOR //o constante

Variable-N type IDENTIFICADOR-N //o constante

Si (condicion)
instruccion-t1

instruccion-tN

Otro

Si (condicion-f)

instruccion-f1

instruccion-fN

FinSi

FinSi

FinAlgoritmo

Ejemplo:

Desarrolle un algoritmo que permita conocer la media de cuatro calificaciones de un


semestre, si el promedio es mayor a 8.0 imprima en pantalla “Semestre aprobado”; en
cambio sí la calificación está entre 6.0 y 7.9 imprima “Examen final”, si no (es menor a
6.0) que imprima “Semestre reprobado”.

Descripción narrada:

Algoritmo <Promedio de calificaciones>

1. Leer las calificaciones proporcionadas (c1, c2, c3, c4).

2. Calcular el promedio.

3. Sí el promedio es mayor a 8.0 imprimir “Semestre aprobado”.

4. En cambio, si el promedio está entre 6.0 y 7.9 imprimir “Examen final”.

5. Si es menor a 6.0 imprimir “Semestre reprobado”.

FinAlgoritmo

Estructura de decisiones selectiva.


Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo
tipo de problemas. Las utilizamos cuando en el desarrollo de la solución de un problema
debemos tomar una decisión, para establecer un proceso o señalar un camino
alternativo a seguir. Esta toma de decisión (expresada en el diagrama de flujo con un
rombo) se basa en la evaluación de una o más condiciones que nos señalarán como
alternativa o consecuencia, la rama a seguir. Hay situaciones en las que la toma de
decisiones se realiza en cascada. Es decir, se toma una decisión, se marca la rama
correspondiente a seguir, se vuelve a tomar otra decisión, se marca la rama
correspondiente a seguir, se vuelve a tomar otra decisión y así sucesivamente. Por lo
que para alcanzar la solución de un problema o subproblema debemos aplicar
prácticamente un árbol de decisión.

If

If – Else

Switch – Break

Instrucción “If”: Nos permite evaluar si una condición es verdadera o falsa y en base al
resultado realizar una acción. Por ejemplo: Si (If) hace calor, usar camiseta. La
condición es una expresión del tipo booleana, es decir, solo puede ser verdadero (1) o
falsa (0). Esta instrucción no realiza ninguna acción si la condición es falsa, solo si es
verdadera. A continuación un ejemplo de evaluaciones de condiciones:

If (3 > 2) – La condición es verdadera (3 es mayor que 2)

If (2 < 1) – La condición es falsa (2 no es menor que 1)

Bloque de sentencias: Se utilizan mucho en las estructuras de control selectiva en


lenguaje C. Consiste en un conjunto de instrucciones delimitadas por un par de llaves
“{}”. Ejemplo:

Código:

Instrucción 1

Instrucción 2

Instrucción 3
}

Si quieres utilizar una condición If en donde solo se ejecutará una acción se realiza de
la siguiente manera:

Código:

If(Condicion)

Instrucción;

Si se quiere utilizar una condición If en donde se ejecutarán varias acciones se debe


utilizar un bloque de sentencias de la siguiente manera:

Código:

If(Condicion)

Instrucción1;

Instrucción2;

Instrucción3;

3) Estructura de control iterativas.

Las estructuras de control iterativas se utilizan para resolver problemas donde sea
necesario repetir un determinado número de veces un conjunto de instrucciones.
También se les conoce como estructuras repetitivas.

Cuando en un programa necesita la ejecución repetitiva de un conjunto de operaciones,


es necesario implementar un ciclo iterativo.

Un ciclo iterativo es la repetición de operaciones hasta que se cumple una condición.


Las operaciones o instrucciones son las mismas pero los datos que se procesan
pueden cambiar en la ejecución del ciclo.
En general, los ciclos deben terminar después de un cierto número (finito) de
repeticiones, y el conjunto de operaciones a repetir se conocen como bucle.

En ocasiones, sabemos el número de veces que el ciclo se repetirá, en otras, no


sabemos a ciencia cierta cuántas repeticiones se harán.

Al igual que en las estructuras de control selectivas, se requiere definir la condición con
la que se evaluará y decidirá qué acciones se llevarán a cabo. Recordemos que para
construir las condiciones es necesario utilizar los operadores relacionales (de
comparación) y los operadores booleanos (lógicos).

as estructuras de control iterativas se clasifican en:

Ciclos de la estructura tipo FOR – NEXT – END FOR

Ciclos de la estructura tipo DO – UNTIL

Ciclos de la estructura tipo WHILE – END WHILE

Para poder trabajar con estas estructuras, es necesario comprender antes las variables
especiales de ciclos: Contadores y Acumuladores.

Estructura de control iterativas ciclo mientras repetir.

Una instrucción iterativa o repetitiva, también conocida como bucle, tiene la misión de
ejecutar las mismas instrucciones de código una y otra vez mientras que se cumpla una
determinada condición.

Se llama ciclo a la secuencia de sentencias que se repiten en un bucle.

Una instrución iterativa requiere de una serie de componentes o instrucciones para su


correcto funcionamiento. Dichas componentes, expresadas en pseudocódigo, son:

1 Inicialización.

2 MIENTRAS (expresion booleana) HACER {

3 Cuerpo.

4}

5 Finalización.
La Inicialización es el conjunto de instrucciones que se ejecutan para inicializar
las variables que participan de la iteración.

MIENTRAS-HACER es la instrucción iterativa. Ejecutará el cuerpo, lo contenido


entre las llaves, siempre que la expresión booleana sea cierta.

El Cuerpo es el conjunto de instrucciones que se ejecutan mientras que se


cumpla la expresión booleana. Es imprescindible que en el cuerpo haya alguna
instrucción que modifique para el siguiente ciclo la expresión booleana (de no
modificarse nunca, el bucle no tendría fin).

La finalización es el conjunto de instrucciones que se ejecutarán cuando la


iteración termina.

Bucle for

El bucle for es una estructura iterativa que se ejecuta un número preestablecido de


veces, que es controlado por un contador o índice, incrementado en cada iteración.

A continuación, mostramos el diagrama de flujo del bucle for. En términos de diagramas


de flujo, los rectángulos significan la realización de un proceso, en otras palabras la
ejecución de un bloque de instrucciones. Por otro lado, los rombos con conocidos como
símbolos de decisión, es decir se corresponden a preguntas cuyas respuestas
únicamente tienen dos posibles respuestas, concretamente, TRUE (T) o FALSE (F).

Una o mas instrucciones dentro del rectángulo de inicialización son seguidas por la
evaluación de la condición en una variable la cual puede asumir valores dentro de una
secuencia. En la figura, esto es representado por el símbolo del rombo.

En otras palabras, estamos comprobando si el valor actual de la variable está dentro de


un rango específico. Por lo general, especificaremos el rango en la inicialización.

Si la condición no se cumple, es decir el resultado es False, el bucle nunca se


ejecutará. Esto es indicado por la flecha de la derecha de la estructura for. El programa
entonces ejecutará la primera instrucción que se encuentre después del bucle.

Si la condición se verifica, una instrucción o bloque de instrucciones es ejecutado. Una


vez la ejecución de estas instrucciones ha finalizado, la condición es evaluada de
nuevo. En la figura esto es indicado por las líneas que van desde el rectángulo que
incrementa o disminuye el contador hasta el símbolo del rombo que evalúa la condición.
Por ejemplo, en el siguiente fragmento de código calculamos la media de un conjunto
de observaciones, que se obtiene dividiendo la suma de todas las observaciones por el
número de individuos:

# Creamos un vector aleaotorio de 10 observaciones

observaciones <- sample(1:50, 100, replace = TRUE)

# Inicializamos `suma` de todas las observaciones

suma <- 0

# Creamos un bucle for que calcula la media

for (i in seq_along(observaciones)) {

suma <- observaciones[i] + suma

media <- suma/length(observaciones)

# Mostramos por pantalla la media

media

## [1] 25.99

Bucles for Anidados

Los bucles for pueden ser anidados. En el siguiente fragmento de código creamos un
algoritmo que calcula la suma de dos matrices cuadradas:

# Creamos dos matrices cuadradas

m1 <- matrix(sample(1:100, 9, replace = TRUE), nrow = 3)

m2 <- matrix(sample(1:100, 9, replace = TRUE), nrow = 3)

# Inicializamos la matriz que contendra m1+m2

suma <- matrix(nrow = 3, ncol = 3)

# Para cada fila y cada columna, realizamos la suma elemento a elemento

for (i in 1:nrow(m1)) {

for (j in 1:ncol(m1)) {
suma[i, j] <- m1[i, j] + m2[i, j]

# Mostramos por pantalla la suma de m1+m2

suma

## [,1] [,2] [,3]

## [1,] 113 162 42

## [2,] 143 90 146

## [3,] 119 109 110

El siguiente ejemplo sirve para ejemplificar el anidamiento de bucles for. Cada uno con
su propio bloque de instrucciones y manejado con su propio índice. Es decir, i controla
las filas de las matrices y j las columnas.

Bucle while

Cuando nos encontramos en la situación en la que no conocemos el número de


iteraciones de antemano, podemos hacer uso del bucle while. Este bucle se ejecuta
mientras se cumple una condición que se comprueba al principio de la construcción.

A continuación se muestra el diagrama de flujo de while:

La estructura de una construcción while está compuesta de un bloque de inicialización,


seguido por una condición lógica. Esta condición es normalmente una expresión de
comparación entre una variable de control y un valor, en la que usaremos los
operadores de comparación, pero cabe señalar que cualquier expresión que evalúa a
un valor lógico, TRUE o FALSE, es válida.

Si el resultado es FALSE (F), el bucle nunca será ejecutado. Esto es indicado por la
flecha de la derecha en la figura. En esta situación el programa ejecutará la primera
instrucción que encuentre después del bloque iterativo.

Por otro lado, si el resultado es TRUE (T), la instrucción o bloque de instrucciones del
cuerpo de while son ejecutadas. Esto sucederá hasta que la condición lógica sea
FALSE.

El siguiente ejemplo es un ejemplo de utilización de la estructura while:


# Algoritmo que muestra por pantalla los 10 primeros números naturales

n=1

while (n <= 5) {

print(n)

n=n+1

## [1] 1

## [1] 2

## [1] 3

## [1] 4

## [1] 5

Bucle repeat

El bucle repeat es similar a while, excepto que la instrucción o bloque de instrucciones


de repeat es ejecutado al menos una vez, sin importar cual es el resultado de la
condición.

A continuación, como en los apartados anteriores mostramos el diagrama de flujo de la


estructura repeat:

Diagrama de Flujo Repeat

Como alternativa al ejemplo anterior, podríamos codificar el algoritmo como:

# Algoritmo que muestra por pantalla los 10 primeros números naturales

n=1

repeat {

if (n <= 10) {

print(n)

n=n+1

} else {
break

## [1] 1

## [1] 2

## [1] 3

## [1] 4

## [1] 5

## [1] 6

## [1] 7

## [1] 8

## [1] 9

## [1] 10

En el ejemplo de la estructura repeat podemos observar que el bloque de código es


ejecutado al menos una vez y que finaliza cuando la función if es verificada.

Sentencias que rompen ciclos.

La sentencia break.

La sentencia continue.

La sentencia exit().

Sentencia goto.
Ciclo para: sintaxis.

Seguidamente, se muestra la estructura del bucle for. Este presenta tres partes, que
sirven para definir cómo se deben realizar las repetición de las instrucciones.

for (nombre de la variable con inicialización de valor; condición para detenerse;


incremento o decremento){

//instrucciones a ejecutar en cada repetición (iteración)

} //fin del ciclo

La primera parte corresponde a la inicialización del contador, se ejecuta únicamente al


comenzar la primera repetición del ciclo. Usualmente la variable se inicia en 0 ó 1, pero,
también se pueden emplear otros valores.

La segunda parte es la condición que se evaluará cada vez que comience una iteración
del ciclo. Contiene una expresión para decidir cuándo se ha de detener el bucle, o bien,
la condición para que continúe la ejecución de las instrucciones.

Por último se coloca la actualización del contador. En esta parte se puede incrementar
o decrementar el valor del contador, así se actualiza el valor de esta variable cada vez
que termina el ciclo.

Después del for se colocan las instrucciones que se ejecutarán en cada repetición,
acotadas entre llaves.

Múltiples ciclos anidados

“Los ciclos anidados son ciclos que están dentro de otros ciclos. No hay límite para
definir ciclos anidados. Escribir ciclos anidados no es necesariamente un error. Escribir
ciclos dentro de ciclos puede ser necesario dependiendo de lo que estemos haciendo.
Un ciclo anidado se convierte en un error lógico cuando existe una manera más
optimizada de resolver el problema. Estos ciclos incrementan el tiempo de ejecución y
además incrementan la complejidad para leer, entender e interpretar el código. En este
código tenemos dos listas, una de marcas y una de años. Luego, se crea una lista
marca_anios inicialmente vacía y se itera la lista_marcas, luego la lista_anios y se
agrega una tupla de la marca y el año que están siendo iterados en ese momento a la
lista marca_anios. Estos ciclos permiten combinar los datos de las dos listas para
obtener una lista de tuplas de sus combinaciones. Inicialmente, lista_marcas,
lista_anios tienen tres valores cada una. Si corremos el código, vamos a…

También podría gustarte