ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5...

48
ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción Introducción a la a la Programación Programación Práctica P5: Fundamentos y Práctica P5: Fundamentos y Estructuras de Control Estructuras de Control Profesorado: Profesorado: Antonio Carlos Domínguez Antonio Carlos Domínguez Brito Brito Oscar Déniz Suárez Oscar Déniz Suárez

Transcript of ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5...

Page 1: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Introducción a la Introducción a la ProgramaciónProgramación

Práctica P5: Fundamentos y Práctica P5: Fundamentos y Estructuras de ControlEstructuras de Control

Profesorado:Profesorado:Antonio Carlos Domínguez BritoAntonio Carlos Domínguez BritoOscar Déniz SuárezOscar Déniz Suárez

Page 2: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Estructura de un ProgramaLenguaje C: Estructura de un Programa

#include <stdio.h>#include <stdlib.h># …# …

… /* Otras definiciones */

int main(int argc, char *argv[]){ … /* Zona de */ … /* declaración */ … /* de variables */

… /* Zona de */ … /* instrucciones del */ … /* programa principal */

system("PAUSE"); return 0;}

Cabecera de Programa: ficheros cabecera y otras definiciones

Función main: cuerpo principal del programa

NORMALMENTE LA FUNCIÓN MAIN SE ENCUENTRA EN UN FICHERO

LLAMADO “main.c”

Page 3: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: CaracterísticasLenguaje C: Características

• Algunas características son:

• El Lenguaje C es sensible al uso de mayúsculas y minúsculas.

• Las sentencias (instrucciones) terminan con el símbolo punto y

coma ‘;’ y se componen de palabras reservadas o palabras clave,

identificadores, constantes, operadores y separadores.

• Se pueden establecer bloques de instrucciones mediante el uso

de llaves: los símbolos abre-llave ‘{’ y cierra-llave ‘}’.

• Los programas se componen de:

• Palabras reservadas o palabras clave.

• Variables y funciones de la librería estándar.

• Variables y funciones definidas por el programador.

Page 4: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: CaracterísticasLenguaje C: Características

• Palabras reservadas o palabras clave

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

Page 5: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: IdentificadoresLenguaje C: Identificadores

• Un identificador permite identificar (nombrar) una variable o una función dentro de un programa. Siguen las siguientes reglas:

1. Se forma de una secuencia de símbolos pertenecientes SÓLO

al conjunto de símbolos:

{‘a’, …, ‘n’, ‘o’, …, ‘z’, ‘A’, …, ‘N’, ‘O’, …, ‘Z’, ‘0’, …, ‘9’, ‘_’}.

2. El primer carácter o símbolo del identificador NO PUEDE SER

un dígito numérico.

3. Se distinguen las letras mayúsculas de las minúsculas, así, el

identificador “suma” de los identificadores “SUMA”, “Suma”,

“sUMa”, etc.

4. Se pueden definir identificadores de hasta 31 símbolos de

longitud.

Page 6: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: IdentificadoresLenguaje C: Identificadores

• Ejemplos de identificadores válidos son:

tiempo, modulo, distancia_total, suma10,_el_producto_, Tiempo, Modulo,

Distancia_Total, laSumaDeTodo, elProducto,miVariable, Tu_Variable, estaFuncion,

_el_Identificador_

• Ejemplos de identificadores no válidos son:

10_segundos, el-modulo, la distancia total, $dolares, %porciento,6seis6,

este-no-es-un-identificador-valido, módulo, estaFunción

Page 7: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: ConstantesLenguaje C: Constantes

• Las constantes en C pueden ser de los siguientes tipos:

1. Constantes numéricas: son valores numéricos, o bien, enteros o

en notación científica (punto flotante).

2. Constantes carácter: cualquier símbolo o carácter

alfanumérico encerrado entre apóstrofos (Ejs.: ‘a’, ‘:’, ‘Z’, ‘+’,

…).

3. Cadenas de caracteres: cualquier secuencia de símbolo o

caracteres encerrado entre comillas (Ejs.: “esto es una

cadena de caracteres”, “Hola Mundo!\n”, …).

