Está en la página 1de 16

ESTRUCTURA DE CONTROL

En lenguajes de programacin, las estructuras de control permiten modificar el flujo de ejecucin de las instrucciones de un programa. Con las estructuras de control se puede:

de acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case) Ejecutar un grupo de sentencias mientras exista una condicin (Do-While) Ejecutar un grupo de sentencias hasta que exista una condicin (Do-Until) Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next) Etc

Todas las estructuras de control tienen un nico punto de entrada y un nico punto de salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programacin se rija por los principios de la programacin estructurada. Los lenguajes de programacin modernos tienen estructuras de control similares. Bsicamente lo que vara entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura. Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.
DEFINICIONES DE LA ESTRUCTURA DE CONTROL En programacin, una estructura de control permite controlar el flujo de la ejecucin de instrucciones. Con estas estructuras, el programador puede determinar el orden en que se ejecutarn las instrucciones que estn dentro de estas estructuras. Originalmente las lneas de cdigo de programacin (instrucciones) eran ejecutadas secuencialmente, o sea, una despus de la otra. Para alterar el orden de ejecucin se utilizaba el enunciado goto, llamado "transferencia de control". Dos investigadores, Bohm y Jacopini, demostraron que el goto traa grandes problemas en el desarrollo de programas. Tambin demostraron que los programas podan ser escritos sin ningn enunciado goto utilizando tres estructuras de control: estructura de secuencia, estructura de seleccin, y estructura de repeticin.

DEFINICIN

Las sentencias de decisin o tambin llamadas de CONTROL DE FLUJO son estructuras de control que realizan una pregunta la cual retorna verdadero o falso (evala una condicin) y selecciona la siguiente instruccin a ejecutar dependiendo la respuesta o resultado.

= Sentencia if
La instruccin if es, por excelencia, la ms utilizada para construir estructuras de control de flujo. SINTAXIS Primera Forma Ahora bin, la sintaxis utilizada en la programacin de C++ es la siguiente:
if (condicion) { Set de instrucciones }

siendo "condicion" el lugar donde se pondr la condicin que se tiene que cumplir para que sea verdadera la sentencia y as proceder a realizar el "set de instrucciones" o cdigo contenido dentro de la sentencia. Segunda Forma Ahora veremos la misma sintaxis pero ahora le aadiremos la parte "Falsa" de la sentencia:
if (condicion) { PARTE VERDADERA } else { Parte FALSA }

La forma mostrada anteriormente muestra la union de la parte "VERDADERA" con la nueva secuencia la cual es la parte "FALSA" de la sentencia de decision "IF" en la cual esta compuesta por el:
else {

Set de instrucciones 2 }

//Parte FALSA

la palabra "else" o "De lo contrario" indica al lenguaje que de lo contrario al no ser verdadera o no se cumpla la parte verdadera entonces realizara el "set de instrucciones 2". EJEMPLOS DE SENTENCIAS IF... Ejemplo 1:
if(numero == 0) //La condicion indica que tiene que ser igual a Cero { cout<<"El Numero Ingresado es Igual a Cero"; }

Ejemplo 2:
if(numero > 0) // la condicion indica que tiene que ser mayor a Cero { cout<<"El Numero Ingresado es Mayor a Cero"; }

Ejemplo 3:
if(numero < 0) // la condicion indica que tiene que ser menor a Cero { cout<<"El Numero Ingresado es Menor a Cero"; }

Ahora uniremos todos estos ejemplos para formar un solo programa mediante la utilizacin de la sentencia "Else" e introduciremos el hecho de que se puede escribir en este espacio una sentencia if ya que podemos ingresar cualquier tipo de cdigo dentro de la sentencia escrita despus de un Else. Ejemplo 4:
if(numero == 0) //La condicion indica que tiene que ser igual a Cero { cout<<"El Numero Ingresado es Igual a Cero"; } else { if(numero > 0) // la condicion indica que tiene que ser mayor a Cero { cout<<"El Numero Ingresado es Mayor a Cero"; }

