Sei sulla pagina 1di 99

LENGUAJE DE PROGRAMACIÓN C

Profesor: Helmut Contreras


Actualización: 17-04-2017

Aplicaciones Computacionales
1
Helmut Contreras
INTRODUCCIÓN AL LENGUAJE C

• Uno de los lenguajes de programación más usados.


– De nivel medio.
– “Mas cercano a las personas”.
– Programador tiene el control sobre el computador.
– Usado tanto para sistemas operativos como para
aplicaciones.
• Eficiencia.
• Portabilidad.

Aplicaciones Computacionales
2
Helmut Contreras
HISTORIA

• C fue creado por:


– Dennis M. Ritchie.
• Bell Labs.

• Entre 1969 y 1973.

– Brian Kernighan y Dennis Ritchie, “El lenguaje de programación C”,


Prince Hall, 1978.
• Describe informalmente la primera versión del lenguaje.

• El “Antiguo Testamento”

Aplicaciones Computacionales
3
Helmut Contreras
UN EJEMPLO DE PROGRAMA
#include <stdio.h>
#include <stdlib.h>

int main() /* un programa simple*/


{
int num; /* declara una variable llamada num */
num = 1; /* asigna un valor a num */
printf("I am a simple "); /* usa la funcion printf() */
printf("computer.\n");
printf("My favorite number is %d because it is first.\n", num);
return 0;
}

Aplicaciones Computacionales
4
Helmut Contreras
ESCRITURA DE PROGRAMAS EN C

• Formato libre
– La interpretación del código no depende del formato del texto.

• Distingue entre mayúsculas y minúsculas.

• Permite comentarios entre /* y */.

• C99: comentarios comienzan con //


– /*este es un comentario*/.

– // este también.

Aplicaciones Computacionales
5
Helmut Contreras
UNA FUNCIÓN TIENEN UN ENCABEZADO Y UN CUERPO

Aplicaciones Computacionales
6
Helmut Contreras
TIPOS DE DATOS EN C

• La representación de datos en C está relacionada con la


arquitectura del computador.
– La memoria se direcciona por bytes.

– Los procesadores tienen registros de 1, 2, 4, 8 bytes.

Aplicaciones Computacionales
7
Helmut Contreras
TIPOS DE DATOS EN C
• Un dato cualquiera tiene.
– Un tipo (carácter, entero, punto flotante)

– Un valor (designado o indeterminado)

– Una posición en memoria, donde está almacenado

Aplicaciones Computacionales
8
Helmut Contreras
TIPOS DE DATOS EN C: DECLARACIÓN

• Declaración de variables:
– <tipo dato> <identificador>;

• Declaración con inicialización


– <tipo dato> <identificador> = <valor inicial> ;

• Declaración múltiple
– <tipo dato> <identificador1>, <identificador2>, <identificador3>;

Aplicaciones Computacionales
9
Helmut Contreras
TIPOS DE DATOS EN C

• C dispone de 4 tipos de datos básicos:


– char
– int
– float
– double
• Éstos admiten modificadores:
– Signed, unsigned
– Long, short
• Los demás tipos se basan en estos cinco tipos.

Aplicaciones Computacionales
10
Helmut Contreras
TIPOS DE DATOS EN C : FUNDAMENTALES

Aplicaciones Computacionales
11
Helmut Contreras
TIPO DE DATO CHAR
• Al menos de 8 bits (1 byte).
– Debe poder almacenar un carácter ASCII.
– Internamente almacena números que representan caracteres y otros
símbolos en el computador.
• Rangos mínimos.
– signed char: -128 a 127.
– unsigned char: 0 a 255.
• El rango de char depende del compilador.
– Por omisión, puede ser signed o unsigned.

Aplicaciones Computacionales
12
Helmut Contreras
TIPO DE DATO CHAR

• Declaración:
– char a;

– char a, b, c;

• Inicialización:
– char a = ‘A’; (entre comillas simples)

