Computing">
Nothing Special   »   [go: up one dir, main page]

Antecedentes y Algoritmos.

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 35

INSTITUTO

TECNOLÓGICO DE
CIUDAD MADERO

Algoritmos Y Lenguaje De
Programación
Antecedentes y algoritmos.
Integrante:
Ubaldo Guzmán López 20071321
INDICE
Unidad No. 4
4. Estructuras de Control
4.1. Asignación.
4.2. Selección (if, switch, case).
4.3. Iteración (do, while, for).
4.4. Combinadas y anidadas.
4. Estructuras de
control
Estructuras de control

→ En programación, las estructuras de control permiten modificar el flujo de


ejecución de las instrucciones de un programa.

→ Con las estructuras de control se puede:

• De acuerdo con una condición, ejecutar un grupo u otro de sentencias (If-


Then-Else)

• De acuerdo con el valor de una variable, ejecutar un grupo u otro de


sentencias (Select-Case)

• Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-


While)

• Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-


Until)

• Ejecutar un grupo de sentencias un número determinado de veces (For-Next)


→ Todos los lenguajes de
programación modernos
tienen estructuras de
control similares.
Básicamente lo que varía
entre las estructuras de
control de los diferentes
lenguajes es su sintaxis;
cada lenguaje tiene una
sintaxis propia para
expresar la estructura.
if:  es un estamento que se utiliza para probar si una
determinada condición se ha alcanzado, como por ejemplo
averiguar si un valor analógico está por encima de un cierto
número, y ejecutar una serie de declaraciones (operaciones)
que se escriben dentro de llaves, si es verdad. Si es falso (la
condición no se cumple) el programa salta y no ejecuta las
operaciones que están dentro de las llaves.

Estructuras
de decisión if… else:  viene a ser un estructura que se ejecuta en respuesta
a la idea “si esto no se cumple haz esto otro”. Por ejemplo, si se
desea probar una entrada digital, y hacer una cosa si la
entrada fue alto o hacer otra cosa si la entrada es baja.

else: puede ir precedido de otra condición de manera que se


pueden establecer varias estructuras condicionales de tipo
unas dentro de las otras (anidamiento) de forma que sean
mutuamente excluyentes pudiéndose ejecutar a la vez. Es
incluso posible tener un número ilimitado de estos
condicionales. Recuerde sin embargo que sólo un conjunto de
declaraciones se llevará a cabo dependiendo de la condición
probada.
switch..case: Al igual que if, switch..case controla el flujo del programa
especificando en el programa que código se debe ejecutar en función de
unas variables. En este caso en la instrucción switch se compara el valor de
una variable sobre los valores especificados en la instrucción case.

break es la palabra usada para salir del switch. Si no hay break en cada
case, se ejecutará la siguiente instrucción case hasta que encuentre un
break o alcance el final de la instrucción.

default es la palabra que se usa para ejecutar el bloque en caso que


ninguna de las condiciones se cumpla.
Estructuras de repetición

for: La declaración for se usa para repetir un bloque


de sentencias encerradas entre llaves un número
determinado de veces. Cada vez que se ejecutan las
instrucciones del bucle se vuelve a testear la Cualquiera de los tres elementos de cabecera puede
condición. La declaración for tiene tres partes omitirse, aunque el punto y coma es obligatorio.
separadas por (;). La inicialización de la variable También las declaraciones de inicialización,
local se produce una sola vez y la condición se testea condición y expresión puede ser cualquier
cada vez que se termina la ejecución de las estamento válido en lenguaje C sin relación con las
instrucciones dentro del bucle. Si la condición sigue variables declaradas.
cumpliéndose, las instrucciones del bucle se
vuelven a ejecutar. Cuando la condición no se
cumple, el bucle termina.
while: Un bucle del tipo while es un bucle de ejecución continua mientras se cumpla la expresión colocada entre paréntesis en la
cabecera del bucle. La variable de prueba tendrá que cambiar para salir del bucle. La situación podrá cambiar a expensas de una
expresión dentro el código del bucle o también por el cambio de un valor en una entrada de un sensor.

do..while: El bucle do while funciona de la misma manera que el bucle while, con la salvedad de que la condición se prueba al
final del bucle, por lo que el bucle siempre se ejecutará al menos una vez.

goto: transfiere el flujo de programa a un punto del programa que está etiquetado .

break: se usa en las instrucciones do, for, while para salir del bucle de una forma diferente a la indicada en el bucle.