else { if(numero < 0) // la condicion indica que tiene que ser menor a Cero { } } } cout<<"El Numero Ingresado es Menor a Cero";

Sentencia switch
switch es otra de las instrucciones que permiten la construccin de estructuras de control. A diferencia de if, para controlar el flujo por medio de una sentencia switch se debe de combinar con el uso de las sentencias case y break. Notas: cualquier nmero de casos a evaluar por switch as como la sentencia default son opcionales. La sentencia switch es muy til en los casos de presentacin de menus. Sintaxis:
switch (condicin) { case primer_caso: bloque de instrucciones 1 break; case segundo_caso: bloque de instrucciones 2 break; case caso_n: bloque de instrucciones n break; } default: bloque de instrucciones por defecto

Ejemplo 1
switch (numero) { case 0: cout << "numero es cero"; }

Ejemplo 2
switch (opcion) { case 0: cout << "Su opcion es cero"; break; case 1: cout << "Su opcion es uno"; break;

case 2: cout << "Su opcion es dos"; }

Ejemplo 3
switch (opcion) { case 1: cout << "Su opcion es 1"; break; case 2: cout << "Su opcion es 2"; break; case 3: cout << "Su opcion es 3"; break; default: cout << "Elija una opcion entre 1 y 3"; }

Operador condicional ternario ?:


En C, existe el operador condicional ( ?: ) el cual es conocido por su estructura como ternario. El comportamiento de dicho operador es el mismo que una estructura if - then else del lenguaje BASIC (y de la funcin IIf de Visual Basic). El operador condicional ?: es til para evaluar situaciones tales como: Si se cumple tal condicin entonces haz esto, de lo contrario haz esto otro. Sintaxis:
( (condicion) ? proceso1 : proceso2 )

En donde, condicion es la expresin que se evalua, proceso1 es la tarea a realizar en el caso de que la evaluacin resulte verdadera, y proceso2 es la tarea a realizar en el caso de que la evaluacin resulte falsa. Ejemplo 1
int edad; cout << "Cual es tu edad: "; cin >> edad; cout << ( (edad < 18) ? "Eres joven aun" : "Ya tienes la mayora de edad" );

El ejemplo anterior podra escribirse de la siguiente manera:


int edad; cout << "Cual es tu edad: "; cin >> edad; if (edad < 18) cout << "Eres joven aun"; else cout << "Ya tienes la mayora de edad";

Ejemplo 2

Vamos a suponer que deseamos escribir una funcin que opere sobre dos valores numricos y que la misma ha de regresar 1 (true) en caso de que el primer valor pasado sea igual al segundo valor; en caso contrario la funcin debe retornar 0 (false).
int es_igual( int a, int b) { return ( (a == b) ? 1 : 0 ) }

Sentencias de iteracin
DEFINICIN Las Sentencias de Iteracin o Ciclos son estructuras de control que repiten la ejecucin de un grupo de instrucciones. Bsicamente, una sentencia de iteracin es una estructura de control condicional, ya que dentro de la misma se repite la ejecucin de una o ms instrucciones mientras que una a condicin especifica se cumpla. Muchas veces tenemos que repetir un nmero definido o indefinido de veces un grupo de instrucciones por lo que en estos casos utilizamos este tipo de sentencias. en C++ los ciclos o bucles se construyen por medio de las sentencias for, while y do - while. La sentencia for es til para los casos en donde se conoce de antemano el nmero de veces que una o ms sentencias han de repetirse. Por otro lado, la sentencia while es til en aquellos casos en donde no se conoce de antemano el nmero de veces que una o ms sentencias se tienen que repetir.

Sentencias For
for(contador; final; incremento) { Codigo a Repetir; }

donde: 1. contador es una variable numrica 2. final es la condicin que se evalua para finalizar el ciclo (puede ser independiente del contador) 3. incremento es el valor que se suma o resta al contador Hay que tener en cuenta que el "for" evalua la condicin de finalizacin igual que el while, es decir, mientras esta se cumpla continuaran las repeticiones. Ejemplo 1:
for(int i=1; i<=10; i++) { cout<<"Hola Mundo"; }

Esto indica que el contador "i" inicia desde 1 y continuar iterando mientras i sea menor o igual a 10 ( en este caso llegar hasta 10) e "i++" realiza la sumatoria por unidad lo que hace que el for y el contador se sumen. repitiendo 10 veces "HOLA MUNDO" en pantalla. Ejemplo 2:
for(int i=10; i>=0; i--) { cout<<"Hola Mundo"; }

Este ejemplo hace lo mismo que el primero, salvo que el contador se inicializa a 10 en lugar de 1; y por ello cambia la condicin que se evalua as como que el contador se decrementa en lugar de ser incrementado. La condicin tambin puede ser independiente del contador: Ejemplo 3:
int j = 20; for(int i=0; j>0; i++){ cout<<"Hola"<<i<<" - "<<j<<endl; j--; }

En este ejemplo las iteraciones continuaran mientras j sea mayor que 0, sin tener en cuenta el valor que pueda tener i.

Sentencia while
while(condicion) { cdigo a Repetir }

donde: 1. condicion es la expresin a evaluar Ejemplo 1:


int contador = 0; while(contador<=10) { contador=contador+1; cout<<"Hola Mundo"; }

El contador Indica que hasta que este llegue a el total de 10 entonces se detendr y ya no se realizar el cdigo contenido dentro de la sentencia while, de lo contrario mientras el "contador" sea menor a 10 entonces el cdigo contenido se ejecutar desplegando hasta 10 veces "Hola Mundo" en pantalla.

Sentencia do - while
La sentencia do es usada generalmente en cooperacin con while para garantizar que una o ms instrucciones se ejecuten al menos una vez. Por ejemplo, en la siguiente construccin no se ejecuta nada dentro del ciclo while, el hecho es que el contador inicialmente vale cero y la condicin para que se ejecute lo que est dentro del while es "mientras el contador sea mayor que diez". Es evidente que a la primera evaluacin hecha por while la condicin deja de cumplirse.
int contador = 0; while(contador > 10) { contador ++; cout<<"Hola Mundo"; }

Al modificar el segmento de cdigo anterior usando do tenemos:


int contador = 0; do {

} while(contador > 10);

contador ++; cout<<"Hola Mundo";

Observe cmo en el caso de do la condicin es evaluada al final en lugar de al principio del bloque de instrucciones y, por lo tanto, el cdigo que le sigue al do se ejecuta al menos la primera vez.

Sentencias break y continue


En la seccin (Sentencia switch) vimos que la sentencia break es utilizada con el propsito de forzar un salto dentro del bloque switch hacia el final del mismo. En esta seccin volveremos a ver el uso de break, salvo que esta ocasin la usaremos junto con las sentecias for y la sentencia while. Adems, veremos el uso de la sentencia continue.

break
La sentencia break se usa para forzar un salto hacia el final de un ciclo controlado por for o por while.

Ejemplo: En el siguiente fragmento de cdigo la sentencia break cierra el ciclo for cuando la variable ( i ) es igual a 5. La salida para el mismo ser:
for (int i=0; i<10; i++) { if (i == 5) break; cout << i << " "; }

01234

continue
La sentencia continue se usa para ignorar una iteracin dentro de un ciclo controlado por for o por while. Ejemplo: En el siguiente fragmento de cdigo la sentencia continue ignora la iteracin cuando la variable ( i ) es igual a 5. La salida para el mismo ser: 012346789
for (int i=0; i<10; i++) { if (i == 5) continue; cout << i << " "; }

Uso de break y continue junto con while Los dos ejemplos anteriores se presentan en seguida, salvo que en lugar de for se hace uso de while. Nota: no deje de observar que la construccin del ciclo while para el caso de la sentencia continue es diferente, esto para garantizar que el ciclo no vaya a caer en una iteracin infinita. break
int i = 0; while (i<10) { if (i == 5) break; cout << i << " "; i++; }

continue
int i = -1; while (i<10) {

i++; if (i == 5) continue; cout << i << " "; }

POLIMORFISMO: describe mltiples y posibles estados de una nica propiedad El polimorfismo se refiere a la posibilidad de definir clases diferentes que tienen mtodos o atributos denominados de forma idntica, pero que se comportan de manera distinta. Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la superclase Animal. La clase Animal tiene el mtodo abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta). Como se mencion anteriormente, el concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. As nacen los conceptos de funciones polimrficas y tipos polimrficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimrficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no est especificado. Una interfaz es una plantilla que define mtodos acerca de lo que puede o no hacer una clase, se puede definir meramente como una clase abstracta al 100%, por ejemplo, si definimos la interfaz Animal, podremos deducir que todos los animales pueden comer, respirar, etc. pero puede ser que cada uno lo haga de manera diferente, por ello, en la interfaz definimos el comportamiento que todos los animales pueden tener pero no el cmo hacen las cosas ya que cada animal lo realiza de manera diferente. En cdigo se traduce as: La Jerarqua es una propiedad que permite la ordenacin de las abstracciones. Las dos jerarquas ms importantes de un sistema complejo son: estructura de clases Las jerarquas de generalizacin/especializacin se conocen como herencia. Bsicamente, la herencia define una relacin entre clases, en donde una clase comparte la estructura o comportamiento definido en una o ms clases (herencia simple y herencia mltiple, respectivamente). La agregacin es el concepto que permite el agrupamiento fsico de estructuras relacionadas lgicamente. As, un camin se compone de ruedas, motor, sistema de transmisin y chasis; en consecuencia, camin es una agregacin, y ruedas, motor, transmisin y chasis son agregados de camin Algoritmos Combinando la utilizacin de templates y un estilo especfico para denotar tipos y variables, la STL ofrece una serie de funciones que representan operaciones comunes, y cuyo objetivo es "parametrizar" las operaciones en que estas funciones se ven involucradas de modo que su lectura, comprensin y mantenimiento, sean ms fciles de realizar.