– char a = 65;

Aplicaciones Computacionales
13
Helmut Contreras
ASCII 256 CARACTERES

Aplicaciones Computacionales
14
Helmut Contreras
TIPO DE DATO INT

• int
– Enteros con signo de 2 - 4 bytes.

– Rangos:
• 2 bytes: -32768 a 32767 (-215 –> 215 - 1)

• 4 bytes: -2147483648 a 2147483647 (-231 –> 231 - 1)

– 16 bits o 32 bits?
• A elección de la implementación.

• Generalmente lo fija el tamaño de los registros de la CPU.

Aplicaciones Computacionales
15
Helmut Contreras
TIPO DE DATO INT

• unsigned int
– 32 bits (4 bytes).

– Rango:
• 0 a 4.294.967.295 (0 –> 232-1)

• signed int
– 32 bits (4 bytes).

– Rango.
• -2.147.483.648 a 2.147.483.647 (-231 –> 231 -1)

• El rango depende exclusivamente del tamaño del registro de la CPU.


Aplicaciones Computacionales
16
Helmut Contreras
TIPO DE DATO INT

• short int
– Al menos de 16 bits (2 bytes).

– Puede abreviarse a short

– Rangos mínimos:
• short: -32768 (-215) a 32767 (215 – 1)

• unsigned short: 0 a 65535 (216 – 1)

Aplicaciones Computacionales
17
Helmut Contreras
TIPO DE DATO INT

• long int
– Datos de 32 bits (4 bytes) – 64 bits (8 bytes).

– Puede abreviarse como long.

– Rangos:
• long 32 bits: -2.147.483.648 (-231) a 2.147.483.647 (231-1)

• long 64 bits: -9.223.372.036.854.775.808 (-263) a 9.223.372.036.854.775.807 (-263-1)

• unsigned long 32 bits: 0 a 4.294.967.295 (232 – 1)

• unsigned long 64 bits: 0 a 18.446.744.073.709.551.615 (264 – 1)

Aplicaciones Computacionales
18
Helmut Contreras
TIPO DE DATO INT

• Declaración:
– int num;

– int num, aux;

• Inicialización:
– int num = 100;

– int num = 2, aux = 0;

Aplicaciones Computacionales
19
Helmut Contreras
PUNTO FLOTANTE

• Los números decimales son representados en la


codificación llamada “punto flotante”.
– float: precisión simple
• Tamaño típico: 32 bits

– double: precisión doble


• Tamaño típico: 64 bits

– long double: precisión extendida


• Tamaño típico: 80 bits

Aplicaciones Computacionales
20
Helmut Contreras
PUNTO FLOTANTE

IEEE 754 simple precisión (palabra 32 bits)

1 bit signo, 8 bits exponente,23 bits mantisa normalizada

IEEE 754 doble precisión (palabra 64 bits)

1 bit signo, 11 bits exponente, 52 bits mantisa normalizada

Aplicaciones Computacionales
21
Helmut Contreras
TIPOS DE DATOS _BOOL

• _Bool
– Introducido por ISO C99.
• No todos los compiladores lo incluyen.

– Definido en <stdbool.h>
• No está presente en Dev-C++

– Define valores de TRUE y FALSE como


• false es 0.
• true es 1.

– También puede usarse bool en vez de _Bool

Aplicaciones Computacionales
22
Helmut Contreras
DECLARACIONES
• Declaración básica.

– Tipo nombre1, nombre2, …;

• Ejemplos:

– int i;

– char letra1, letra2, letra3;

– unsigned short direccion;

• Todas las declaraciones terminan con “;”

– El “;” es el TERMINADOR de línea en C.

