PDF de programación - Estructuras de control - C

Imágen de pdf Estructuras de control - C

Estructuras de control - Cgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.002 visualizaciones desde el 14 de Enero del 2017
173,5 KB
30 paginas
Estructuras de control
Estructuras de control
Estructuras de control
Estructuras de control



Programación estructurada

Estructuras condicionales



La sentencia if
La cláusula else
Encadenamiento y anidamiento
El operador condicional ?:
La sentencia switch



Estructuras repetitivas/iterativas



El bucle while
El bucle for
El bucle do…while
Bucles anidados

Cuestiones de estilo

Algoritmos de ordenación
Algoritmos de búsqueda

Vectores y matrices



Las estructuras de control

controlan la ejecución de las instrucciones de un programa







Programación estructurada
Programación estructurada
Programación estructurada
Programación estructurada



IDEA CENTRAL:

Las estructuras de control de un programa

sólo deben tener un punto de entrada y un punto de salida.



La programación estructurada...


mejora la productividad de los programadores.

mejora la legibilidad del código resultante.



La ejecución de un programa estructurado progresa

disciplinadamente,

en vez de saltar de un sitio a otro de forma impredecible



Gracias a ello, los programas…


resultan más fáciles de probar

se pueden depurar más fácilmente

se pueden modificar con mayor comodidad

Estructuras de control - C


- 1 -

© Fernando Berzal

En programación estructurada sólo se emplean tres construcciones:



Secuencia
Conjunto de sentencias que se ejecutan en orden

Ejemplos:
Sentencias de asignación y llamadas a rutinas.


Selección
Elige qué sentencias se ejecutan en función de una condición.

Ejemplos:
Estructuras de control condicional if-then-else y case/switch


Iteración
Las estructuras de control repetitivas repiten conjuntos de
instrucciones.

Ejemplos:
Bucles while, do...while y for.



Teorema de Böhm y Jacopini (1966):

Cualquier programa de ordenador
puede diseñarse e implementarse

utilizando únicamente las tres construcciones estructuradas

(secuencia, selección e iteración; esto es, sin sentencias goto).



Böhm, C. & Jacopini, G.: “Flow diagrams, Turing machines, and languages only with
two formation rules”. Communications of the ACM, 1966, Vol. 9, No. 5, pp. 366-371

Dijkstra, E.W.: “Goto statement considered harmful”. Communications of the ACM,
1968, Vol. 11, No. 3, pp. 147-148


Estructuras de control - C


- 2 -

© Fernando Berzal




Estructuras de control
Estructuras
de control
Estructuras
Estructuras
de control
de control

condicionales
condicionales
condicionales
condicionales



Por defecto,
las instrucciones de un programa se ejecutan secuencialmente:



El orden secuencial de ejecución no altera el flujo de control
del programa respecto al orden de escritura de las instrucciones.



Sin embargo, al describir la resolución de un problema, es normal
que tengamos que tener en cuenta condiciones que influyen sobre
la secuencia de pasos que hay que dar para resolver el problema:


Según se cumplan o no determinadas condiciones,

la secuencia de pasos involucrada en la realización de una tarea



será diferente



Las estructuras de control condicionales o selectivas nos permiten
decidir qué ejecutar y qué no en un programa.



Ejemplo típico
Realizar una división sólo si el divisor es distinto de cero.

Estructuras de control - C


- 3 -

© Fernando Berzal

La estructura de control condicional if



La sentencia if nos permite elegir

si se ejecuta o no un bloque de instrucciones.



Condición_1

Cierta

Cierta

Condición_2

Falsa

l

a
s
a
F

Bloque_1

Bloque_3

Bloque_4

Bloque_2

SI−ENTONCES



Bloque_5

SI−ENTONCES−SINO

if (condición)
sentencia;

if (condición) {
bloque
}



Sintaxis



donde bloque representa un bloque de instrucciones.



Bloque de instrucciones:
Secuencia de instrucciones encerradas entre dos llaves {....}

Estructuras de control - C


- 4 -

© Fernando Berzal

Consideraciones acerca del uso de la sentencia if


- Olvidar los paréntesis al poner la condición del if es un

error sintáctico (los paréntesis son necesarios)



- Confundir el operador de comparación == con el operador

de asignación = puede producir errores inesperados

- Los operadores de comparación ==, !=, <= y >= han de

escribirse sin espacios.

- => y =< no son operadores válidos en C.

- El fragmento de código afectado por la condición del if

debe sangrarse para que visualmente se interprete
correctamente el ámbito de la sentencia if:

if (condición) {
// Aquí se incluye el código
// que ha de ejecutarse sólo
// si se cumple la condición del if
// (sangrado para que se vea dónde
// empieza y dónde acaba el if)
}



Error común:


if (condición);
sentencia;

es interpretado como

if (condición)
; // Sentencia vacía

sentencia;



Estructuras de control - C


¡¡¡La sentencia siempre se ejecutaría!!!

- 5 -

© Fernando Berzal

Ejemplo
Decir si un número es positivo



#include <stdio.h>