4. Constantes simbólicas: son constantes que se identifican con

un identificador.

Page 8: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: OperadoresLenguaje C: Operadores

• Los operadores son símbolos que indican operaciones cuyos operandos son normalmente variables, y/o constantes, así como también funciones. En C hay diferentes tipos de operadores:

1. Aritméticos: { +, -, /, *, %, ++, --}.

2. De asignación: { =, +=, -=, *=, /= }.

3. Relacionales: { ==, <, >, <=, >=, !=}.

4. Lógicos: { &&, ||, ! }.

5. Otros: { &, |, ^, <<, >>, …}

Page 9: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Separadores y ComentariosLenguaje C: Separadores y Comentarios

• Los separadores permiten que los programas sean legibles al permitir separar los diferentes elementos que aparecen en el programas (identificadores, sentencias, …). Los separadores son los llamados símbolos de formato: el espacio en blanco, el tabulador, y el salto de línea.

• En el código fuente de un programa el programador puede introducir comentarios para dar mayor legibilidad al mismo. Los comentarios en Lenguaje C deben estar entre los dos pares de símbolos siguientes:

• /*: indica comienzo de comentario• */: indica final de comentario• //: indica que el resto de la línea es un comentario

Ejemplos:a=b+c; /* aquí se calcula la suma */printf(“a=%d\n”,a); // aquí se imprime la

suma

Page 10: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: VariablesLenguaje C: Variables

• Tipos de datos fundamentales en C

Tipo Base

Modificador

signed unsigned short long

Tipo Carácter

char(signed)

charunsigned char ---- ----

Tipo Entero

int(signed)

intunsigned int

short (int)

long (int)

Tipo Real

float ---- ---- ---- ----

double ---- ---- ---- long double

Page 11: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: VariablesLenguaje C: Variables

• Variables Tipo Carácter

Ejemplos:char identificador1 = ‘c’;char identificador2, identificador3;

• Contienen un único símbolo o carácter ASCII.

• Almacenan un byte de información.

1 byte = 8 bits 28=256 números binarios diferentes

Page 12: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: VariablesLenguaje C: Variables

• Variables Tipo Entero

Ejemplos:short identificador1 = 345;int identificador2 = -2345;long identificador3= -4352359;

• Almacenan números enteros.

• Tienen diferentes tamaños:• Entero corto short (<=4 bytes)• Entero normal int (>=4 bytes)• Entero largo long (>= 4 bytes)

• Pueden aceptar los siguientes modificadores:• Entero con signo signed• Entero sin signo unsigned

Page 13: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: VariablesLenguaje C: Variables

• Variables Tipo Real

Ejemplos:float identificador1 = -4.4567;double identificador2,identificador3;long double identificador4= 6.19e+23;

• Almacenan números reales.

• Tienen diferentes tamaños:

• Simple precisión float (4 bytes)• Doble precisión double (8 bytes)• Cuadruple precisión long double (16 bytes)

Page 14: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: ConstantesLenguaje C: Constantes

• Constantes Enteras

Ejemplos:

8797 // constante int o short0x3ae5 // constante int o short06573 // constante int o short7890L // constante long97987UL // constante unsigned long

• Constantes Reales

Ejemplos:

1.23 // constante float o double3.87e-3 // constante float o double-9.005768e-12 // constante float o double

Page 15: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: ConstantesLenguaje C: Constantes

• Constantes Carácter

Ejemplos:

‘a’ // constante char‘g’ // constante char‘A’ // constante char‘\n’ // constante char (salto de línea)‘\0’ // constante char (carácter nulo)‘\t’ // constante char (tabulador horizontal)

• Constantes Cadena de Carácteres

Ejemplos:

“Informática” // constante cadena (string)“Hola Mundo!\n” // constante cadena (string)“Esto es una frase” // constante cadena (string)

Page 16: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: ConstantesLenguaje C: Constantes

• Constantes Enumeración

Ejemplos:

enum Dia {lunes, martes, miercoles, jueves, viernes, sabado, domingo};

