0% encontró este documento útil (0 votos)
27 vistas12 páginas

Apuntes - Estructuras de Control

Cargado por

jorge Rodriguez
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas12 páginas

Apuntes - Estructuras de Control

Cargado por

jorge Rodriguez
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 PDF, TXT o lee en línea desde Scribd

Capítulo II.

Lenguaje de Programación 19

1.5 SENTENCIAS DE CONTROL


Son las estructuras básicas necesarias para organizar el flujo de control en un
programa. Tres de éstas son: la secuencial, la de alternativa y de repetición. En este
punto revisaremos las sentencias de alternativa, la cual controla la ejecución de uno o
varios bloques de instrucciones, dependiendo de si se cumple o no alguna
condición, o del valor final de una expresión.

Una Condición es una expresión lógica, es decir, una combinación de variables


y/o constantes con operadores lógicos y relacionales que producen resultados
ciertos o falsos.

1.5.1. Operadores relacionales y lógicos

Se utilizan para comparar dos operandos, que pueden ser constantes, variables,
cadenas, números con las cuales podemos formar expresiones lógicas que
representan condiciones que pueden ser ciertas o falsas.

OPERADORES RELACIONALES: relacionan un término con otro para definir su


igualdad, jerarquía o cualquier otra relación que guarden.

Operador Propósito
< Menor que
<= Menor o igual a
> Mayor que
>= Mayor o igual a
== Igual a
!= No igual a , distinto de
o Siempre se devuelve un valor entero que puede ser 1 ó 0
o La asociatividad es de izquierda a derecha
o Su precedencia es menor que la de los operadores aritméticos y monarios.
o Cuando se utilizan los operadores relacionales con operandos lógicos, falso
siempre es menor que verdadero.

Ejemplo:
Res = ((7 > 8) > (9 >6)); /* 0 > 1 (falso) */

Ejemplos :
int a,b ;
float x = 15.0, y = 18.0, z = 20.0;
char ch1 = ‘A’, ch2 = ‘B’;

a) a=x ==y  0

b) x < y  1

c) y <= z  1

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 20

d) ch2 > ch1  1

1.5.2. OPERADORES LÓGICOS

Un operador lógico permite asociar una o más expresiones relacionales. Si


tenemos más de una expresión relacional, ésta se conoce como condición
compuesta, porque estarán relacionadas a través de operadores lógicos.

Operador Propósito
&& AND (Y), da como resultado 1, si ambas comparaciones son
ciertas (1)
|| OR (O), Si una de las comparaciones es 1 (cierta) , el resultado
es 1
! NOT, da 0, si el resultado es 1;
da 1, si el resultado es 0

Reglas .
Los operandos pueden ser enteros, real o puntero.
Los tipos pueden ser diferentes.
El resultado es de tipo int.

Ej. int p, q, r1, r2 ;


float x=15, y= 18, z= 20;
p= x==y; /* resultado 0 */
q= (x< y) && (y<=z); /* resultado 1 */
p=10;
q=0;
r1=p&&q ; /* resulta 0 */
r2 = p|| q ; /* resulta 1 */
r1= !p; /* resulta 0 */

Ejemplo 2:

Int 1 = 7;
Flota f = 5.5;
Char c = ‘w’;
(i >= 6) && (c==w)  1

Ejemplo :
10>5&& !(10<9) || 3<=4 cierto
1&& !0 || 1 cierto
1&& !(0 || 1) falso

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 21

Jerarquía de los operadores relacionales y lógicos

1) !
2) <, <=, >, >=
3) ==, !=
4) &&
5) ||

Ejemplo :

10>5&& !(10<9) || 3<=4 cierto 1&& !(0 || 1) falso

1&& !0 || 1 cierto

1.5.3. EXPRESIONES CONDICIONALES

C tiene un operador ternario (?: ), para escribir una expresión condicional.:


Formato :
operando1 ? operando2 : operandon 3;

o la expresión operando1 debe ser de tipo entero, real o puntero.

Evaluación :

o Si el resultado de la evaluación de operando1 es distinta de 0, se realiza


operando2.
o Si el resultado de la evaluación de operando1 es 0, se realiza operando3.

Ejemplo:

mayor = (a>b)? a : b; /* si a>b, mayor = a, de lo contrario mayor= b */

c+= ((a>0)&& (a<=10))? ++a: a/b;

Práctica:

a) (i < 0) ?0: 100; b) (a>0 && a<=10)?++a:a/b;


c) (f < g)?f:g;

1.6 TIPOS DE ESTRUCTURAS DE ALTERNATIVA

1.6.1. EJECUCIÓN CONDICIONAL – SENTENCIA IF:


Toma una condición referente a la acción a ejecutar basándose en el resultado
(verdadero o falso) de una expresión.

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 22

formato: if (cond) sentencia (s);


else sentencia(s); /* opcional*/

Si se presenta más de una instrucción (sentencia) por el bloque cierto (que la


cond. se cumpla) o por el bloque falso( que la cond. no se cumpla), debe ponerse
entre { }.

Ej. if(x==7)
printf(“ igual \n”);
else
printf(“Desigual \n”);

Ej. main()
{int y;
printf(“Introduzca un número”);
scanf(“%d”, &y);
if(i < 1000) || (estado == ‘R’))
printf(“%d”, y);
}
Existen las expresiones condicionales en C que compara si un término es distinto
de cero (!= 0).

Ej. float a, b;
If (b) /* equivale b!= 0 */
printf(“El cociente = %f \n”, a/b);

Ej float a,b;
If (b)
{ printf(“ a = %f b=%f \n”,a,b);
printf(“a/b = %f \n”, a/b); }

Ej. #include <stdio.h>


main()
{ int x;
scanf(“%d”, &x);
if ((x>3) && (x<4))
printf(“Entre tres y cuatro \n”);
else
if((x>6 )&& (x<8)) printf(“Entre seis y ocho\n”);
else
printf(“Restantes casos \n”); }

Como regla general la opción else pertenece siempre a la sentencia if más


cercana, a no ser que se indique otra cosa mediante el empleo de llaves {}.

If (x)
If (y)

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 23

printf(“ 1”);
else
printf(“2”);

ó if(x)
{if (y) printf(“1”); }
else
printf(“2”);

a. Anidamiento de if

Las sentencias if…..else pueden estar anidadas.


Formato.
If (expresión) sentencia1
else
If (expresión) sentencia2
else
If (expresión) sentencia3
Else
Sentencia 4
Cuando se encuentra una expresión con valor no nulo(cierta) dentro de un grupo
de sentencias if – else anidados, se ejecutará la sentencia correspondiente y el
resto de las sentencias if – else anidadas se ignorarán. Por tanto se transferirá el
control fuera del conjunto de sentencias anidadas una vez que reencuentre una
condición cierta.

Ejemplo .
If (c ==1)
printf (“soltero”);
else
If (c ==2)
printf (“casado”);
else
if ……..
Como regla general la opción else pertenece siempre a la sentencia if más
cercana, a no ser que se indique otra cosa mediante el empleo de llaves {}.

Caso 1:
If ______________ Ejemplo 1
else
If ____________ If ( a > b)
printf(“%d es mayor que %d”, a, b);
else Else
If ( a < b)
printf(“%d es mayor que %d”, b, a);
Apuntes de Programación C Else Prof. Mitzi de Velásquez
Printf(“%d es igual que %d”, a, b);
Capítulo II. Lenguaje de Programación 24

If _____________
Else
:…..
Sentencia 4

Caso 2 :
Ejemplo 2
If (expression)
If ( a == b)
If (expresión2) If ( b == c)
Sentencias 1; printf(“a = b =a”);
else else
Sentencias 2; printf(“b < > c”);

Caso 3: Si quisiera asociar el else a expresión1 en vez de a expresión 2 se define

If (expression) Ejemplo 3 :
{ If (expresión2) Sentencias 1;
If ( a == 0)
} { If ( b != 0)
else s++;
Sentencias 2; }
else
1.6.2. SENTENCIA switch r = r + 1;
Permite ejecutar una de varias acciones, dependiendo del valor de una
expresión

