17
Estructuras de datos (Prof. Edgardo A. Franco) 1 Tema 17: Estructuras de control para la programación estructurada en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Estructuras de datos (Prof. Edgardo A. Franco)

1

Tema 17: Estructuras de control para la programación estructurada en C

M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom

Page 2: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Contenido

• Estructuras secuenciales

• Estructuras selectivas

• Selectiva simple (si)

• Selectiva doble (si-sino)

• Selectiva múltiple (si-sino si-sino)

• Switch

• Estructuras iterativas o repetitivas

• Mientras

• Repetir

• Para 2

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 3: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

La programación estructurada y el lenguaje C• C es un lenguaje de programación que permite programar de manera

estructurada ya que establece una sintaxis y semántica propia paraexpresar computaciones, ofreciendo sentencias de control paradescribir secuencias, selecciones e iteraciones.

SECUENCIA SELECCIÓNif ..elseswitch

ITERACIÓN while

do...whilefor

3

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 4: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Estructuras secuenciales

• Son las sentencias (asignaciones e invocaciones afunciones) escritas en el código fuente, cada una de estasserá ejecutada de manera secuencial (en orden deaparición) una vez compilado el fuente.

Instrucciónn

Instrucción1

Instrucción2

Instrucción3

Instrucción4

Diagrama de flujo Pseudocódigo

#include<stdio.h>

int main(void)

{

int byte=0xFF;

printf("\nEl valor de byte es: %4X H",byte);

byte&=0x00;

printf("\nEl valor de byte es: %4X H",byte);

byte|=0xFF;

printf("\nEl valor de byte es: %4X H",byte);

byte>>=1;

printf("\nEl valor de byte es: %4X H",byte);

byte<<=2;

printf("\nEl valor de byte es: %4X H",byte);

return 0;

}

Código en C

4

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 5: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Estructuras selectivas (if)

• Las estructuras selectivas se utilizan para tomar decisionescon bases en la evaluación de una condición.

Diagrama de flujo Pseudocódigo Código en C

condición

no

si

Instrucciones

if(condición)

{

Instrucciones;

};

Selectiva simple

5

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 6: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Diagrama de flujo Pseudocódigo Código en C

if(condición)

{

Instrucciones1;

}

else

{

Instrucciones2;

};

Selectiva doble

condición

si

no

Instrucciones2

Instrucciones1

6

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 7: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Diagrama de flujo Pseudocódigo Código en C

if(condición1)

{

Instrucciones1;

}

else if (condición2)

{

Instrucciones2;

}

else if (condición3)

{

Instrucciones3;

}

else

{

Instruccionesn;

};

Selectiva múltiple

condición1

si

no

Instrucciones1

condición2

Instrucciones2

no

si

condición3

si

no

7

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 8: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

• La preposición de control de flujo if se utiliza para expresardecisiones, formalmente la sintaxis es:

if(expresión1)

{

sentencias1;

}

else if(expresión2)

{

sentencias2;

}

else if(expresión3)

{

sentencias3;

}

else

{

sentencias4;

}

*Las preposiciones else if(sino si) y else (sino)pueden omitirse.

Si la expresión1 se evaluá y si esta esverdadera (diferente de 0) entonces se lleva acabo el código inmediato entre llaves.Sino si (else if) la expresión2 se evaluá y siesta es verdadera (diferente de 0) entonces selleva a cabo el código inmediato entre llaves.Sino si (else if) la expresión3 se evaluá y siesta es verdadera (diferente de 0) entonces selleva a cabo el código inmediato entre llaves.…Sino (else) si ninguna condición ha sidoverdadera entonces se lleva a cabo el códigoinmediato entre llaves.

8

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 9: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

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

int main(void)

{

float a,b;

printf("\nIntroduce dos números reales separados por una coma: ");

scanf("%f,%f",&a,&b);

if(a<0&&b<0)

{

printf("\nAmbos numeros son negativos");

}

else if(a>0&&b>0)

{

printf("\nLos dos numeros son positivo");

}

else if(a>0||b>0)

{

printf("\nUno de los dos numeros es positivo");

}

else if(a==0&&b==0)

{

printf("\nAmbos numeros son igual a cero");

}

else

{

printf("\n...");

}

return 0;

}