Un ejemplo es la funcin copy, la cual simplemente copia variables desde un lugar a otro. Ms estrictamente, copia los contenidos cuyas ubicaciones estn delimitadas por dos iteradores, al espacio indicado por un tercer iterador

el polimorfismo adquiere su mxima expresin en la derivacin o extensin de clases, es decir, cuando se obtiene una clase a partir de una clase ya existente, mediante la propiedad de derivacin de clases o herencia. El polimorfismo requiere ligadura tarda o postergada (tambin llamada dinmica), y esto slo se puede producir en lenguajes de programacin orientados a objetos. Los lenguajes no orientados a objetos soportan ligadura temprana o anterior (tambin llamada esttica), esto significa que el compilador genera una llamada a un nombre especfico de funcin y el enlazador (linker) resuelve la llamada a la direccin absoluta del cdigo que se ha de ejecutar. En POO, el programa no puede determinar la direccin del cdigo hasta el momento de la ejecucin. Cuando se enva un mensaje a un objeto, el cdigo que se llama no se determina hasta el momento de la ejecucin. El compilador asegura que la funcin existe y realiza verificacin de tipos de los argumentos y del valor de retorno, pero no conoce el cdigo exacto a ejecutar. El polimorfismo, como su mismo nombre sugiere mltiples formas, se refiere a la posibilidad de acceder a un variado rango de funciones distintas a travs del mismo interfaz. O sea, que, en la prctica, un mismo identificador puede tener distintas formas (distintos cuerpos de funcin, distintos comportamientos) dependiendo, en general, del contexto en el que se halle inserto. El polimorfismo se puede establecer mediante la sobrecarga, sobre-escritura y la ligadura dinmica. Ligadura Representa una conexin entre una entidad y sus propiedades. Si la propiedad se limita a funciones, ligadura es la conexin entre la llamada a funcin y el cdigo que se ejecuta tras la llamada. Desde el punto de vista de atributos, la ligadura es el proceso de asociar un atributo a un nombre. Clasificacin de la ligadura Ligadura Esttica: Se produce antes de la ejecucin (durante la compilacin). Ligadura Dinmica: La ligadura dinmica ocurre en la ejecucin. Gracias a la ligadura dinmica, pueden invocarse operaciones en objetos obviando el tipo actual del stos hasta el momento de la ejecucin del cdigo, es decir que me perite definir elementos como un tipo e instanciarlos como un tipo heredado. Pero cual puede ser la utilidad de este concepto, para que me sirve obviar el tipo de un objeto para luego tomar esta decisin?. Gracias a que en java la definicin de los tipos de objetos se puede producir por atado posterior (late binding), no nos debe preocupar a que tipo de elemento le paso un mensaje