formato:
switch (expresión)
{ case expresión:
sentencia 1;
sentencia 2;

sentencia n;
break;
case expresión 1:
case expresión 2:
break;
case expresión m;
sentencias
default:
sentencia(s); (OPCIONAL)

expresión: debe ser un valor entero (incluyendo el tipo char).


sentencia: es una sentencia simple o compuesta.

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 25

La sentencia representa opciones posibles a seguir. Cada opción se expresa


como un grupo de una o más sentencias individuales dentro de la sentencia global
incluida.

Hay dos cosas importantes sobre la sentencia switch:


1. La sentencia switch sólo puede comprobar por igualdad.
2. No puede tener dos constantes case con idénticos valores
en el mismo switch.

EJEMPLO: Selección múltiple con variable tipo entero.


int tipo;
switch (tipo)
{
case 1:
printf (“casado”);
break;
case 2:
printf (“soltero”);
break;
case 3:
printf (“viudo”);
break;
}

EJEMPLO: Selección con variable tipo caracter.


char car;
car = getchar();
switch (car) {
case ‘r’ :
case ‘R’:
printf (“Estoy en case r”);
break;
case ‘a’:
case ‘A’ :
printf (“Estoy en case a”);
default:
printf (“ERROR”);
}

- No se requiere un orden secuencial al definir las variables del case

Sentencias de Repetición

1.6.3. Sentencia WHILE:

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 26

Ejecuta una sentencia, simple o compuesta, cero o más veces dependiendo del
valor de una expresión.
Formato: while (expresión)
{ sentencia; }

La ejecución sucede así:


1. se evalúa la expresión
2. si el resultado es cero (falso), no se ejecuta la sentencia y se pasa a
ejecutar la siguiente sentencia.
3. si el resultado es = 0 ( cierto), se ejecuta la sentencia del while y se repite el
proceso.

Ejemplo 1: Aceptar un carácter diferente de a :

#include <stdio.h>
main()
{
char c;
c = ‘\0’;  caracter nulo
while (c!=’a’)
c = getchar( );

Ejemplo 2: Rutina que solicita Ejemplo 3 :


obligatoriamente la respuesta ( s/ n) --------
---- #define FIN '\n' /* FIN = '\n' es el ENTER */
char car; main()
printf(“\n desea continuar? s/n”); {char ch; int contador = 0;
while ((( car = getchar())!= ‘s’ && car!= ‘n’)) printf("Ingrese una frase : ");
printf(“\n desea continuar? s/n”); while((ch=getchar()) != FIN)
{ putchar(ch);
contador ++;
}
printf(" \n Se han impreso %d caracteres
\n ", contador );
}

1.6.4. Sentencia for:


Permite ejecutar una sentencia simple o compuesta repetidamente un número
específico de veces.
formato:
for(ini ; cond ; incre/decre)
{ sentencia(s);}

Ini = valor inicial de la variable de control, puede ser una constante o el valor de

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 27

una variable.
cond= es una expresión que comprueba la variable de control (debe ser cierta)
incre/decre = define la manera en que cambia la variable de control.
 Cuando se ejecuta la sentencia for, la condición se evalúa y se comprueba
antes de entrar al ciclo, el incremento es evaluado al final del ciclo.
 La ejecución del ciclo continuará mientras el valor de expresión 2 no sea
cero, o sea mientras la condición sea cierta.

Caso 1: Sentencia simple. Se imprimen los números del 1 al 100

------
main ( )
{
int x;
for(x=1 ; x<=100 ; x++)
printf(“%d”,x);
}

Desde el punto de vista sintáctico no es necesario que se encuentren presentes


las 3 expresiones en la sentencia for, aunque deben aparecer los (;). La expresión
primera y tercera se puede omitir si se inicializa y/o altera el índice de alguna
forma. Si es la condición, se asume que ésta tiene un valor permanente de 1
(cierto), así que el ciclo se ejecutará independientemente a menos que se utilice
un mecanismo como la sentencia break o return. No es lo usual o ideal.
Ejemplo del caso anterior:
int dígito;
digito =0;
for( ; digito<=100 ; )
printf(“%d”,digito++);

Caso 2 : presentación de un ejemplo con sentencias compuestas.


----
int k, x ;
for(k=7 ; k<=122 ; k+=7)
{
printf(“Se imprime el valor de k: %d”,k);
printf(“Cuadrado de k: %d”,k *k);
printf(“número de veces ejecutado: %d”,x=x+1);
}

a. Bucles Anidados
Un bucle for colocado dentro de otro bucle for. El bucle interno se ejecutará
totalmente por cada valor del bucle que lo contiene.
Ejemplo: Imprimir una matriz 5*6 y rellenarla de asteriscos.
main( )
{
int fila col;

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 28

char c = ‘*’;
printf(“imprimir matriz \n ”);
for(fila=1;fila<=5,fila++)
{
for(col=1; col <= 6; col++)
printf(“%c”,c);
}
printf(“\n”);
}

Práctica
Escribir un programa que imprima un triángulo de n filas. Aceptar el número de
filas por pantalla.

1.6.5. Sentencia DO WHILE


Evalúa una condición al final de la estructura. Ejecuta una sentencia simple o
compuesta una o más veces mientras la condición es cierta.
Formato: do{
Sentencia(s);
}while(condición);

Al contrario de los ciclos for y while que comprueban la condición en lo alto del
bucle, el bucle do/while la comprueba en la parte baja del mismo. Se repite hasta
que la condición de prueba se hace falsa o cero.

Ej. #include<stdio.h>
main() /* Leer un conjunto de números mientras éste sea menor de 100*/
{ int num;
do
{
scanf("%d", &num);
}
while(num<100);
}
El uso más común para el do/while es una rutina de selección en un menú.
/* control de una entrada correcta */
do{printf(" CONVERSION \n");
printf(" 1: Decimal a Hexadecimal \n");
printf(" 2: Hexadecimal a Decimal \n");
printf(" 3: Decimal a Octal \n");
printf(" 4: Octal a Decimal \n");
printf(" 5: Salir \n");
printf(" Teclee su opción : ");
scanf("%d", &op);
}while(op<1 || op > 5);

Apuntes de Programación C Prof. Mitzi de Velásquez


Capítulo II. Lenguaje de Programación 29

Práctica:
Encuentre el error en cada uno de los segmentos de código y corrija:
a) x=1;
while(x<=10);
x++;

b) for(y=1 y!=10; y+=1)


printf("%d \n" y);

c) imprimir del 1 al 10
n=1;
while(x<10)
printf("%d \n", n++);

