04 - sentencias de control condicionales y ciclos en lenguaje c: for, while, do while, break,...

34
1 04 – Sentencias de control condicionales y ciclos Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

Upload: diego-andres-alvarez-marin

Post on 12-Jul-2015

373 views

Category:

Software


1 download

TRANSCRIPT

Page 1: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

1

04 – Sentencias de control condicionales y ciclos

Diego Andrés Alvarez MarínProfesor Asociado

Universidad Nacional de ColombiaSede Manizales

Page 2: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

2

Temario

Condicionales

if, if-else

switch, case, default

Ciclos

while

do-while

for

break, continue

goto

Page 3: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

3

if else

if (condición)comando1;

elsecomando2;

comando3;comando2

condición

comando1

comando3

true false

Page 4: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

4

if else

Observeque los ifs se pueden

anidar

Observe que la condición va entre

paréntesis

Page 5: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

5

a ? b : c

Si la expresión a es verdadera, entonces se evalúa la expresión b y el resultado es el valor de b; de lo contrario la expresión c se evalua y se retorna dicho resultado.

Page 6: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

6

switch case defaultswitch(var){case op1:

comando1;break;

case op2:comando2;

case op3:comando3;break;

default:comando4;

}comando5;

var = op1

var = op2

var = op3

comando4

comando5

comando1

comando2

comando3

true

true

true

false

false

false

Page 7: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

7

switch case default

Este último break esinnecesario

Las expresiones comparadas deben ser de tipo entero o char.

Las expresiones contra las que se comparan deben ser constantes enteras o tipo char

Page 8: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

8

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 correcto bajo...alto incorrecto

GNU C extension quiere decir que esta es una característica soportada por el compilador gcc, pero que no está definida en el estándar ANSI C

Este último break es innecesario

Page 9: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Declarando variables dentro de un switch {}

Page 10: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

10

while

condición comando1

while (condición)comando1;

comando2;

comando2

false

true

Page 11: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

11

while

El ciclo while se ejecuta mientras la condición sea verdadera. Si la condición es falsa, se sale del ciclo.

Page 12: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

12

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')”

Page 13: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

13

do while

condición

comando1

do{

comando1;}while(condición);comando2;

comando2

false

true

Page 14: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

14

do whileRepite hasta que la condición de salida se vuelve falsa

Page 15: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

15

for

condición

inicialización

for(inicialización;condición; incremento)comando1;

comando2;

comando1

true

false

incremento

comando2

Page 16: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

16

for

La estructura general del ciclo for es:

for(inicialización; condición; incremento) comando1;

comando2;

Primero se evalúa la expresión de inicialización, luego se evalúa la condición. Si la condición es falsa, entonces el ciclo termina y el programa continua en el comando2. De lo contrario, si la condición es verdadera, el comando1 se ejecuta. Finalmente el incremento se evalua y una nueva iteración del ciclo comienza con una nueva evaluación de la condición.

Page 17: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

17

0 1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9 10

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

Page 18: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

18

En C99 se permite utilizar declaración de variables dentro del for, similar a como se hace en C++

Se debe usar la bandera de compilación -std=c99

Page 19: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

19

Convirtiendo decimales a binarios

Page 20: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

20

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.

Page 21: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

21

continue

continue usa en ciclos para saltarse el resto del bloque actual y salta de nuevo a la condición del ciclo.

Si se pone un continue dentro de un ciclo anidado, este solo afecta el ciclo interior.

Page 22: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

22

goto(evite usar esta orden)

La etiqueta debe residir en la misma función que el goto que salta a ella. Un goto no puede saltar a una etiqueta en una función 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 sacaría del for interior, mientras que el goto nos saca de los dos ciclos con una sola instrucción, sin perder claridad en el código.

Page 23: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

23

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

Evite usar “goto”http://en.wikipedia.org/wiki/Goto

Page 24: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

24

Normas de estiloUnas normas de estilo en programación, son tan importantes que todas las empresas dedicadas a programación imponen a sus empleados una mínima uniformidad, para facilitar el intercambio de programas y la modificación por cualquier empleado, sea o no el programador inicial. Por supuesto, cada programa debe ir acompañado de una documentación adicional, que aclare detalladamente cada módulo 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 manías y le gusta escribir de una forma determinada. Lo que sí existen son un conjunto de reglas generales, que aplicándolas, en mayor o menor medida, se consiguen programas bastante legibles. Aquí intentaremos resumir estas reglas.

Page 25: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Normas de estilo en la programación

● Lo principal es mejorar tanto como se pueda la claridad en el código. El código debe ser leíble por usted mismo (en el futuro) y por otras personas sin dificultad.

● Cuando se escriben los programas se debe priorizar la legibilidad del código por encima de todo, incluso sobre la velocidad de ejecución (excepto en aplicaciones muy específicas).

● Hay que entender que el código normalmente se escribe una vez, pero se lee decenas de veces.

● Sea consistente con su estilo de programación.

Page 26: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Líneas

● Una línea no debe sobrepasar la columna 80.

● Use líneas en blanco para separar el código en párrafos o bloques.

● Coloque una instrucción por línea; sin embargo, si el colocar dos o más sentencias en una misma línea mejora la claridad del programa, entonces hágalo así.

● Evite líneas muy largas. En vez de esto utilice varias líneas.

● Coloque los operadores ++ y -- en sus propias líneas. No use ++ y -- dentro de otras sentencias.

Page 27: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Espacios e identaciones

● Use identaciones de 3 espacios (configure su editor).

● Coloque espacios antes y después 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 actuán.

● En una sentencia que consiste de dos o más líneas, cada línea excepto la primera debe identarse un nivel extra para indicar que es una continuación de la primera.

Page 28: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

La identación y las llaves {}

● Utilice apropiadamente las llaves {} para delimitar los bloques de código. Las llaves deben ocupar una sola línea y deben estar en la misma columna (identación ALLMAN).

● Cuando un if/while afecta a más de una línea, enciérrela entre llaves.

Page 29: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Nombres de variables

● Use nombres de variables simples y descriptivos

● Las constantes se escriben en MAYUSCULAS.

● Use el guión bajo _ para mejorar la claridad de los nombres de las variables. Ej: ancho_viga

● No use la L minúscula o la O mayúscula como nombres de variables.

● Los nombres cortos tales como x ó y son aceptables cuando su significado es claro y cuando un nombre largo no añadiría información o claridad adicional.

● i,j,k se utilizan exclusivamente como contadores en los ciclos for/while/do-while.

Page 30: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

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 función.

● Declare las variables globales tan cerca al lugar donde las va a utilizar como sea posible.

Page 31: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Comentarios

● Comente el código mientras programa.

● Después de declarar una variable, escriba un comentario que explique para que sirve esa variable.

● Incluya comentarios antes de cada bloque de código. Estos describirán los propósitos 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 líneas seguidas

Page 32: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Comentarios

● Antes de definir una función se debe poner un comentario que diga en una línea o dos qué es lo que hacen dichas funciones y se expliquen los parámetros de la misma. Estos comentarios son para que una persona que esté explorando el código pueda entender qué hace una función sin tener que estudiarla en profundidad. Este breve comentario en el encabezado de la función debe apoyarse a su vez en un nombre de función descriptivo.

Page 33: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Consejos generales

● Compile el código de modo tal que este no tenga Warnings. Muchas veces los Warnings muestran errores en los códigos.

Page 34: 04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, do while, break, continue

Material basado en:

http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html

http://en.cppreference.com/w/cpp/language/goto

Wikipedia