ya que el compilador tomara la decisin de que objeto ejecutar que mtodo de acuerdo a la forma de crear la instancia. Clases interfaz El concepto de Clase Interfaz lleva un paso ms adelante la idea de las clases abstractas. En Java una interfaz es una clase abstracta pura, es dcir una clase donde todos los mtodos son abstractos (no se implementa ninguno). Permite al diseador de clases establecer la forma de una clase (nombres de mtodos, listas de argumentos y tipos de retorno, pero no bloques de cdigo). Una interfaz puede tambin contener datos miembro, pero estos son siempre static y final. Una interface sirve para establecer un 'protocolo' entre clases. Para crear una clase interfaz, se utiliza la palabra clave interface en lugar de class. La interface puede definirse public o sin modificador de acceso, y tiene el mismo significado que para las clases. Todos los mtodos que declara una interface son siempre public. Para indicar que una clase implementa los mtodos de una interfaz se utiliza la palabra clave implements. El compilador se encargar de verificar que la clase efectivamente declare e implemente todos los mtodos de la interface. Una clase puede implementar ms de una interfaz. Es decir que sta es una clase completamente sin implementacin, ya que no encapsula datos, solo define cuales son los mtodos que han de implementar los objetos de aquellas clases que implementan la interfas.

Jerarqua de Herencia La herencia es el mecanismo fundamental de relacin entre clases en la orientacin a objetos. Relaciona las clases de manera jerrquica; una clase padre o superclase sobre otras clases hijas o subclases. Las jerarquas de herencia son ms fciles de implementar que de disear, por lo que es arriesgado comenzar a codificar antes de identificar claramente las necesidades. La correccin de errores de diseo en una jerarqua de clases tras la implementacin puede requerir cambios que deshabilitan las aplicaciones existentes. En esta seccin se explican consideraciones del diseo de jerarqua de herencia y se proporciona informacin que ayuda a evitar estos errores. Por lo tanto se describe la forma de disear jerarquas de clases de modo que otros programadores pueden actualizarlas o ampliarlas. La Jerarqua de herencia es una propiedad que permite la ordenacin de las abstracciones. Las dos jerarquas ms importantes de un sistema complejo son: estructura de clases (jerarqua es-un (is-a): generalizacin/especializacin) y estructura de objetos (jerarqua parte-de (part-of): agregacin).