enum Mes {enero=1, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre};

Dia diaCita=martes;Mes mesCita=abril;

Page 17: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: ConstantesLenguaje C: Constantes

• Variables constante

Ejemplos:

const int i=50;const long double pi= 3,141592653589;const char unaLetra=‘a’;const char unaCadena[]=“Esto es una cadena”;

• Se forman utilizando el cualificador const

Page 18: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: OperadoresLenguaje C: Operadores

• Operadores Aritméticos

• Suma: +• Resta: -• Multiplicación: *• División: /• Módulo (Resto de División Entera): %

Ejemplos:

y=a*x*x+b*x+c;b=50%12; // el resultado es 2z=k*x+(r-909)/((456.78-q)*s);l=2*pi*radio;x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);

Page 19: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: OperadoresLenguaje C: Operadores

• Operadores Asignación

• Asignación: =• Suma y asignación: +=• Resta y asignación: -=• Multiplicación y asignación: *=• División y asignación: /=

Ejemplos:

t=a*s*s+b*s+c;b+=1; // equivalente a b=b+1;c-=1; // equivalente a c=c-1;d*=k; // equivalente a d=d*k;e/=m; // equivalente a e=e/m;

Page 20: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: OperadoresLenguaje C: Operadores

• Operadores Incrementales

• Incremento: ++• Decremento: --

Sólo se pueden utilizar con variables de tipo entero o puntero.

Ejemplos:

i++; // equivalente a i=i+1; o a i+=1;j--; // equivalente a j=j-1; o a j-=1;a= (i++) + k; // operador de post-incrementob= (++i) + k; // operador de pre-incremento

Page 21: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: OperadoresLenguaje C: Operadores

• Operadores Relacionales: expresan condiciones lógicas

• Igual que: ==• Menor que: <• Mayor que: >• Menor o igual que: <=• Mayor o igual que: =>• Distinto que: !=

Ejemplos:

(a<b) // ¿a es menor que b? Depende de a y b(r!=8) // ¿r es diferente de 8? Depende de r

SI LA CONDICIÓN ES VERDADERA SE EVALÚA COMO 1, SI ES FALSA SE EVALÚA COMO 0.

Page 22: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: OperadoresLenguaje C: Operadores

• Operadores Lógicos: expresan condiciones lógicas compuestas

• Y lógico: && • O lógico: ||• NO lógico: !

Ejemplos:

(a<b) && (k!=l) // ¿a es menor que b Y // k es diferente de 1? // Depende de a, b, k y l(m>=n) || !(q==j) // ¿m es mayor o igual que n O // q no es igual a j? Depende

de // m, n, q y j

SI LA CONDICIÓN COMPUESTA ES VERDADERA SE EVALÚA COMO 1, SI ES FALSA SE EVALÚA COMO 0.

Page 23: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: OperadoresLenguaje C: Operadores

• Otros operadores:

• Más unario: + (indica que una variable es positiva) • Menos unario: - (cambia el signo a una variable numérica)• sizeof (indica el tamaño en bytes de una variable)• Operador coma: ,(permite realizar varias sentencias en una sóla

línea)• Operador Dirección: & (permite obtener la dirección de memoria

donde se almacena una variable)• Operador Indirección: * (permite acceder a la memoria apuntada

por una dirección de memoria)

Ejemplos:

a=-b;r=sizeof(k);

Page 24: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: ExpresionesLenguaje C: Expresiones

Ejemplos:

x1=(-b+sqrt(b*b-4*a*c))/(2*a);

x2=(-b-sqrt(b*b-4*a*c))/(2*a);

a=b=c=d=e=f=1; // multi-asignación

a=((b>c)&&(c>d))||((c==e)||(e==b)); // condición // compuesta

zmas=sqrt(r*r-x*x-y*y) // semiesfera positiva

zmenos=sqrt(r*r-x*x-y*y) // semiesfera negativa

Page 25: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Precedencia de OperadoresLenguaje C: Precedencia de Operadores

Precedencia Asociatividad

() [] -> . izda. a dcha.

++ -- ! sizeof() (tipo)