Aplicaciones Computacionales
23
Helmut Contreras
VARIABLES EN MEMORIA
• I: entero (4 bytes)
– Valor inicial: 0x00000015
• letra1: caracter (1 byte)
– Valor inicial: ‘A’
• letra2, letra3: carácter
– Valor inicial indeterminado
• dirección: short (2 bytes)
– Valor inicial: 0x3F65
• numero: entero (4 bytes)
– Valor inicial: 034 Memoria
Aplicaciones Computacionales
24
Helmut Contreras
EJEMPLO DE DECLARACIONES
salida
#include <stdio.h> entero = 100
#include <stdbool.h> flotante = 331.790009
doble = 844000000000.000000
int main() carácter = W
{ verdad = 0
int entero = 100;
Nótese que los números de punto
float flotante = 331.79; flotante se imprimen con 6 decimales
double doble = 8.44e+11;
char caracter = ‘W’;
bool verdad = false;
printf(“entero = %d\n flotante = %f\n doble = %lf\n caracter = %c\n verdad
= %i\n”, entero, flotante, doble, caracter, verdad);
}
Aplicaciones Computacionales
25
Helmut Contreras
OPERADORES
• Tipo de operadores en C
– Aritméticos.
• Incremento/Decremento.
– De relación.
– Lógicos.
• Manejo de Bits.
– Asignación.
– Condicionales.

Aplicaciones Computacionales
26
Helmut Contreras
OPERADORES ARITMÉTICOS
Operador Acción Ejemplo

- Resta x = 5 - 2; // x vale 3

+ Suma x = 5 + 2; // x vale 7

* Multiplicación x = 5*2; // x vale 10

/ División x = 10/2; // x vale 5

% Modulo (resto divisor) x = 5%2; // x vale 1

-- Decremento x = 1; x--; // x vale 0


unarios
++ Incremento x = 1; x++; // x vale 2
Aplicaciones Computacionales
27
Helmut Contreras
Programa que lea dos números por
teclado y calcule el valor de la
suma, resta, producto y división.

Aplicaciones Computacionales
28
Helmut Contreras
Modificación para calculo de división.
Observar que los valores enteros Numerador y Denominador se cambiaron de
enteros a flotantes antes de realizar la división.
Con este cambio de tipo de dato, se logra un resultado con decimales.

Aplicaciones Computacionales
29
Helmut Contreras
Programa que pide como entrada el radio, con lo que calcula y muestra
el perímetro y área de la circunferencia y el volumen de la esfera para
ese mismo radio.

Formulas a emplear:
Siendo r = radio y ^= elevado
Longitud circunferencia = 2·Pi·r
Área círculo = Pi·r^2
Volumen esfera = 4/3 · Pi · r ^3

Aplicaciones Computacionales
30
Helmut Contreras
PROGRAMA PARA CONVERTIR TEMPERATURA DE
GRADOS FAHRENHEIT - CELSIUS

Fahr: Temperatura en grados Fahrenheit


Celsius: Temperatura calculada.
Formula utilizada: 5*(T° F – 32)/9

Aplicaciones Computacionales
31
Helmut Contreras
PROGRAMA PARA CONVERTIR TEMPERATURA DE
GRADOS FAHRENHEIT – CELSIUS USANDO CICLO WHILE

Aplicaciones Computacionales
32
Helmut Contreras
PROGRAMA PARA ESCALAR TEMPERATURA DE GRADOS
CELSIUS A SEÑAL DE 4 – 20 (mA)
• Realice un programa que ingresando un valor de temperatura de 10 a 100
°C entregue el valor correspondiente de corriente en mA, producto de un
escalamiento lineal, usando una ecuación de la recta.
• Recuerde que la ecuación de la recta es y=𝑛∗𝑥+𝑏
𝑦2 − 𝑦1
• Donde n es la pendiente y se determina con 𝑛=
𝑋2 − 𝑋1

Y (mA)

Y2 = 20

Y1 = 4

X1 = 10 X2 = 100 X(°C)
Aplicaciones Computacionales
33
Helmut Contreras
OPERADORES ARITMÉTICOS

• Estos operadores nos permiten hacer, básicamente,


cualquier operación aritmética que necesitemos.

• El operador módulo (%), es aplicable a enteros.


– Retorna el resto de la división entera.
35 % 4 = 3 (35 = 8*4 + 3)

7 % 12 = 7 (7 = 0* 12 + 7)

– No aplicable a datos float o double.


• Números negativos, depende del compilador.
Aplicaciones Computacionales
34
Helmut Contreras
EJEMPLO MÓDULO

Aplicaciones Computacionales
35
Helmut Contreras
OPERADORES ARITMÉTICOS
• Incremento y decremento.
– Este tipo de operadores añaden o restan una unidad a
su operador.
• ++ aumenta en 1
• - - decrementa en 1
• Postincremento y preincremento
• A = B++; copia el valor de B en A y luego incrementa B
• A = ++B; incrementa B y luego copia el valor de B en A
• Postdecremento y predecremento
• A = B--; copia el valor de B en A y decrementa B
• A = --B; decrementa B y copia el valor de B en A

Aplicaciones Computacionales
36
Helmut Contreras
Aplicaciones Computacionales
37
Helmut Contreras
OPERADORES RELACIONALES
• Al igual que en matemáticas, estos operadores nos permiten evaluar las
relaciones (igual, mayor, etc.,) entre un par de operandos.

• El resultado de cualquier evaluación de este tipo, es un valor “verdadero”


(true) o “falso” (false).

• La mayoría de los lenguajes tienen un tipo predefinido para representar


estos valores (boolean, bool, etc); sin embargo en ANSI C se utilizan
valores enteros para representar esto.

Falso (false) 0
Verdadero (true) Cualquier valor distinto de 0, aunque
normalmente se utiliza el 1

Aplicaciones Computacionales
38
Helmut Contreras
EJEMPLO EXPRESIÓN BOOLEANA

Aplicaciones Computacionales
39
Helmut Contreras
EJEMPLO EXPRESIÓN BOOLEANA
• El tipo bool (_Bool) fue definido para C99 (stdbool.h)

Existen las macros


true (que vale 1) y
false (que vale 0)
Pero sigue siendo un entero!
Y todo lo anterior es válido.
Aplicaciones Computacionales
40
Helmut Contreras
OPERADORES RELACIONALES

Operador Acción
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual

Aplicaciones Computacionales
41
Helmut Contreras
EJEMPLO OPERADORES RELACIONALES

Aplicaciones Computacionales
42
Helmut Contreras
OPERADORES LÓGICOS
• Denominamos como operador lógico, a aquellos operadores
que nos permiten “conectar” un par de propiedades (al igual
que en lógica).

• Hay que tener especial cuidado con los operadores && y ||,
dado que si se escribe como & o |, estamos hablando de una
operación a nivel de bits.
Aplicaciones Computacionales
43
Helmut Contreras
OPERADORES LÓGICOS: OR (||)
• Cond1 OR Cond2

• Evalúa de izquierda a derecha.


Cond1 Cond2 OR
• Cond1 es Verdadera, no es
F F F
necesario evaluar.
F V V
• Cond2: OR será Verdadera.
V F V
• Si Cond1 es Falso, es necesario V V V
evaluar Cond2 para definir
valor de OR.

Aplicaciones Computacionales
44
Helmut Contreras
OPERADORES LÓGICOS: AND (&&)
• Cond1 AND Cond2

• Evalúa de izquierda a Derecha.


Cond1 Cond2 OR
• Si Cond1 es Falsa, no es
F F F
necesario evaluar Cond2: AND
F V F
será Falso.
V F F
• Si Cond1 es Verdadera, es
V V V
necesario evaluar Cond2 para
definir valor de AND.

Aplicaciones Computacionales
45
Helmut Contreras
OPERADORES

• Ej:

• If (( c >= 0 ) || ( j++ < n ))

• Si la primera condición se cumple la segunda nunca se evalúa

y j no se incrementa.

Aplicaciones Computacionales
46
Helmut Contreras
EJEMPLO OPERADORES LÓGICOS