[justify]Conversiones Herencia Con respecto a las conversiones herencia se deben considerar los siguientes aspectos: Un objeto de la clase derivada se convierte en forma implcita en un objeto de la clase base pblica. Una referencia a una clase derivada se convierte implcitamente en una referencia a la clase base pblica. Un puntero a la clase derivada se convertir implcitamente en un puntero a la clase base. Un puntero a un miembro de una clase base se convertir en forma implcita en un puntero a miembro de la clase derivada. Argumentando un poco lo antes expuesto se hace relevante considerar que la conversin implcita de los objetos de la clase derivada n A pesar de que un objeto de la clase derivada tambin es un objeto de la clase base, el tipo de la clase base y el tipo de la clase derivada son distintos. Bajo la herencia public, los objetos de la clase derivada se pueden tratar como objetos de la clase base, ya que la clase derivada tiene miembros que corresponden a cada uno de los miembros de la clase base. La asignacin en el otro sentido no est permitida. As mismo con la herencia public, siempre es vlido asignarle a un puntero de la clase base un puntero de la clase derivada. El puntero de la clase base slo ve la parte de la clase base del objeto de la clase derivada. El compilador realiza una conversin implcita del puntero de la clase al puntero de la clase derivada. La asignacin inversa no se hace implcitamente.

