bloque 3 - dtic.upf.edutnavarrete/programacio1/transparencies/teoria3.pdf · ing. informática...
TRANSCRIPT
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 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",¬a1);printf("Introdueix la segona nota: ");scanf("%f",¬a2);printf("Introdueix la tercera nota: ");scanf("%f",¬a3);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;}