+ (unario) –(unario)

*(indirección) &(dirección)

dcha. a izda.

* / % izda. a dcha.

+ - izda. a dcha.

< <= > >= izda. a dcha.

== != izda. a dcha.

&& izda. a dcha.

|| izda. a dcha.

?: dcha. a izda.

= += -= *= /= dcha. a izda.

, (operador coma) izda. a dcha.

Page 26: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: SentenciasLenguaje C: Sentencias

• Una sentencia de un programa en Lenguaje C es una instrucción de un programa. Hay tres tipos de sentencias:

• Sentencias Generales

float espacio,espacio_inicial,tiempo,velocidad;…espacio=espacio_inicial+velocidad*tiempo;printf(“Espacio recorrido =%f\n”,espacio);

• Sentencia Vacía o Nula

; // sentencia vacía o nula

• Sentencias Compuestas o Bloques

…{

int i,j,k,m;…i=j+k*m

}…

Page 27: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Estructuras de ControlLenguaje C: Estructuras de Control

• Las estructuras o sentencias de control de flujo en C son las siguientes:

• Sentencias Condicionales• if, if-else• switch-case• Operador Condicional ?

• Sentencias Iterativas o Bucles• while• do-while• for

• Sentencias de Salto Incondicional• continue• break• goto

Page 28: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias CondicionalesLenguaje C: Sentencias Condicionales

• Sentencia Condicional if:…if(expresion_logica)

sentencia;…

Si expresion_logica se evalúa como verdadera (1) entonces se ejecuta sentencia. Si expresion_logica se evalúa como falsa (0) entonces sentencia no se ejecuta y el programa continua ejecutándose en la siguiente línea.

Ejemplos:

if(a>b)

mayor=a;

if(a>b)

{ // sentencia compuesta

mayor=a;

printf(“mayor=%d\n”,mayor);

}

Page 29: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias CondicionalesLenguaje C: Sentencias Condicionales

• Sentencia Condicional if-else:…if(expresion_logica)

sentencia_1;else sentencia_2;

…Si expresion_logica se evalúa como verdadera (1) entonces se ejecuta sentencia_1. Si expresion_logica se evalúa como falsa (0) entonces se ejecuta sentencia_2.

Ejemplos:

if(a>b)

mayor=a;

else

mayor_o_igual=b;

if(a>b)

{ // sentencia compuesta

mayor=a;

printf(“mayor=%d\n”,mayor);

}

else

{ // sentencia compuesta

mayor_o_igual=b;

printf(“mayor o igual=%d\n”,mayor_o_igual);

}

Page 30: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias CondicionalesLenguaje C: Sentencias Condicionales

• Sentencia Condicional if-else:

Ejemplos:…

if(a>b)

mayor=a;

else

if(a=b)

igual=a;

else

menor=a;

if(i<10)

{

if(j<10)

k=i+j;

}

else

k=10;

if(a>b)

{ // sentencia compuesta

mayor=a;

printf(“mayor=%d\n”,mayor);

}

else

if(a=b) // sentencia compuesta

{ // sentencia compuesta

igual=a;

printf(“igual=%d\n”,igual);

}

else

{ // sentencia compuesta

menor=a;

printf(“menor=%d\n”,menor);

}

Page 31: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias CondicionalesLenguaje C: Sentencias Condicionales

• Sentencia Condicional switch:

…switch(expresion_entera){ case expresion_cte_1: sentencia_1; [break;] case expresion_cte_2: sentencia_2; [break;] … case expresion_cte_n: sentencia_3; [break;] [default: sentencia_default;]}…

• Si expresion_entera es igual a alguna de la expresiones constantes {expresion_cte_1, …, expresion_cte_n} entonces se ejecuta la sentencia correspondiente de entre las sentencias {sentencia_1, …, sentencia_n}.

• Si expresión_entera no coincide con ninguna de las expresiones constantes {expresion_cte_1, …, expresion_cte_n} se ejecuta la sentencia sentencia_default asociada con la sentencia default.

• Las sentencias break saltan el resto de la sentencia condicional switch.

Page 32: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias CondicionalesLenguaje C: Sentencias Condicionales

• Sentencia Condicional switch:

Ejemplo:…

printf (“Introduzca opción?:”);ç

scanf(“%d”,&opcion);

switch(opcion)

{

case 1: a=b+c; break;

case 2: a=b-c; break;

case 3: a=b*c; break;

case 4: a=b/c; break;

case 5: a=b%c; break;

default:

printf(“Error: opción %d no válida.\n”,opcion);

}

Page 33: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias CondicionalesLenguaje C: Sentencias Condicionales

• Operador condicional ?:…(expresion_logica)? expresion_1: expresion_2;…

Si expresion_logica se evalúa como verdadera (1) entonces se evalua expresion_1. Si expresion_logica se evalúa como falsa (0) entonces se evalúa expresion_2.

Ejemplo:

a=(a<0)? a+b: a-b;

// sentencia if-else equivalente

if(a<0) a=a+b;

else a=a-b;

Page 34: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias Iterativas o BuclesLenguaje C: Sentencias Iterativas o Bucles

• Sentencia iterativa while:…while(expresion_logica)

sentencia;…

Mientras expresion_logica se evalúe como verdadera (1) se ejecuta sentencia repetidamente. Cuando expresion_logica se evalúe como falsa (0) entonces la ejecución continua en la siguiente sentencia de programa.

Ejemplos:

a=0;

while(a<b)

a++;

a=0;

while(a<b)

{ // sentencia compuesta

a++;

printf(“a=%d\n”,a);

}

Page 35: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias Iterativas o BuclesLenguaje C: Sentencias Iterativas o Bucles

• Sentencia iterativa do-while:…do sentencia;while(expresion_logica);

…Inicialmente se ejecuta sentencia una vez.Luego mientras expresion_logica se evalúe como verdadera (1) sentencia se ejecuta repetidamente. Cuando expresion_logica se evalúe como falsa (0) entonces la ejecución continua en la siguiente sentencia de programa.

Ejemplos:…

a=-1;

do

a++;

while(a<b);

a=-1;

do

{ // sentencia compuesta

a++;

printf(“a=%d\n”,a);

} while(a<b);

Page 36: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias Iterativas o BuclesLenguaje C: Sentencias Iterativas o Bucles

• Sentencia iterativa for:…for(sentencia_inicializacion; expresion_logica; sentencia_actualizacion) sentencia;…

Inicialmente se ejecuta sentencia_inicializacion. A continuación se evalúa expresion_logica. Si se evalúa como verdadera (1) se ejecuta sentencia, y luego sentencia_actualizacion. Luego se vuelve a evaluar expresion_logica y si es verdadera se vuelve a ejecutar sentencia, y luego sentencia_actualizacio. Esto se hará repetidamente hasta que expresion_logica se evalúe como falsa (0), en ese punto el bucle finaliza y la ejecución continua en la siguiente sentencia de programa.

Page 37: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias Iterativas o BuclesLenguaje C: Sentencias Iterativas o Bucles

• Sentencia iterativa for:

Ejemplo:

// contando

for(a=0; a<b; a++)

printf(“a=%d\n”,a);

// sentencia while equivalente

a=0;

while(a<b)

{ // sentencia compuesta

a++;

printf(“a=%d\n”,a);

}

// sumando

for(i=0, suma=0; i<n; i++)

{

printf(“Sumando %d\n”,i);

suma=suma+i;

}

// sentencia while equivalente

i=0; suma=0;

while(i<n)

{ // sentencia compuesta

printf(“Sumando %d\n”,i);

suma=suma+i;

i++;

}

Page 38: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias de Salto IncondicionalLenguaje C: Sentencias de Salto Incondicional

• Sentencia continue:…continue;…

Se utiliza dentro de sentencias repetitivas o bucles para obligar a la finalización de la iteración actual y reevaluación de la expresión lógica que controla la duración del bucle.

Ejemplo:…

// sumando

for(i=-n, suma=0; i<n; i++)

