bloque 3 - dtic.upf.edutnavarrete/programacio1/transparencies/teoria3.pdf · ing. informática...

27
Programación I Bloque 3 Ing. Informática Bloque 3 Expresiones, sentencias y estructuras de control

Upload: tranphuc

Post on 22-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Programación I Bloque 3Ing. Informática

Bloque 3

Expresiones, sentencias y estructuras de control

Programación I Bloque 3Ing. Informática

Ejemplos de expresiónaa + (b * 2)c == ‘c’

Su evaluación nos da un valor concreto

OperadoresAritméticosLógicosRelacionales

Programación I Bloque 3Ing. Informática

Operadores aritméticos

%Módulo

-Negativo

-Resta

*Multiplicación

/División

+Suma

Programación I Bloque 3Ing. Informática

Operadores lógicos

!NO

&&Y

||O

Programación I Bloque 3Ing. Informática

Operadores relacionales

>=Mayor o igual que

>Mayor que

<=Menor o igual que

<Menor que

!=Diferente de

==Igual a

Programación I Bloque 3Ing. Informática

Lógica booleana

F

F

F

V

A && B

F

V

V

V

A || B

F

V

F

V

B

VF

VF

FV

FV

!AA

Programación I Bloque 3Ing. Informática

SentenciasUna sentencia siempre termina con un punto y coma.Operador de asignación

a = 5 + 3;b = a;

Operadores de incremento/decremento++i; es equivalente a i= i + 1;i++; es equivalente a i= i + 1;--i; es equivalente a i= i – 1;i--; es equivalente a i= i – 1;

Operadores “resumidos”x+=5; es equivalente a x= x + 5;x*=3; es equivalente a x= x * 3;

Programación I Bloque 3Ing. Informática

Sentencias de entrada y salidaLectura:

scanf(“%format”,&variable);Ejemplo: scanf(“%d”,&x);

Formatos:d: un nombre enter en notació decimalo: un nombre enter en notació octalx: un nombre enter en notació hexadecimalc: un caràcters: una tira de caràcters (per exemple, “hola”). En parlarem en

capítols posteriors.f: un nombre real (tipus float)

Añadir la línea:#include <stdio.h>

Programación I Bloque 3Ing. Informática

Sentencias de entrada y salidaEscritura:

printf(“%format”,expressió);Ejemplo: printf(“%d”,x);

Formatos:d: un nombre enter en notació decimalo: un nombre enter en notació octalx: un nombre enter en notació hexadecimalc: un caràcters: una tira de caràcters (per exemple, “hola”)f: un nombre real (tipus float o double) en notació decimale: un nombre real (tipus float o double) en notació

exponencial (p.e. 3.1E-2)

Añadir la línea:#include <stdio.h>

Programación I Bloque 3Ing. Informática

Precedencia de operadores

Associativitat Operadors--> ( ) [ ] . -><-- ! ~ ++ -- (cast) * & sizeof--> * / %--> + ---> << >>--> < <= > >=--> == !=--> &--> ^--> |--> &&--> ||<-- ?:<-- = += -= (i altres operadors d’assignació)--> ,

Operador d’indirecció (contingut de)Operador de direcció (direcció de)

Programación I Bloque 3Ing. Informática

Estructuras de control

Estructuras condicionalesEjecuta una instrucción (o varias) dependiendo de si una condición es cierta o no

Estructuras iterativasRepite una instrucción (o varias) dependiendo de si una condición es cierta o no

Programación I Bloque 3Ing. Informática

Estructuras condicionales

Ejecuta un bloque de sentencias entre varias opcionesswitch

Ejecuta un bloque de sentencias entre dos opcionesif-else

Ejecuta un bloque de sentencias o noif

Programación I Bloque 3Ing. Informática

Estructuras condicionales (if)

#include <stdio.h>main(){

int numero;printf("Introduce un entero: ");scanf("%d",&numero);if (numero < 0){

numero = numero * (-1); }printf("Su valor absoluto es: %d", numero);

}

if (condición) {

Conjunto de acciones a realizar si la condición és cierta;}

Programación I Bloque 3Ing. Informática

Estructuras condicionales (if)

Atención a las condiciones con el operador =

...if (numero = 0)

{...

}

No es una comparación, es una asignación.En C esto no da error.La asignación (=) es también un operador y devuelve el valor asignado.

Programación I Bloque 3Ing. Informática

Estructuras condicionales (if-else)

if (condición) {

Conjunt de acciones a realizar si la condición és cierta;}else{

Conjunto de acciones a realizar si la condición és falsa;}