Aplicaciones Computacionales
47
Helmut Contreras
OPERADORES LÓGICOS, MANEJO DE BITS

• Operadores a nivel de bit (bitwise operators).


– En determinadas ocasiones nos puede interesar manipular
datos a nivel de bit, por ejemplo activar flags (flag: es una
variable que puede tomar dos valores, por lo que se suele
representar por un bit).
– Debido a que en C (y en la mayoría de los lenguajes de
programación) no existen tipos predefinidos de un bit, lo que se
suele hacer es agrupar varios flags en una variable del tipo
entero (SHORT INT, INT o lo que queramos).

Aplicaciones Computacionales
48
Helmut Contreras
OPERADORES LÓGICOS, MANEJO DE BITS
•Operadores a nivel de bit.

Operador Acción
& AND a nivel de bit
| OR a nivel de bit
^ XOR a nivel de bit
~ Complemento
<< Desplazamiento a la izquierda
<<= Asignación con desplazamiento a la izquierda
>> Desplazamiento a la derecha
>>= Asignación con desplazamiento a la derecha

Aplicaciones Computacionales
49
Helmut Contreras
RECORDATORIO OPERADORES

Operador XOR Operador OR Operador AND

Aplicaciones Computacionales
50
Helmut Contreras
OPERADORES LÓGICOS, MANEJO DE BITS
• Operador AND (&).
– Compara dos bits; si los dos son 1 el resultado es 1, caso
contrario 0.
c1 = 0x45 --> 01000101
c2 = 0x71 --> 01110001
-----------------------------------------
c1 & c2 = 0x41 --> 01000001
• Operador OR (|).
– Compara dos bits; si cualquiera de los dos bits es 1 el
resultado es 1, caso contrario 0.
i1 = 0x47 --> 01000111
i2 = 0x53 --> 01010011
-------------------------------------
i1 | i2 = 0x57 --> 01010111
Aplicaciones Computacionales
51
Helmut Contreras
OPERADORES LÓGICOS, MANEJO DE BITS

• Operador XOR (^).


– El OR exclusivo o XOR, dará como resultado 1 si sólo uno de los
operandos es uno.
c1 = 0x47 --> 01000111
c2 = 0x53 --> 01010011
---------------------------------------
c1 ^ c2 = 0x14 --> 00010100

• Operador Complementos (~).


– Este operador devuelve como resultado el complemento a uno del
operando.
c = 0x45 --> 01000101
----------------------------------
~c = 0xBA --> 10111010
Aplicaciones Computacionales
52
Helmut Contreras
EJEMPLO OPERADORES LÓGICOS, MANEJO DE BITS

Salida:

Aplicaciones Computacionales
53
Helmut Contreras
OPERADORES LÓGICOS, MANEJO DE BITS

• Operadores de desplazamiento a nivel de bit (<< y >>).


– Desplaza a la izquierda o derecha un número especificado de bits.
– En ambos desplazamientos se descartan los bits que sobran y se
rellenan con ceros los nuevos espacios.

C = 0x1C 00011100

A = C << 1 A = 0x38 00111000 aquí C no se

B = C >> 2 B = 0x07 00000111 modifica!

C >>= 2 C = 0x07 00000111 aquí C se


modifica!
C <<= 3 C = 0x38 00111000

Aplicaciones Computacionales
54
Helmut Contreras
EJEMPLO OPERADORES LÓGICOS, MANEJO DE BITS

Aplicaciones Computacionales
55
Helmut Contreras
OPERADORES LÓGICOS: && VS. &
• &&: AND lógico • &: AND de bits
– int a = 5, b = 13; – int a = 5, b = 13;
– c = a && b; – c = a & b;
• Equivale a AND entre • Equivale a AND entre
variables enteras los valores binarios
– a y b son != 0 – a = 01012
– Valor final de c es 1 – b = 11012
(verdadero) – a AND b = 01012
– Valor final de c es 5

