unidad 2 curso c

121
Programación en C / C++ http://www.cartagena99.com/recursos/recursos_programacion.php Programación en C 1

Upload: cesar-oswaldo-osorio-agualongo

Post on 23-Jan-2018

225 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Unidad 2 curso c

Programación en C / C++ http://www.cartagena99.com/recursos/recursos_programacion.php

Programación en C 1

Page 2: Unidad 2 curso c

EL SOFTWARE (PROGRAMAS)

Las operaciones que debe realizar el hardware son específicas por una lista de instrucciones,

llamadas programas o software. El software se divide en dos grandes grupos: software del

sistema y de aplicaciones

Software de sistema Es el conjunto de programas indispensable para que la máquina funcione,

se domina también programas del sistema. Estos programas son básicamente el Sistema

Operativo, los editores de texto, los compiladores/interpretes (lenguajes de

programación) y los programas de utilidad.

Uno de los programas masi importantes es el Sistema Operativo que sirve, esencialmente para

facilitar la escritura y usos de sus programas. Este dirige las operaciones globales de la

computadores e instruye a la computadora para ejecutar otros programas y controla el

almacenamiento y recuperación de archivos (programas y datos).

Gracias al Sistema Operativo es posible que el programador pueda introducir y grabar nuevos

programas así como instruir a la computadora para que los ejecute.

Page 3: Unidad 2 curso c
Page 4: Unidad 2 curso c

Los lenguajes de programación sirven para escribir programas que permitan la

comunicación usuario maquina. Unos programas especiales llamados traductores

(compiladores o interpretes) convierten las instrucciones escritas en lenguajes de

programación en instrucciones escritas en lenguajes de maquina que esta pueda

entender.

Los programas de utilidad facilitan el uso de la computadora. Por ejemplo el editor

de textos

Los programas que realizan tareas concretas como nominas, contabilidad análisis

estadístico, etc de denominan programas de aplicación.

Page 5: Unidad 2 curso c

LENGUAJE DE MAQUINA

Page 6: Unidad 2 curso c

LENGUAJE DE BAJO NIVEL

Page 7: Unidad 2 curso c

LENGUAJE DE BAJO NIVEL

Page 8: Unidad 2 curso c

LENGUAJE DE ALTO NIVEL

Page 9: Unidad 2 curso c

LENGUAJE DE ALTO NIVEL

Page 10: Unidad 2 curso c

TRADUCTORES DE LENGUAJE

Los traductores de lenguaje son programas que traducen a su vez los programas fuente escritos en

lenguajes de alto nivel a código de máquina. Los traductores se dividen en: compiladores e interpretes

Page 11: Unidad 2 curso c

COMPILADOR

Page 12: Unidad 2 curso c
Page 13: Unidad 2 curso c

LA COMPILACION Y SUS FASES

La compilación es el proceso de traducción de programas fuente a programas objeto. El

programa objeto obtenido de la compilación ha sido traducido normalmente a código de

máquina.

Para conseguir el programa máquina real se debe utilizar un programa llamando montador o

enlazador (linker). El proceso de montaje conduce a un programa en lenguaje máquina

directamente ejecutable.

El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un

compilador suele tener los siguientes pasos:

1. Escritura del programa fuente y guardarlo en un dispositivo de almacenamiento

2. Introducir el programa fuente en memoria

3. Compilar el programa con el compilador

4. Verificar y corregir errores de compilación

5. Obtención del programa objeto

6. El enlazador obtiene el programa ejecutable

7. Se ejecuta el programa y se tendrá la salida deseada

EJECUCION DE UN PROGRAMA

Page 14: Unidad 2 curso c

FASES DE EJECUCION DE UN PROGRAMA

Page 15: Unidad 2 curso c

PROGRAMACION ESTRUCTURADA

VSPROGRAMACION

ORIENTADA A OBJETOS

Programación en C 15

Page 16: Unidad 2 curso c

Programación en C 16

UNA FORMA NUEVA DE PENSAR