Programación I Bloque 3Ing. Informática

Estructuras condicionales (if-else)#include <stdio.h>main(){

float nota1,nota2,nota3,notafinal;printf("Introdueix la primera nota: ");scanf("%f",&nota1);printf("Introdueix la segona nota: ");scanf("%f",&nota2);printf("Introdueix la tercera nota: ");scanf("%f",&nota3);notafinal = (nota1+nota2+nota3)/3;if (notafinal>=5)

printf("La nota final es APROVAT");else

printf("La nota final es SUSPENS");}

Programación I Bloque 3Ing. Informática

Estructuras condicionales (if-else)main()

{int n1,n2;

printf("Introduce el primer entero: ");scanf("%d",&n1);

printf("Introduce el segundo entero: ");scanf("%d",&n2);

if (n1>n2)printf("El mayor es %d",n1);

elseprintf("El mayor es %d",n2);

}

Programación I Bloque 3Ing. Informática

Estructuras condicionales (if-else)#include <stdio.h>

main(){

int lloc;printf("Introdueix el lloc on ha acabat l'esportista: ");scanf("%d",&lloc);if (lloc==1){

printf("Medalla d'or");}else{

if (lloc==2){

printf("Medalla d'argent");}else{

Programación I Bloque 3Ing. Informática

Estructuras condicionales (if-else)if (lloc==3){

printf("Medalla de bronze");}else{

if ((lloc>3) && (lloc<9)){

printf("Diploma olimpic");}else{

printf("Cap premi");}

}}

}}

Programación I Bloque 3Ing. Informática

Estructuras condicionales (switch)

switch (condición) {

case constante1:bloque de sentencias 1; break;

case constante2:bloque de sentencias 1; break;

...default:

bloque de sentencias alternativo; }

Programación I Bloque 3Ing. Informática

Estructuras condicionales (switch)#include <stdio.h>main(){

int lloc;printf("Introdueix el lloc on ha acabat l'esportista: ");scanf("%d",&lloc);switch (lloc){

case 1:printf("Medalla d'or");break;

case 2:printf("Medalla d'argent");break;

case 3:printf("Medalla de bronze");break;

Programación I Bloque 3Ing. Informática

Estructuras condicionales (switch)case 4:

case 5:case 6:

case 7:case 8:

printf("Diploma olimpic");

break;default:

printf("Cap premi");break;

}

}

Programación I Bloque 3Ing. Informática

Estructuras iterativas (while)

#include <stdio.h>

main(){

int suma,passa,N;

suma=0;passa=1;printf("Introdueix el nombre enter:");scanf("%d",&N);while (passa <= N){

suma = suma + passa;passa = passa + 1;

}printf("La suma de 1 a %d val %d", N, suma);

}

while (condición) {

Conjunto de acciones a realizar si la condición és cierta;}

Programación I Bloque 3Ing. Informática

Estructuras iterativas (while)

suma passa

N=5 0 1

1<=5 ? : SÍ 0+1 = 1 2

2<=5 ? : SÍ 1+2 = 3 3

3<=5 ? : SÍ 3+3 = 6 4

4<=5 ? : SÍ 6+4 = 10 5

5<=5 ? : SÍ 10+5 = 15 6

6<=5 ? : NO: escribe(15)

Programación I Bloque 3Ing. Informática

Estructuras iterativas (while)Atención a los bucles infinitos:

#include <stdio.h>

main(){

int suma,passa,N;

suma=0;passa=1;printf("Introdueix el nombre enter:");scanf("%d",&N);while (passa <= N){

suma = suma + passa;}printf("La suma de 1 a %d val %d", N, suma);

}

Programación I Bloque 3Ing. Informática

Estructuras iterativas (do while)

main(){

int suma,passa,N;passa=1;suma=0;printf("Introdueix el nombre enter:");scanf("%d",&N);do {

suma = suma + passa;passa = passa +1;

} while (passa<=N);printf("La suma de 1 a %d val %d", N, suma);

}

do {Conjunto de acciones a realizar;

} while (condición)

Programación I Bloque 3Ing. Informática

Estructuras iterativas (for)

#include <stdio.h>

main(){

int suma,passa,N;suma=0;printf("Introdueix el nombre enter:");scanf("%d",&N);for (passa=1;passa<=N;passa=passa+1)

suma = suma + passa;printf("La suma de 1 a %d val %d", N, suma);

}

for (variable=valor_inicial;condición;acción_en_cada_iteración){

Conjunto de acciones;}