Aplicaciones Computacionales
56
Helmut Contreras
OTROS OPERADORES
• Operador de asignación (=).
– En otros lenguajes de programación se considera la
asignación como una sentencia especial. En C, esto no es así.
– La asignación es un operador más.
– Este operador, tiene como lvalue (left value, el valor a la
izquierda del operador) una variable y como rvalue una
expresión válida.
– Se realizan de izquierda a derecha.
– Puesto que es un operador, el todo es una expresión:
– Ejemplos: X = Y = 0;
X = X + 2;
X + = 2;
Aplicaciones Computacionales
57
Helmut Contreras
EJEMPLO OPERADOR ASIGNACIÓN

Aplicaciones Computacionales
58
Helmut Contreras
SENTENCIAS
• Sentencia Simple:
– Cualquier expresión en C que se espera que tenga alguna
consecuencia.
– Derivadas de expresiones de asignación, aritméticas, lógicas, llamada
a funciones.

• Bloque de sentencias:
– Conjunto de sentencias simples y/o declaraciones que está
delimitados por llaves {….} para formar un bloque de código.
– Define el alcance ó ámbito de la declaración de datos.

Aplicaciones Computacionales
59
Helmut Contreras
SENTENCIAS DE CONTROL DE FLUJO

• Selección: Se realiza una u otra operación, dependiendo de


una condición. Ej.: IF / IF-ELSE, SWITCH.

• Iteración: Repetición de una o más condiciones mientras se


cumpla una condición. Ej.: WHILE, DO WHILE,FOR.

• Salto: Sentencias que llevan a cabo un salto incondicional.

Ej.: BREAK, CONTINUE.

Aplicaciones Computacionales
60
Helmut Contreras
SENTENCIAS

Selección Iteración
Aplicaciones Computacionales
61
Helmut Contreras
SENTENCIAS CONDICIONALES
• IF
– Ejecución condicional.

– Condición se evalúa como verdadera o falsa, y debe estar


entre paréntesis redondos.
Aplicaciones Computacionales
62
Helmut Contreras
DIAGRAMA DE FLUJO DE “IF”

Aplicaciones Computacionales
63
Helmut Contreras
IF, EJEMPLO
#include <stdio.h>
int main ()
{
int valor = 0, resultado = 0;
If ((valor % 2) == 0) OJO! Si se utiliza más
resultado = 1; de una sentencia, hay
que usar llaves!!
return 0;
}

• Qué hace el programa?  Verifica si valor es par o impar

Aplicaciones Computacionales
64
Helmut Contreras
IF - ELSE
• Si la condición se evalúa como verdadera entonces se ejecuta
el bloque IF.
• Si la condición se evalúa como falsa se ejecuta el bloque ELSE.
if (Condición) {
/* La(s) sentencia(s) se van a ejecutar si la condición es verdadera */
sentencia11;
sentencia12;

}
else
{
/* La(s) sentencia(s) se van a ejecutar si la condición es falsa*/
sentencia21;
sentencia22;

} Aplicaciones Computacionales
65
Helmut Contreras
DIAGRAMA DE FLUJO DE “IF – ELSE”

Aplicaciones Computacionales
66
Helmut Contreras
EJEMPLO DE SENTENCIA IF - ELSE
• Dada la edad de una persona dar un mensaje de que es o no mayor de
edad, suponiendo que una persona mayor de edad tiene por lo menos 18
años, el procedimiento será el siguiente.

Aplicaciones Computacionales
67
Helmut Contreras
EJERCICIO CON IF - ELSE
• Realice un programa que ingresando la edad de una persona, determine el
rango en el que esta se encuentra. Los rangos son los siguientes:
• Entre [1 y 12] “Es niño”
• Entre [13 y 18] “Es adolecente”
• Entre [18 y 65] “Es adulto”
• Mayor a 65 “Es anciano”
• El programa debe ser capas de detectar edades menores a 1 año y
superiores a 120 años, en cuyos casos debe enviar un mensaje de “Edad
no valida”.
• Use solo variables enteras INT.
• Use solo sentencia IF - ELSE