int main (int argc, char *argv[])
{
int x;

printf(“Déme un numero”);
scanf(“%d”,&x);

if (x>0) {
printf(“El numero %d es positivo”,x);
}

return 0;
}



Estructuras de control - C


- 6 -

© Fernando Berzal

La cláusula else



Una sentencia if, cuando incluye la cláusula else,

permite ejecutar un bloque de código si se cumple la condición
y otro bloque de código diferente si la condición no se cumple.



Condición_1

Cierta

Cierta

Condición_2

Falsa

l

a
s
a
F

Bloque_1

Bloque_3

Bloque_4

Bloque_2

SI−ENTONCES



Sintaxis



Bloque_5

SI−ENTONCES−SINO



if (condición)
sentencia1;
else
sentencia2;

if (condición) {
bloque1
} else {
bloque2
}

Los bloques de código especificados

representan dos alternativas complementarias y excluyentes

Estructuras de control - C


- 7 -

© Fernando Berzal

Ejemplo
Decir si un número es positivo o negativo



#include <stdio.h>

void main ()
{
int x;

printf(“Déme un numero: ”);
scanf(“%d”,&x);

if (x>=0) {
printf(“El numero %d es positivo”, x);
} else {
printf(“El numero %d es negativo”, x);
}
}

La sentencia if anterior es equivalente a

if (x>=0) {
printf(“El numero %d es positivo”, x);
}
if (x<0) { // Condición complementaria a x>=0
printf(“El numero %d es negativo”, x);
}



si bien nos ahorramos comprobar una condición al usar else.

Estructuras de control - C


- 8 -

© Fernando Berzal

Encadenamiento
Las sentencias if se suelen encadenar:



if … else if …



#include <stdio.h>

void main ()
{
float nota;

printf(“Déme una nota: ”);
scanf(“%f”,&nota);

if (nota>=9) {
printf(“Sobresaliente”);
} else if (nota>=7) {
printf(“Notable”);
} else if (nota>=5) {
printf(“Aprobado”);
} else {
printf(“Suspenso”);
}
}


El if encadenado anterior equivale a:

if (nota>=9) {
printf(“Sobresaliente”);
}
if ((nota>=7) && (nota<9)) {
printf(“Notable”);
}
if ((nota>=5) && (nota<7)) {
printf(“Aprobado”);
}
if (nota<5) {
printf(“Suspenso”);
}



Estructuras de control - C


- 9 -

© Fernando Berzal

Anidamiento
Las sentencias if también se pueden anidar unas dentro de otras.


Ejemplo
Resolución de una ecuación de primer grado ax+b = 0

#include <stdio.h>

void main()
{
float a,b;

printf(“Coeficientes de la ecuación ax+b=0:”);
scanf (“%f %f”,&a,&b);

if (a!=0) {
printf(“La solución es %f”, -b/a);
} else {
if (b!=0) {
printf(“La ecuación no tiene solución.”);
} else {
printf(“Solución indeterminada.”);
}
}
}


El if anidado anterior equivale a …

if (a!=0) {
printf(“La solución es %f”, -b/a);
}

if ((a==0) && (b!=0)) {
printf(“La ecuación no tiene solución.”);
}

if ((a==0) && (b==0)) {
printf(“Solución indeterminada.”);
}


En este caso, se realizarían 5 comparaciones en vez de 2.

Estructuras de control - C


- 10 -

© Fernando Berzal

El operador condicional ?:
C proporciona una forma de abreviar una sentencia if



El operador condicional ?:

permite incluir una condición dentro de una expresión.



Sintaxis


condición? expresión1: expresión2

if (condición)
expresión1
else
expresión2


“equivale” a



Sólo se evalúa una de las sentencias,
por lo que deberemos ser cuidadosos con los efectos colaterales.



Ejemplos


max = (x>y)? x : y;

min = (x<y)? x : y;

med = (x<y)? ((y<z)? y: ((z<x)? x: z)):
((x<z)? x: ((z<y)? y: z));



Estructuras de control - C


- 11 -

© Fernando Berzal

Selección múltiple con la sentencia switch
Permite seleccionar entre varias alternativas posibles



switch (expresión) {

case expr_cte1:
sentencia1;

case expr_cte2:
sentencia2;
...
case expr_cteN:
sentenciaN;

Sintaxis



• Se selecciona a partir de la evaluación de una única expresión.
• La expresión del switch ha de ser de tipo entero.
• Los valores de cada caso del switch han de ser constantes.
• La etiqueta default marca el bloque de código que se ejecuta
por defecto (cuando al evaluar la expresión se obtiene un valor
no especificado por los casos del switch).

default:

}

sentencia;



• En C, se ejecutan todas las sentencias incluidas a partir del

caso correspondiente, salvo que explícitamente usemos break:


switch (expresión) {
case expr_cte1:



sentencia1;



case expr_cte2:
case expr_cte3:

break;



sentenciaN;

}
  • Links de descarga
http://lwp-l.com/pdf782

Comentarios de: Estructuras de control - C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad