SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
1
04 – Sentencias de control
condicionales y ciclos
Diego Andrés Alvarez Marín
Profesor Asociado
Universidad Nacional de Colombia
Sede Manizales
2
Temario
Condicionales
if, if-else
switch, case, default
Ciclos
while
do-while
for
break, continue
goto
3
if else
if (condición)
comando1;
else
comando2;
comando3;
comando2
condición
comando1
comando3
true false
4
if else
Observe
que los ifs
se pueden
anidar
Observe que la
condición va entre
paréntesis
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.
6
switch case default
switch(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
7
switch case
default
Este último break es
innecesario
Las expresiones
comparadas deben
ser de tipo entero o
char.
Las expresiones
contra las que se
comparan deben ser
constantes enteras o
tipo char
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
Declarando variables dentro de un
switch {}
10
while
condición comando1
while (condición)
comando1;
comando2;
comando2
false
true
11
while
El ciclo while se ejecuta
mientras la condición sea
verdadera. Si la condición
es falsa, se sale del ciclo.
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')”
13
do while
condición
comando1
do
{
comando1;
}
while(condición);
comando2;
comando2
false
true
14
do while
Repite hasta que la
condición de salida se
vuelve falsa
15
for
condición
inicialización
for(inicialización;condición; incremento)
comando1;
comando2;
comando1
true
false
incremento
comando2
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.
17
0 1 2 3 4 5 6 7 8 9
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
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
19
Convirtiendo decimales a binarios
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.
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.
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.
23
Tomado de: http://xkcd.com/292/
Evite usar “goto”
http://en.wikipedia.org/wiki/Goto
24
Normas de estilo
Unas 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.
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.
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.
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.
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.
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.
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.
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
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.
Consejos generales
● Compile el código de modo tal que este no
tenga Warnings. Muchas veces los Warnings
muestran errores en los códigos.
Material basado en:
http://www.gnu.org/software/gnu-c-manual/gnu-c-man
http://en.cppreference.com/w/cpp/language/goto
Wikipedia

Más contenido relacionado

La actualidad más candente

Arquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISDArquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISDJuan Novelo
 
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...Marcelo Vilela Pardo
 
Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Nabor Chirinos
 
Pseudocódigo
PseudocódigoPseudocódigo
Pseudocódigocoldclean
 
Bitácora de base de datos
Bitácora de base de datosBitácora de base de datos
Bitácora de base de datosLalo Osorio
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
Patrones arquitectónicos layers
Patrones arquitectónicos layersPatrones arquitectónicos layers
Patrones arquitectónicos layersMatias Yima
 
Presentacion de circuitos y relacion a la ingenieria de sistemas
Presentacion de circuitos y relacion a la ingenieria de sistemasPresentacion de circuitos y relacion a la ingenieria de sistemas
Presentacion de circuitos y relacion a la ingenieria de sistemasJulio Martinez Valerio
 
Identificadores en Lógia de Programación
Identificadores en Lógia de ProgramaciónIdentificadores en Lógia de Programación
Identificadores en Lógia de Programaciónnormaroldano
 
Algoritmos para generar numeros pseudoaleatorios
Algoritmos para generar numeros pseudoaleatoriosAlgoritmos para generar numeros pseudoaleatorios
Algoritmos para generar numeros pseudoaleatoriosjulian javier solis herrera
 
Estructura interna de un procesador
Estructura interna de un procesadorEstructura interna de un procesador
Estructura interna de un procesadorAlan EG
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 

La actualidad más candente (20)

Manual de raptor
Manual de raptorManual de raptor
Manual de raptor
 
Arquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISDArquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISD
 
Robot Laberinto Raven
Robot Laberinto RavenRobot Laberinto Raven
Robot Laberinto Raven
 
Sintaxis del lenguaje c++
Sintaxis del lenguaje c++Sintaxis del lenguaje c++
Sintaxis del lenguaje c++
 
Modelos de red
Modelos de redModelos de red
Modelos de red
 
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
 
Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.
 
Pseudocódigo
PseudocódigoPseudocódigo
Pseudocódigo
 
Sisitemas prac 4
Sisitemas  prac 4Sisitemas  prac 4
Sisitemas prac 4
 
Bitácora de base de datos
Bitácora de base de datosBitácora de base de datos
Bitácora de base de datos
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
GRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUASGRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUAS
 
Patrones arquitectónicos layers
Patrones arquitectónicos layersPatrones arquitectónicos layers
Patrones arquitectónicos layers
 
Presentacion de circuitos y relacion a la ingenieria de sistemas
Presentacion de circuitos y relacion a la ingenieria de sistemasPresentacion de circuitos y relacion a la ingenieria de sistemas
Presentacion de circuitos y relacion a la ingenieria de sistemas
 
Identificadores en Lógia de Programación
Identificadores en Lógia de ProgramaciónIdentificadores en Lógia de Programación
Identificadores en Lógia de Programación
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Algoritmos para generar numeros pseudoaleatorios
Algoritmos para generar numeros pseudoaleatoriosAlgoritmos para generar numeros pseudoaleatorios
Algoritmos para generar numeros pseudoaleatorios
 
Estructura interna de un procesador
Estructura interna de un procesadorEstructura interna de un procesador
Estructura interna de un procesador
 
Top down
Top downTop down
Top down
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 

Similar a Sentencias de control condicionales y ciclos en C

Presentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructuraPresentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructuraJOSUEANIBALCOCHOJILH
 
Programacion-en-C.pdf
Programacion-en-C.pdfProgramacion-en-C.pdf
Programacion-en-C.pdfFreddyFcc
 
Estructura de control en la Programación. Luis Rondón
Estructura de control en la Programación. Luis RondónEstructura de control en la Programación. Luis Rondón
Estructura de control en la Programación. Luis Rondónluisandresrondongarc
 
Instrucciones basicas-para-c++
Instrucciones basicas-para-c++Instrucciones basicas-para-c++
Instrucciones basicas-para-c++andreadelacruz002
 
Instrucciones basicas-para-c-autoguardado
Instrucciones basicas-para-c-autoguardadoInstrucciones basicas-para-c-autoguardado
Instrucciones basicas-para-c-autoguardadoandreadelacruz002
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5srBichoRaro
 
Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxErrol31
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
Comparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusComparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusAbefo
 
Comenzando a programar
Comenzando a programarComenzando a programar
Comenzando a programarRubén Loredo
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2karlalopezbello
 

Similar a Sentencias de control condicionales y ciclos en C (20)

Presentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructuraPresentación introducción a Matlab y su estructura
Presentación introducción a Matlab y su estructura
 
Programacion-en-C.pdf
Programacion-en-C.pdfProgramacion-en-C.pdf
Programacion-en-C.pdf
 
Presentacion c++
Presentacion c++Presentacion c++
Presentacion c++
 
Presentacion c++
Presentacion c++Presentacion c++
Presentacion c++
 
Estructura de control en la Programación. Luis Rondón
Estructura de control en la Programación. Luis RondónEstructura de control en la Programación. Luis Rondón
Estructura de control en la Programación. Luis Rondón
 
Instrucciones basicas-para-c++
Instrucciones basicas-para-c++Instrucciones basicas-para-c++
Instrucciones basicas-para-c++
 
Instrucciones basicas-para-c-autoguardado
Instrucciones basicas-para-c-autoguardadoInstrucciones basicas-para-c-autoguardado
Instrucciones basicas-para-c-autoguardado
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5
 
C++
C++C++
C++
 
Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptx
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Comparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusComparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplus
 
Presentacion c
Presentacion c Presentacion c
Presentacion c
 
Jcc
JccJcc
Jcc
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
Comenzando a programar
Comenzando a programarComenzando a programar
Comenzando a programar
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2
 
Jcc
JccJcc
Jcc
 

Más de Diego Andrés Alvarez Marín

Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...Diego Andrés Alvarez Marín
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3Diego Andrés Alvarez Marín
 
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...Diego Andrés Alvarez Marín
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje CDiego Andrés Alvarez Marín
 
07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencial07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencialDiego Andrés Alvarez Marín
 
00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptiva00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptivaDiego Andrés Alvarez Marín
 

Más de Diego Andrés Alvarez Marín (17)

Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
 
03 - Cadenas en Python 3
03 - Cadenas en Python 303 - Cadenas en Python 3
03 - Cadenas en Python 3
 
02 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 302 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 3
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
 
03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
 
01 - Introducción al lenguaje C
01 - Introducción al lenguaje C01 - Introducción al lenguaje C
01 - Introducción al lenguaje C
 
07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencial07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencial
 
06 - Variables aleatorias conjuntas
06 - Variables aleatorias conjuntas06 - Variables aleatorias conjuntas
06 - Variables aleatorias conjuntas
 
05 - Funciones de densidad de probabilidad
05 - Funciones de densidad de probabilidad05 - Funciones de densidad de probabilidad
05 - Funciones de densidad de probabilidad
 
04 - Funciones de distribución discretas
04 - Funciones de distribución discretas04 - Funciones de distribución discretas
04 - Funciones de distribución discretas
 
03 Variable Aleatoria
03   Variable Aleatoria03   Variable Aleatoria
03 Variable Aleatoria
 
02 - Introducción a la teoría de probabilidad
02 - Introducción a la teoría de probabilidad02 - Introducción a la teoría de probabilidad
02 - Introducción a la teoría de probabilidad
 
00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptiva00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptiva
 

Sentencias de control condicionales y ciclos en C

  • 1. 1 04 – Sentencias de control condicionales y ciclos Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales
  • 2. 2 Temario Condicionales if, if-else switch, case, default Ciclos while do-while for break, continue goto
  • 4. 4 if else Observe que los ifs se pueden anidar Observe que la condición va entre paréntesis
  • 5. 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.
  • 6. 6 switch case default switch(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
  • 7. 7 switch case default Este último break es innecesario Las expresiones comparadas deben ser de tipo entero o char. Las expresiones contra las que se comparan deben ser constantes enteras o tipo char
  • 8. 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
  • 9. Declarando variables dentro de un switch {}
  • 11. 11 while El ciclo while se ejecuta mientras la condición sea verdadera. Si la condición es falsa, se sale del ciclo.
  • 12. 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')”
  • 14. 14 do while Repite hasta que la condición de salida se vuelve falsa
  • 16. 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.
  • 17. 17 0 1 2 3 4 5 6 7 8 9 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
  • 18. 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
  • 20. 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.
  • 21. 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.
  • 22. 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.
  • 23. 23 Tomado de: http://xkcd.com/292/ Evite usar “goto” http://en.wikipedia.org/wiki/Goto
  • 24. 24 Normas de estilo Unas 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.
  • 25. 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.
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 29. 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.
  • 30. 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.
  • 31. 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
  • 32. 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.
  • 33. Consejos generales ● Compile el código de modo tal que este no tenga Warnings. Muchas veces los Warnings muestran errores en los códigos.