Es muy importante destacar que cuando hacemos referencia a la programación orientada aobjetos no estamos hablando de unas cuantas características nuevas añadidas a un lenguajede programación. Estamos hablando de una nueva forma de pensar acerca del proceso dedescomposición de problemas y de desarrollo de soluciones de programación.

La programación orientada a objetos surge en la historia como un intento para dominar lacomplejidad que, de forma innata, posee el software. Tradicionalmente, la forma deenfrentarse a esta complejidad ha sido empleando lo que llamamos programaciónestructurada, que consiste en descomponer el problema objeto de resolución ensubproblemas y más subproblemas hasta llegar a acciones muy simples y fáciles de codificar.Se trata de descomponer el problema en acciones, en verbos. En el ejemplo de un programaque resuelva ecuaciones de segundo grado, descomponíamos el problema en las siguientesacciones: primero, pedir el valor de los coeficientes a, b y c; después, calcular el valor deldiscriminante; y por último, en función del signo del discriminante, calcular ninguna, una odos raíces.

Como podemos ver, descomponíamos el problema en acciones, en verbos; por ejemploel verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular…

Page 17: Unidad 2 curso c

Programación en C 17

La programación orientada a objetos es otra forma de descomponer problemas.Este nuevo método de descomposición es la descomposición en objetos; vamosa fijarnos no en lo que hay que hacer en el problema, sino en cuál es elescenario real del mismo, y vamos a intentar simular ese escenario en nuestroprograma.

Los lenguajes de programación tradicionales no orientados a objetos, como C,Pascal, BASIC, o Modula-2, basan su funcionamiento en el concepto deprocedimiento o función. Una función es simplemente un conjunto deinstrucciones que operan sobre unos argumentos y producen un resultado. Deeste modo, un programa no es más que una sucesión de llamadas a funciones,ya sean éstas del sistema operativo, proporcionadas por el propio lenguaje, odesarrolladas por el mismo usuario.

PROGRAMACION ESTRUCTURADA VS P.O.O.

Page 18: Unidad 2 curso c

Programación en C 18

PROGRAMACION ESTRUCTURADA VS P.O.O.

En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java,el elemento básico no es la función, sino un ente denominado precisamenteobjeto. Un objeto es la representación en un programa de un concepto, ycontiene toda la información necesaria para abstraerlo: datos que describen susatributos y operaciones que pueden realizarse sobre los mismos.

Page 19: Unidad 2 curso c

Programación en C 19

EJEMPLOS DE OBJETOS.

Page 20: Unidad 2 curso c

Índice• Estructura de un programa

C.

• Variables básicas.

• Operaciones aritméticas.

• Sentencias de control.

• Arrays y Strings.

• Funciones.

• Estructuras de datos.

• Entrada/Salida básica.

• Ejemplos I.

• Modificadores de ámbito de las variables.

• Punteros y memoria dinámica.

• Operadores de bit.

• Preprocesador C y compilación.

• Librerías estándar.

• Ejemplos II.

Programación en C 20

Page 21: Unidad 2 curso c

Programación en C 21

CONCEPTOS BASICOS DE C

Page 22: Unidad 2 curso c

Estructura de un programa en C

Programación en C 22

Todo programa en C se construye básicamente mediante trestipos de objetos:

Funciones. Variables. Tipos de datos.

Page 23: Unidad 2 curso c

Programación en C 23

#include <biblioteca1.h>

#include <biblioteca2.h>

... declaraciones de funciones ...

... definiciones (cuerpos de funciones) ...

... declaraciones de variables globales ...

main()

{

... cuerpo del main ...

}

... otras definiciones de funciones ...

Definición de Cabecera y/o

Ficheros

Declaración de Datos

Función Principal

Otras Funciones y/o

Procedimientos

/*Variantes de Definición*/

#include<nombre_de_la_biblioteca>#define nombre_de_la_constante

//Función principal

void main(){

definición de variables locales;instrucciones del programa;

}

• Estructura de un programa en C

Page 24: Unidad 2 curso c

Estructura de un programa en C

Función main():

#include <stdio.h>