continue: se usa en las instrucciones do, for, while para saltar el resto de las instrucciones que están entre llaves y se vaya a la
siguiente ejecución del bucle comprobando la expresión condicional.
4.1. Asignación.
Asignación.

→ como su nombre lo indica, se encargan de asignarle a una variable el


resultado de una expresión matemática o el valor de otra variable. Se
utilizan en forma de expresiones de asignación en los que se asigna
en el valor de una expresión a un identificador. El operador de
asignación más utilizado es “=” y su formato es: identificador =
expresión; Donde el identificador representa por lo general una
variable y una constante, una variable o una expresión más
compleja.

→ Si los dos operandos de la expresión de asignación son de tipo de


datos diferentes el valor de la expresión de la derecha se convertirá
automáticamente al tipo de identificador de la izquierda de ésta
forma la expresión de asignación será del mismo tipo de datos.
EJEMPLO: UN VALOR EN COMA UN VALOR DE DOBLE EN LENGUAJE C, IDENTIFICADOR1 =
FLOTANTE PUEDE SER PRECISIÓN PUEDE SER ESTÁN PERMITIDAS IDENTIFICADOR2 =
TRUNCADO, SE ASIGNA REDONDEADO SI SE LAS ASIGNACIONES IDENTIFICADOR3.....=
A UN IDENTIFICADOR ASIGNA A UN IDENTIFICADORN=EXPR
ENTERO. IDENTIFICADOR
MÚLTIPLES, ASÍ: ESIÓN
DE COMA FLOTANTE.
4.2. Selección (if,
switch, case).
• La especificación formal de algoritmos tiene realmente utilidad cuando el
algoritmo requiere una descripción más complicada que una lista de sencilla de
Selección (if, instrucciones. Este es el caso cuando existe un número de posibles alternativas

switch, case). resultantes de la evaluación de una determinada condición.  Las estructuras


selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan
denominar también estructuras de decisión o alternativas. En las estructuras
selectivas se evalúan una condición y en función del resultado de la misma se
realiza una opción u otra. Las condiciones se especifican usando expresiones
lógicas. La representación de una estructura selectiva se hace con palabras en
pseudocódigo (if, then, elseo bien en español si, entonces, si_no), con una figura
geométrica en forma de rombo o bien conun triangulo en el interior de una caja
rectangular . las estructuras selectivas o alternativas pueden ser:

• Simples 

• Dobles

• Múltiples
→ La estructura simple es si (if) con dos formatos: Formato Pascal, si-entonces (if-then) y en formato C, si(if) a
estructura selectiva doble es igual que la estructura simple si al cual se le añade la cláusula si-no (else) a estructura
selectiva múltiples según-sea(switch en lenguaje C, case en pascal).

Estructura condicional: if y else


Es usada para ejecutar una instrucción o bloque de instrucciones solo si una condición es cumplida. Su forma es:

if (condición) extracto

donde la condición es la expresión que será evaluada. Si esta condición es true (verdadera), el extracto es ejecutado. Si
esta es falsa (false), el extracto es ignorado (no ejecutado) y el programa continua en la siguiente instrucción después de
la estructura condicional.
→ por ejemplo, el siguiente fragmento de código imprime x es 100 solo si el valor guardado en la variable x es en verdad 100:
if (x == 100)
→ cout << "x es 100";
→ Si queremos más de una instrucción para ser ejecutada en caso de que la condición sea verdadera podemos especificar un bloque de
instrucciones usando llaves { }:
if (x == 100)
{
cout << "x es ";
cout << x;
}
Podemos adicionalmente especificar que queremos que pase si la condición no es cumplida mediante el uso de la palabra reservada else.
su forma usada en conjunción con if es:
if (condición) extracto1 else extracto2
Bicondicional
→ La ejecución de la acción de esta secuencia depende del valor de esta. La acción de diferente en cada valor. Se utiliza la
estructura if (condicion) else en este tipo de secuencia.
La instrucci.on selectiva doble si entonces / sino permite que el lujo del diagrama se bifurque por dos ramas diferentes
dependiendo del cumplimiento de una condicion P.

if (P)
Instrucciones1;
else
Instrucciones2;
o tambien
if (P) f
Instrucciones1;
else f
Instrucciones2; 
Condición múltiple

Depende del valor de una expresión la acción que se if (Condicion1) f