d) Elabore un programa en C que genere las 12 tablas de multiplicar con 10


elementos cada una. Debe imprimir del título de la tabla que está generando y
todos los elementos de la tabla(1 x 1 =1). Haga un programa con el for, while y
do/while.

SALTOS EN PROGRAMAS.

1.6.7. SENTENCIA BREAK (Rompiendo el bucle)

break;

La sentencia break fuerza la terminación inmediata de un bucle (do, for,


switch, while) y transfiere el control a la sentencia siguiente del bucle.
Cuando estas sentencias están anidadas, el break solamente finaliza la
ejecución de la sentencia donde está incluida.

EJEMPLO:
#include <studio.h>
main ( )
{ int t;
for ( t = 0; t< 100; t + +)
{ printf (“%d”, t);
if (t = = 10) break;
}
}

do For (cont = 0; cont <= n; ++cont)


{ printf(“%d”, t); While (c = getchar( ) != ‘\n’)
++t; {
if (t==4) If (c = ‘*’)
break; Break;
while( t <=9); }
Apuntes de Programación C Prof. Mitzi de Velásquez
Capítulo II. Lenguaje de Programación 30

1.6.8. La Sentencia CONTINUE


continue;

No ejecuta las sentencias que se encuentran a continuación de él y se salta a la


siguiente pasada a través del bucle. Puede incluirse en una sentencia do, while y
for.

EJEMPLO:
- do {
scanf(“%d”, &num);
if (num < 0) continue;
printf(“%d”,num);
}
while (num!= 100)
Esta rutina imprime sólo los números positivos.

En los ciclos while y do/while, una sentencia continue hace que el control del
programa pase a la prueba condicional y continúe el proceso de iteración.

Ejemplo : Ejecuta un ciclo mientras no se da control z. Imprime cualquier carácter


a excepción de blancos.

- while ( ( ch = getchar ( ) ) ! = EOF )


{
if (ch = = ‘ ‘ )
continue;
putchar (ch)
}

Para el ciclo for, hace que se ejecute la parte del incremento del ciclo, seguida de
la prueba condicional y finalmente hace que el ciclo continúe.

for (x =0;x <= 100; x + +)


{
if ( x % 2)
continue;
printf (“%d”, x);
}

Apuntes de Programación C Prof. Mitzi de Velásquez

También podría gustarte