int main()

{

printf(“Hola mundo!!\n”);

return(0);

}

Programación en C 24

Page 25: Unidad 2 curso c

Estructura de un programa en CFichero hola.c

# include <stdio.h>int main()

{

printf(“Hola mundo!!\n”);

return(0);

}

Programación en C 25

Compilación

Ejecución

Page 26: Unidad 2 curso c

Características de C• Sensible a mayúsculas y minúsculas: sum y Sum

• Indentación y espacios en blanco.

• Sentencias (terminan con un punto y coma).

• Bloques (delimitados entre llaves).

• Elementos de un programa:• Palabras reservadas (muy pocas).

• Funciones de librería estándar.

• Variables y funciones definidas por el programador.

Programación en C 26

Page 27: Unidad 2 curso c

ESTRUCTURA DE UN PROGRAMA

El inicio del programa debe llevar:

El símbolo de numeral (#) la sentencia “include”, y entre

signos de mayor y menor que (<>) el nombre de la librería o

fichero.

Seguidas de las librerías, para que “Incluya” en el programa

la directiva la cual contiene las funciones para procesar

datos.

#include <fichero>

27

Page 28: Unidad 2 curso c

ESTRUCTURA DE UN PROGRAMA

#include <stdio.h>.- Contiene las funciones de entrada y

salida de datos.

#include <conio.h>.- Declara varias funciones usadas

llamando la consola del sistema operativo.

#include <string.h>.- Manejo de cadenas.

#include <stdlib.h >.- Memoria dinámica.

#include <math.h >.- Rutinas matemáticas.

28

Page 29: Unidad 2 curso c

Comentarios• Los comentarios en C pueden ocupar varias líneas y se

encuentran delimitados entre /* y */.

int main()

{

/* Esto es un comentario de varias

lineas.*/

return(0);

}

Programación en C 29

Page 30: Unidad 2 curso c

ENTRADA Y SALIDA DE DATOS

Se utiliza las funciones de biblioteca:

“scanf” para la entrada de valores.

Sintaxis es la siguiente:

Lee el valor y lo guarda en una variable.

“printf” para la salida de información.

Sintaxis es la siguiente:

Imprime en pantalla el texto y el valor

30

scanf ("%d", &variable);

printf ("El valor es %d", variable);

Page 31: Unidad 2 curso c

La función COUT

Programación en C 31

#include <iostream>

int main()

{

int x = 5;

int y = 7;

cout << "\n";

cout << x + y << " " << x * y;

cout << "\n";

return 0;

}

Page 32: Unidad 2 curso c

Programación en CVariables básicas

Programación en C 32

Page 33: Unidad 2 curso c

CONCEPTOS BASICOS

Programación en C 33

Page 34: Unidad 2 curso c

Ámbito de las variables• La declaración de las variables lleva asociado un ámbito,

dentro del cual la variable es visible:

• Ámbito global: La variable es visible para todas las funciones del programa.

• Ámbito local: La variable es visible sólo dentro de la función. (Tiene prioridad sobre el ámbito global)

Programación en C 34

Page 35: Unidad 2 curso c

Ámbito de las variablesint x,y;

int main()

{

float x,z;

/* Aquí x y z son reales e y un entero */

}

/* Aquí x e y son variables enteras */

/* La variable z no existe fuera de la

función */

Programación en C 35

Page 36: Unidad 2 curso c

AMBITO DE LAS VARIABLES

36

Variable Global Variable Local

#include <stdio.h>

int x;

int main()

{

}

#include <stdio.h>

int main()

{

int x;

}

Page 37: Unidad 2 curso c

Programación en C 37

C++ dispone del operador (::), llamado operador de resolución de visibilidad (scoperesolution operator). Este operador, antepuesto al nombre de una variable global que está oculta por una variable local del mismo nombre, permite acceder al valor de la variable globa l6.Considérese el siguiente ejemplo:int a = 2; // declaración de una variable global avoid main(void){...printf("a = %d", a); // se escribe a = 2int a = 10; // declaración de una variable local aprintf("a = %d", a); // se escribe a = 10printf("a = %d", ::a); // se escribe a = 2}El operador (::) no permite acceder a una variable local definida en un bloque más exterioroculta por otra variable local del mismo nombre. Este operador sólo permite acceder a una variableglobal oculta por una variable local del mismo nombre.

OPERADOR DE VISIBILIDAD

Page 38: Unidad 2 curso c
Page 39: Unidad 2 curso c
Page 40: Unidad 2 curso c
Page 41: Unidad 2 curso c
Page 42: Unidad 2 curso c
Page 43: Unidad 2 curso c
Page 44: Unidad 2 curso c
Page 45: Unidad 2 curso c
Page 46: Unidad 2 curso c
Page 47: Unidad 2 curso c
Page 48: Unidad 2 curso c
Page 49: Unidad 2 curso c
Page 50: Unidad 2 curso c

Tipos de variables

Programación en C 50

long double 96 18 3.3621e-4932 1.18973e+493

Page 51: Unidad 2 curso c

Llamada sizeof()• La llamada sizeof() se utiliza para determinar el número

de bytes que ocupa una variable o un tipo:

int a;

sizeof(a);

sizeof(unsigned int);

Programación en C 51

Page 52: Unidad 2 curso c
Page 53: Unidad 2 curso c
Page 54: Unidad 2 curso c
Page 55: Unidad 2 curso c

SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE),X);

