You are on page 1of 34

04 Sentencias de control

condicionales y ciclos
Diego Andrs Alvarez Marn
Profesor Asociado
Universidad Nacional de Colombia
Sede Manizales

Temario
Condicionales
if, if-else
switch, case, default

Ciclos
while
do-while
for
break, continue

goto
2

if else
if (condicin)
comando1;
else
comando2;
comando3;

condicin
true

false

comando1

comando2

comando3

if else
Observe que la
condicin va entre
parntesis

Observe
que los ifs
se pueden
anidar

a?b:c
Si la expresin a es verdadera, entonces se
evala la expresin b y el resultado es el valor de
b; de lo contrario la expresin c se evalua y se
retorna dicho resultado.

switch(var)
{
case op1:
comando1;
break;
case op2:
comando2;
case op3:
comando3;
break;
default:
comando4;
}
comando5;

switch case default


var = op1

true

comando1

false
var = op2

true

comando2

false
var = op3

true

comando3

false
comando4

comando5
6

switch case
default
Las expresiones
comparadas deben
ser de tipo entero o
char.
Las expresiones
contra las que se
comparan deben ser
constantes enteras o
tipo char

Este ltimo break es


innecesario

GNU C extension
switch case
default
Se puede especificar un
rango en la etiqueta, algo as
como:
case bajo ... alto:
Cuidado con los espacios:
bajo ... alto
bajo...alto

correcto
incorrecto

GNU C extension quiere


decir que esta es una
caracterstica soportada por
el compilador gcc, pero que
no est definida en el
estndar ANSI C

Este ltimo break es innecesario

Declarando variables dentro de un


switch {}

while

while (condicin)
comando1;
comando2;

condicin

true

comando1

false
comando2

10

while

El ciclo while se ejecuta


mientras la condicin sea
verdadera. Si la condicin
es falsa, se sale del ciclo.

11

while

Se puede utilizar un break


para salirse del ciclo
Uno puede leer este bucle
infinito con la salida
utilizando el if como un:
repita hasta que (c = 'Z')

12

do while
comando1

do
{
comando1;
}
while(condicin);
comando2;

condicin

true

false

comando2

13

do while
Repite hasta que la
condicin de salida se
vuelve falsa

14

for

inicializacin

condicin

false

true
comando1

incremento

comando2

for(inicializacin;condicin; incremento)
comando1;
comando2;

15

for
La estructura general del ciclo for es:
for(inicializacin; condicin; incremento)
comando1;
comando2;

Primero se evala la expresin de inicializacin, luego se


evala la condicin. Si la condicin es falsa, entonces el ciclo
termina y el programa continua en el comando2. De lo
contrario, si la condicin es verdadera, el comando1 se
ejecuta. Finalmente el incremento se evalua y una nueva
iteracin del ciclo comienza con una nueva evaluacin de la
condicin.
16

0123456789
1 2 3 4 5 6 7 8 9 10

x = 1, y = 10
x = 3, y = 9
x = 5, y = 8
x = 7, y = 7
x = 9, y = 6
17

En C99 se permite utilizar declaracin de


variables dentro del for, similar a como se hace
en C++

Se debe usar la bandera de compilacin -std=c99


18

Convirtiendo decimales a binarios

19

break
break se utiliza para
salirse del bloque {} actual
de un ciclo (for, while, do
while) o de un switch.
Si se pone un break
dentro de un ciclo o switch
anidado, el break solo se
sale del bloque (ciclo o
switch) interior, no de los
otros ciclos o switchs.

20

continue

continue usa en ciclos para


saltarse el resto del bloque actual
y salta de nuevo a la condicin del
ciclo.
Si se pone un continue dentro de
un ciclo anidado, este solo afecta
el ciclo interior.

21

goto
(evite usar esta orden)
La etiqueta debe residir en la
misma funcin que el goto
que salta a ella. Un goto no
puede saltar a una etiqueta
en una funcin diferente.
Este es un ejemplo en el
cual el uso del goto est
justificado. Observe que
aqu quiero salir de los dos
ciclos. Un break, solo nos
sacara del for interior,
mientras que el goto nos
saca de los dos ciclos con
una sola instruccin, sin
22
perder claridad en el cdigo.

Evite usar goto


http://en.wikipedia.org/wiki/Goto

Tomado de: http://xkcd.com/292/

23