9

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 10: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Estructura selectiva (switch)• Una estructura selectiva del lenguaje c, que facilita

implementar algunas decisiones múltiples cuando sepresentan todas con base en la evaluación de una expresiónes switch-case.

switch(expresión)

{

case exp-constante1: <acción 1>;

break;

case exp-constante2: <acción 1>;

break;

...

case exp-constanteN: <acción N>;

break;

default: <acción M>;

}

*El uso de switch es valido si se utiliza apropiadamente bajo la teoría de laprogramación estructurada, ya que incluye una sentencia de salto que no deberíade ser utilizada indiscriminadamente (break)

10

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 11: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Ejemplo (switch)

#include<stdio.h>

int main(void)

{

short opcion;

printf("\nOpción 1");

printf("\nOpción 2");

printf("\nOpción 3");

printf("\nOpción 4");

printf("\nOpción 5");

printf("\nSelecciona una opción...");

scanf("%d",&opcion);

switch(opcion)

{

case 1: printf("\nOpción 1 seleccionada");

break;

case 2: printf("\nOpción 2 seleccionada");

break;

case 3: printf("\nOpción 3 seleccionada");

break;

case 4: printf("\nOpción 4 seleccionada");

break;

case 5: printf("\nOpción 5 seleccionada");

break;

default:printf("\nOpción no valida");

}

}

11

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 12: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Estructuras iterativas o repetitivas• Las estructuras repetitivas se utilizan para realizar varias veces

el mismo conjunto de operaciones con base en una condición.

Diagrama de flujo Pseudocódigo Código en C

while(condición)

{

Instrucciones;

};

Iterativa "mientras"

condición

no

si

instrucciones

12

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 13: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

• Con "repetir" se asegura que las instrucciones de dentro delciclo se ejecutan al menos una vez.

Diagrama de flujo Pseudocódigo Código en C

do

{

Instrucciones;

}while(!(condición));

Iterativa "repetir"

condición

si

no

instrucciones

13

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 14: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

• La estructura de control while evaluá la expresión antes decomenzar cada iteración, si esta es verdadera (diferente de 0)se realizan las sentencias de dentro de las llaves.

• La estructura de control do-while se utiliza cuando se quiereasegurar que las sentencias de dentro del ciclo se ejecuta almenos una vez puesto que la evaluación de la expresiónlógica se hace al final de este.

while(expresión)

{

Sentencias;

};

do

{

Sentencias;

}

while(expresión);

Estructura while & do-while

14

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 15: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

• La estructura for permite definir un bucle controlado por uncontador, denominado variable de control o de inducción.

Diagrama de flujo Pseudocódigo Código en C

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

{

instrucciones;

}

Iterativa "para"

i ≤ n

no

si

instrucciones

i ← i+1

i ← x

15

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 16: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Estructura iterativa para (for)• El encabezado de un bucle for tiene tres partes separadas

por ";". En la primera se inicializan las variable de control ysólo se ejecuta una vez, antes de la primera iteración, lasegunda es una expresión que indica la condición lógica quedebe cumplirse para que la próxima iteración se ejecute;esta condición se evaluá antes de cada iteración y, cuandodeja de satisfacerse, el bucle for termina. La tercera partedel encabezado es la actualización de las variables de controly se ejecuta después de cada iteración.

for(. . . ; . . .;. . .)

{

sentencias;

}

16

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 17: 17 Estructuras de control para la programación ... · •Estructuras iterativas o repetitivas •Mientras •Repetir •Para 2 en C a z. La programación estructurada y el lenguaje

Ejemplo (for)

#include<stdio.h>

int main(void)

{

int i,n;

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

printf("\t%3d",i);

}

return 0;

}

17

17

Est

ruct

ura

s d

e co

ntr

ol p

ara

la p

rogr

amac

ión

est

ruct

ura

da

en C

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez