Sunteți pe pagina 1din 5

Programación

Uso de etiquetas.

Una etiqueta se define mediante su nombre (identificador) seguido del carácter dos puntos (:).

Uso de GOTO.

Es una sentencia de salto incondicional dentro del ámbito de una función. La sentencia goto nos permite dar
un salto a la parte del programa donde se encuentre la etiqueta respectiva. Un programa debidamente
estructurado debe evitar la utilización del goto, de hecho es la sentencia prohibida en la programación
estructurada.

La sentencia goto sirve para indicar al programa que continúe ejecutándose desde la línea de código indicada.
Su sintaxis es:

ETIQUETA:

Cuando se ejecute la sentencia goto, el programa saltará y continuará su ejecución a partir de la etiqueta
marcada.

Como se puede observar se puede usar para crear un bucle, salir de bucles anidados, o para ir a una parte del
código u otra si se combina con una sentencia if...else. Pero por lo general puede obtenerse el mismo
efecto utilizando los bucles anteriormente vistos.

Ejemplo de uso: calcular el promedio de números.

#include<stdio.h>
int main(){
int n,i=0,sum=0,x;
float prom;
printf("Ingrese un numero entero mayor que 0: ");
scanf("%d",&n);
etiqueta_1:
printf("Ingrese un numero: ");
scanf("%d",&x);
sum+=x;
i++;
if(i<n) goto etiqueta_1;
prom=1.0*sum/n;
printf("\n\nEl promedio es: %f\n",prom);
return 0;
}

Uso de BREAK.

En lenguaje C, para escribir una instrucción de salto break (interrumpir), se utiliza la sintaxis:

break;

La instrucción de salto break se usa para interrumpir (romper) la ejecución normal de un bucle, es decir, la
instrucción break finaliza (termina) la ejecución de un bucle y, por tanto, el control del programa se
transfiere (salta) a la primera instrucción después del bucle.

Uso de CONTINUE.

En lenguaje C, para escribir una instrucción de salto continue (continuar), se utiliza la sintaxis:

continue;

La instrucción de salto continue siempre se usa para interrumpir (romper) la ejecución normal de un bucle.
Sin embargo, el control del programa no se transfiere a la primera instrucción después del bucle (como sí hace
la instrucción break), es decir, el bucle no finaliza, sino que, finaliza la iteración en curso, transfiriéndose el
control del programa a la condición de salida del bucle, para decidir si se debe realizar una nueva iteración o
no.
Por tanto, la instrucción continue finaliza (termina) la ejecución de una iteración de un bucle, pero, no la
ejecución del bucle en sí. De forma que, la instrucción continue salta (no ejecuta) las instrucciones que
existan después de ella, en la iteración de un bucle.

Uso de EXIT ().

La función exit() obliga a la terminación de un programa. La misma está definida en stdlib.h.

Puede tener como argumento a 0, exit(0), que significa terminación normal, en caso de que tenga como
argumento a un número diferente de 0, se supone que puede acceder a analizar el error con ese argumento.

Ejemplos de uso: Ver la Diferencia para el mismo algoritmo de break, continue, y exit()

Diseñe el agoritmo de un programa que:

1º) Pida por teclado un número (dato entero).


2º) Si el número introducido por el usuario es distinto de cero, muestre por pantalla el mensaje:

"El opuesto es: <-número>".

En caso contrario, muestre el mensaje:

"ERROR: El cero no tiene opuesto.".

3º) Repita los pasos 1º y 2º, mientras que, el usuario introduzca un número mayor o igual que -10 y menor o
igual que 10.
4º) Muestre por pantalla la suma de los números introducidos por el usuario.

#include <stdio.h>
#include <stdlib.h>

int main()
{

int n, a;

a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );

if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
break;
/* En el caso de que n sea un cero,
el bucle se interrumpe. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 );

printf( "Suma: %d", a );

return 0;
}

Es esta la solución correcta al problema?


Para la misma implementación cambiar con la sentencia continue, y exit(0) para ver la diferencia.
Bifurcación múltiple: SWITCH

Esta sentencia sirve para agrupar varias sentencias if en una sola, en el caso particular en el que una variable
es comparada a diferentes valores, todos ellos constantes, y que realiza acciones si coincide con ellos. Su
sintaxis es:

switch(control){
case expresion1_const:
sentencia1;
break;
case expresion2_const:
sentencia2;
break;
default:
sentencia0;
break;
}

 Primero se evalúa la expresión de control.


 A continuación se compara con la expresión de la primera etiqueta case. Si son iguales, se ejecuta la
sentencia1.
 Luego se vuelve a comparar la expresión de control con la etiqueta del segundo case. De nuevo, si son
iguales, se ejecuta la sentencia2.
 Se repite el proceso hasta agotar todas las etiquetas case. Si al llegar a la etiqueta default no se ha
ejecutado ninguna otra sentencia ésta es la acción por defecto. La etiqueta default es opcional, si no
la ponemos el programa simplemente salta a la línea siguiente.

Ejemplo:
#include<stdio.h>
int main(){
int num;
printf("\nIngrese un numero: ");
scanf("%d",&num);
switch(num){
case 1:
printf("Es un 1\n");
break;
case 2:
printf("Es un 2\n");
break;
case 3:
printf("Es un 3\n");
break;
default:
printf("No es ni 1, ni 2, ni 3\n");
}
return 0;
}
Lista de ejercicios sobre estructuras de repetición

1) Dado un número natural , desarrolle un algoritmo que calcule la sumatoria y el promedio de los
números menores a n y que sean múltiplos de 3.
2) Realizar la división entre 2 números naturales ( y ) por restas sucesivas, y mostrar el cociente y el
resto de la división.
3) Desarrolle un algoritmo que permita determinar a partir de un número de días (ingresado por teclado),
los años, meses, semanas y días que constituyen el número de días proporcionado. Se supone que un
año siempre tiene 360 días, y que un mes tiene 30 días.
4) Asegurándose de que el número ingresado sea un número natural, calcular el factorial de dicho
número.
5) Extraído de http://en.wikipedia.org/wiki/Bizz_buzz: Imprimir en pantalla los números comprendidos
entre 1 y 100. Pero para los múltiplos de 3, imprimir “Fizz” en lugar del número, mientras que para los
múltiplos de 5 se imprime “Buzz” en lugar del número. Si el número es múltiplo de 3 y de 5, mostrar
“Fizzbuzz” en lugar del número.
6) Calcular el producto de todos los números primos comprendidos entre 2 y .
7) Una empresa consta de empleados. A fin de mes, se debe hacer una liquidación de los sueldos de los
mismos. Para ello, se debe diseñar un algoritmo que (en cada paso) lea los sueldos brutos de los
empleados, y devuelva el sueldo neto aplicando un descuento de 9% para IPS y 16% para jubilación.
Por disposición de la gerencia, también se desea conocer la diferencia entre el mayor y el menor sueldo
neto.
8) Calcule e imprima:

9) Calcular el máximo común divisor (MCD) de dos números A y B (usando el algoritmo de Euclides).
10) Diseñe un programa que acepte un número y muestre los primeros elementos de la sucesión:

11) Dado un número , imprimir en pantalla sus divisores.


12) Realice un programa para encontrar los 100 primeros números perfectos. Un número es perfecto
cuando la suma de sus divisores (sin contar el mismo número) es igual al mismo número. Por ejemplo:
6 = 1+2+3.
13) Dado un número , imprimir una tabla de multiplicar de la siguiente manera:
* 1 2 …
1 1 2 … *1
2 2 4 … *2
… … … … …
1* 2* … *
Obs: Recordar que las tabulaciones se realizan con “\t” y los saltos de línea con “\n”.
14) Escribir un programa que, al ingresar un número entero (sea positivo o negativo), devuelva el número
en orden inverso. Ej: -375 → -573
15) Dado un número entero con un número par de dígitos, escribir un programa que muestre el número
con cada par de dígitos intercambiado. Por ejemplo: si =654321 se debe mostrar 563412.
16) Dado un número , imprimir en pantalla sus factores primos de la siguiente manera (ejemplo, 150):

17) Calcular el enésimo término de la serie de Fibonacci ( ) definida por:






18) Dado un valor como entrada, calcular el menor valor de tal que se cumpla:

19) Leer un número y diseñar un programa que calcule:

20) Una maestra desea obtener las estadísticas acerca del rendimiento de sus alumnos en la materia. Para
ello, se debe diseñar un algoritmo que lea las notas (números entre 1 y 100) y calcule:
 La mejor nota
 La peor nota
 La media de las notas.
 La cantidad de alumnos que aprueban y reprueban, considerando que se aprueba la materia
con una calificación de 60 o más.
El algoritmo finaliza cuando una nota ingresada sale fuera del rango.
21) Escribir un algoritmo que permita saber la cantidad de días entre 2 fechas cualesquiera.
22) Un comercio dispone de dos tipos de artículos en fichas correspondientes a diversas sucursales con los
siguientes campos:
 Código del artículo (A o B)
 Precio unitario del artículo
 Número de artículos
La última ficha del archivo de artículos tiene un código de artículo, una letra X. Se pide:
 El número de artículos existentes en cada categoría.
 El importe total de los artículos de cada categoría.
23) Una estación climática proporciona un par de temperaturas diarias (máxima, mínima). Ninguna de las
temperaturas debería ser igual a 9 grados. El algoritmo finaliza cuando se ingrese 0,0. Se pide
determinar el número de días cuyas temperaturas se han proporcionado; las medias máxima y mínima,
el número de errores (temperaturas de 9 grados) y el porcentaje que representan en relación al total
de valores de temperaturas consideradas.
24) Se desea conocer una serie de datos de una empresa con 50 empleados, conociendo su edad y salario:
 ¿Cuántos ganan más de 5.000.000 Gs?
 ¿Cuántos ganan entre 2.500.000 y 5.000.000 Gs?
 ¿Cuántos ganan menos que 2.500.000?
 ¿Cuántos empleados mayores a 50 años están en la empresa y cuál es la media de sus salarios?
25) Existe un juego llamado “Adivina mi número”, el cual consiste en que un niño trata de adivinar el
número (entero, y entre 1 y 100) pensado por el otro niño. Las reglas del juego son las siguientes:
 El niño pregunta al otro si un número que dice es el pensado por el segundo.
 Si el número es correcto, el primer niño gana el juego. Si no lo acierta, el segundo niño debe
indicarle si el número es mayor o menor del que pensó. El primer niño tiene 10 oportunidades
para adivinar el número, y si no lo hace, el juego es ganado por el segundo.
 El algoritmo debe indicar el ganador del juego.
Obs: en este problema, el segundo niño es la computadora (el número puede ser generado
aleatoriamente o predeterminado por el programador); mientras que el usuario es el primer niño.
26) Implementar una función, Digit(N,num) que devuelva el dígito N-ésimo de un número num de tipo
unsigned long long (%llu), teniendo en cuenta que el dígito 0 es el dígito más a la derecha (el
menos significativo). La función devolverá -1 si el número no tiene suficientes dígitos. Ejemplos:
 Digit(0,3456) Devuelve 6
 Digit(4,3456) Devuelve -1
27) Efectuar un programa que lea dos números enteros y muestre en pantalla todos los números
comprendidos entre dichos números, ambos incluidos. El programa no debe suponer que el primero
será menor que el segundo, ni viceversa, pero sí que deberá tenerlo en cuenta para mostrar los
números en orden creciente o decreciente según corresponda.
28) Modificar el programa anterior para que los números sean mostrados por filas, de forma que cada fila
tenga n números. El número de números por filas, n, será leído al principio del programa. Cada
número puede ir separado del siguiente por el carácter tabulador.

S-ar putea să vă placă și