{

if(n<0) continue;

printf(“Sumando %d\n”,a);

suma=suma+i;

}

// sentencia while equivalente

i=-n; suma=0;

while(i<n)

{ // sentencia compuesta

if(n<0) continue;

printf(“Sumando %d\n”,a);

suma=suma+i;

i++;

}

Page 39: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias de Salto IncondicionalLenguaje C: Sentencias de Salto Incondicional

• Sentencia break:…break;…

Se utiliza dentro de la sentencia condicional switch, así como en sentencias repetitivas o bucles para obligar a la finalización de la sentencia y continuación del programa en la siguiente sentencia de programa.

Ejemplo:…

// sumando

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

{

if(i==2) break;

printf(“Sumando %d\n”,i);

suma=suma+i;

}

// sentencia while equivalente

i=0; suma=0;

while(i<n)

{ // sentencia compuesta

if(i==2) break;

printf(“Sumando %d\n”,i);

suma=suma+i;

i++;

}

Page 40: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Sentencias de Salto IncondicionalLenguaje C: Sentencias de Salto Incondicional

• Sentencia goto:…goto etiqueta;…etiqueta: sentencia;…

La instrucción goto hace saltar la ejecución del programa a la sentencia sentencia etiquetada con la etiqueta etiqueta.

Ejemplo:…

// contando

i=0;

inicio_bucle:

prinft(“i=%d\n”,i);

i++;

if(i<n)

goto inicio_bucle;

// sentencia while equivalente

i=0;

while(i<n)

{ // sentencia compuesta

printf(“i=%d\n”,i);

i++;

}

Page 41: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Entrada/Salida BásicaLenguaje C: Entrada/Salida Básica

• Función printf:

… printf(“cadena_formato”,expresion1,expresion2,…); …

La función printf permite escribir texto por pantalla. La cadena_formato indica qué es lo que se va a escribir por pantalla en cada utilización de printf. Es posible incluir en cadena_formato referencias a expresiones que tras ser evaluadas deben incluirse en el texto que se imprimirá por pantalla.

Ejemplo: …int a=3;float x=23.0;char c=‘A’;printf(“Hola mundo!!\n”);

printf(“Un entero %d\n”,a);

printf(“Un real %f \ny un char %c\n”,x,c);…

Page 42: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Entrada/Salida BásicaLenguaje C: Entrada/Salida Básica

• Función printf: Formato

Cadena Formato Tipo de Expresión Resultado Impreso%d %i short, int

número entero%ld %li long

%uunsigned short, unsigned

int número entero sin signo

%lu unsigned long

%o[unsigned] short,

[unsigned] int número entero octal sin signo

%lo [unsigned] long

%x %X[unsigned] short,

[unsigned] int número entero hexadecimal sin signo

%lx %lX [unsigned] long

%ffloat, double,

long doublenúmero real en coma fija

%e %E %g %Gfloat, double,

long doublenúmero real en notación científica

%c char, unsigned char se imprime un símbolo ASCII

%s char* se imprime una cadena de símbolos

%p void* se imprime el valor de un puntero

Page 43: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Entrada/Salida BásicaLenguaje C: Entrada/Salida Básica

• Función scanf:

… scanf(“cadena_formato”,expresion1,expresion2,…); …

La función scanf permite leer texto desde teclado. La cadena_formato indica qué es lo que se va a leer por teclado en cada utilización de scanf. Es posible incluir en cadena_formato referencias a expresiones que tras ser evaluadas deben incluirse en el texto que se imprimirá por pantalla.

Ejemplo:…int a;float x;char c;

scanf(“%d”,&a); /* Lee un entero y lo almacena en a */scanf(“%f %c”,&x,&c); /* Lee x y c */…

Page 44: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Entrada/Salida BásicaLenguaje C: Entrada/Salida Básica

• Función scanf: Formato

Cadena Formato Tipo de Expresión Resultado Impreso%hd %hi short

se lee un número entero%d %i int

%ld %li long

%hu unsigned short

se lee número entero sin signo%u unsigned int

%lu unsigned long

%ho Short