Normas de estilo
Unas normas de estilo en programacin, son tan importantes
que todas las empresas dedicadas a programacin imponen a
sus empleados una mnima uniformidad, para facilitar el
intercambio de programas y la modificacin por cualquier
empleado, sea o no el programador inicial. Por supuesto, cada
programa debe ir acompaado de una documentacin
adicional, que aclare detalladamente cada mdulo del
programa, objetivos, algoritmos usados, ficheros... (ver por
ejemplo https://code.google.com/p/google-styleguide/)
No existen un conjunto de reglas fijas para programar con
legibilidad, ya que cada programador tiene su modo y sus
manas y le gusta escribir de una forma determinada. Lo que s
existen son un conjunto de reglas generales, que aplicndolas,
en mayor o menor medida, se consiguen programas bastante
24
legibles. Aqu intentaremos resumir estas reglas.

Normas de estilo en la
programacin

Lo principal es mejorar tanto como se pueda la


claridad en el cdigo. El cdigo debe ser leble por
usted mismo (en el futuro) y por otras personas sin
dificultad.
Cuando se escriben los programas se debe priorizar
la legibilidad del cdigo por encima de todo, incluso
sobre la velocidad de ejecucin (excepto en
aplicaciones muy especficas).
Hay que entender que el cdigo normalmente se
escribe una vez, pero se lee decenas de veces.
Sea consistente con su estilo de programacin.

Lneas

Una lnea no debe sobrepasar la columna 80.


Use lneas en blanco para separar el cdigo en
prrafos o bloques.
Coloque una instruccin por lnea; sin embargo, si el
colocar dos o ms sentencias en una misma lnea
mejora la claridad del programa, entonces hgalo as.
Evite lneas muy largas. En vez de esto utilice varias
lneas.
Coloque los operadores ++ y -- en sus propias lneas.
No use ++ y -- dentro de otras sentencias.

Espacios e identaciones

Use identaciones de 3 espacios (configure su


editor).
Coloque espacios antes y despus de cada
operador binario y de cada signo =, as como
los espacios separan las palabras en un texto.
Los operadores unarios (++, ) van junto al
identificador sobre el que actun.
En una sentencia que consiste de dos o ms
lneas, cada lnea excepto la primera debe
identarse un nivel extra para indicar que es una
continuacin de la primera.

La identacin y las llaves {}

Utilice apropiadamente las llaves {} para


delimitar los bloques de cdigo. Las llaves
deben ocupar una sola lnea y deben estar en
la misma columna (identacin ALLMAN).
Cuando un if/while afecta a ms de una lnea,
encirrela entre llaves.

Nombres de variables

Use nombres de variables simples y descriptivos

Las constantes se escriben en MAYUSCULAS.

Use el guin bajo _ para mejorar la claridad de los


nombres de las variables. Ej: ancho_viga
No use la L minscula o la O mayscula como
nombres de variables.
Los nombres cortos tales como x y son aceptables
cuando su significado es claro y cuando un nombre
largo no aadira informacin o claridad adicional.
i,j,k se utilizan exclusivamente como contadores en
los ciclos for/while/do-while.

Variables

Evite en lo posible usar variables globales.


Utilice en lo posible variables shared o en su
defecto pase las variables globales como
argumentos a la funcin.
Declare las variables globales tan cerca al
lugar donde las va a utilizar como sea posible.

Comentarios

Comente el cdigo mientras programa.


Despus de declarar una variable, escriba un
comentario que explique para que sirve esa variable.
Incluya comentarios antes de cada bloque de cdigo.
Estos describirn los propsitos del bloque en el
cumplimiento de una tarea cohesiva. El uso de
nombres significativos en variables y funciones
minimizan la necesidad de comentarios.
Procure alinear los comentarios que van en lneas
seguidas

Comentarios

Antes de definir una funcin se debe poner un


comentario que diga en una lnea o dos qu es
lo que hacen dichas funciones y se expliquen
los parmetros de la misma. Estos comentarios
son para que una persona que est explorando
el cdigo pueda entender qu hace una funcin
sin tener que estudiarla en profundidad. Este
breve comentario en el encabezado de la
funcin debe apoyarse a su vez en un nombre
de funcin descriptivo.

Consejos generales

Compile el cdigo de modo tal que este no


tenga Warnings. Muchas veces los Warnings
muestran errores en los cdigos.

Material basado en:

http://www.gnu.org/software/gnu-c-manual/gnu-c-man
http://en.cppreference.com/w/cpp/language/goto
Wikipedia

You might also like