Page 56: Unidad 2 curso c

0 = Negro

1 = Azul

2 = Verde

3 = Aguamarina

4 = Rojo

5 = Purpura

6 = Amarillo

7 = Blanco

8 = Gris

9 = Azul claro

A = Verde claro

B = Aguamarina claro

C = Rojo claro

D = Purpura claro

E = Amarillo claroF = Blanco brillante

SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE),X);

Page 57: Unidad 2 curso c
Page 58: Unidad 2 curso c
Page 59: Unidad 2 curso c
Page 60: Unidad 2 curso c

MODIFICADORES DE FORMATO

Page 61: Unidad 2 curso c

Programación en C 61

MODIFICADORES DE FORMATO

Page 62: Unidad 2 curso c

Programación en C 62

MODIFICADORES DE FORMATO

Page 63: Unidad 2 curso c

#include <stdio.h>int main(void) {

int x=45;double y=23.354;char z[]="Esto es vida";

/* utilizamos barras inclinadas (/) para ver claramente la anchura del campo de caracteres */printf("1) Voy a escribir /45/ utilizando el formato %%d: /%d/\n", x);printf("2)Voy a escribir /45/ utilizando el formato %%1d: /%1d/\n", x);printf("3)Voy a escribir /45/ utilizando el formato %%10d: /%10d/\n\n", x);printf("4)Voy a escribir /23.354/ utilizando el formato %%f:/%f/\n", y);printf("5)Voy a escribir /23.354/ utilizando el formato %%.3f: /%.3f/\n", y);printf("6)Voy a escribir /23.354/ utilizando el formato %%5.1f: /%5.1f/\n", y);printf("7)Voy a escribir /23.354/ utilizando el formato %%-10.3f:/%-10.3f/\n", y);printf("8)Voy a escribir /23.354/ utilizando el formato %%5f: /%5f/\n\n", y);printf("9)Voy a escribir /Esto es vida/ utilizando el formato %%s: /%s/\n", z);printf("10)Voy a escribir /Esto es vida/ utilizando el formato %%.7s:/%.7s/\n", z);printf("11)Voy a escribir /Esto es vida/ utilizando el formato %%-15.10s: /%-15.10s/\n", z);printf("12)Voy a escribir /Esto es vida/ utilizando el formato %%15s: /%15s/\n", z);

}

Page 64: Unidad 2 curso c

ENTRADA Y SALIDA DE DATOS

ENTRADA DE TIPO CARÁCTER.

Se declara una variable de tipo carácter y se guarda en: getch() o

getche().

La diferencia es que getche() muestra en pantalla el carácter

introducido.

getch() lo mantiene oculto.