Aplicaciones Computacionales
68
Helmut Contreras
EJERCICIO 2. USO DE IF-ELSE
• Realice un programa que funcione como una calculadora.

• Ingresando dos valores desde pantalla, realizar la suma, resta,


multiplicación o división, dependiendo de la selección hecha en un menú
donde se solicite en pantalla el ingreso de un valor 1: Suma, 2: Resta, 3:
Multiplicación; 4: División

Aplicaciones Computacionales
69
Helmut Contreras
Aplicaciones Computacionales
70
Helmut Contreras
IF – ELSE ANIDADOS
• Si “Condición1” es verdadera:
– Se ejecuta sentencia1, de lo
contrario se salta al “else if”.
• Si “Condición2” es verdadera:
– Se ejecuta la “sentencia 2”; de lo

contrario, se salta al else if.


• Se pueden hacer tantos “else
if” según los requerimientos
del programa .
Aplicaciones Computacionales
71
Helmut Contreras
DIAGRAMA DE FLUJO IF-ELSE IF

Aplicaciones Computacionales
72
Helmut Contreras
ELSE
if (n > 0) if (n > 0)
if (a > b) {
z = a; if (a > b)
else z = a;
z = n; }
• Indentación confunde else
relación if-else. z = n;
– else pertenece al segundo
if!!!
• Forma correcta

Consejos:
- utilizar SIEMPRE llaves, aunque sea una línea respetar indentación!
Aplicaciones Computacionales
73
Helmut Contreras
CONSIDERACIONES :

• Operador == realiza comparaciones de igualdad.


– No confundir con el operador de asignación (=) !
• (a == b) ≠ (a = b).

• Operador != realiza comparaciones de desigualdad.


– if(condicion), es equivalente a if(condicion != 0)

Aplicaciones Computacionales
74
Helmut Contreras
== V/S =

• Compara variables a y b. • Copia el valor de b en a.


• Si son iguales se ejecuta, • Si b! = 0 se ejecuta, printf();
printf();

Aplicaciones Computacionales
75
Helmut Contreras
SWITCH
• Decisión múltiple
– Prueba si una expresión coincide con uno de una serie
de valores enteros constantes
switch (expresión)
{
case const1:
sentencia;
case const2:
sentencia;
default:
sentencia;
}

Aplicaciones Computacionales
76
Helmut Contreras
DIAGRAMA DE FLUJO SWITCH

Aplicaciones Computacionales
77
Helmut Contreras
EJEMPLO DE SWITCH
switch (verdad)
{
case 0:
printf (“falso\n”);
default:
printf(“verdadero\n”);
}

• Error! Si verdad == 0, imprime “falso” y “verdadero”


• necesita el break al final, si queremos que cuando verdad == 0, sólo
imprima “falso”!

Aplicaciones Computacionales
78
Helmut Contreras
SWITCH Y BREAK
• Sentencia Break
• La sentencia break se utiliza para
terminar la ejecución de bucles o salir
de una sentencia switch.
• Es necesaria en la sentencia switch
para transferir el control fuera de la
misma.
• En caso de bucles anidados, el control
se transfiere fuera de la sentencia
más interna en la que se encuentre,
pero no fuera de las externas.

Aplicaciones Computacionales
79
Helmut Contreras
EJEMPLO SWITCH Y BREAK

Aplicaciones Computacionales
80
Helmut Contreras
CICLO WHILE
• Repetición condicional
WHILE (condición)
sentencia1;
1. Primero se evalúa la condición
2. Si la condición se cumple, se ejecuta la sentencia
• Se repite hasta que condición no se cumpla
• Si la condición es inicialmente falsa no ingresa al ciclo.
• Si la condición es siempre verdadera: Loop infinito.

Aplicaciones Computacionales
81
Helmut Contreras
DIAGRAMA DE FLUJO WHILE

Aplicaciones Computacionales
82
Helmut Contreras
EJEMPLO DE CICLO WHILE
int i = 10, j = 0;
while (i > 0)
{
i = i – 1;
j = j + 1;
}
• Valor final de j es 10
• Si la condición no se cumple inicialmente, la
sentencias no se ejecutan!

Aplicaciones Computacionales
83
Helmut Contreras
EJEMPLO CICLO WHILE

Aplicaciones Computacionales
84
Helmut Contreras
DO-WHILE

• Repetición condicional
do
sentencia1;
while (condición);
1. Primero se ejecuta la sentencia

2. Luego, se evalúa la condición. Si es verdadera se repite.

• Repetir hasta que condición no se cumpla

• Ejecuta al menos una vez un conjunto de sentencias

Aplicaciones Computacionales
85
Helmut Contreras
DIAGRAMA DE FLUJO DO-WHILE

Aplicaciones Computacionales
86
Helmut Contreras
EJEMPLO DE CICLO DO-WHILE
int i = 10, j = 0;
do
{
j = j + 1;
i = i - 1;
}
while (i > 0);

• Valor final de j es 10

• Qué pasa si inicialmente (i>0) no se cumple?

Aplicaciones Computacionales
87
Helmut Contreras
EJEMPLO CICLO DO-WHILE

Aplicaciones Computacionales
88
Helmut Contreras
WHILE VS. DO-WHILE

• Ciclo while es mucho más común


• Si la condición no se cumple inicialmente, proposición
no se ejecuta
• Ciclo do-while necesario en algunos casos
• Si la condición no se cumple inicialmente, proposición
se ejecuta una vez
Es un error frecuente olvidar el
; después del while de do while
• Ciclo se termina con ;
Aplicaciones Computacionales
89
Helmut Contreras
WHILE V/S DO-WHILE
• ¿Resultado obtenido para • ¿Resultado obtenido para
WHILE? DO-WHILE?

Aplicaciones Computacionales
90
Helmut Contreras
CICLO FOR
for (expr1; expr2; expr3)
sentencia;
• La(s) sentencia(s) se ejecuta(n) si la condición expr2 es
verdadera.

• Al ingresar al ciclo se ejecuta la expr1.

• Al finalizar cada ciclo se ejecuta la expr3

• Si la expr2 es siempre verdadera se tiene un loop infinito.

Aplicaciones Computacionales
91
Helmut Contreras
CICLO FOR
for (expr1; expr2; expr3)
sentencia;
• Generalmente:
– expr1: Inicialización

– expr2: Condición

– expr3: Modificación
for (i = 0; i < 10; i++)

Aplicaciones Computacionales
92
Helmut Contreras
CICLO FOR
• Expresiones expr1, expr2, expr3 pueden ser omitidas
for (;;): Ciclo infinito
• Cada una de ellas puede ser una sentencia
compuesta
for (i = 0, j = 10, k = 20;i < (j*k*k);i = i + 1, j = j – 2, k = k - 3)

Aplicaciones Computacionales
93
Helmut Contreras
DIAGRAMA DE FLUJO FOR

Aplicaciones Computacionales
94
Helmut Contreras
EJEMPLO FOR

Aplicaciones Computacionales
95
Helmut Contreras
EJEMPLO FOR

Aplicaciones Computacionales
96
Helmut Contreras
CICLO FOR Y CICLO WHILE
for (expr1; expr2; expr3)
sentencia;
• Equivale a
expr1;
while (expr2)
{
sentencia;
expr3;
}

Aplicaciones Computacionales
97
Helmut Contreras
EJEMPLO:
CONVERSIÓN TEMPERATURA CICLO WHILE

Aplicaciones Computacionales
98
Helmut Contreras
EJEMPLO:
CONVERSIÓN TEMPERATURA CICLO FOR

Aplicaciones Computacionales
99
Helmut Contreras

Potrebbero piacerti anche