• No se han encontrado resultados

Lenguaje C, segundo bloque: Sentencias de control

N/A
N/A
Protected

Academic year: 2021

Share "Lenguaje C, segundo bloque: Sentencias de control"

Copied!
34
0
0

Texto completo

(1)

Lenguaje C, segundo bloque: Sentencias de control

Lenguaje C, segundo bloque: Sentencias de

control

José Otero

1Departmento de informática Universidad de Oviedo

(2)

Lenguaje C, segundo bloque: Sentencias de control Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(3)

Lenguaje C, segundo bloque: Sentencias de control Sentencia if Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(4)

Lenguaje C, segundo bloque: Sentencias de control Sentencia if

Permite ejecutar o no una sentencia o bloque, en función de si una expresión es cierta o no.

Una sentencia: if (expresion) sentencia; Un bloque: if (expresion) { //bloque ... } verdadera falsa expresion sentencias

"expresion"se construye con operadores lógicos y

(5)

Lenguaje C, segundo bloque: Sentencias de control Sentencia if

Ejemplo: ordenar dos números de mayor a menor.

Si están desordenados hay que intercambiarlos. Si están ordenados no hay que hacer nada.

#include<stdio.h> int main()

{

int a,b,tmp;

scanf("%d%d",&a,&b); //ordenar dos numeros //de mayor a menor if (a<b) { tmp=a; a=b; b=tmp; } printf("\n%d %d",a,b); }

(6)

Lenguaje C, segundo bloque: Sentencias de control Sentencia if-else Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(7)

Lenguaje C, segundo bloque: Sentencias de control Sentencia if-else

Permite ejecutar una sentencia/bloque u otra sentencia/bloque, en función de si una expresión es cierta o no.

if (expresion) sentencia; else sentencia; if (expresion) { //bloque ... } else sentencia; Etc. verdadera falsa sentencias A condición sentencias B

(8)

Lenguaje C, segundo bloque: Sentencias de control Sentencia if-else

Ejemplo: mostrar el mayor de dos números.

#include<stdio.h> int main()

{

int a,b,mayor;

printf("\nIntroduce dos numeros:"); scanf("%d%d",&a,&b);

if (a>b) mayor=a; else

mayor=n;

printf("\nEl mayor es %d",mayor); }

(9)

Lenguaje C, segundo bloque: Sentencias de control if e if-else anidados Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(10)

Lenguaje C, segundo bloque: Sentencias de control if e if-else anidados

Entre las sentencias después deifoelsepueden haber más

ifeif-else. Por el lado delelse:

if (condicion1) { ... } else if (condicion2) { ... } else { ... } sentencias A falsa sentencias B sentencias C condición2 condición1 falsa verdadera verdadera

(11)

Lenguaje C, segundo bloque: Sentencias de control if e if-else anidados

Entre las sentencias después deifoelsepueden haber más

ifeif-else. Por el lado delif:

if (condicion1) { if (condicion2) { ... } else { ... } } else ... condición1 condición2 sentencias A sentencias B sentencias C verdadera verdadera falsa falsa

(12)

Lenguaje C, segundo bloque: Sentencias de control if e if-else anidados

Entre las sentencias después deifoelsepueden haber más

ifeif-else. Por los dos lados:

if (condicion1) { if (condicion2) { ... } else { ... } } else { if (condicion3) { ... } else { ... } }

(13)

Lenguaje C, segundo bloque: Sentencias de control Sentencia switch Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(14)

Lenguaje C, segundo bloque: Sentencias de control Sentencia switch

Es equivalente a variosif-elserestringiendo la condición a

la comparación a igualdad entreexpresionycte1...cte2.

switch(expresion) { case cte1:... break; case cte2:... break; ... default:... } if (expresion==cte1) { ... } else if (expresion==cte2) { ... } ... else ...

(15)

Lenguaje C, segundo bloque: Sentencias de control Sentencia switch

IMPORTANTE:

Si se omitebreakse ejecuta todo el código que siga

hasta encontrar el siguiente.

Expresión es de tipo entero o carácter.

Después decasesolo pueden ir constantes de esos tipos.

La condición es, implicitamente, la comparación a igualdad

entreexpresiony las constantes. No se puede hacer

(16)

Lenguaje C, segundo bloque: Sentencias de control Sentencia switch

Ejemplo: calculadora sencilla

Índice

1 Sentencia if

2 Sentencia if-else

3 if e if-else anidados

4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(17)

Lenguaje C, segundo bloque: Sentencias de control Sentencia switch

Ejemplo: calculadora sencilla

#include<stdio.h> int main()

{

float a,b; char op;

printf("\nIntroduce num op num:"); scanf("%f%c%f",&a,&op,&b); switch(op) { case ’+’:printf("\n%f+%f=%f",a,b,a+b); break; case ’-’:printf("\n%f-%f=%f",a,b,a-b); break; case ’*’:printf("\n%f*%f=%f",a,b,a*b); break; case ’/’:printf("\n%f/%f=%f",a,b,a/b); break; default:printf("\nerror"); } }

(18)

Lenguaje C, segundo bloque: Sentencias de control Bucle while Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(19)

Lenguaje C, segundo bloque: Sentencias de control Bucle while

Repite una sentencia o bloque mientras sea cierta una expresión. Primero se evalúa la expresión, si es cierta se ejecutan las sentencias.

while(expresion) sentencia; while(expresion) { //bloque ... } verdadera falsa expresion sentencias

(20)

Lenguaje C, segundo bloque: Sentencias de control Bucle while

IMPORTANTE:

La primera vez que se evalúeexpresiontienen que

tener valor definido todas las variables que intervengan en ella. De momento, estar definida es:

Que se haya pedido por el teclado.

Que haya estado a la izquierda de una asignación. Esto tiene que hacerse antes del bucle.

Si la primera vez que se evalúaexpresiones falsa, no

se realiza ninguna iteración.

De entre las sentencias que se repiten, algunas de ellas tienen que modificar alguna variable de las que conforman

expresion, haciéndola falsa en algún momento.

(21)

Lenguaje C, segundo bloque: Sentencias de control Bucle while

Ejemplo: suma de las cifras de un número

Índice

1 Sentencia if

2 Sentencia if-else

3 if e if-else anidados

4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(22)

Lenguaje C, segundo bloque: Sentencias de control Bucle while

Ejemplo: suma de las cifras de un número

#include<stdio.h> int main()

{

//declaracion de variables, inicializar suma int cifra,n,suma=0;

printf("\nIntroduce un entero:"); scanf("%d",&n);

//mientras n!=0 quedan cifras por extraer while(n!=0)

{

//se extrae la cifra cifra=n%10;

//se suma la cifra suma=suma+cifra;

//se elimina la cifra del numero n=n/10;

}

printf("\nSuma de las cifras:%d",suma); }

(23)

Lenguaje C, segundo bloque: Sentencias de control Bucle do-while Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(24)

Lenguaje C, segundo bloque: Sentencias de control Bucle do-while

Repite una sentencia o bloque mientras sea cierta una expresión. Primero se ejecutan las sentencias, después se evalúa la expresión. do sentencia; while(expresion); do { //bloque ... }while(expresion); expresion falsa verdadera sentencias

(25)

Lenguaje C, segundo bloque: Sentencias de control Bucle do-while

IMPORTANTE:

La primera vez que se evalúeexpresiontienen que

tener valor definido todas las variables que intervengan en ella. De momento, estar definida es:

Que se haya pedido por el teclado.

Que haya estado a la izquierda de una asignación. Esto puede hacerse durante la primera iteración.

Como primero se ejecutan las sentencias, al menos se realiza una iteración.

De entre las sentencias que se repiten, algunas de ellas tienen que modificar alguna variable de las que conforman

expresion, haciéndola falsa en algún momento.

(26)

Lenguaje C, segundo bloque: Sentencias de control Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

Índice

1 Sentencia if

2 Sentencia if-else

3 if e if-else anidados

4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(27)

Lenguaje C, segundo bloque: Sentencias de control Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

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

{

float x_i,x_i_1=.5,a,dif,precision;

printf("\nIntroduce un num y precision"); scanf("%f%f",&a,&precision);

do{

//siguiente termino x_i=.5*(x_i_1+a/x_i_1);

//diferencia entre dos consecutivos dif=fabs(x_i_1-x_i);

//actualizacion del anterior x_i_1=x_i;

//mientras la dif mayor que precision

}while(dif>precision);

printf("\nRaiz cuadrada=%f",x_i); }

(28)

Lenguaje C, segundo bloque: Sentencias de control Bucle for Índice 1 Sentencia if 2 Sentencia if-else 3 if e if-else anidados 4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(29)

Lenguaje C, segundo bloque: Sentencias de control Bucle for

Es una forma compacta de escribir el buclewhilepara ciertos

usos, por ejemplo para realizar un número fijo de iteraciones.

for(inicializacion;expresion;actualizacion) sentencia; for(inicializacion;expresion;actualizacion) { //bloque ... }

(30)

Lenguaje C, segundo bloque: Sentencias de control Bucle for

Lainicializacionse hace una sola vez.

Consiste en al menos una inicialización de las variables que intervienen enexpresion.

Después se evalúaexpresion, si es cierta, se ejecutan

las sentencias.

Finalmente se realiza laactualizacion.

Consiste en al menos una asignación en las que se cambia el valor de alguna variable de las que intervienen en

(31)

Lenguaje C, segundo bloque: Sentencias de control Bucle for

Equivale a unwhilecon la siguiente estructura.

inicializacion; while(expresion) { sentencias; actualizacion; } verdadera falsa expresion sentencias inicializacion actualizacion

(32)

Lenguaje C, segundo bloque: Sentencias de control Bucle for

Si hay varias inicializaciones se separan por comas.

Todas las variables deexpresiondeben de tener valor

definido la primera vez que se evalúe.

Si hay varias actualizaciones se separan por comas.

Algunas deben hacer queexpresionse haga falsa. De lo contrario el bucle no termina.

En este curso casi siempre será suficiente una inicialización y una actualización.

(33)

Lenguaje C, segundo bloque: Sentencias de control Bucle for

Ejemplo: cálculo del factorial

Índice

1 Sentencia if

2 Sentencia if-else

3 if e if-else anidados

4 Sentencia switch

Ejemplo: calculadora sencilla

5 Bucle while

Ejemplo: suma de las cifras de un número

6 Bucle do-while

Ejemplo: aproximación de una raíz por una sucesión

7 Bucle for

(34)

Lenguaje C, segundo bloque: Sentencias de control Bucle for

Ejemplo: cálculo del factorial

#include<stdio.h> int main() { int n,fact=1,i; printf("\nIntroduce un numero:"); scanf("%d",&n); for (i=2;i<=n;i++) fact=fact*i; printf("\n%d!=%d",n,fact); }

Referencias

Documento similar

Imparte docencia en el Grado en Historia del Arte (Universidad de Málaga) en las asignaturas: Poéticas del arte español de los siglos XX y XXI, Picasso y el arte español del

En definitiva, a través de estos ítems lo que se pretende es describir como enseñan los profesores (Hidalgo, 2003).. Tabla 15: Relación de ítems del Área: k. Capacidad para aplicar

Pero ¡qué aflicciones personales les preparaba no tanto vuestra justicia 5 cuanto vuestra

(Corte Constitucional, Sentencia C-1141, 2000). Esta sentencia cobra gran relevancia a la hora de hacer un análisis sobre los efectos contractuales que pueden surgir

adjunta al presente y forma parte integral del mismo, para que sean utilizados Unica y exclusivamente para el funcionamiento y operacion de la Estrategia MENUTRE( Modelo Estatal

If you are covered by a reciprocal agreement for health and social security (citizens of Denmark, Finland, France, Luxembourg, Norway, Portugal and Sweden), you may be eligible

Aunque en la sentencia que a continuación se cita la doc- trina de la Corte Constitucional se hallaba vertida tanto en sentencias de tutela como de constitucionalidad y, además,

For example, the model of Robertson and Marino [23] is based on the fact that EEG activity that would emerge from the dorsolateral and ventrolateral prefrontal