ejecutara, pero en esta secuencia se decidirá entre if (Condicion2) f
diferentes acciones. Se utiliza la estructura switch Operacion21;
(expresion) en esta secuencia. f
Son estructuras selectivas que contienen a otras else f
estructuras selectivas Operacion22;
if (Condicion1){ }
if (Condicion2){ }
Operacion21;
{
else{
Operacion22;
o tambi.en;
SWITCH-CASE
→ La sentencia múltiple switch ( ) está formada por una serie de etiquetas case que solamente cumplen con una condición determinada y un caso opcional default en el que están
contemplados todos los valores que no se encuentran en los case.
La forma general de las sentencias switch ( ) es:
switch (expresion)
→ case constante1:
→ sentencia1;
→ break;
→ case constante2:
→ sentencia2;
→ break;
→ case constante_n:
→ sentencia_n;
→ break;
→ default:
→ sentencias;
→ break;
En esta sentencias el case solamente evalúa una expresión y no mas aunque puede llevar n numero de case, pero son un gran numero se recomienda usar ciclos. Estas
expresiones solo puede ser de tipo entero y de un solo carácter, al igual las constantes que se colocan.
Si el valor de la expresión es igual a alguna de las constantes, se ejecutará el bloque de instrucciones hasta encontrar la instrucción break, de lo contrario pasa al siguiente
bloque y si no cumple ninguno de los bloques entonces se ejecuta las sentencias del default.
Ejemplo
Switch (confiabilidad_del_producto) {
→ Case A:
→ Cout<<”perfecta”;
→ Break;
→ Case B:
→ Cout<<”Muy Buena”;
→ Break;
→ Case C:
→ Cout<<”Regular”;
→ Default:
→ Cout<<”Fuera de rango”;
→ Break ;
4.3. Iteración (do,
while, for).
Iteración → En este capítulo se revisan los

(do, while, mecanismos de C para repetir un


conjunto de instrucciones hasta que se
for). cumple cierta condición.
La sentencia for tiene el siguiente formato:
La sentencia for for ( expresion1; expresion2; expresion3)sentencia;
o { bloque de sentencias }
En donde expresion1 se usa para realizar la inicialización de
variables, usando una o varias sentencias, si se usan varias
sentencias deberá usarse el operador , para separarlas. Por lo
general, establece el valor de la variable de control del
ciclo. expresion2 se usa para la condición de terminación del ciclo
y expresion3 es el modificador a la variable de control del ciclo cada
vez que la computadora lo repite, pero también puede ser más que
un incremento.
Por ejemplo:
int X; main() { for( X=3; X>0; X--)
{printf("X=%d\n",X); } }
genera la siguiente salida a pantalla ...
X=3 X=2 X=1
Todos las siguientes sentencias for son válidas en C. Las aplicaciones prácticas
de tales sentencias no son importantes aquí, ya que tan sólo se intenta ilustrar
alguanas características que pueden ser de utilidad:

for ( x=0; ( (x>3) && (x<9) ); x++ ) for ( x=0, y=4; ( (x>3) && (x<9) ); x++, y+=2) for ( x=0, y=4, z=4000; z;
z/=10)

En el segundo ejemplo se muestra la forma como múltiples expresiones pueden


aparecer, siempre y cuando estén separadas por una coma ,
En el tercer ejemplo, el ciclo continuará iterando hasta que z se convierta en      .
→ La sentencia while es otro ciclo o bucle disponible en C. Su formato es:
while ( expresion) sentencia
donde sentencia puede ser una sentencia vacía, una sentencia única o un bloque de
sentencias que se repetirán. Cuando el flujo del programa llega a esta instrucción, primero se
revisa si la condición es verdad para ejecutar la(s) sentencia(s), y después el ciclo while se
repetirá mientras la condición sea verdadera. Cuando llega a ser falsa, el control del programa
pasa a la línea que sigue al ciclo.
En el siguiente ejemplo se muetra una rutina de entrada desde el teclado, la cual se cicla
mientras no se pulse A:

La sentencia while → main() { char carac; carac = '\0'; while( carac != 'A') carac = getchar(); }

Antes de entrar al ciclo se inicializa la variable carac a nulo. Después pasa a la


sentencia while donde se comprueba si carac no es igual a 'A', como sea verdad entonces se
ejecuta la sentencia del bucle (carac = getchar();). La función getchar() lee el siguiente carácter
del flujo estándar (teclado) y lo devuelve, que en nuestro ejemplo es el caracter que haya sido
tecleado. Una vez que se ha pulsado una tecla, se asigna a carac y se comprueba la condición
nuevamente. Después de pulsar A, la condición llega a ser falsa porque carac es igual a A,
con lo que el ciclo termina.
De lo anterior, se tiene que tanto el ciclo for, como el ciclo while comprueban la condición en lo
alto del ciclo, por lo que el código dentro del ciclo no se ejecuta siempre.
A continuación mostramos otro ejemplo:
main() { int x=3; while( x>0 ) { printf("x = %d\n", x); x--; } }
que genera la siguiente salida en pantalla:
x=3x=2x=1
Como se observa, dentro del ciclo tenemos más de una sentencia, por lo que
se requiere usar la llave abierta y la llave cerrada { ... } para que el grupo de
sentencias sean tratadas como una unidad.
Como el ciclo while pueda aceptar también expresiones, y no solamente
condiciones lo siguiente es válido:
while ( x-- ); while ( x = x + 1 ); while ( x += 5 );
Si se usan este tipo de expresiones, solamente cuando el resultado de x--,
x=x+1 o x+=5 sea cero, la condición fallará y se podrá salir del ciclo.
De acuerdo a lo anterior, podemos realizar una operación completa dentro de
la expresión. Por ejemplo:
main() { char carac; carac = '\0'; while ( (carac = getchar()) != 'A' ) putchar(carac); }
En este ejemplo se usan las funciones de la biblioteca estándar getchar() -- lee
un caracter del teclado y putchar() escribe un caracter dado en pantalla. El
ciclo while procederá a leer del teclado y lo msotrara hasta el carácter A sea
leído.
La sentencia do-while
Al contrario de los ciclos for y while que comprueban la condición en lo alto del bucle, el bucle do ... while la
examina en la parte baja del mismo. Esta característica provoca que un ciclo do ... while siempre se ejecute al
menos una vez. La forma general del ciclo es:
do {sentencia;} while (condición);
Aunque no son necesarias las llaves cuando sólo está presente una sentencia, se usan normalmente por
legibilidad y para evitar confusión (respecto al lector, y no del compilador) con la sentencia while.
En el siguiente programa se usa un ciclo do ... while para leer números desde el teclado hasta que uno de ellos es
menor que o igual a 100:
main() { int num; do { scanf("%d", &num); } while ( num>100 );
 do ... while es una rutina de selección en un menú, ya que siempre se requiere que se ejecute al menos una vez.
main() { int opc; printf("1. Derivadas\n"); printf("2. Limites\n"); printf("3. Integrales\n"); do { printf(" Teclear una opcion: ");
scanf("%d", &opc); switch(opc) { case 1: printf("\tOpcion 1 seleccionada\n\n"); break; case 2: printf("\tOpcion 2
seleccionada\n\n"); break; case 3: printf("\tOpcion 3 seleccionada\n\n"); break; default: printf("\tOpcion no disponible\n\n");
break; } } while( opc != 1 && opc != 2 && opc != 3); }
Se muestra un ejemplo donde se reescribe usando do ... while uno de los ejemplos ya mostrados.
main() { int x=3; do { printf("x = %d\n", x--); } while( x>0 ) ; }
4.4. Combinadas
y anidadas.
Combinadas y anidadas.
→ Las estructuras anidadas tienen más sentido si tomamos como ejemplo, que para inscribir a una
persona en ese centro educativo, además de pedir los datos que necesitaríamos para cualquier compra en
el súper mercado, también necesitamos la fecha de nacimiento de la persona. Con esto, es necesario
ingresar otro miembro a la estructura. ¿Cómo lo haríamos? ¿Crearíamos dos tipos de estructuras? Por
ejemplo:
→ Pudiésemos reescribir la estructura para que sea más fácil trabajar con ella, además de anidarla.
→ Ahora hemos anidado la estructura, es decir, hemos introducido un tipo de dato estructura en los
miembros de otra estructura. Ahora la estructura Registro contiene todos los campos para leer el nombre,
apellido, edad, número de teléfono, número de identificación y la fecha de nacimiento de cualquier persona
que se quiera registrar en el centro educativo.

Las ventajas que trae esto es que sólo hemos de necesitar declarar la estructura una sola vez. Y si
otra estructura necesita algunos campos parecidos a la ya declarada, entonces se agrega como miembro de la
nueva estructura. Faltaría ver cómo acceder a esos miembros de la estructura anidada. Pero a simples
definiciones, se hace igual que como hemos estado haciendo hasta ahora :

1. Por medio del operador punto (.).

2. Por medio del operador puntero (->) en caso de que se trate de un puntero a una estructura.
EJEMPLO DE UNA ESTRUCTURA ANIDADA EN C++
EJEMPLO DE UNA ESTRUCTURA ANIDADA EN C++
EJEMPLO DE UNA ESTRUCTURA ANIDADA EN C++

También podría gustarte