Sintaxis:

char opc;

opc=getch();

opc=getche();

65

Page 65: Unidad 2 curso c
Page 66: Unidad 2 curso c

Ejemplos

Page 67: Unidad 2 curso c

CONSTANTES

Una constante es un valor que, una vez fijado por el compilador, no cambia durante laejecución del programa. Una constante en C puede ser un entero, un real, un carácter, ouna cadena de caracteres.

Page 68: Unidad 2 curso c
Page 69: Unidad 2 curso c
Page 70: Unidad 2 curso c

DECLARACION DE CONSTANTES SIMBOLICAS

Declarar una constante simbólica significa decir al compilador de C el nombre de la constante y su valor. Esto se hace generalmente antes de la función main utilizando la directriz #define, cuya sintaxis es:

#define NOMBRE VALOR#define PI 3.14159#define NL ‘\n’#define MENSAJE “Pulse un tecla para continuar \n”

CONSTANTES C++

C++ y algunos compiladores de C admiten una forma adicional de declarar una constante; anteponer el calificador const al nombre de la constante .

const int k=12;

Page 71: Unidad 2 curso c

Programación en C

EXPRESIONES

OPERADORES

Una expresión es una secuencia de operadores yoperandos que especifican una operación determinada

Programación en C 72

Page 72: Unidad 2 curso c

Programación en C 73

Page 73: Unidad 2 curso c

Operaciones aritméticas• El operador de asignación es el igual (=).

Programación en C 74

Page 74: Unidad 2 curso c

Ejemplo Operaciones Aritmeticas

Page 75: Unidad 2 curso c
Page 76: Unidad 2 curso c
Page 77: Unidad 2 curso c
Page 78: Unidad 2 curso c
Page 79: Unidad 2 curso c
Page 80: Unidad 2 curso c

main(){

unsigned char a=255,r=0,m=32;int res;r=a&15;/*r=15 . Pone a cero todos los bits de a

excepto los 4 bits de menor peso*/res=(int)r;

cout<<r<<" "<<res<<endl;

r=r|m;/*r=47.Pone a 1 todos los bits de r que estana 1 en m */

res=(int)r;cout<<r<<" "<<res<<endl;r=a& ~7;/* r=248. Pone a 0 los 3 bits de menor peso de a*/res=(int)r;cout<<r<<" "<<res<<endl;r=a>>7;/*r=1. Desplazamiento de 7 bits a la derecha*/res=(int)r;cout<<r<<" "<<res<<endl;

}

Page 81: Unidad 2 curso c

Programación en C 82

Page 82: Unidad 2 curso c

Pre/post-incrementosLos operadores unarios (++) y (--) representan operaciones de incremento y decremento, respectivamente.

a++; /* similar a a=a+1 */

Ejemplos:

a=3; b=a++; /* a=4, b=3 */

a=3; b=++a; /* a=4, b=4 */

a=3; b=a--; /* a=2, b=3 */

Programación en C 83

Page 83: Unidad 2 curso c

Operaciones de asignaciónEl operador de asignación en C es el igual(=)

a=b+3;

Existen otras variantes de asignación:

a+=3; /* Equivalente a a=a+3 */

a*=c+d; /* Equivalente a a=a*(c+d) */

a/=a+1; /* Equivalente a a=a/(a+1) */

Para las asignaciones entre variables o expresiones de tipos diferentes se recomienda hacer casting:

a=(int)(x/2.34);

Programación en C 84

Page 84: Unidad 2 curso c

Ejercicio#include <stdio.h>main(){

int x=0,n=10,i=1;x++;//incrementa el valor de x en 1++x;//incrementa el valor de x en 1x=--n;//decrementa n en 1 y asigna el resultado a xx=n--;//asigna el valor de n a x y despues decrementa n en 1i+=2; //realiza i=i+2x*=n-3;//Realiza x=x*(n-3) y no x=x*n-3n>>=1;//Realiza n=n>>1 desplaza el contenido de n un bit

//a la derecha }

Page 85: Unidad 2 curso c

OPERADORES

Programación en C 86

Dentro de c++ tenemos los típicos operadores matemáticos + - * / y también los operadoresunarios (++ --) En este primer ejemplo vemos operadores unarios y la asignación múltiple.

#include <iostream>int main () {

// Sacamos por salida standar un mensajecout << "Vamos a probar los peradores\n";unsigned int test = 0;unsigned int a = 0, b = 0, c;// Sacamos el valor por pantalla de testcout << "Valor de test: " << test << endl;// Sacamos el valor por pantalla de test++cout << "Valor de test++: " << (test++) << endl;cout <<“El valor de test es”<<test<<endl;// Sacamos el valor por pantalla de ++testcout << "Valor de ++test: " << (++test) << endl;cout << "Valor de test actual: " << test << endl;// asignacion multiplec = b = a = test;// Veamos el resto de valorescout << "Y los demas: " << c << " " << b << " " << a << endl;

return 0;}

Page 86: Unidad 2 curso c

Operador ?

El operador condicional es el único operador ternario de la gramática C++ y sirve paratomar decisiones. Proporciona un resultado entre dos posibilidades en función de unacondición.Sintaxisexpresion-relacional ? expr1 : expr2

El operador condicional ? : produce un resultado. En la expresión E1 ? E2 : E3, E1 es unaexpresión relacional ( 4.9.12) que se evalúa primero. Si el resultado es cierto, entoncesse evalúa E2 y este es el resultado. En caso contrario (si E1 resulta falso), entonces seevalúa E3 y este es el resultado. Observe que si la premisa E1 es cierta, entonces no llegaa evaluarse la expresión E3.

El operador ? : puede usarse para sustituir ciertas sentencias del tipo if-then-else, aunque puede conducir a expresiones más compactas que las correspondientes if...else. En el ejemplo que sigue, a y se le asigna el valor 100:x = 10;y = x > 9 ? 100 : 200;

Page 87: Unidad 2 curso c

Operador ?

int main()

{

int a,b=4,c=5;

a=b>0 ? c : c+1;

/* Equivalente a

if(b>0)

a=c;

else

a=c+1; */

}

Programación en C 88

Page 88: Unidad 2 curso c

Operador Dirección &Operador de Indireccion *Operador sizeof()

Page 89: Unidad 2 curso c

PRIORIDAD Y ORDEN DE EVALUACION

Page 90: Unidad 2 curso c

Ejemplos

a=3;x=(a++-8)*(a-6);

Page 91: Unidad 2 curso c

CONVERSIONES DE TIPO

Page 92: Unidad 2 curso c

CONVERSIONES DE TIPO

Page 93: Unidad 2 curso c

Casting (Conversion explísita)Casting: mecanismo usado para cambiar de tipoexpresiones y variables:

La forma de generar un casting es:(tipo) expresión

Donde • Tipo; es uno de los tipos estándares del lenguaje

• Expresion, es una esprexion de cualquier tipo

int a;

float b;

char c;

b=65.0;

a=(int)b; /* a vale 65 */

c=(char)a; /* c vale 65 (Código ASCII

de ‘A’) */Programación en C 94

Page 94: Unidad 2 curso c

Casting

Programación en C 95

/* ejemplo 4.- realizamos conversiones de tipos implícitas y explícitas */

#include <stdio.h>

int main()

{

double d , e , f = 2.33 ;

int i = 6 ;

e = f * i ; /* e es un double de valor 13.98*/

printf( "Resultado = %f", e);

d = (int) ( f * i ) ; /* d es un double de valor 13.00*/

printf( "Resultado = %f", d);

d = (int) f * i ; /* f se ha convertido a un entero truncando sus*/

/*decimales, d es un double de valor 12.00*/

printf( "Resultado = %f", d);

return 0;

}

Page 95: Unidad 2 curso c

Ejercicio

Page 96: Unidad 2 curso c

ESTRUCTURAS SELECTIVAS

Programación en C 97

• SIMPLES (if)• DOBLES (if…else)• MULTIPLES (switch)

Page 97: Unidad 2 curso c

Programación en C 98

#include <iostream>

int main ()

{

// Sacamos por salida standar un mensaje

cout << "Vamos a probar los operadores\n";

unsigned int test = 0;

unsigned int a = 0, b = 0, c;

// asignacion multiple

c = b = a = ++test;

b += 3;

c++;

a -= 1;

// Veamos el resto de valores

cout << "Son estos: c=" << c << " b=" << b << " a=" << a << endl;

a += b + c;

cout << "Y ahora son estos: c=" << c << " b=" << b << " a=" << a << endl;

// Tomamos el valor a

cout << "Dame valores. \na=";

cin >> a;

// Tomamos el valor b

cout << "b=";

cin >> b;

// Tomamos el valor c

cout << "c=";

cin >> c;

cout << "Y ahora son estos: c=" << c << " b=" << b << " a=" << a << endl;

//Probamos el if

if (a > b) {

cout << "A es mayor que B" << endl;

}

//Probamos el if

if (a >= b) {

cout << "A es mayor o igual que B" << endl;

}

//Probamos el if

if (a <= b) {

cout << "A es menor o igual que B" << endl;

}

return 0;

}

Page 98: Unidad 2 curso c

if ... else

int main()

{

int a=3,b;

if(a>2)

{

b=100+a;

printf(“parte if”);

}

else

printf(“parte else”);

}

Programación en C 99

a>2

<if> <else>

Page 99: Unidad 2 curso c

Programación en C 100

#include <iostream>

int main ()

{

// Sacamos por salida standar un mensaje

cout << "Vamos a probar los operadores\n";

unsigned int test = 0;

int a = 23, b = 21, c = 34;

// Veamos el resto de valores

cout << "Valores: " << c << " " << b << " " << a << endl;

// Tomamos el valor a

cout << "Dame valores. \na=";

cin >> a;

// Tomamos el valor b

cout << "b=";

cin >> b;

// Tomamos el valor c

cout << "c=";

cin >> c;

cout << "Y ahora son estos: c=" << c << " b=" << b << " a=" << a << endl;

// Veamos una sentencia if-else sencilla

if (!(a == b))

cout << "a y b no son iguales" << endl;

else

cout << "a y b son iguales" << endl;

// Veamos otra sentencia if-else sencilla

if ((a == b) || (b == c))

cout << "A y B son iguales o B y C son iguales" << endl;

else

cout << "ni A y B son iguales ni B y C son iguales" << endl;

// Nota. Ley de De Morgan

// !(A && B) == !A || !B

// !(A || B) == !A && !B

return 0;

}

Operadores lógicos. A continuación vemos algunos ejemplos de operadores lógicos (comparaciones) y lacombinación de estos.

Page 100: Unidad 2 curso c

Programación en C 101

Programa para probar operadores Lógicosusing namespace std;#include <iostream>int main () {// Sacamos por salida standar un mensajecout << "Vamos a probar los operadores\n";unsigned int test = 0;int a = 23, b = 21, c = 34;// Veamos el resto de valorescout << "Valores: " << c << " " << b << " " << a << endl;// Tomamos el valor acout << "Dame valores. \na=";cin >> a;// Tomamos el valor bcout << "b=";cin >> b;// Tomamos el valor ccout << "c=";cin >> c;cout << "Y ahora son estos: c=" << c << " b=" << b << " a=" << a << endl;// Veamos una sentencia if-else sencillaif (!a)cout << "A es false (igual 0)" << endl;elsecout << "A es true (distinto de 0)" << endl;// Veamos una sentencia if-else sencillaif (!b)cout << "B es false (igual 0)" << endl;elsecout << "B es true (distinto de 0)" << endl;// Veamos una sentencia if-else sencillaif (!c)cout << "C es false (igual 0)" << endl;elsecout << "C es true (distinto de 0)" << endl;// Sentencia con operador logico o TERNARIO ()?:c = (a == b)?0:1;cout << "C es : " << c << endl;return 0;}

Page 101: Unidad 2 curso c

Programación en C 102

Page 102: Unidad 2 curso c
Page 103: Unidad 2 curso c

Switch

switch(ch)

{

case ‘A’: printf(“A”);

break;

case ‘B’:

case ‘C’: printf(“B o C”);

case ‘D’: printf(“B, C o D”);

break;

default: printf(“Otra letra”);

}

Programación en C 104

Page 104: Unidad 2 curso c
Page 105: Unidad 2 curso c

Ejercicio

Page 106: Unidad 2 curso c
Page 107: Unidad 2 curso c

while

int main()

{

int i=0,ac=0;

while(i<10)

{

printf(“%d”,i*i);

ac+=i;

i++;

}

}

Programación en C 108

i<100

i=0

<while>

i++

Page 108: Unidad 2 curso c

Programación en C 109

Page 109: Unidad 2 curso c

Programación en C 110

Page 110: Unidad 2 curso c

Sentencia do…while

Programación en C 111

Page 111: Unidad 2 curso c

do ... while

int main()

{

int i=0,ac=0;

do

{

printf(“%d”,i*i);

ac+=i;

i++;

}

while(i<10);

}

Programación en C 112

i<100

i=0

<do>

i++

Page 112: Unidad 2 curso c

Sentencia for

Programación en C 113

Page 113: Unidad 2 curso c

Programación en C 114

Sentencia for

Page 114: Unidad 2 curso c

Programación en C 115

Ejemplos de la Sentencia for

Page 115: Unidad 2 curso c

Programación en C 116

Page 116: Unidad 2 curso c

Programación en C 117

#include <stdio.h>

int main(){

int n, a;

a = 0;do{printf( "Introduzca un numero entero: " );scanf( "%d", &n );

if ( n == 0 ){printf( "ERROR: El cero no tiene opuesto.\n" );continue;/* En el caso de que n sea un cero,

la iteración en curso del buclese interrumpe aquí. */

}printf( "El opuesto es: %d\n", -n );a += n;

} while ( n >= -10 && n <= 10 );

printf( "Suma: %d", a );return 0;

}

La instrucción de salto continue siempre se usa parainterrumpir (romper) la ejecución normal de un bucle. Sinembargo, el control del programa no se transfiere a laprimera instrucción después del bucle (como sí hace lainstrucción break, es decir, el bucle no finaliza, sino que,finaliza la iteración en curso, transfiriéndose el control delprograma a la condición de salida del bucle, para decidir sise debe realizar una nueva iteración o no.

Por tanto, la instrucción continue finaliza (termina) laejecución de una iteración de un bucle, pero, no laejecución del bucle en sí. De forma que, lainstrucción continue salta (no ejecuta) las instruccionesque existan después de ella, en la iteración de un bucle.

LA INSTRUCCION CONTINUE

Page 117: Unidad 2 curso c

Programación en C 118

LA INSTRUCCION BREAK

#include <stdio.h>int main(){

int n, a;a = 0;do{

printf( "Introduzca un numero entero: " );scanf( "%d", &n );

if ( n == 0 ){

printf( "ERROR: El cero no tiene opuesto.\n" );break;/* En el caso de que n sea un cero,

el bucle se interrumpe. */}printf( "El opuesto es: %d\n", -n );a += n;

} while ( n >= -10 && n <= 10 );

printf( "Suma: %d", a );return 0;

}

La instrucción de salto break se usapara interrumpir (romper) laejecución normal de un bucle, esdecir, la instrucción break finaliza(termina) la ejecución de un bucle y,por tanto, el control del programa setransfiere (salta) a la primerainstrucción después del bucle.

Page 118: Unidad 2 curso c

break y continue

int main()

{

int i;

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

{

if(i%2==0)

continue;/*Comienza la iteración*/

if(i%17==0)

break; /*Sale del bucle*/

printf(“%d”,i);

}

}

Programación en C 119

Page 119: Unidad 2 curso c
Page 120: Unidad 2 curso c

Ej. Sentencia goto

Page 121: Unidad 2 curso c

Ejercicios