En este aspecto es importante resaltar que solo pueden darse conversiones entre clases relacionadas por herencia.

Extensin de archivo
Saltar a: navegacin, bsqueda En informtica, una extensin de archivo o extensin de fichero, es una cadena de caracteres anexada al nombre de un archivo, usualmente precedida por un punto. Su funcin principal es diferenciar el contenido del archivo de modo que el sistema operativo disponga el procedimiento necesario para ejecutarlo o interpretarlo, sin embargo, la extensin es solamente parte del nombre del archivo y no representa ningn tipo de obligacin respecto a su contenido. Algunos sistemas operativos, especialmente los herederos de DOS como Windows, utilizan las extensiones de archivo para reconocer su formato, incluyendo el de archivos ejecutables. Otros sistemas operativos, como los basados en Unix, utilizan las extensiones de archivo por simple convencin, no necesariamente utilizndolas para determinar su tipo. Siendo las extensiones de archivo legado del sistema DOS, muchas de sus actuales caractersticas fueron heredadas por limitaciones en dicho sistema. Los antiguos sistemas DOS limitaban la cantidad de caracteres de la extensin de archivo a tres, por lo que muchas extensiones convencionales poseen esa cantidad de caracteres. Adems, los nombres de archivo en sistemas DOS son insensibles a las maysculas y minsculas, por lo que la mayora de las extensiones de archivo pueden ser escritos indiferentemente en minsculas como en maysculas o una combinacin de ambas. Un mismo nombre bsico puede, por la extensin, contener archivos de distinto propsito. Como en este ejemplo de DOS: En todos estos casos las extensiones diferencian los nombres de los archivos a la vez que los identifican ante las aplicaciones que pueden manejarlos. Una Matriz O Vector: (llamados en ingls arrays) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lgico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensin, la dimensin principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices

multidimensionales, aunque las ms fciles de imaginar son los de una, dos y tres dimensiones. Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sera ms adecuado utilizar una lista, ya que esta estructura puede cambiar de tamao fcilmente durante la ejecucin de un programa.

Arreglos y vectores
Los Arreglos se utilizan para almacenar un conjunto de variables, que sean del mismo tipo de dato, y todas estas bajo un mismo nombre. Por ejemplo imaginemos que tenemos 20 variables de tipo String que almacenan nombres (nombre1, nombre2, etc..). si yo ahora quisiera pasar todas estas cadenas a minsculas tendra que utilizar la funcin Lcase con cada variable: nombre1 = Lcase(nombre1), nombre2 = Lcase(nombre2), etc.. En cambio si utilizara un arreglo solucionara mi problema solo a esto
Dim nombres(30) As String For x = 0 To 30 nombres(x) = LCase(nombres(x)) Next

Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces para cada variable, hemos utilizado un arreglo llamado nombres con un nmero de ndice 30 , es decir que almacena 30 datos de tipo String

Vectores dinmicos
Hasta ahora habamos visto solo vectores o arreglos de tamao fijo, pero qu pasa cuando no sabemos el tamao o el largo de un vector y queremos que sea variable ?. Visual basic posee una sentencia o funcin que nos permite cambiar el largo de un vector en tiempo de ejecucin, dndonos as mas flexibilidad, y de esta manera no desperdiciar memoria y recursos de la pc creando vectores mas largos de lo que realmente necesitamos.

http://www.desarrolloweb.com/articulos/expresiones-instruccionprogramacion.html

También podría gustarte