se lee un número entero en octal%o int

%lo long

%hx %hX Short

se lee un número entero en hexadecimal%x %X int

%lx %lX long

%f %e %E %g %G float

se lee un número real%lf %le %lE %lg %lG double

%Lf %Le %LE %Lg %LG long double

%c char se lee un símbolo ASCII

%s char* se lee una cadena de símbolos

Page 45: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Operaciones Básicas con BuclesLenguaje C: Operaciones Básicas con Bucles

• Generación de sucesiones numéricas:

Dada una sucesión x0, x1, ... xn de números reales tal que xi = f(i , xi-1), dicha sucesión se puede calcular mediante el siguiente algoritmo:

// Algoritmo sucesiónint main(int argc, char *argv[]){ double x; int i,n;

… // se lee n

i=0; x=x0; // x0 es el valor inicial de la sucesión

while(i<=n) { printf(“x%d=%f\n”,i,x); i++; x=f(i,x); // aquí se escribe la expresión de f(i,x) } printf(“x%d=%f\n”,i,x);

return 0;}

Page 46: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Operaciones Básicas con BuclesLenguaje C: Operaciones Básicas con Bucles

• Cálculo sumatorios de sucesiones numéricas:

Dada una sucesión x0, x1, ... xn de números reales tal que xi = f(i , xi-1), la

suma se puede calcular mediante el siguiente algoritmo:// Algoritmo sumatorio sucesiónint main(int argc, char *argv[]){ double x,suma; int i,n;

… // se lee n

i=0; x=x0; // x0 es el valor inicial de la sucesión suma=x;

while(i<=n) { printf(“suma[%d elementos]=%f\n”,i,suma); i++; x=f(i,x); // aquí se escribe la expresión de f(i,x) suma=suma+x; } printf(“suma[%d elementos]=%f\n”,i,suma);

return 0;}

n

iixS

0

Page 47: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Operaciones Básicas con BuclesLenguaje C: Operaciones Básicas con Bucles

• Cálculo de productos de sucesiones numéricas:

Dada una sucesión x0, x1, ... xn de números reales tal que xi = f(i , xi-1), la

suma se puede calcular mediante el siguiente algoritmo:// Algoritmo producto sucesiónint main(int argc, char *argv[]){ double x,producto; int i,n;

… // se lee n

i=0; x=x0; // x0 es el valor inicial de la sucesión producto=x;

while(i<=n) { printf(“producto[%d elementos]=%f\n”,i,producto); i++; x=f(i,x); // aquí se escribe la expresión de f(i,x) producto=producto*x; } printf(“producto[%d elementos]=%f\n”,i,producto);

return 0;}

n

iixP

0

Page 48: ULPGC Escuela Universitaria Politécnica Introducción a la Programación - Práctica P5 Introducción a la Programación Práctica P5: Fundamentos y Estructuras.

ULPGCE

scu

ela

Un

iver

sita

ria

Po

litéc

nic

a

Introducción a la Programación - Práctica P5

Lenguaje C: Ejercicios PropuestosLenguaje C: Ejercicios Propuestos

1. [Segundo Grado] Realice un algoritmo en Lenguaje C que calcule las soluciones a una ecuación de segundo grado ax2+bx+c=0, teniendo en cuenta tanto las soluciones reales como las complejas.

2. [Pares] Realice un algoritmo en Lenguaje C que calcule la siguiente sucesión x0=0, x1=2, x2=4, …, xn=2n tal que n es un número entero.

3. [Impares] Realice un algoritmo en Lenguaje C que calcule la siguiente sucesión x0=1, x1=3, x2=5, …, xn=2n+1 tal que n es un número entero.

4. [Factorial] Realice un algoritmo en Lenguaje C que calcule la siguiente sucesión x1=1!, x2=2!, x3=3!, x4=4!, … xn=n!, tal que n es un número entero.

5. [Fibonacci] Realice un algoritmo en Lenguaje C que calcule la sucesión de Fibonacci f1=1, f2=1, f3, f4, f5, … fn tal que fi=fi-2+fi-1 y siendo n un número entero.