home

Programación Orientada a Objetos (POO)
La programación orientada a objetos es un técnica utilizada por los programadores para adaptar el trabajo de programar a la Psicología y Filosofía humana. Es una forma humana de programar y plasmar en programas de computadora objetos de la vida real, por ejemplo puedo modelar en un programa de computadora un mamífero como un gato, suena algo complicado pero más adelante veremos que no es así. En la realidad podemos considerar a un objeto como todo aquello que ocupa un espacio, tiene volumen y además podemos percibirlo por nuestros sentidos, ya sea animado o inanimado. Un objeto puede ser una casa, un animal, una silla, etc. Para hacer un programa orientado a objetos debemos primero identificar que objetos vamos a necesitar para resolver el problema que estemos tratando, para hacer esto nos guiaremos en como un objeto es en la vida real. Una vez que hagamos este análisis estaremos listos crear primero las clases y luego los objetos en nuestro programa. Ahora entrando en más detalles de las características de la Programación Orientada a Objetos, esta encapsula datos (atributos) y funciones (comportamientos) en objetos, los datos y funciones están íntimamente relacionados entre sí. Los objetos tienen la propiedad de ocultamiento de información, esto significa que si bien saben como comunicarse entre si a través de interfaces bien definidas, normalmente no se permite que un objeto sepa como están implementados otros objetos.

Por que utilizar Programación Orientada a Objetos
Porque podemos hacer que el trabajo de programar sea más sencillo, nuestros programas será serán más claros y ordenados. Por ejemplo si quiero almacenar la edad de una persona, tengo que hacerlo en una variable de tipo entero (int), si quiero almacenar su nombre tendré que utilizar una cadena, y si quiero otros datos de la persona tendré que seguir creando variables. Porque no crear una variable de tipo **persona** directamente que de una sola vez contenga todo lo que quiero saber de una persona, como su nombre, edad, sexo, etc. Esto es posible, precisamente es lo que nos permite hacer la programación orientada a objetos, podemos crear una variable **persona** que contenga muchos datos de una sola vez, pero no le llamaremos variable sino **clase**, podemos crear clases en un programa y después las podemos utilizar.

Concepto de clase
Una clase es una agrupación de **datos** (atributos),generalmente contenidos en variables, y de **funciones**, (comportamientos) que operan sobre esos datos.

Definición de una clase
Sintaxis **class nombreClase**

{

**datos**

 **funciones**

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">}; <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">nombreClase Es cualquier nombre que elija para darle a mi clase, menos palabras reservadas del lenguaje. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">datos Son los datos o atributos que tendrá mi clase, como son generalmente variables, se debe definir las variables en esta parte. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">funciones Se debe escribir la definición de las funciones <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Una clase se la crea inspirada en un objeto de la vida real, por ejemplo quiero modelar un gato en un programa entonces tengo que escribir una clase que se llame gato. Como sigue: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { }; || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Al anterior ejemplo todavía no contiene ningún atributo ni tampoco ninguna función pero la iremos refinando poco a poco. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">También podemos crear clases que en la realidad no se consideren como un objeto por ejemplo una clase hora.
 * class gato

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Abstracción
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Abstracción significa considerar aisladamente las cualidades de un objeto, consiste en rescatar las características más importantes de algo y representarlo de una manera más simplificada. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">En el ejemplo de la construcción de nuestra clase gato se debe de abstraer las cualidades más importantes de un gato y de esta forma podremos representarlo en un programa de computadora. <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;">
 * class gato

{

char color[20]; //atributo

int vidas; //atributo

void miau //comportamiento

{

cout<<”Miiaaauu!!!“;

}

}; || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Ahora la clase gato esta más completa porque se han identificado las cualidades más importante de un gato, en este caso hemos dicho que un gato tiene un color y tiene vidas como atributos y además de ello dice miau que es una forma de comportase, esta es un forma muy simplificada de describir a un gato pero nos basta para crear la clase gato. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">A los datos dentro de una clase se les llama variables miembro y a las funciones se les llama funciones miembro.

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Encapsulación
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">La encapsulación es una característica de la POO que trata de mantener unidos los datos y los comportamientos de una entidad u objeto. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Una clase encapsula atributos y funciones lo que hace posible el ocultamiento de información, que quiere decir que cuando yo quiera usar una determinada clase, creando objetos de ella, no necesito conocer los detalles de su implementación. Si nuestra clase gato la utilizaría un extraño cuando utiliza la función miau sólo tiene que saber que con esa función el gato maulla pero no como es que esta hecha la función.

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Control de Acceso a los miembros
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Entendemos por miembros a todos los atributos y funciones, para controlar el acceso a los miembros de una clase se utilizan tres tipos de controladores: **public** (público),**private** (privado) y **protected** (protegido). <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Con estos controladores le damos ciertas restricciones de acceso a los miembros de nuestra clase. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Todos los miembros, tanto atributos como funciones, que sean declarados como privados sólo pueden ser accedidos desde funciones pertenecientes a la clase. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Los miembros que sean declarados públicos pueden ser accedidos desde cualquier parte del programa. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Refinando más nuestra clase gato quedaría de la siguiente manera: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { char color[20]; //atributo int vidas; //atributo void miau //comportamiento { cout<<”Miiaaauu!!!“; } }; || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Generalmente los datos o atributos son privados porque no queremos que nadie los conozca y no tengan acceso a ellos. Las funciones en cambio son publicas para que puedan ser accedidas y de esta manera manipular la clase.
 * class gato
 * private:**
 * public:**

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Acceso a los miembros de una clase
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Para tener acceso a los miembros de una clase podemos hacerlo desde dos partes del programa: <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">- Desde dentro de la clase, accedemos a cualquier miembro directamente por el nombre, si es una variable por el nombre que le dimos a la variable y si es una función de igual manera por su nombre. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">- Desde fuera de la clase, podría ser desde la función principal o cualquier otra sección del programa que no pertenezca a la clase. Para acceder a un miembro lo hacemos de la siguiente manera <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**NombreObjeto.miembro** <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Utilizamos un punto entre el nombre del Objeto, que pertenece a una clase, y el miembro.

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Concepto de Objeto
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Un objeto es un elemento declarado de una clase este se denomina objeto de la clase. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Una vez definida e implementada una clase, es posible declarar o crear elementos de esta clase de modo similar a como se declaran las variables del lenguaje (int, double, char, …). <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">De una única clase se pueden declarar o crear numerosos objetos. La clase es lo genérico: es el patrón o modelo para crear objetos.

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Definición de un Objeto
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Sintaxis <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**nombreClase nombreObjeto;** <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">nombreClase Es el nombre de la clase que hemos creado y de la cual queremos crear un objeto o una instancia. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">nombreObjeto Cualquier nombre que queramos menos palabras reservadas. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Ahora vamos a crear objetos de nuestra clase gato en la función principal: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { gato Tom, Gardfield; Tom.miau; Gardfield.miau; } || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Cada objeto tiene sus propias copias de los miembros de la clase, con sus propios valores, en general distintos de los demás objetos de la clase. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Para tener acceso a los miembros de un objeto desde fuera de la clase, se utiliza el punto entre el nombre del objeto y el nombre del miembro, como se muestra en el ejemplo anterior.
 * void main

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Clases Vs Objetos
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">La relación entre clases y objetos en los programas de computadora es muy similar al de las variables por ejemplo si tengo <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">int nota; <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;"> gato Tom; <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**gato** es a **Tom** como **int** es a **nota**, **int** es un tipo de dato, **gato** es un tipo de dato definido por el usuario, ambos son tipos de datos, **nota** es el nombre de la variable, y**Tom** es el nombre del objeto. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**nota** es una variable entera en donde se almacenan sólo un dato entero. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Tom es un objeto que puede almacenar varios tipos de datos y además tiene funciones propias de su clase. ==<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Inicialización de Objetos de Clase (Constructores) == <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Cuando se crea un objeto de alguna manera tenemos que inicializar los valores de sus atributos para que no contengan un valor disparado o queramos fijarlos a un determinado valor inicial. La inicialización de los atributos lo podemos hacer mediante el constructor de la clase. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">El constructor es una función que no tiene tipo y se llama de la misma forma que la clase, y es invocada cada vez que se crea un objeto de la clase automáticamente. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">En nuestro ejemplo de la clase gato sería así: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { private: char color[20]; //atributo int vidas; //atributo public: void miau //comportamiento { cout<<"Miiaaauu!!!"; } }; void main { gato Tom("blanco"), Gardfield("negro"); } || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Como dijimos que nuestro constructor es una función entonces puede tener parámetros o no, depende de nuestros requerimientos, el constructor de la clase gato recibe un parámetro que es el color, lo que quiere decir que al momento de crear un objeto le daremos el color del que quiero que sea mi gato. Además en el constructor se inicializa el número de vidas en 9, es decir, que cada objeto de la clase gato que se cree tendrá 9 vidas.
 * class gato
 * gato(char c[])** //constructor
 * strcpy(color,c);**
 * vidas = 9;**
 * }**
 * }**

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Obtener atributos de una Clase
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Habíamos mencionado que cuando un atributo es privado no se puede acceder desde fuera de la clase, entonces para poder obtener el valor de este atributo tenemos que crear una función que nos haga este trabajo, y si quisiéramos cambiar este valor también tendríamos que crear una función para este propósito. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Veamos como podemos hacer esto en nuestra clase gato: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { private: char color[20]; //atributo int vidas; //atributo public: gato(char c[]) //constructor { strcpy(color,c); vidas = 9; } void miau //comportamiento { cout<<"Miiaaauu!!!"; } }; void main { gato Tom("blanco"), Gardfield("negro"); cout<<”Tom tiene ”<<Tom.devVidas<<” vidas”; } || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">La función devVidas devuelve el valor de la variable vida que esta encapsulada dentro de la clase gato. Si hubiéramos utilizado en la función principal directamente la siguiente función: <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">cout<<”Tom tiene ”<<Tom.vidas<<”vidas”; <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Existiría un error porque estamos violando los controles de acceso a las variables, vidas es un variable privada. Si vida fuera publica la anterior sentencia estaría correcta.
 * class gato
 * int devVidas** //función miembro
 * { return vidas; }**

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Modificar atributos de una clase
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Para cambiar el valor de un atributo fuera de la clase debemos de construir una función que nos realice este trabajo. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">En la clase gato si queremos modificar el valor del atributo vidas será de la siguiente manera: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { private: char color[20]; //atributo int vidas; //atributo public: gato(char c[]) //constructor { strcpy(color,c); vidas = 9; } void miau //comportamiento { cout<<"Miiaaauu!!!"; } int devVidas //función miembro { return vidas; } }; void main { gato Tom("blanco"), Gardfield("negro"); cout<<"Tom tiene "<<Tom.devVidas<<" vidas"; Tom.modVidas( Tom.devVidas - 1 ); cout<<"Tom tiene "<<Tom.devVidas<<" vidas"; } || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">La función modVidas recibe un parámetro que es el nuevo valor que contendrá la variables vidas. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Con la sentencia: Tom.modVidas( Tom.devVidas - 1 ); se disminuye en 1 el valor del atributo vidas. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Podemos ver que dentro de la función modVidas para acceder a la variable vidas se lo hace directamente, esto es porque lo estoy haciendo desde una función de la misma clase.
 * class gato
 * void modVidas(int v)** //función miembro
 * { vidas = v; }**

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Implementación de una función fuera de la clase
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Es posible declarar una función dentro de la clase, e implementarla fuera de ella como se muestra a continuación: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { private: char color[20]; //atributo int vidas; //atributo public: gato(char[]); //declaración del constructor void miau; //declaración de la función }; gato::gato(char c[])//implementación del constructor { strcpy(color,c); vidas = 9; } void gato::miau//implementación de la función { cout<<"Miiaaauu!!!"; } || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Para implementar una función fuera de la clase se debe de declararla tan solo dentro de la clase, y para implementarla fuera de la misma se debe de colocar primero el tipo de la función luego la clase a la que pertenece junto se colocan 4 puntos y el nombre de la función, luego se deben de declarar todos los parámetros que tiene la función. En la declaración de la función dentro de la clase no es necesario darle un nombre a las parámetros basta con el tipo, el nombre se les dará cuando se implemente la función.
 * class gato

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Ejemplo 12.1
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Simular la pelea de dos gatos, crear dos objetos gato e implementar una función que le permita a un gato arañar a otro gato, cada arañazo que recibe un gato le quita una vida. El programa debe de decidir de forma aleatoria que gato es arañado, todo esto mientras ninguno de los gatos tengan 0 vidas. Al final del programa deberá de decir que gato ganó. <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> class gato { private: char color[20]; //atributo int vidas; //atributo public: gato(char c[]) //constructor { strcpy(color,c); vidas = 9; } void miau //comportamiento { cout<<"Miiaaauu!!!\n"; } int devVidas //función miembro { return vidas; } void modVidas(int v) //función miembro { vidas = v; } void arania(gato &otroGato) { otroGato.modVidas( otroGato.devVidas - 1 ); otroGato.miau; } }; void main { gato Tom("blanco"), Gardfield("negro"); int quienArania; randomize; //para que se generen nros randomicos distintos while( Tom.devVidas > 0 || Gardfield.devVidas > 0 ) { quienArania = random( 2 ); if ( quienArania ) Tom.arania( Gardfield ); else Gardfield.arania( Tom ); } if(Tom.devVidas == 0) cout<<"Ganó Gardfield"; else cout<<"Ganó Tom"; } ||
 * #include <iostream.h>
 * 1) include <string.h>
 * 2) include <stdlib.h>

<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; text-align: justify;">Ejemplo 12.2
<span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Construir un tipo de dato que nos permita manejar fracciones, es decir, que este tipo de dato tenga información del numerador y denominador. <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Cuando se cree un objeto de esta clase deberá tener valores iniciales de 0, tanto en el numerador como en el denominador, y además debe de poder realizar las siguientes funciones: <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;"> mostrar. Muestra un quebrado <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">llenar. Llena los datos del quebrado <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;"> sumar. Suma de dos quebrados <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;"> multiplicación. Multiplica dos quebrados <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;"> simplificar. Simplifica un quebrado <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> class fraccion { private: int nume; int deno; public: fraccion //constructor { nume=0; deno=0; } //muestra la fracción por pantalla void mostrar; //llena con datos las variables de la fraccion void llenar(int,int); //la función sumar recibe como parámetro un tipo de dato fraccion // y devuelve el resultado como un tipo de dato fraccion fraccion sumar(fraccion); //la función multiplicar recibe como parámetro un tipo de dato fraccion // y devuelve el resultado como un tipo de dato fraccion. fraccion multiplicar(fraccion); //simplifica una fraccion void simplificar; //la funcion euclides calcular el mínimo común divisor de dos nros int euclides(int,int); }; void fraccion::mostrar { /* Si la fraccion tiene denominador 1 se mostrara solo el numerador ó Si la fraccion tiene como numerador 0 se mostrara sólo 0 if((deno == 1) || (nume == 0)) cout<<nume<<"\t"; //Sino se muestra toda la fraccion else cout<<nume<<"/"<<deno<<"\t"; } void fraccion::llenar(int n, int d) { nume=n; deno=d; } int fraccion::euclides(int nro1, int nro2) { int aux; while( nro1 > 0 ) { if(nro1 < nro2) { aux = nro1; nro1 = nro2; nro2 = aux; } nro1 = nro1 - nro2; } return nro2; } void fraccion::simplificar { int mcd; mcd = euclides(nume, deno); nume /= mcd; deno /= mcd; } fraccion fraccion::sumar(fraccion otraFracc) { fraccion aux; int mcm = deno * otraFracc.deno; aux.nume=(mcm/deno)*nume + (mcm/otraFracc.deno)*otraFracc.nume; aux.deno=mcm; return aux; } fraccion fraccion::multiplicar(fraccion otraFracc) { fraccion aux; aux.nume=nume * otraFracc.nume; aux.deno=deno * otraFracc.deno; return aux; } || <span style="background-color: #ffffff; color: #222222; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">En el anterior ejemplo se muestra como esta implementada la clase fracción, ahora veamos cómo se usa: <span style="background-color: #ffffff; color: #222222; display: block; font-family: 'Trebuchet MS',Arial,Helvetica,sans-serif; font-size: 12px;"> { fraccion A,B,C; A.llenar(1,2); B.llenar(2,2); A.mostrar; B.mostrar; C = A.sumar(B); C.simplificar; C.mostrar; C = A.multiplicar(B); C.simplificar; C.mostrar; } ||
 * #include <iostream.h>
 * void main

<span style="background-color: #ffffff; color: #515151; font-family: 'Lucida Grande','Lucida Sans Unicode',Arial,sans-serif; font-size: 2em;">VB.Net / ASP.Net: Funciones, Procedimiento
<span style="background-color: #ffffff; display: block; font-family: 'Lucida Grande','Lucida Sans Unicode',Arial,sans-serif; font-size: 12px; text-align: justify;"> La programación modular es beneficiosa, por que permite fragmentar un programa complejo en varios subprogramas, permitiendo al programador, centrarse en procedimientos que ejecutan instrucciones específicas. **Visual Basic .Net**, no escapa de la definición de funciones y procedimientos. A continuación, se indica la sintáxis de definición de **funciones y procedimientos en Visual Basic .Net**: Sub ProcedureName //Instrucciones…// End Sub La sintáxis anterior describe la definición de un procedimiento o función sin retorno de valor. En Visual Basic .Net, se declara de maneja diferente los procedimientos a las funciones. Function StringFunction As String //Instrucciones…// Return CStr(val) End Function Function ParmFunction(a As String, b As String) As String

//Instrucciones…//

Return CStr(A & B)

End Function

Para programadores anteriores a Visual Basic .Net, la sintáxis para la declaración de funciones en Visual Basic, difería en que el valor de retorno se indicaba igualando una variable con el nombre de la función, con el valor a devolver. Ahora, la nueva sintáxis de VB.Net, tiene el agregado de la palabra reservada **Return**. Las funciones es VB.Net, se definen con la palabra reservada **Function**, seguida del nombre de la función. Si se reciben parámetros, estos se indican dentro de paréntesis, junto con el tipo de dato. Finalmente, se termina la definición, indicando el tipo de dato que regresará la función. Dim s1 As String = StringFunction Dim s2 As String = ParmFunction("Hello", "World!") Imports System Public Class ClassName Public Sub New
 * Clases en VB.Net **: Siempre será importante, la utilización de clases, que nos faciliten la tarea en asuntos rutinarios. Las clases permiten agrupar procedimientos y funciones comunes.

MyBase.New

End Sub ‘ Procedimiento Principal Public Shared Sub Main

//Instrucciones…//

End Sub End Class

Al igual que en Java, en VB.Net, pueden definirse clases con herencia. Imports System Namespace MySpace Public Class Foo : Inherits Bar Dim x As Integer ‘ En este caso, una propiedad Public Sub New

MyBase.New ‘ Crea el objeto, utilizando New

x = 4

End Sub Public Sub Add(x As Integer)

Me.x = Me.x + x ‘ Hace referencia a la propiedad X

End Sub Public Function GetNum As Integer

Return x ‘ Tambien hace referencia a X

End Function End Class End Namespace

<span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;">INTRODUCCION A VISUAL STUDIO.NET 2010 <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;">

Tres ejemplos básicos para comprender el uso de las variables y operadores, les dejo las capturas de pantalla del código y salida en consola además de los códigos fuente editables. los ejemplos utilizan los comandos de consola **Red**, **ReadLine**, **Write**,**WriteLine** que sirven para leer valores del teclado y mostrarlos en pantalla.

<span style="background-color: #ffffff; color: #aa0033; font-family: raleway,helvetica,arial,sans-serif; font-size: 14px; text-align: center;">

<span style="background-color: #ffffff; color: #cc0000; font-family: raleway,helvetica,arial,sans-serif; font-size: 20px;">** Variables en Visual Basic .Net **
<span style="background-color: #ffffff; color: #515151; display: block; font-family: inherit; font-size: 14px; text-align: justify;"> Las variables son usadas dentro de ámbitos, el ámbito indica en qué lugar de la aplicación desea utilizar la variable y puede ser una de las siguientes palabras claves. ** Dim, Static, Private o Public. **

<span style="background-color: #ffffff; color: #515151; display: block; font-family: inherit; font-size: 13px; text-align: justify;"> **Dim**: Se puede utilizar a nivel de procedimiento y a nivel del formulario. Si se declara una variable a nivel de procedimiento con la palabra Dim, **Visual Basic** reinicializa (borra su contenido) la **variable** cada vez que ejecuta el procedimiento.

<span style="background-color: #ffffff; color: #515151; display: block; font-family: raleway,helvetica,arial,sans-serif; font-size: 14px; text-align: justify;"> ** Ejemplo: **


 * Dim valor As Integer **

<span style="background-color: #ffffff; color: #515151; display: block; font-family: raleway,helvetica,arial,sans-serif; font-size: 14px; text-align: justify;"> ** Static: ** Se utiliza solo a nivel del procedimiento. Cuando una variable se declara con la palabra **Static**, **Visual Basic** no reinicializa la variable cada vez que se ejecuta el procedimiento, solo lo hace la primera vez. Esto quiere decir que la variable conserva su valor entre una llamada al procedimiento y otra.


 * Ejemplo: **


 * Static x As Double **

<span style="background-color: #ffffff; color: #515151; display: block; font-family: inherit; font-size: 13px; text-align: justify;"> **Private:** Se utiliza solo a nivel del modulo e indica que la variable es privada; es decir, solo va a ser reconocida dentro del módulo donde ha sido declarada.

<span style="background-color: #ffffff; color: #515151; display: block; font-family: raleway,helvetica,arial,sans-serif; font-size: 14px; text-align: justify;"> ** Ejemplo: **


 * Private c As String **

<span style="background-color: #ffffff; color: #515151; display: block; font-family: inherit; font-size: 13px; text-align: justify;"> **Public:** Se utiliza solo a nivel de módulo e indica que la variable es pública; es decir, va a ser reconocida en toda la aplicación.

<span style="background-color: #ffffff; color: #515151; display: block; font-family: raleway,helvetica,arial,sans-serif; font-size: 14px; text-align: justify;"> ** Public d As Date **

** Constantes en Visual Basic .Net **
<span style="background-color: #ffffff; color: #515151; display: block; font-family: raleway,helvetica,arial,sans-serif; font-size: 14px; text-align: justify;"> Es un elemento con un nombre determinado que mantiene un valor constante durante el desarrollo de todo el programa el cual no se puede cambiar. Las constantes se definen con la instrucción **Const** por ejemplo:

** Const e = 10 **

**Nota:** La definición de las constantes puede empezar con las palabras **Public** o **Private**. Para que sean públicas o privadas. Por defecto son privadas.

** Comandos de Consola Visual Basic .Net **

 * = ** COMANDO ** ||= ** FUNCION ** ||= ** FORMA DE USO ** ||
 * = ** Read ** ||= Captura o lee el dato que el usuario ingresa. ||= VariableIngresada = Console.Read ||
 * = ** ReadLine ** ||= Captura o lee el dato que el usuario ingresa, pero a la vez hace un cambio de línea al terminar de leer el dato. ||= Variable = Console.ReadLine ||
 * = ** Write ** ||= Para mostrar texto y datos calculados o capturados ||= Console.Write(.Texto a Mostrar {0},{1}, {2}, …, {n}., Var0, Var1, Var2,..., Varn)

Console.Write(.Texto a Mostrar.) ||
 * = ** WriteLine ** ||= Permite mostrar ya sea una cadena texto o un dato numérico, y a la vez hace un cambio de línea, después de haber mostrado el dato. ||= Console.WriteLine(.Texto a Mostrar {0},{1}, {2}, ., {n}., Var0, Var1, Var2,…, Varn)

Console.WriteLine(.Texto a Mostrar.) ||

** Ejemplos de Visual Basic .Net con Salida en Consola **

 * = ** Ejercicio para Calcular Área ** ||
 * = [[image:https://4.bp.blogspot.com/-FZq-lqnKENQ/TjM5OgssKlI/AAAAAAAAACw/f1OkR5-TDFk/s640/image2.png width="640" height="428" link="http://4.bp.blogspot.com/-FZq-lqnKENQ/TjM5OgssKlI/AAAAAAAAACw/f1OkR5-TDFk/s1600/image2.png"]]

SALIDA EN CONSOLA



**CODIGO FUENTE**

Module area

Sub Main Dim radio As Single Dim area As Single Dim circunferencia As Single Const pi = 3.1415926

Console.Write("Ingrese el radio: ") radio = Console.ReadLine

area = pi * radio ^ 2 circunferencia = 2 * pi * radio

Console.WriteLine("El area es : {0}", area) Console.WriteLine("La circunferencia es : {0}", circunferencia)

Console.ReadKey End Sub

End Module ||


 * = ** Ejercicio para Calcular el Promedio de Tres Notas ** ||
 * = [[image:https://1.bp.blogspot.com/-AxeBUyqxrSU/TjM5XB8HkBI/AAAAAAAAADA/6G_eE8RO_EY/s640/image4.png width="640" height="571" link="http://1.bp.blogspot.com/-AxeBUyqxrSU/TjM5XB8HkBI/AAAAAAAAADA/6G_eE8RO_EY/s1600/image4.png"]]

SALIDA EN CONSOLA



**CODIGO FUENTE**

Module peso

Sub Main 'declaracion de variables Dim M As Double Dim G As Double Dim P As Double

'Ingresar valores para las variables G = 9.8 Console.Write("Ingrese la masa del objeto:") M = Console.ReadLine

'Realizar los procesos P = M * G

'Mostrar resultados Console.WriteLine("Peso del objeto: {0}", P) Console.ReadKey

End Sub

End Module || <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;"> <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;">

=<span style="background-color: #ffffff; color: #f34f25; font-family: arial,'helvetica neue',helvetica,sans-serif;">Ejemplo de aplicación de consola con Visual Basic .NET =

<span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;"> Hay muchos [|lenguajes de Backend] que puedes aprender y usar en tu carrera profesional.

Hola a todos, hasta ahora hemos visto como realizar [|sencillas] [|aplicaciones] con [|Visual Basic .NET], pero todas han sido formularios de **Windows Forms**.

Ésta vez vamos a cambiar, y a crear nuestras primeras aplicaciones de consola (sencillitas). Recuerda [|descargar Visual Basic], es gratis.

**Para los que no lo sepan, las aplicaciones de consola son aquellas que se ejecutan en una ventana de comandos, como si de una aplicación de Ms-DOS se tratase.**

Aplicaciones de terminal o linea de comandos con Visual Basic.NET
<span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;"> Damos click en la pantalla de nuevo proyecto, y elegimos aplicación de consola:

<span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;"> Para escribir textos en la consola, utilizaremos el método **WriteLine**. Este método escribe en la línea actual el valor que le pasemos por parámetro añadiendo al final un "intro" o final de línea lo que provocará que el cursor pase a la siguiente línea.

Como primera aplicación escribiremos:

**Código :**

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">Console.WriteLine("Hola") Console.WriteLine("Esta es mi primera aplicación de consola") code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">

code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Ejecuta la aplicación dándole al botón de "play" de la barra de herramientas de arriba y verás que funciona correctamente... code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">

code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">¿Habéis podido ver la aplicación? Igual no os ha dado tiempo porque se habrá mostrado una pantalla negra con el contenido de la imagen de abajo y se habrá cerrado inmediatamente. Pues si, el IDE de VB.NET la ha ejecutado y luego al vuelto otra vez al IDE, porque no tenia la instrucción de que se esperase a cerrar. code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Vamos a mejorarla poniendo algo parecido a una pausa al final. Podemos poner debajo de las dos instrucciones el método**ReadLine**: Ésta instrucción lee datos por teclado así que esperará hasta que pulsemos Intro, de esta forma se nos quedará visible en pantalla. code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Escribimos el código:

**Código :**

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">Console.WriteLine("Hola") Console.WriteLine("Esta es mi primera aplicación de consola") Console.ReadLine code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">

code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Y el resultado: code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">

code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Ademas de poder escribir y mostrar el resultado de lo que se escribe, las aplicaciones de consola pueden realizar**operaciones matemáticas** también, como por ejemplo:

**Código :**

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">'Escribimos una operación Console.WriteLine(340 + 260) Console.ReadLine code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Que da como resultado: code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">

code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">O por ejemplo:

**Código :**

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">'Escribimos una potencia Console.WriteLine(3 ^ 2) Console.ReadLine code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Y el resultado es: code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code

<span style="background-color: #f4f9f9; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 0.9em;"> Os habéis dado cuenta de que la línea en verde "'Escribimos una operacion:", ¿no ha salido en pantalla? Eso es porque es un comentario, para ayudar con la comprension de programaciones mas avanzadas y complejas.

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">

code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Si queremos **concatenar varios textos** en una línea se puede hacer con el símbolo "&", tanto para variables como para textos. Por ejemplo:

**Código :**

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">'Tenemos dos variables Nombre y Numero 'Declaramos la variable Nombre como una cadena de caracteres Dim Nombre As String 'Declaramos la variable Numero como un numero Dim Numero As Integer

Nombre="Wyrm" Numero=27

Console.WriteLine ("Hola me llamo: " & Nombre & " y tengo " & Numero & " años.") console.Readline code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Debería quedarnos así: code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Y al darle "Play" a la aplicación, nos muestra: code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">También podemos declararlas así:

**Código :**

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">'Tenemos dos variables Nombre y Numero 'Declaramos la variable Nombre como una cadena de caracteres Dim Nombre As String 'Declaramos la variable Numero como un numero Dim Numero As Integer

Nombre = "Wyrm" Numero = 27 Console.WriteLine("Hola me llamo: {0} y tengo {1} años.", Nombre, Numero) 'Siendo {0} la variable Nombre y {1} la variable Numero Console.ReadLine code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Que nos quedará así en el panel de código: code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Y como resultado, nos dará lo mismo que la anterior aplicación: code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code

Aplicación con bucle For....Next
code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Vamos ha realizar una aplicación algo mas complicadilla con un **bucle For...Next**. Escribimos éste código:

**Código :**

code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">For Index As Integer = 1 To 10 System.Console.WriteLine(Index) Next System.Console.ReadLine code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Ejecutamos la aplicación y nos mostrará el bucle que le hemos escrito del 1 al 10 y esperará a que pulsemos la tecla de retorno o "intro" para cerrarse. code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;"> code code format="prettyprint lang-java" <span style="color: #775555; font-family: monospace,serif; font-size: 1em;">

code <span style="background-color: #ffffff; color: #333333; display: block; font-family: arial,'helvetica neue',helvetica,sans-serif; font-size: 16px;">Espero que os hayan gustado las nociones básicas de las aplicaciones de consola...ahora no parecen gran cosa, pero ya iremos viendo mas adelante aplicaciones de consola mas elegantes y vistosas <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;"> <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;"> <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;"> <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;">

<span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;">** [|Introducción a Dev-C++] ** <span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;">



<span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px;">

<span style="background-color: #ffffff; color: #333333; display: block; font-family: verdana; font-size: 22px; text-align: left;"><span style="color: #444444; display: block; font-family: Arial,serif; font-size: 14px;">**<span style="color: #333333; font-family: Helvetica,Arial,sans-serif; font-size: 17.6px; text-align: justify;">Información: ** <span style="color: #333333; font-family: Helvetica,Arial,sans-serif; font-size: 17.6px;">Curso "Introducción a **Dev-C++**", En este Curso podrás aprender los principios de programación en el lenguaje **C++** en el Entorno Dev-C++. **<span style="color: #333333; font-family: Helvetica,Arial,sans-serif; font-size: 17.6px;">C++ **<span style="font-family: verdana,sans-serif; font-size: medium;"> Es un lenguaje de Programación diseñado en la época de los 1980, con el propósito de extender y evolucionar al lenguaje C, y para procrear la programación orientada o objetos. <span style="display: block; font-family: verdana,sans-serif; font-size: medium; text-align: justify;">**Dev-C++** es un entorno de desarrollo integrado para programar en lenguaje C/C++. Usa MinGW que es una versión de GCC como su compilador. Dev-C++ puede además ser usado en combinación con Cygwin y cualquier compilador basado en GCC. Para poder descargar **Dev-C++**, puede ser des este link en [|**MEGA**]. O bien desde ** [|sourceforge] .**

Particularidades de Dev-C++
=**Creación de un proyecto DevC++ nuevo**=

Para crear un proyecto con Dev-C++ podemos utilizar el menú principal:



Alternativamente podemos hacer clic sobre el icono de creación rápida (marcado con una **X**):
 * Archivo ** > ** ** > ** Nuevo ** > ** ** > ** Proyecto



En ambos casos la aplicación nos muestra la siguiente interfaz:



En la figura se observa que se ha seleccionado la opción **"En __C__"**, a la derecha, abajo. Este aspecto será importante para indicarle al compilador que queremos utilizar el lenguaje C y no el lenguaje C++. Si no lo hacemos nos va a ocasionar numerosos problemas. También se observa que se ha validado **"Hacer C/C++ Mi __I__dioma"** lo cual memorizará la opción que hayamos elegido (en nuestro caso "En C"). Así, la siguiente vez que vayamos a crear un proyecto estará seleccionado y no nos tendremos que preocupar. Adicionalmente se observará que está seleccionada la opción //aplicación para consola// (**"Console Application"**), que es la que elegiremos para crear el proyecto. Podemos cambiar el nombre al proyecto o dejarlo como "Proyecto1". De momento no nos preocuparemos de este aspecto. Al hacer click sobre el botón **"Aceptar"** nos saldrá una interfaz que nos solicitará la ubicación del proyecto:



Buscaremos una ubicación adecuada, normalmente en una **unidad de datos**, y haremos clic sobre el botón "Guardar". Con esto pasaremos a editar la plantilla (el esqueleto) de un programa básico, tal y como se muestra en la siguiente figura:



** 1. INTRODUCCIÓN** Este texto pretende ser un pequeña introducción, a modo de manual de usuario, para personas que nunca han utilizado este magnífico IDE. Aprenderás ha descargar e instalar Dev-C++ y a crear el más que conocido “Hello World”. Dev-C++ es un Entorno de Desarrollo Integrado (IDE) para los lenguajes de programación C y C++ de libre distribución, sujeto a los términos de la Licencia Pública General (GPL). Facilita herramientas para la creación y depuración de aplicaciones Win32, de consola, DLLs, bibliotecas estáticas…. También cuenta con un compilador integrado: MinGW (Minimalist GNU Windows). Aunque puede utilizarse en combinación con otros compiladores basados en GCC (GNU Compiler Collection).

** 2. INSTALACIÓN** ** 2.1 – REQUERIMIENTOS MINIMOS** Los requerimientos mínimos del IDE son: Podemos descargar la versión más reciente desde la página del proyecto en sourceforge: []
 * 32MB de RAM
 * Windows 95 o superior.

** 2.2 – INSTALACIÓN**

Ejecutamos el archivo descargado. Aceptamos la licencia, seleccionamos los componentes que deseamos instalar y por último la carpeta donde se instalará el programa (la ruta no puede contener espacios en blanco).

** 2.3 – EJECUTANDO DEV-C++ POR PRIMERA VEZ** La primera vez que abrimos el programa nos aparecerá una ventana de configuración que nos permitirá personalizar ciertos aspectos del programa. En el primer apartado nos pide seleccionar nuestro idioma y el aspecto para la interfaz gráfica que más nos agrade. En el siguiente apartado nos pregunta si deseamos activar una característica que, a pesar de consumir más recursos, facilita la búsqueda de clases, variables y funciones en el código. Si aceptamos nos dará la opción de crear una caché que mejora el uso de esta característica. El último apartado es simplemente informativo. Aceptamos y Dev-C++ se ejecutará.

**3.** **ENTORNO DE TRABAJO** Al ejecutar Dev-C++ nos encontraremos con un entorno de trabajo similar a este:

** 3.1 – BARRAS DE HERRAMIENTAS** En estas barras encontramos una serie de iconos que no son más que una parte de las opciones que tenemos en los menús (Apartado 4), si se deja el ratón encima de un icono durante unos segundos aparecerá una ventana emergente con el nombre de la acción.

** 3.2 – EXPLORADOR DE PROYECTOS/CLASES** Contiene tres pestañas diferentes:
 * – Proyecto:** Muestra los archivos que forman el proyecto. Haciendo doble clic sobre un archivo se abre en el //Área de edición//.


 * – Clases:** una de las funciones más útiles, aquí se detallarán las clases definidas en los archivos del proyecto, así como los métodos y datos que forman parte de clase. También se verá una lista de las funciones globales que tenemos en el proyecto. Haciendo doble clic en un método, función o clase, se abrirá en el //Área de edición// directamente al archivo y línea donde se ha definido.


 * – Depurar:** aquí podremos definir las variables que queramos cuando estemos depurando un programa.

** 3.3 – ÁREA DE EDICIÓN** Aquí se abrirán los archivos del proyecto que deseamos editar, permite tener abiertos varios archivos simultáneamente. El editor resalta la sintaxis del código, para facilitar la lectura y edición de este.

** 3.4 – RESULTADOS DE LA COMPILACIÓN Y CONTROLES DE DEPURACIÓN** En cada una de estas pestañas se encuentra información acerca del proceso de compilación y depuración:
 * **Compilador:** En esta pestaña se muestran los errores y advertencias que han surgido de la compilación de nuestro código. Haciendo doble clic en uno de ellos te lleva directamente a la línea que provocó dicho error o advertencia. También se muestran los avisos.


 * **Recursos:** Muestra las advertencias acerca de los recursos invocados en las líneas de código de nuestro programa


 * **Resultado de la compilación:** En la sección //Información// encontramos un contador de errores y nos indica el tamaño que ocupa el archivo resultante del compilador. En la sección //Resultado de la compilación// se muestran los mensajes producidos por la herramienta de compilación.


 * **Depurar:** Dividida a su vez en tres pestañas:
 * //Depurar:// Encontramos las herramientas básicas de depuración.
 * //Retroseguimiento:// Nos muestra información importante a la hora de depurar en relación a las funciones. Que argumentos tiene, en que unidad se encuentra y en que línea se ha declarado.
 * //Salida:// Nos permite enviar comandos directamente al compilador para que los ejecute.


 * **Ver resultados:** Nos muestra información acerca de los resultados generados por el código ejecutado. En que línea, columna y unidad se ha generado.

**4****.** ** MENÚ ** El menú de Dev-C++ está compuesto por 11 pestañas que contienen las diferentes opciones y herramientas que proporciona el programa.


 * **Archivo:** Contiene acciones básicas de Carga y Guardado de los archivos manipulados.
 * //Nuevo:// Permite crear un nuevo archivo de //Código Fuente// o //Proyecto// desde cero, o a partir de un //Recurso// o //Plantilla//
 * //Importar:// Permite importar proyectos creados en //Microsoft Visual C++//
 * //Exportar:// Permite exportar un archivo en formato //html// o //rtf//. También permite exportar el proyecto entero en formato //html//.


 * **Edición:** Contiene acciones básicas de edición de texto.
 * //Insertar:// Facilita la inserción de una fecha u hora y de los comentarios en cabeceras.


 * **Buscar:** Contiene acciones para la búsqueda de texto en los archivos abiertos.


 * **Ver:** En este menú se nos permite seleccionar que elementos visuales queremos activar o desactivar.


 * **Proyecto:** Acciones básicas de Gestión y Configuración que podemos realizar sobre el proyecto.
 * //Opciones del Proyecto:// Aquí podemos editar las características del proyecto abierto de forma más extensa.


 * **Ejecutar:** Acciones de Compilación que podemos realizar sobre el proyecto.


 * **Depurar:** Acciones de Depuración que podemos realizar sobre el proyecto.


 * **Herramientas:** En este menú se encuentran las Opciones y Configuraciones de cada uno de los elementos que componen el IDE Dev-C++.


 * **CVS:** Acciones relacionadas con CVS.


 * **Ventana:** Acciones que pueden ejecutarse sobre el Área de Edición (Sección 3.3)


 * **Ayuda:** Menú con las Opciones de Ayuda que ofrece el programa.






 * ||  ||  Guía básica de uso de Dev-C++ 4.9.8.0  ||   ||   ||



||  || Principal || ||  || Paso 3: Guardar como... ||  ||   || Seleccionamos carpeta:C:\codigo_fuente\capitulo_11\ejemplos\ejemplo_11_01 Introducimos el nombre del archivo:ejemplo_11_01 ||  ||   ||
 * || <span style="display: block; font-family: Helvetica,Arial,sans-serif;">
 * || <span style="display: block; font-family: Helvetica,Arial,sans-serif;">
 * [|Inicio] ||
 * [|Libros] ||
 * [|Librerías] ||
 * [|Bibliotecas] ||
 * [|Mapa Web] ||
 * Recursos ||
 * [|Artículos] ||
 * [|Cursos] ||
 * [|Ejercicios] ||
 * [|Guías de uso] ||
 * [|Mini Diccionario] ||
 * Sintaxis ||
 * [|ANSI C] ||
 * [|Ordinogramas] ||
 * [|Pascal] ||
 * [|Pseudocódigo] ||
 * Acerca de ||
 * [|Carlos Pes] ||
 * [|Colaboradores] ||
 * [|Perfiles] ||
 * [|Taller de ideas] ||
 * Otros Proyectos ||
 * Blog Carlos Pes ||
 * Grupo Google ||
 * Fotografías ||
 * Proyecto CP ||
 * Recetas cocina ||
 * Sitios Amigos ||
 * [|Enlaces] ||
 * Blog Carlos Pes ||
 * Grupo Google ||
 * Fotografías ||
 * Proyecto CP ||
 * Recetas cocina ||
 * Sitios Amigos ||
 * [|Enlaces] ||
 * Sitios Amigos ||
 * [|Enlaces] ||
 * [|Enlaces] ||
 * || Archivo > Guardar Como...

|| || Pasos · [|Paso 2] Crear archivo nuevo · Paso 3 Guardar como... · [|Paso 4] Editar · [|Paso 5] Compilar · [|Paso 6] Ejecutar · [|Paso 7] Salir · [|Paso 8] Ver archivos ||  ||   ||
 * =  || · [|Paso 1] Iniciar Dev-C++
 * =  || · [|Paso 1] Iniciar Dev-C++


 * <span style="background-color: #ffffff; color: #195695; display: block; font-family: arial; font-size: 22px; text-align: left; text-decoration: initial;">[|¿Que es la Programacion?]

<span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">** Introduccion: ** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">La Programacion ha pasado a tener un papel importantisimo en la vida diaria, gracias a ella podemos programar los ordenadores, electrodomesticos, robots y otras maquinas. La Programacion intenta resolver ciertos problemas que nos surgen todos los dias basandose en una metodologia. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">El conjunto de problemas que son resolubles utilizando un computador es indudablemente, muy extenso. El concepto de algoritmo es fundamental para la actividad de resolver problemas con computadoras, por lo que necesitamos adquirir un conocimiento firme sobre lo que es y no es con objeto de llevar a cabo de forma eficaz la actividad de resolver problemas ya que este es el proposito de escribir algoritmos. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">** Definiciones: ** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">** Programacion y Algoritmos ** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">Un programador no solo debe aprender la tarea que realiza cada instruccion sino que ademas debe saber combinar estas instrucciones para realizar un tarea en particular. Al considerar este problema desde un punto de vista diferente, un programador primero debe resolver el problema paso a paso y luego tratar de encontrar las instrucciones (o series de instrucciones) apropiada que resuelva el problema. La solucion paso a paso se conoce como algoritmo. Los algoritmos juegan un papel muy importante en la ciencia de la computacion. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">** Programacion y Ingenieria de Software : ** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">Al principio la programacion de ordenadores se veia como un arte, todo era cuestion de dominar un lenguaje de programacion y aplicar habilidades personales de resolucion de problemas. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">En la actualidad no es aceptable escribir un programa que realiza una tarea sin seguir principios y metodos de ingenieria de software para obtener programas confiables. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">Una buena formacion en programacion no solo debe incluir el estudio de los esquemas algoritmicos, y estructuras de datos mas importantes, el analisis de algoritmos y el paradigma orientado a objetos. Una buena formacion en programacion tambien deberia incluir, una formacion en ingenieria de software y estudiar ingenieria de requisitos, metodos de desarrollo de software, gestion de proyectos, y sobre todo, adquirir experiencia practica participando en proyectos de software. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">** Programacion y Creatividad ** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">La programacion es una actividad en la que la creatividad juega un papel crucial, por ello un buen programador ademas de tener una buena formacion academica es una persona muy creativa y con una gran capacidad de abstraccion, esencial para la resolucion de problemas. Los programadores siempre deben tener presente que se enfrentan a una actividad muy compleja y deben desconfiar de los lenguajes, metodos o herramientas que se ofrecen como soluciones magicas para construir software de forma casi automatica y sin apenas esfuerzo, sin dejar lugar a la creatividad. Ellos deben saber, de acuerdo a Brooks, que las tecnologias abordan problemas accidentales. Pero los problemas esenciales pueden ser abordados a traves de solidos principios software. El buen programador debe ser un persona que sabe trabajar en equipo, que conoce la importancia del trabajo metodico, y que no se comporta como un programador complusivo que se plantea la programacion como una batalla a muerte contra la maquina, sin tregua ni cuartel.
 * <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">Un programa de computador es un conjunto de instrucciones ordenes dadas a la maquina que producirán la ejecución de una determinada tarea. A la persona que escribe programas se le denomina Programador, al proceso de escribir programas se denomina Programacion.
 * <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">En informática, la programacion es un proceso por el cual se escribe (en un lenguaje de programacion ), se prueba, se depura y se mantiene el código fuente de un programa informático.
 * <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">La Programacion es la accion de escribir un conjunto de instrucciones escritas en un determinado lenguaje, que dirigen a un ordenador para la ejecución de una serie de operaciones, con el objetivo de resolver un problema que se ha definido previamente.
 * <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;">La Programacion es un conjunto de tecnicas utilizadas para desarrollar programas que sean faciles de leer, depurar (poner a punto) y modificar o mantener.

<span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;">**Lenguaje C** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">El [|lenguaje C], fue diseñado por Dennies Ritchie en 1970, en los laboratorios Bell de Estados Unidos. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Este lenguaje presenta varias características, entre las cuales están:
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Lenguaje de programación de propósitos generales
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Permite la Programación Estructurada
 * 3) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Abundancia de Operadores y Tipos de Datos
 * 4) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">No está asociado a ningún [|sistema] operativo ni a ninguna máquina
 * 5) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Popular y Eficaz
 * 6) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Permite el [|desarrollo] de Sistemas Operativos y programas de aplicación
 * 7) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Portabilidad
 * 8) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Existen las librerías en las bibliotecas
 * 9) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">tiene sólo 32 palabras reservadas

<span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">* [|bibliotecas] : es el [|archivo] que contiene [|código] objeto de una colección de rutinas o funciones que realizan tareas determinadas y se pueden utilizar en los programas. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">*Enlazador: Programa que convierte las funciones de la [|biblioteca] estándar de C, con el código que ha traducido el compilador. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;">**Estructura de Un programa en C** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Ya estamos apunto de entrar a lo más interesante, a la programación en sí; pero es necesario, primero; mencionar algunos de los errores típicos al programar, para que el lector sepa como identificarlos y así los pueda corregir. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">La [|estructura] de un programa en C, consta de algunas partes esenciales: las cuales son uno o más módulos llamadas funciones, siendo main la primera función que es llamada cuando empieza la ejecución del programa. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Cada función debe contener : <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">>Directivas de pre- [|procesador] (instrucciones que se le dan al compilador <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">#include antes de compilar) <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">#define <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">ejemplo: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">#include <stdio.h> <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Lo que se le esta indicando, es que de las librerías, "Incluya" en nuestro programa la directiva stdio.h, la cual contiene las funciones de <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> __entrada__ y salida de datos (standar input output, en [|inglés] ). Si necesitamos las funciones [|matemáticas], debemos especificarlo con la declaratoria: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">#include **<**math.h**>** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Si necesitamos las funciones de cadenas: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">#inlcude **<**stlib.h**>** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Es necesario aclarar que esto se hace al inicio del programa, y las declaratorias deben llevar el símbolo de numeral (#) seguido de la sentencia "include", y entre [|signos] de mayor y menor que (<>) el nombre de la directiva. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">>Declaraciones Globales <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">pueden ser: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">*Prototipos de Funciones: También llamadas declaraciones de funciones, lo cual se tratará más adelante <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">*Declaraciones de Variables <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">cabe destacar, que esto se hace seguido de los #include y los #define. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">>Función Principal main <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Esta es la función principal de nuestro programa, su cuerpo, por ello NUNCA debe faltar, ya que en ella van contenidas todas las instrucciones de nuestro programa. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">main <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">{ <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**declaraciones locales /***Comentarios */ <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**sentencias** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">} <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">la función main va al inicio, luego abrimos llaves y dentro de ellas van las declaraciones de variables, las sentencias de [|lectura], cálculos, asignaciones e impresiones, y con la última llave ( } ), le indicamos el final del programa. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**Ejemplo 1.1** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Programa que a <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> __partir__ del [|radio], calcula el área de un circulo <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">#include <stdio.h> <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">#include <conio.h> <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">main <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">{ <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">float radio, area; <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">printf("Radio=\n"); <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">scanf("%f", &radio); <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">area=3.14159*radio*radio; <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">printf("El Area es %f\n\n", area); <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">getch; <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">return 0; <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">} <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**Explicación:** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Le indicamos al compilador, que usaremos las bibliotecas <stdio.h> y <conio.h>, ¿por qué <conio.h>?, por que esta biblioteca, contiene las funciones getche, getch, etc, y de una de ellas hacemos uso en este pequeño ejemplo. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Luego, le indicamos a nuestro programa el incio de nuestro programa (función main ). <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Declaramos, como [|valores] reales, las variables radio y area (de esto se hablará más adelante). Luego, con la instrucción printf, mostramos en pantalla el mensaje (Radio=) y scanf se encarga de leer el valor digitado por el usuario. Posteriormente area, es igual al la multiplicación de pi (3.14159), el radio al cuadrado. Se muestra en pantalla ese resultado, luego el programa espera que se presiones cualquier tecla (getch ) y no retorna ningún valor (return 0). <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">**Ejercicios** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Defina los siguientes conceptos: > <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Indique que tipo de error (Error de sintaxis, error de ejecución o error lógico), en cada uno de los siguientes enunciados <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Mencione y Explique, la estructura general de un programa en C:
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**ERROR DE SINTAXIS:** Estos errores son producidos, cuando se hace mal uso de las reglas del lenguaje de programación, y se violan las [|normas] de sintaxis, de ese lenguaje (en nuestro caso C); estos errores son fáciles de detectar por que generalmente es el compilador, que los identifica (Y hasta [|muestra] la línea donde se encuentra dicho error, pero eso depende de la versión del compilador que estemos usando). En este curso he usado Turbo C, en su versión 2 y 3.
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**ERRORES DE EJECUCIÓN:** Estos errores se producen, cuando le indicamos a la computadora, realizar una determinada acción, y esta la comprende, pero no puede ejecutarla. Por ejemplo, indicarle a la computadora una división entre cero, sumar dos [|variables] a las cuales no se les ha signado [|valor] alguno, etc.
 * 3) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**ERRORES DE LÓGICA:** Muchas veces, cuando estamos programando, el compilador no nos indica errores de sintaxis, ni de lógica; pero el resultado de nuestro programa, esta fuera del rango esperado, esto es [|producto] de un error de lógica en el código de nuestro programa. Este tipo de errores son muy difíciles de identificar y por supuesto de corregir, ya que generalmente hay que revisar línea por línea de nuestro programa. Ejemplo: El sueldo negativo de un empleado, etc.
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Programa:_
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">CPU:_
 * 3) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Software: ___
 * 1) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Memoria Principal: __
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Lenguaje de Programación:__
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Utilizar una variable antes de asignarle un valor:
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">asignarle un valor real a una variable declarada como entero:
 * 3) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">al cometer este error, los resultados arrojados por el programa no son los que se esperaban: __
 * 4) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Un programa no puede ser ejecutado por el computador, mientras tenga este tipo de errores:
 * 5) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">estos errores no son detectados por el compilador, ni tampoco son errores de ejecución: ___
 * Capitulo II: " Lenguaje de Programación Estructurado C"**

<span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">¿Por qué programación estructurada? <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Si el lector recuerda, en el capítulo anterior, se hablaba de las características del lenguaje C, y en una de ellas se decía que, el Lenguaje de Programación C, permite la programación estructurada. Esto implica que, haremos uso de una técnica llamada **Lógica Estructurada,** y esto no es más ni menos que //una de las [|técnicas] básicas y fundamentales de la programación estructurada, su objetivo es diseñar [|soluciones] "correctas" y confiables a los problemas, ignorando al principio consideraciones de [|eficiencia] como la minimización del uso de memoria y el tiempo de su respuesta.// <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Lo que significa que, haremos uso de esa técnica para crear programas correctos; esta es una técnica que ayuda al programador (un tanto a la [|fuerza] ), a ser ordenado, al momento de programar. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Los frutos de ésta técnica se reflejan cuando, queremos darle [|mantenimiento] al programa, es más fácil hacerlo ya que hemos programado de una manera //lógica y ordenada.// Al igual que al momento de corregir errores de sintaxis y lógica, esta técnica nos facilita el trabajo. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Ahora iniciemos, de una vez por todas, lo que el lector está esperando: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;">**Sintaxis de Algunos Elementos de Un Programa en C** > >pueden tener de 1 hasta un máximo de 31 caracteres > >Debe de iniciar con una letra o subrayado > Ejemplo: > (Correctos) > c2 > _c2 > ( Incorrectos) > 2c > 2 c > >No es lo mismo una minúscula que una mayúscula, ya que c distingue de entre ellas. Ejemplo: BETA ¹ Beta ¹ beta ¹ BeTa > >No son válidos los identificadores de palabras reservadas. En un inicio hablamos que c posee 32 palabras reservadas, entre ellas están: > float char while > int else return > Estas palabras no pueden ser utilizadas para identificar variables, constantes, funciones etc > El formato de los comentarios en C, es el siguiente: > /*este es un comentario en C */ > /*Podemos colocar mucha información importante > de nuestro Programa */ > #include <stdio.h> /* le decimos al compilador que incluya la librería > stdio.h */ > Las variables pueden cambiar de valor, durante la ejecución del programa, por eso es que se llaman //variables.// Y las constantes como su nombre lo indica, son valores que permanecen constantes durante toda la ejecución del programa, un ejemplo de ello, es el valor de p (pi) que equivale a 3.14159.... > En C existen diferentes tipos de variables, entre ellas tenemos: > **1. Constates Numéricas:** > Son valores numéricos, enteros o de reales (de punto flotante). Se permiten también constantes octales y hexadecimales. > **2. Constantes Simbólicas:** > las constantes simbólicas tiene un nombre (identificador), y en esto se parecen las variables. Sin embargo, no pueden cambiar de valor a lo largo de la ejecución del programa. En C, se pueden definir mediante el preprocesador. > (Tomado del Manual //"Aprenda Lenguaje ANSI C como si estuviera en Primero"// [|Escuela] superior de > __Ingenieros__ Industriales. Universidad de Navarra. Febrero de 1998).**Ejemplo:** > #define N 100 > #define PI 3.1416 > #define B 45 > Esta directiva (#define) va, inmediatamente después de los #include. Se escribe la directiva, se deja un espacio y se escribe el identificador de la constante, otro espacio y su valor. > NOTA: el lector no debe confundirse, las directivas: #include, #define. Main, no llevan punto y coma, por que no son sentencias. > Recordemos el ejemplo 1.1, y vea que al final de cada sentencia lleva su correspondiente punto y coma: > #include <stdio.h> > #include <conio.h> > main > { > float radio, area; > printf("Radio=\n"); > scanf("%f", &radio); > area=3.14159*radio*radio; > printf("El Area es %f\n\n", area); > getch; > return 0; > } > **Ejemplo:** > { > ... > printf("Hola\n\b"); > ... > } <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Esto es posibles, por que con el punto y coma, le estamos indicando al compilador el fin de una sentencia o instrucción. <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Ejemplo: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">b = c + d; d = 2*k; <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;">**Tipos de Datos en C** <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">Un tipo de dato, se define como //un conjunto de valores que puede tener una variables, junto con ciertas [|operaciones] que se pueden realizar con ellas.// <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: justify;">* [|TIPOS DE DATOS] PREDEFINIDOS |||||||| TABLA CON LOS TIPOS DE DATOS PREDEFINIDOS EN C || <span style="color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px;"><span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;">TABLA 2.1 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> NOTA: El tipo de dato string y bolean NO existen en C. Sin embargo más adelante veremos una forma de cómo hacer uso de las cadenas de texto. <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;"> **Declaración de Variables** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Una Variable, como su nombre lo indica, es capaz de almacenar diferentes valores durante la ejecución del programa, su valor //varía.// Es un lugar en [|la memoria] el cual, posee un nombre (identificador), y un valor asociado. La declaración de variables en C, se hace en minúsculas. Formato: int x; float y; int x = 20; float pi=3.1415; char car = ’M’; char nombre[7]="Manuel"; En el apartado anterior, se explicó, que C, no tiene el tipo de dato llamado string, o mejor conocido como cadenas de texto, pero nosotros podemos hacer uso de ellas, por medio de un //arreglo,// (de lo cual hablaremos con más detalle, posteriormente); pero para declarar este tipo de datos colocamos el tipo de datos, es decir la palabra reservada //char// luego el nombre, e inmediatamente abrimos, entre corchetes, va el número de letras, que contendrá dicha variable. Es muy importante que al momento de declarar el tamaño, sea un número mayor, al verdadero número de letras; por ejemplo, la palabra "Manuel", solo tiene 6 letras, pero debemos declararlo para 7 letras ¿Por qué?. Veámoslo gráficamente, en la memoria, C crea un variable llammada nombre y esta posee la palabra Manuel, así: <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;"> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> en realidad, hay 7 espacios, pero la cuanta llega hasta 6, por que c, toma la primera posición como la posición cero, y para indicar el final de la cadena lo hace con un espacio en blanco. <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;"> **Declaración de Constantes** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Las constantes, como su nombre lo indica, //son valores que se mantiene invariables durante la ejecución del programa.// Su formato es el siguiente: donde const, es una palabra reservada, para indicarle al compilador que se esta declarando una constante**.** const int dia=7; const float pi=3.14159; const char caracter= ‘m’; const char fecha[]="25 de diciembre"; __Especial__ Constantes Simbólicas <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Las constantes simbólicas, se declaran mediante la directiva #define, como se explicó anteriormente. Funcionan de la siguiente manera, cuando C, encuentra el símbolo que representa a la constante, lo sustituye por su respectivo valor. Ejemplo: <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;"> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> NOTA: El lector debe comprender algunas diferencias fundamentales entre la declaratoria const y #define; la primera, va dentro del programa, es decir, dentro de la función main o alguna función definida por el usuario, mientras que #define va en el encabezado, después de los #include, por eso estas no llevan al final el punto y coma. <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;"> **Entrada y Salida Por Consola** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Entrada y Salida por consola: se refiere a las operaciones que se producen en el [|teclado] y en la pantalla de la computadora. En C no hay palabras claves para realizar las [|acciones] de Entrada/Salida, estas se hacen mediante el uso de las funciones de la biblioteca estándar (stadio.h). Para utilizar las funciones de E / S debemos incluir en el programa el archivo de cabecera stdio.h, mediante la declaratoria: <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;"> #include <stdio.h>
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">como su nombre lo indica, estos son los nombres, con los que identificamos las variables, constantes, funciones, [|vectores], etc, de nuestro programa. Para ello debemos tener presente algunas reglas:
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**identificadores:**En todo programa que estemos diseñando en C (o en cualquier otro lenguaje de programación); es necesario insertar ciertos comentarios en el código, para que en posteriores modificaciones y cuando se realice el mantenimiento, podamos recordar cosas importantes ya que, en los comentarios, podemos incluir aspectos importantes del programas, explicaciones del funcionamiento de las sentencias, etc.
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**Comentarios**Permite que, el pre-procesador, incluya funciones proporcionadas por el fabricante, a nuestro programa. Ejemplo:
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**La Directiva #include**permite definir constantes simbólicas. Pero hasta ahora ha sido poco lo que hemos hablado acerca de las constantes, es por ello que en aprovechando, este especio; dedicaré unas cuantas líneas para aclarar ello.
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**la directiva #define**/ ! % ^ & *  - + {} [] \ ; : <> ¿.
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**Signos de Puntuación y de Separación**Al momento de programar en C, esta es una regla de [|oro], y la causa por la cual nuestro programa puede darnos muchos errores de sintaxis, cuando se omite, al final de cada sentencia un punto y coma . Ya que con ello le indicamos al compilador que ha finalizado una sentencia.
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**Todas las Instrucciones o sentencias del programa terminan con un punto y coma **Esta consideración toma mayor auge, cuando veamos las instrucciones anidadas en condiciones, ciclos, etc.
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**Todo Bloque de Instrucciones debe ir entre llaves**
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**En una línea se pueden escribir más de una instrucción separada por un punto y coma**
 * >ENTEROS: numeros completos y sus negativos ||
 * **Palabra reservada:** || **Ejemplo** || **Tamaño (byte)** || **Rango de valores** ||
 * int || -850 || 2 || -32767 a 32767 ||
 * VARIANTES DE ENTEROS ||
 * short int || -10 || 1 || -128 a 127 ||
 * unsigned int || 45689 || 2 || 0 a 65535 ||
 * long int || 588458 || 4 || -2147483648 a 2147483647 ||
 * unsigned long || 20000 || 4 || 0 a 4294967295 ||
 * >REALES: números con decimales o punto flotante ||
 * **Palabra reservada:** || **Ejemplo** || **Tamaño (byte)** || **Rango de valores** ||
 * float || 85 || 4 || 3.4x10-38 a 3.4x1038 ||
 * VARIANTES DE LOS REALES ||
 * double || 0.0058 || 8 || 1.7x10-308 a 1.7x10308 ||
 * long double || 1.00E-07 || 10 || 3.4x10-4932 a 1.1x104932 ||
 * > [|CARÁCTER] : letras, digitos, [|símbolos], signos de puntuación. ||
 * **Palabra reservada:** || **Ejemplo** || **Tamaño (byte)** || **Rango de valores** ||
 * char || 'O' || 1 || 0 ......255 ||
 * //Tipo_de_dato nombre_de_la_variable;//**
 * Ejemplos:**
 * Declare una variable de tipo entero y otra de tipo real, una con el nombre de "x" y otra con el identificador "y":
 * Declare una variable de tipo entero llamada moon, e inicialícela con un valor de 20
 * Declare una variable de tipo real, llamada Pi, e inicialícela con una valor de 3.1415
 * Declare una variable de tipo caracrter y asígnele el valor de "M"
 * Declare una variable llamada nombre, que contenga su nombre:
 * Explicación:**
 * const** tipo_de_dato nombre= valor;
 * Ejemplo:**
 * Caso**
 * 1) define N 150
 * 2) define PI 3.1416
 * 3) define P 50

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Las Funciones de E / S más simples son getchar que lee un carácter del teclado, espera un retorno de carro (¿ ), es decir un //enter// y el eco aparece. Es decir la tecla presionada. Algunas variaciones: estas instrucciones se encuentran en la biblioteca //conio.h// Veamos un ejemplo: Programa que espera que se presiona una tecla, la muestra en pantalla, y además muestra el carácter siguiente: Ejemplo 2.1: main { char car; clrscr; /*Se encarga de borrar la pantalla por eso se llama claer screen*/ car=getchar; putchar(car+1); getch; return 0; } Ejemplo 2.2: main { char x; /*Declaramos x como caracter*/ printf("Para Finalizar Presione cualquier Tecla:"); x= getchar;/*Captura y muestra el caracter presionado*/ getch;/*Espera a que se presione cualquier otra tecla para finalizar*/ return 0; } Una Cadena, es una frase, compuesta por varias palabras. En C, podemos hacer uso de las cadenas, mediante, la sentencia: Ejemplo 2.3 Diseñe un programa en C, que lea su nombre; lo salude y mande a impresión su nombre, usando gets e y puts main { char nombre[40]; puts("digite su nombre:"); gets(nombre); puts("BIENVENIDO:"); puts(nombre); getch; return 0; } NOTA: No haré mucho énfasis en estas instrucciones, ya que más adelante, veremos las instrucciones scanf y printf, que son mucho más completas. Las funciones gets, puts, getch, etc; son utilizadas, en una forma un poco rudimentaria, sin embargo; C posee otra serie de funciones, que son más completas, las cuales nos permiten leer e imprimir (en pantalla), datos con un formato determinado, el cual ha sido definido por el programador. Se utiliza para imprimir en pantalla cadenas de texto solas, o mandar a pantalla el valor de alguna variable, o constante, o una combinación de las anteriores. Su formato es el siguiente: En donde: Cadena de control: contiene códigos de formato que se asocian con los tipos de datos contenidos en las variables.
 * putchar:** Imprime un carácter en la pantalla, en la posición actual del cursor.
 * getche:** Aparece el Eco
 * getch:** No aparece el eco
 * 1) include <stdio.h>
 * 2) include <conio.h>
 * 1) include <stdio.h>
 * 2) include <conio.h>
 * Entrada / Salida de Cadenas**
 * gets:** Lee una cadena de carácter introducido por el teclado. Se puede introducir caracteres hasta que se de un retorno de carro, (enter); el cual no es parte de la cadena; en su lugar se coloca un terminador nulo \0.
 * puts:** Imprime en pantalla, el argumento guardado en la variable que se manda a impresión.
 * 1) include <stdio.h>
 * 2) include <conio.h>
 * Entrada / Salida Por Consola con Formato**
 * Salida Hacia Pantalla [printf]**
 * Printf(**"cadena de control", nombre_de_variables**);**

<span style="color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px;"><span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;">TABLA 2.2 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo: Int suma=10; Printf("La suma es %d", suma); Declaramos primero la variable como entero, con un valor de 10, luego la función printf, el mensaje va entre comillas dobles, luego en el lugar que queremos que aparezca el valor, colocamos el formato de la variable, cerramos comillas, luego una coma y el nombre de la variable. Es importante recalcar, que en la posición que coloquemos el formato es donde aparecerá el valor de la variable en este caso, 10. Ejemplo: Char nombre[7]="Manuel"; printf("%s es en creador de este manual", nombre); NOTA: el número de argumentos que tendrá la función printf es indefinido, por lo que se puede transmitir cuantos datos sean necesarios. Ejemplo: Int x=12, y=15; char z=’D’; float v=10.2563; printf("Estos son números %d %d %f; y esta es una letra %c", x,y,v,z); También podemos hacer algunos arreglos, al formato de salida, por ejemplo, si deseamos imprimir un número real justificado a la izquierda podemos colocar: <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;"> printf("%-f", z); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> para justificar colocarle signo: %+f %20f >> Longitud numérica del campo %.2f >>Imprime el valor con sólo dos decimales Indica que debe ejecutar algo extraordinario.
 * **Código** || **Formato** ||
 * %d || Un entero ||
 * %i || Un entero ||
 * %c || Una caracter ||
 * %s || Una cadena ||
 * %f || Un real ||
 * %ld || Entero largo ||
 * %u || Decimal sin signo ||
 * %lf || Doble posición ||
 * %h || Entero corto ||
 * %o || Octal ||
 * %x || Hexadecimal ||
 * %e || Notación Científica ||
 * %p || Puntero ||
 * %% || Imprime Porcentaje ||
 * Explicación:**
 * Secuencias de Escapes**

__alarma__ del sistema || <span style="color: #333333; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px;"><span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-align: center;">TABLA 2.3 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplos: 1) printf("Manuel \n Antonio \n Ortez\n\n); 2) int x=15; printf("El Valor de la variable es %d\n\n", x); 3) float x=8.5689, pi=3.1416; printf("El valor de x es %.2f\t\n",x); printf("\t Y el valor de pi es %.2f\n\n", pi); Se realiza mediante la función scanf, su formato es: Ejemplo 2.4 Diseñe un programa que guarde y muestre la nota del __examen__ final de 3 alumnos <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">#include <stdio.h> main { float n1, n2, n3; char nom1[10], nom2[10], nom3[10]; printf("Introduzca el Nombre del Primer alumno:\n"); scanf("%s", nom1); printf("Introduzca la nota de este alumno:\n"); scanf("%f", &n1); printf("Digite el nombre del segundo alumno:\n"); scanf("%s", nom2); printf("Su nota es:\n"); scanf("%f", &n2); printf("Finalmente el ultimo alumno es:\n"); scanf("%s", nom3); printf("Y su nota es:\n"); scanf("%f", &n3); getch; return 0; }
 * **Carácter de Escape** || **Explicación** ||
 * \n || Simula un Enter. Se utiliza para dejar una línea de por medio ||
 * \t || Tabulador horizontal. Mueve el cursor al próximo tabulador ||
 * \v || Tabulador vertical. ||
 * \a || Hace sonar la
 * \\ || Imprime un carácter de diagonal invertida ||
 * \? || Imprime el carácter del signo de interrogación ||
 * \" || Imprime una doble comilla ||
 * Entrada Desde Teclado**
 * scanf(**"Cadena de control", [|Dirección] y nombre de la variable**);**
 * 1) include <conio.h>

Primero, iniciamos con las directivas del preprocesador: Con la cual le indicamos al compilador, que de su librería añada a nuestro programa las funciones estándar de entrada y salida; así como las entradas y __salidas__ por consola (stadio.h y conio.h, respectivamente). <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Luego declaramos la variables, que contendrán las notas como reales (o de punto flotante: float n1, n2, n3; Ya que, las notas pueden ser deciamales, por ejemplo 9.6, 8.5; etc. Luego declaramos las variables, que contendrán las notas, caba aclarar que al momento de las declaraciones las podemos hacer en el orden que deseemos, pueden ser primeros los tipo char y luego los float, o viceversa, pero teniendo el cuidado que las variables que contendrán las nombres lleven la longitud máxima entre corchetes, para nuestro caso, 10. ( [10] ). Posteriormente, mostramos en pantalla, un mensaje con el cual le indicamos al usuario que introduzca los datos respectivos: printf("Introduzca el Nombre del Primer alumno:\n"); A continuación, va la función scanf, primero y entre comillas el tipo de dato que va a leer: scanf("%s", nom1); como puede notarse, va a leer la cadena de texto que contendrá la variable nom1. cabe aclarar, que cuando se van a leer cadenas de texto, no es necesario colocar la dirección (&), lo cual no sucede con los otros tipos de datos: scanf("%f", &n1); Después de haber leído los datos, espera a que se presiones cualquier tecla para finalizar la ejecución del programa. Ejemplo 2.5 Programa que imprime dos veces, la cadena de texto que se ha introducido: main { char cadena[15]; printf("Digite la cadena:\n\n"); scanf("%s", cadena); printf("\n\t LA CADENA ES LA SIGUIENTE:\n\n"); printf("***\n");** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">getch; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> return 0; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> } <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Es importante, que el lector, intente correr, en su máquina estos ejemplos, para que comprenda con mayor facilidad. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> NOTA: Cuando la entrada, es una cadena de carácter, no es necesario el operador direccional (&). El nombre de la cadena contiene la dirección. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> scanf, finaliza la captación de la cadena al encontrar un espacio en blanco o fin de línea. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> char cadena[15]; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("Digite la cadena:\n\n"); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> scanf("%s", cadena); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Casos Especiales** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> * [|JUEGO] DE INSPECCIÓN: Define Un conjunto de caracteres que puede leerse utilizando scanf. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Así: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **%[**ABC**]s:** A, B y C son los únicos caracteres que puede leer al encontrar uno diferente, finaliza con un valor nulo. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **%[** A-Z **]s:** También pueden ser rangos de carácter en este caso sólo acepta mayúsculas. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> *JUEGO INVERSO: Aquí se declaran que caracteres NO puede tomar, la función scanf, se utiliza el circunflejo (^), que acepta cualquiera menos... <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **%[**^\n**]s:** Acepta cualquier carácter menos un salto de línea. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **%[**^0-9**]s:** Acepta cualquier carácter menos del 0 al 9. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Scanf("%[0-9]s", &edad); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Cuestionario** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">**Ejercicios:** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">4. Diseñe un programa, en el cual se introduzcan el nombre y el peso y de un alumno, y luego la muestre en pantalla. El Nombre debe incluir el apellido, y en el campo del peso, solo deben incluir valores numéricos. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 5. Diseñe un programe en C, en el cual después de haber introducido, una tabla de multiplicación cualquiera, imprima ésta en forma de tabla: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 2x2=4 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 2x3=6 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 2x4=8 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">. . <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 2x10=20 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 6. Realice el ejercicio 2.5, tal como se muestra, luego ejecútalo, nuevamente, pero quitándole al código las sentencias: getch y return 0. ¿Qué observas? Realiza tus propias conclusiones de ello y de la importancia de estas dos funciones. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Hasta ahora, prácticamente hemos visto, como el [|protocolo] esencial, para realizar un programa en C; y algunas funciones muy importantes, como son las funciones de lectura e impresión (scanf y printf, respectivamente). <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ahora veremos, otros aspectos fundamentales, como lo son los operadores, que pueden ser: lógicos, [|matemáticos], relacionales, etc. Las expresiones, y las estructuras: de secuenciación, de [|selección] y de iteración. **Operadores** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Un operador, es un símbolo que indica al compilador que se lleve a cabo ciertas manipulaciones matemáticas o lógicas. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Operadores Aritméticos**
 * Explicación:**
 * 1) include <stdio.h>
 * 2) include <conio.h>
 * 1) include <stdio.h>
 * 2) include <conio.h>
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">printf("%s\n", cadena); **
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">printf("%s\n", cadena); **
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">printf(" ***\n");
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Mencione y Explique que es la lógica estructurada:_
 * 2) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Para que sirven las funciones getch y putchar: ___
 * 3) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Menciones las diferencias fundamentales entre las funciones de entrada y salida por consola, con las funciones de entrada y salida por consola con formato: ___
 * 4) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Escriba algunas restricciones que deben cumplir los Identificadores: ___
 * 5) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">¿Cuál es la siferencia entre el tipo de dato %c, y el tipo de dato %s?:_
 * 6) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Para que sirve la directiva <stdio.h>: ___
 * 7) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">¿Y la directiva <conio.h>? ___
 * 8) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">¿Para que sirve a declaratoria #define?: __
 * 9) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Para que sirve el punto y coma  en C: ___
 * 10) __<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">En C, no existe el tipo de dato string; sin embargo, podemos hacer uso de las cadenas de texto, ¿Por qué?. Explique: ___
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Haciendo uso de las funciones gets y puts, diseñe un programa en C, que se lea el nombre del usuario y lo muestre en pantalla junto con un saludo.
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Diseñe un programa en C, que lea y muestre en pantalla el valor de tres variables de tipo Entero.
 * 3) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Diseñe un programa que muestre, los diferentes tipos de datos, usados en C. Primero, debe indicársele al usuario que introduzca un valor, de un tipo dado; luego y después de haber introducido valores en todas las variables, debe imprimirse el contenido de ellas, junto con un mensaje que indique, el tipo de dato:
 * Capitulo III "Operadores, Expresiones y [|Estructuras] "**

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">TABLA 3.1 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Todos estos operadores se pueden aplicar a constantes, variables y expresiones. El resultado es el que se obtiene de aplicar la operación correspondiente entre los dos operandos. (Tomado de "Aprenda Lenguaje ANSII C, como si estuviera en primero". Pag. 25). <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Los operandos sobre los que actúan los operadores aritméticos deben ser valores **Numéricos,** es decir datos enteros, punto flotante o de carácter (Int, float y char, respectivamente). <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Una aclaración especial, merece el operador "%", que indica el resto de la división entera. Veámoslo con un ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Si dividimos 30/3, su cociente es 10, y su residuo es 0. Si dividimos 25/3, su cociente es 8, y tiene un residuo de 1. Entonces de lo que se encarga, este operador, es de devolvernos el valor del residuo de una división. Cabe aclarar que los datos deben de ser tipo entero, y su sintaxis es la siguiente: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 25%3 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> NOTA: Este Operador, NO puede aplicarse a los datos de tipo float. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Una **Expresión,** Es un conjunto de variable, constantes y otras expresiones más sencillas, relacionadas por algún tipo de operador. De las cuales hablaremos con más detalle, posteriormente. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Operadores de Relaciónales, Lógicos y Unarios** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Estos Operadores, los podemos dividir, en varios tipos, entre los cuales están:
 * **Operador** || **Propósito** ||
 * + || Suma ||
 * **-** || Resta ||
 * * || Multiplicación ||
 * **/** || División ||
 * **%** || Resto de la división entera ||
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">OPERADORES UNARIOS: C, incluye una [|clase] de operadores que actúan sobre un solo operador para producir un nuevo valor. Por eso el nombre de unarios, por que para poder funcionar solo necesitan de un operador.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">TABLE 3.2 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Int i=1, x=5; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Printf("%d", ++i); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Printf("%d", - -i); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Estos operadores, el incremento y el decremento, pueden utilizarse de dos maneras, eso depende del orden de aparición de los mismos: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> -Si el operador precede al operando el valor del operando se modifica antes de ser utilizado. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> -Si el operador aparece después del operando, este se modifica después de ser utilizado. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo 3.1: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Utilizando los operadores Unarios: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> #include <stdio.h> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> #include <conio.h> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> main <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> { <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> int x=5; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("\tPRIMERO OBSERVAREMOS EL RESULTADO DE ++X\n\n"); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", ++x); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", ++x); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", ++x); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("\tAHORA OBSERVAREMOS EL RESULTADO DE --X\n\n"); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", --x); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", --x); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", --x); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("\tEL RESULTADO DE X++ ES:\n\n"); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", x++); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", x++); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("\tY EL DE X-- ES:\n\n"); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", x--); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("%d\n", x--); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> getch; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> return 0; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> }
 * **Operador** || **Propósito** ||
 * - || Menos Unario: Es el signo menos que va delante de una variable, constante o expresión. ||
 * ++ || Operador Incremento: Hace que la variable, constante o expresión se aumente en uno. ||
 * -- || Operador Decremento: Hace que su variable, constante o expresión disminuya en uno. ||
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">OPERADORES RELACIONALES O DE COMPARACIÓN:

TABLA 3.3 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Estos Operadores se encuentran dentro del mismo grupo de procedencia, que es menor que la de los Operadores Unarios y aritméticos. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> La Asociatividad de éstos es de izquierda a derecha. Cabe mencionar la diferencia entre los operadores = y ==, el primero (=), se utiliza para asignaciones de valores, mientras que el otro (==), se usa para comparaciones. Ejemplo: Si x>5, entonces x==6. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 3. OPERADORES LÓGICOS: Estos son los que nos permiten unir varias comparaciones: 10>5 y 6==6. Los operadores lógicos son: AND (&&), OR (||), NOT(!). <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Operador && (AND, en [|castellano] Y): Devuelve un 1 si se cumplen dos condiciones. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf( "Resultado: %i", (10==10 && 5>2 ); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Operador || (OR, en castellano O): Devuelve un 1 si se cumple una de las dos condiciones. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Operador ! (NOT, negación): Si la condición se cumple NOT hace que no se cumpla y viceversa. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ver el capítulo Sentencias, sección Notas sobre las condiciones para más información. (Tomado de "Curso de C" por Gorka Urrutia). <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Operadores de Asignación** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Los Operadores de Asignación, como su nombre lo indica, se encargan de atribuirle, asignarle, confinarle, etc a una variable, el resultado de una expresión o el valor de otra variable. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 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;**
 * **Operador** || **Significado** ||
 * < || Menor que ||
 * <= || Menor o igual que ||
 * > || Mayor que ||
 * >= || Mayor o igual que ||
 * == || Igual que (Para las comparaciones) ||
 * ! = || No igual a ||

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Donde el identificador representa por lo general una variable y una constante, una variable o una expresión más compleja. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 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. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Ejemplo:** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> *Un valor en coma flotante puede ser truncado, se asigna a un identificador entero. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> *Un valor de doble precisión puede ser redondeado si se asigna a un identificador de coma flotante. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> En C, están permitidas las asignaciones múltiples, así: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Identificador1 = identificador2 = identificador3.....= identificadorn=expresión** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> C, posee además los siguientes operadores de asignación:

TABLA 3.4 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Los Operadores de asignación tiene menos procedencia que el resto de los operadores y tienen asociatividad de izquierda a derecha. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ejemplo 3.2 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Programa que calcula el valor de la expresión X^2+X+1 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> #include <stdio.h> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> #include <conio.h> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> main <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> { <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> float x, y, z; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> clrscr; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("\tPROGRAMA QUE CALCULA EL VALOR DE LA ECUACION X^2+X+1\n\n"); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("Introduzaca el valor de x:\n"); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> scanf("%f", &x); <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> y=x*x; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> z=y+x+1; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> printf("**\n");** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">getch; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> return 0; <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> } <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> **Jerarquía de Operadores** +,- || TABLA 3.5 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">REGLAS DE JERARQUÍA:
 * **Operador** || **Explicación** ||
 * += || Expresión1+=expresión2. Equivale a: expresión1=expresión1 + expresión2 ||
 * -= || i-=1. equivale a: i=i-1 ||
 * *= || J*=2. Equivale a: j=j*2 ||
 * /= || K/=m, equivale a: k=k/m ||
 * %= || P%n. Equivale a: p=p%n ||
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">printf(" **El valor de la expresi¢n es: %.2f**\n", z);**
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">printf(" **\n");
 * **Categoría del Operador** || **Operador** ||
 * 1. Operadores Unarios || -, ++, --, ! ||
 * 2.Operadores Aritméticos:
 * 1) Multiplicación, división y Resto entero
 * 2) Suma y Resta || *, /, %
 * 3. Operadores Relacionales || <, <=, >, >= ||
 * 4. Operadores de Igualdad || ==, != ||
 * 5. Operadores Lógicos || && (Y Lógico), || (NO Lógico) ||
 * 6. Operadores de Asignación || =, +=, -=, *=, /?, %=, ||
 * 1) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Se ejecuta primero el operador de más alta jerarquía
 * 2) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Operadores que tienen igual jerarquía se evalúan de izquierda a derecha
 * 3) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">si existen expresiones encerradas entre paréntesis, estas se evalúan primero.
 * 4) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">si existen paréntesis anidados se evalúan primero los paréntesis más internos.

**EXPRESIONES** <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">(Tomado de "Aprenda ANSII C como si estuviera en Primero", Universidad de Navarra. 1998). <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Ya han aparecido algunos ejemplos del lenguaje C en las secciones precedentes. Una //Expresión// es una combinación de variables y/o constantes, y operadores. La expresión es equivalente al resultado que proporciona al aplicar sus operadores a sus operandos. Por ejemplo 1 + 5 es una expresión formada por dos operandos (1 y 5)y el operador (el +); esta expresión es equivalente al valor 6, por lo cual quiere decir que allí donde esta expresión aparece en el programa, en el momento de la ejecución es evaluada y sustituida por su resultado. Una expresión puede estar formada por otras expresiones más sencillas, y puede contener paréntesis de varios niveles agrupando distintos términos. En C, existen diferentes tipos de expresiones. El cual depende del tipo de operadores que se estén utilizando. Por ejemplo: Expresiones lógicas, aritméticas, etc <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Se debe hacer hincapié en que, si existen algunas expresiones encerradas entre paréntesis, estas se evalúan primero. Ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 9*(8+5) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> primero sumamos 8+5, cuyo resultado es 13, y este lo multiplicamos por nueve, con lo que la expresión anterior, da cómo resultado: 117. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> Si existen expresiones en paréntesis anidadas, es decir, que uno se encuentra dentro de otros paréntesis, se evalúan los más internos. Ejemplo: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> 2*((20/(12-2))+5) <span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;"> se evalúa la operación 12-2, que da como resultado 10, luego se divide 20, entre el resultado anterior, es decir 10. el resultado es 2, y a este número se le suma 5, obteniendo 7. ahora se multiplica por dos, para determinar así que la expresión anterior es igual a 14.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">Leer más: [|http://www.monografias.com/trabajos33/programacion-lenguaje-c/programacion-lenguaje-c.shtml#ixzz2rKzt5wsD]

<span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> **__ ALGORITMOS - PSEUDOCODIGO Y PROGRAMAS C++ __** __DEFINICION DE ALGORITMO__ Conjunto de pasos o acciones que se realizan de manera ordenada para llegar a la solución de un problema. Conjunto de sentencias/instrucciones en lenguaje nativo, las cuales expresan la lógica para la resolución de un problema. ** Conclusión ** : Es un método para resolver un problema. La resolución de un problema exige el diseño de un algoritmo que resuelva el problema. __ ETAPAS EN LA RESOLUCIÓN DE UN PROBLEMA USANDO UNA COMPUTADORA __ Problema à Algoritmo à Programa en computadora //**Diseño del algoritmo** .//- Describe los pasos a seguir para la resolución de un problema dado (análisis y desarrollo del algoritmo) //**Programa en computadora**// .- El algoritmo se expresa mediante un lenguaje de programación en un programa. __ TIPOS DE ALGORITMOS: __ **__ Algoritmo Cualitativo. __** - Son los algoritmos descritos mediante palabras. Ejm: __** Algoritmo Cuantitativo. **__ - Son los algoritmos que se basan en cálculos numéricos. Ejm: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> __ CARACTERÍSTICAS DE UN ALGORITMO .- __ Los algoritmos deben tener estas características: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> __ PARTES DE UN ALGORITMO __ En un algoritmo se definen tres partes: Entrada, Proceso y Salida. Fig. 1 Partes de un algoritmo o programa. **Ejm Cuantitativo**: Leer la base y altura de un rectángulo y mostrar el area en pantalla. //Entrada// //(Lectura de datos)////:// Se conocen los valores de la // Base // y la // Altura // //Proceso// //(Calculo de Area)////:// Area = Base * Altura //Salida// //(Muestra los resultados)////:// Muestra valor del Area **Ejm Cualitativo:** Un socio de una biblioteca solicita un libro para lectura, si el libro se encuentra se le presta el libro, SINO se devuelve la ficha de pedido. LEER Ficha de pedido EXAMINAR el Estante SI el libro esta en Estante ENTONCES Se acepta el pedido Se recepciona Carnet de socio. SINO Se niega el pedido Se devuelve Ficha de Pedido FIN SI __ DATOS – TIPOS DE DATOS __ __ DEFINICION DE DATOS __ Para la computadora es un conjunto o secuencia de bits (digitos 0 y 1 en binario). Sin embargo los lenguajes de alto nivel permiten ignorar los detalles de la representación interna (basándose en la abstracción ). __**TIPOS DE DATOS**__ Existen dos tipos de datos : los simples ( sin estructura ) y los compuestos (estructurados) Los tipos de **//datos simples//** (sin estructura) **:** a) //**Numéricos**// ( Entero y Real). b) //**Lógicos o boolean.**// c) //**Carácter.**// Entre los tipos de **//datos compuestos//** se tiene: //**cadena de caracteres.**// __** Numérico entero **__ ( de punto o coma fijo ) es un subconjunto de los números enteros (+ o -).  Ejm: 5 -56 1340 17 -14 Los máximos y mínimos suelen ser: -32768 a 32767 __**Numérico real**__ (punto o coma flotante) es un subconjunto de los números reales (+ o -) Ejm: 0.08 3.7456 -53.456 3.0  <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial; font-size: medium; text-align: justify;">**Tabla 1.** Notación Científica En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos numéricos: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial; font-size: medium; text-align: justify;">**Tabla 2.** Declaración de variables que almacenan tipos de datos numericos enteros y reales Dato que sólo puede tomar dos valores: **true** (verdadero o 1) y **false** (falso o 0). Se usa para representar las alternativas a determinadas condiciones: Ejm: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial; font-size: medium; text-align: justify;">**Tabla 3.** Ejemplos de variables booleanas. En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos booleanos: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> **Tabla 4.** Declaracion de variables que almacenan tipos de datos boolean (que pueden tomar dos valores true o false) ** c) Datos carácter ** Conjunto finito y ordenado de caracteres que la computadora reconoce. Pueden ser:
 * La elaboración de una receta de cocina
 * El tejido a mano de una chompa.
 * Búsqueda de un numero telefónico.
 * El cambio de una llanta
 * El cambio de un foco quemado.
 * Pasos a seguir para resolver una ecuación de segundo grado.
 * Pasos a seguir para calcular los sueldos de los empleados de una empresa.
 * Instrucciones para calcular los impuestos a pagar de los vecinos de un municipio.
 * Indicar un orden a seguir en cada uno de sus pasos.
 * Ser definido (confiable), si se ejecuta dos veces debe lograrse el mismo resultado.
 * Ser finito, es decir terminar en un número finito de pasos.
 * a) __Datos numéricos__** .- Conjunto de los valores numéricos. Pueden representarse en dos formas:
 * **__ Notación científica: __** || __** Mantisa exponente **__ ||
 * 67 520 000 000 000 000 000 || = 6.752 x 1019 ||
 * 0.000 000 000 000 000 234 123 || = 2.34123 x 10-16 ||
 * ** Algoritmo ** |||| ** En C++ ** ||
 * Tipo de dato || variables || Tipo de dato || variables ||
 * **e****ntero** numeroPersonas |||| **int** numeroPersonas ; ||
 * **e****ntero** numeroCajas |||| **int** numeroCajas; ||
 * ** ? ** El **numeroPersonas** y **numeroCajas** almacenan datos **enteros.** ||
 * **real** talla |||| **double** talla; ||
 * **real** peso, talla, promPonderado |||| **double** peso, talla, promPonderado; ||
 * ** ? ** La **talla, peso y PromPonderado** almacenan datos **reales.** ||
 * ** & **Desea conocer mas sobre tipos numericos en C++ **?** ||
 * b) __Datos Lógicos__** __(o booleanos)__
 * **Ejm** |||| **Datos****:** ||
 * Opcion_continuar || Verdadero || Falso ||
 * Condición_de_recepción_de_carta || Falso || Verdadero ||
 * Estado_cancelación_de_factura || Verdadero || Falso ||
 * Mayoria_de_edad || Falso || Verdadero ||
 * Empleado_de_licencia || Verdadero || Falso ||
 * ** Algoritmo ** |||| ** En C++ ** ||
 * Tipo de dato || variables || Tipo de dato || variables ||
 * **boolean** opcionCon |||| **bool** opcionCon; ||
 * **boolean** condicionRec |||| **bool** condicionRec; ||
 * **boolean** estadoFac |||| **bool** estadoFac; ||
 * **boolean** licenciaEmp |||| **bool** licenciaEmp; ||
 * **?** //**opcionCon, condicionRec, estadoFac, licenciaEmp**// almacenan datos **booleanos o lógicos.** ||
 * ** & **Desea conocer mas sobre tipos **numericos** en C++ **?** ||

<span style="background-color: #ffffff; color: #333333; display: block; font-family: Arial; font-size: medium; text-align: justify;">**Tabla 5.** Datos caracter que la computadora reconoce (codigos **ASCII**) En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos de tipo caracter: <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> **Tabla 6** Ejemplos de declaración de variables que almacenan tipos de datos caracter. **__ Datos Compuestos: __** Una cadena de caracteres (//**cadena o**// //**string**//) sucesión de caracteres, que se encuentran delimitados por apostrofes simples(‘) o dobles(“). Longitud de una cadena, es el numero de caracteres comprendidos entre los separadores o delimitadores. Ejm: **‘HOLA AMIGOS’** Longitud = 11 Ejm: **“MIURA FERNÁNDEZ”** Longitud = 15 En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos de tipo cadena de caracteres o cadena: Segun la lectura, se pueden leer datos con espacios en //blanco// o //no//. Por ejemplo: Edgar García Fernández (hay que usar gets para leer este dato o con cin<<para leer solo Edgar ) **? //apellidos//** pueden asignarseles datos con espacios en blanco. || <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> **Tabla 7.** Ejemplos de varaibles cadenas de caracteres que almacenan una cadena de caracteres o string __ CONSTANTES Y VARIABLES __ __ **CONSTANTES** __ Espacio de la memoria para almacenar un dato que permanece sin cambio durante la ejecución del programa. Puede ser : <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> Ejm: PI = 3.14159 Ejm: Prefijo = “Srta. “ Ejm: TasaIgv = 0.18 Ejm: Prof = "Dr. " **Fig. 2.** Ejemplos de constantes (espacios de memoria). <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> **Tabla 8**. Declaración de constantes de diversos tipos. **__ VARIABLES __** Espacio de la memoria para almacenar un dato que puede cambiar o no durante la ejecución de un programa. Puede ser : numérico en el que solo se pueden almacenar valores (dígitos) o alfanumérico en el que puede almacenarse cualquier carácter (dígito, letra o símbolo especial) Se le identifica por los siguientes **//atributos://** // El **Nombre** // (o identificador //)// que se le asigna, El **//tipo//** que describe el uso de la variable y El **//valor//** de la variable que es la cantidad que tiene asociada en un determinado momento Es decir, la variable que representa la edad de una persona se identifica por el nombre E//dad// ; los datos que guardan son de //tipo real// y su //valor// en un momento determinado puede ser 25. Nota: Los nombres de las variables deben ser significativos, y tener relación con el objeto que representan. Asi si se desea almacenar pesos, a dicha variable se le asignará el nombre de **//pesos//**. Una variable de un tipo determinado solo puede tomar valores de ese tipo. __** Tipos de Variables **__ <span style="background-color: #ffffff; color: #333333; display: block; font-family: Verdana,Arial,sans-serif; font-size: 12px; text-align: justify;"> Las variables puede ser identificadas de acuerdo a la función que asume en el algoritmo, como: ** a) __Contador__ ** :  Campo o variable que sirve para llevar una cuenta con incrementos constantes, generalmente de 1 en 1.  Ejm: NroPerMayEdad, variable que cuenta el número de personas mayores de edad Requiere de las siguientes instrucciones: NroPerMayEdad = 0 //inicializar en cero://  // NroPerMayEdad = NroPerMayEdad + 1  // NroPerMayEdad aumenta en uno  **b) __Acumulador__** : Campo o variable que sirve para llevar una suma o cuenta de diferentes valores(acumular). Ejm: SEdad variable que almacena la suma de las edades de una cantidad de personas. Requiere de las siguientes instrucciones: 1. SEdad = 0 //Inicializa en cero// 2. SEdad = SEdad + Edad SEdad se incrementa en el valor de Edad Inicializar, significa poner en blanco o en cero una variable o campo antes de su utilización. Los acumuladores y contadores por lo general se inicializan en cero. La diferencia entre ellos se puede apreciar en la siguiente vista Campo que almacena temporalmente el resultado de alguna operación. No es variable de entrada ni de salida. Ejm: Si me piden ingresar el radio y altura de un cilindro y requieren calcular el volumen del cilindro. El Area de la base ABase requerida seria una variable de trabajo porque no es variable ni de entrada ni de salida. **Fig. 4**. Ejemplo de variables (de entrada, de salida y de trabajo) __ FUNCIONES ESTÁNDAR ( INTERNAS ) __ Son funciones que vienen con todos los lenguajes de programación. Se representa así; **Fig. 5.** **Definición** de la función **//NombreFunción//** **Fig. 6.** **Llamada** de la función //**NombreFunción**//, definida anteriormente Esta es la llamada a la función, a la que se envia los argumentos (valores de variables o constantes o referencias) **en C++** || real **abs** (real p) || ** int ****abs**( ** int p ** ) ** double ****fabs**(** double dp ) **) || ** int ** **rand(** **)** // genera entre 0 y maxInt || **Tabla 9.** Definición de las funciones estandar en seudocódigo y en C++ Aqui tenemos las funciones estandar en el Lenguaje de programación C++ :  r = **abs** (**x**) ||  int x, r;   double x, r; || ** r = abs( x ); ** r=x 1/2 = sqrt(**x**) ||  double x, r ; || ** r = sqrt ( x ); ** || r= xn = **pow**(**x,n**) || double x,n,r;  es decir r = xn || r = **pow** (**x,n**); || r = ex = **exp**(**x**) || double x, r ; || ** r = exp( x ); ** || r = **sin** (**x**) || double x, r ; || ** r = sin ( x ); ** || r = cos(**x)** || double x, r ; || ** r = cos( x ); ** || r = **tan**(**x**) || double x, r ; || ** r = tan( x ); ** || r = **atan**(x) || double x, r ; || ** r = atan( x ); ** || r = **log**(**x**) || double x, r ; || ** r = log( x ); ** || r = **log10**(**x**) || double x, r ; || ** r = log10( x ); ** || entero r r = **entero** (**x**) ||  double x;   int r; || ** r = int (x); ** || **Tabla 10.** Llamada de las funciones estandar en seudocódigo y en C++ __** EXPRESIONES ARITMÉTICAS **__ Son combinaciones de constantes y/o variables unidos por operadores aritméticos paréntesis y nombres de funciones especiales. Exponente Entero || Entero o real Entero o real || Tabla 11. **Operadores aritméticos, simbolo y sgnificado en pseudocodigo..** Los Operadores en algoritmos y en C++ ** Ddo y Dsor se declaran enteros
 * ** Pueden ser: ** |||||||||||||||||| ** Datos: ** ||
 * **//__ Alfabéticos __// : ** || 'A' || 'B' || 'c' || 'E' || 'K' || 'a' || .... || 'z' || 'Z' ||
 * **//__ Numéricos __// : ** || '0' || '1' || '2' || '3' || '4' || '5' || ... || '8' || '9' ||
 * **//__ Especiales __// : ** || ' * ' || ' - ' || ' / ' || ' + ' || ' $ ' || '< ' ||  || ' # ' || '@' ||
 * ** Algoritmo ** |||| ** En C++ ** ||
 * Tipo de dato || variables || Tipo de dato || variables ||
 * **caracter** letras |||| **char** letras ; ||
 * **caracter** estCivil, nroMes |||| **char** estCivil, nroMes; ||
 * **caracter** operacion |||| **char** operacion; ||
 * **caracter** opcion |||| **char** opcion; ||
 * **?** //**letras, estCivil, nroMes, operacion, opcion**// almacenan datos **de tipo caracter.** ||
 * ** & **Desea conocer mas sobre tipos caracter C++ **?** ||
 * ** Algoritmo ** |||| ** En C++ ** ||
 * Tipo de dato || variables || Tipo de dato || variables ||
 * **caracter** nombre[30] |||| ** char **nombre[30] ; ||
 * **caracter** profesion[25] |||| **char** profesion[25]; ||
 * **caracter*** apellidos |||| ** char * **apellidos; ||
 * **? //nombre//** //**y profesion**// almacenan cadena de caracteres de hasta 30 y 25 caracteres respectivamente**.**
 * ** & **Desea conocer mas sobre tipos caracter C++ **?** ||
 * **Constante Numérica** que representa un determinado valor o
 * **Constante Alfanumérica** o **literal** que representa cualquier combinación de caracteres (dígito, letra, símbolo especial).
 * **En algoritmos** || **En programación C++** ||
 * const entero x = 500 || ** const ** **int** x = 50; ||
 * const real ti = 0.04 || ** const ** **double** ti = 0.04; ||
 * const caracter Letra = 'A' || ** const char ** Letra = 'A'; ||
 * Fig. 3**. Variables (declaración)
 * c) Variable** **d****e Trabajo** :
 * ** FUNCIONES ARITMETICAS en la definición ** ||
 * ** Algoritmos (pseudocodigo) ** |||| Definición en C++ ||
 * ^  |||| ** tipoRetorno NombreFuncion (t1 p1, . ,tn pn )** ||
 * **N**o**mbreFunción** || ** Descripción ** || ** tipo de parámetro y de retorno en algoritmos ** || ** tipo de parámetro y de retorno **
 * abs(**p**) || valor absoluto, retorna la magnitud de **p** || entero **abs** (entero **p**)
 * sqrt(**p**) || raiz cuadrada, retorna la raiz cuadrada de **p** || real sqrt (real **p**) || **double** **sqrt** (** double ** **p**) ||
 * pow(**p1,p2**) || potencia del parametro **p1** elevado al parametro **p2** || real ** pow ( ** real **p1,** real **p2)** || **double** ** pow ( ** **double** **p1,** **double** **p2)** ||
 * sin(**p**) || seno, retorna el seno de **p** expresado en radianes || real **sin**(real **p**) || **double** **sin**( ** double ** **p**) ||
 * cos(**p**) || coseno, retorna el seno de **p** expresado en radianes || real **cos**(real **p**) || **double** **cos** (** double ** **p)** ||
 * tan(**p**) || tangente, retorna la tangente de **p**expresado en radianes || real **tan** (real **p**) || **double** **tan** ( **double** **p**) ||
 * atan(**p**) || arco tangente, retorna el angulo en radianes cuya tangente es **p** || real **atan** (real **p**) || **double** **atan** ( **double** **p**) ||
 * exp(**p**) || exponente **p**, de e, es decir **e****p** || real **exp(** real **p** **);** || ** double ** **exp** (** double ** **p**) ||
 * log(**p**) || logaritmo neperiano de **p** || real ** log ** (real **p**) || ** double log( double p)** ||
 * log10(**p**) || logaritmo decimal de**p** || real **log10** ** (realp) ** || ** double log10 (double p ) ** ||
 * Random || genera un numero entero aleatorio entre 0 y maxEntero. || entero **rand(** **)** || **srand** inicializa el generador de aleatorios.
 * entero (**p**) || Parte entera de **p** || entero **int** (real **p**) || **int** **int** (** double ** **p**) ||
 * ** FUNCION EN LA LLAMADA (EN EL PROGRAMA PRINCIPAL) ** ||
 * ** ALGORITMOS ** |||| ** LLamada en el LENGUAJE DE PROGRAMACION C++ ** ||
 * ** Definición ** || ** NombreFuncion ** || ** tipos de los Argumentos x y resultado r ** || ** Llamada y asignación en C++ ** ||
 * Valor Absoluto de x || entero x,r
 * r = fabs( x ) ** ||
 * Raiz Cuadrada de x || real x,r
 * potencia real || real x,n,r
 * Exponente de e || real x, r
 * Seno de x || real x,r
 * Coseno de x || real x,r
 * Tangente de x || real x,r
 * Arco Tangente de x || real x,r
 * Logaritmo Natural o neperiano de x || real x,r
 * Logaritmo Decimal de x || real x,r
 * Numero aleatorio || r = random || int r; || ** srand; **
 * r = rand ; ** ||
 * parte_entera (x) || real x
 * __** Operadores Aritméticos **__ ||
 * ** Operador ** || ** S **** ignificado ** || **T** i**pos operandos** || ** T ** **ipo de resultado** ||
 * ^ || Potenciación || Base entera o real
 * + || Adición || Entero o real || Entero o real ||
 * - || Sustracción || Entero o real || Entero o real ||
 * * || Multiplicación || Entero o real || Entero o real ||
 * / || División || Entero o real || Real ||
 * div || division entera || Entero || Entero ||
 * mod || division entera || Entero || Entero ||
 * **OPERADORES ARITMETICOS** || **ALGORITMOS PSEUDOCODIGO** || ** C ++ ** ||
 * Adición o suma || ** + ** || ** + ** ||
 * Resta o Sustraccion || ** - ** || ** - ** ||
 * Multiplicación || ** * ** || ** * ** ||
 * División Real || ** / ** || ** / ** ||
 * Potencia || ** ^ ** ||  ||
 * **Nota :**

Divión entera Ejm: R=Ddo //**MOD**// Dsor || **%** Ejm: R = (Ddo **%** Dsor**)** || Ejm: Q= Ddo **//DIV//** Dsor || Ejm: Q = (Ddo ** / ** Dsor) Q = int (( Ddo - R) / Dsor)) || **Tabla 12.** Operadores aritméticos en seudocódigo y en C++ Ejm: a + b – 3 + sqrt(c)  Ejm: pow(sin(x),2) + pow(cos(x),2)  Ejm: c = sqrt( pow(a,2) + pow(b,2) )  Ejm: exp (3) – exp(2)  Ejm: Ln(2.345)  Ejm: Comision = Ventas*0.05  **//** Objeto **result,** de la estructura **t_div veaDiapositiva**  **t_div** result  resto= result** . rem**  cociente= result** . quot**  __ **Reglas de prioridad** __  1) Las operaciones encerradas entre paréntesis se evaluan primero. Si estan anidados, primero se evaluan los mas internos. 2) Operador exponencial ^ o __ EXPRESIONES RELACIONALES **__ Es un conjunto de variables y/o constantes unidas o relacionadas por operadores relacionales. **Tabla 13.** Operadores Relacionales y su complemento, en pseudocódigo y en C++  Ejm en algoritmos y en lenguaje C++  **Tabla 13.** Ejemplos de operadores Relacionales en pseudocodigo y en C++  __EXPRESIONES LÓGICAS ( o BOOLEANAS **)**__  Se forman combinando constantes lógicas, variables lógicas y otras expresiones lógicas utilizando los operadores lógicos: //**NO, O, Y**//, y los operadores relacionales o de comparación.  **Tabla 14**. Ejemplos de expresiones booleanas  Los algoritmos pueden presentarse en :
 * Ddo = Dsor*Q + R** || Modulo(resto) MOD
 * ^  || Cociente **DIV**
 * : ** & ** Desea conocer mas acerca de el cociente y el resto de una división entera ||
 * 3) Operadores * / **
 * 4) Operadores + - **
 * **__ OPERADORES RELACIONALES __** ||
 * **algoritmos** |||| ** Significado ** |||| ** En lenguaje C++ ** ||
 * **Operador** || ** Complemento ** || **Operador** || ** Complemento ** || **Operador** || ** Complemento ** ||
 * **<** || **> =** || menor que || mayor o igual que || **<** || **> =** ||
 * **<=** || **>** || menor o igual que || mayor que || **< =** || **>** ||
 * **>** || **< =** || mayor que || menor o igual que || **>** || **< =** ||
 * **>=** || **<** || mayor o igual que || menor que || **> =** || **<** ||
 * **=** || **¹** || igual que || distinto de (diferente) || **= =** || **! =** ||
 * **¹** || **=** || distinto de (diferente) ||  || ** ! = ** || ** = = ** ||
 * **En algoritmos** || **En C++** ||
 * Edad > 18 || Edad > 18 ||
 * SalBruto <= SalNeto || SalBruto <= SalNeto ||
 * EstCivil **¹** 'S' || EstCivil != 'S' ||
 * **En algoritmos** || **En C++** ||
 * ( Edad > 18 ) **Y** ( Talla < 1.70 ) || ( Edad > 18 ) **&&** ( Talla < 1.70 ) ||
 * **NO** ( sexo = ´F’ ) || **!** ( sexo == ´F’ ) ||
 * ( EstCivil = ‘C’ ) **O** (Sueldo > 2000) || ( EstCivil == ‘C’ ) ** || ** (Sueldo > 2000) ||
 * __ FORMAS DE REPRESENTAR LOS ALGORITMOS __**


 * Diagramas de Flujo,
 * Diagramas de Nassi Sneidermann y
 * pseudocódigo,
 * __Pseudocódigo__ **

Es un lenguaje de especificación de algoritmos. Es similar al lenguaje común. Su traducción a un lenguaje de programación es sencillo. Utiliza enunciados donde cada uno de ellos representa una instrucción en un programa de computadora. Ofrece gran facilidad para representar en un lenguaje no formal las instrucciones de un algoritmo que sirve de base para el código o programa fuente Utiliza palabras reservadas en ingles o en castellano como
 * **Iniciar** el algoritmo || **INICIO** ||
 * **Finalizar** el algoritmo || **FIN** ||
 * **Lectura** (permite ingresar los valores de las variables) || **LEER** ||
 * **Mostrar** (permite mostrar los valores de las variables) || **MOSTRAR** ||
 * **//Estructura Selectiva//** || **SI** (expBooleana) { ... .... } SINO {... .... } ||
 * || **SELECCIONA** segun (selector ) { //**caso**// v1 : ....... } ||
 * **//Estructura Repetitiva//** || **PARA** ( ... ; Hasta ; ... con ) { ......... } ||
 * || **MIENTRAS** (expBooleana ) { .... } ||
 * || **DO** { .............. } **MIENTRAS** ( expBooleana ) ||

**Tabla 15.** Tabla de las principales palabras representativas en pseudocódigo para identificar las estructuras de control, inicio, fin, entrada y salida de datos.

__ **INSTRUCCIONES O SENTENCIAS** __ **a) __Instrucción__** __d**e Asignación**__

Operación en la cual el computador desarrolla o evalúa una expresión matemática y almacena el resultado final en una determinada variable. En la forma más simple de asignación el computador mueve una constante o el contenido de un campo a otra variable. __** Sintaxis: **__ Nombre_de_la_variable = expresión, variable o constante __** Asignación Aritmética: **__ **Tabla 16**. Ejemplos de asignaciones aritméticas __** Asignación Lógica **__ **Tabla 16**. Ejemplos de asignaciones lógicas o booleanas.
 * **En algoritmos** || **En C++** ||
 * var1 =3+4*2= || var1 3+4*2 ||
 * var2 = 0.65 / 0.2 || var2 = 0.65 / 0.2 ||
 * var3 = var1 / var2 || var3 = var1 / var2 ||
 * **En algoritmos** || **En C++** ||
 * Boolean var1,var2,var3 || **Bool** var1,var2,var3; ||
 * var1 = 5 < 2 || var1 = 5 < 2; ||
 * var2 = 7 >= 3 || var2 = 7 >= 3; ||
 * var3 = var1 o var2 || var3 = var1 || var2 ; ||

__** Asignación de Caracteres o cadena de caracteres **__ "25 de diciembre de 1998"; || **Tabla 17**. Ejemplos de asignaciones de caracteres y cadenas de caracteres **NOTA :** > Toda variable del lado derecho debe estar definida > Después de ejecutarse un enunciado: > Solo la variable de la izquierda puede cambiar de valor cuando con anterioridad tiene un valor asignado > Las variables del lado derecho conservan su valor.. > Si la variable de la parte izquierda se encuentra también en la derecha, esta variable cambia de valor por aparecer en la izquierda
 * **En algoritmos** || **En C++** ||
 * caracter *vCad, car || ** char ** * vCad, car ; ||
 * car = 'S' || car = 'S'; ||
 * vCad = "25 de diciembre de 1998" = || vCad
 * = ** Este simbolo significa **//asignación//** e indica que el valor de la parte derecha del enunciado se le asigna a variable de la izquierda
 * Reglas para la construccion de un enunciado de asignación: **

b) __Instrucción de Entrada y salida de información__ Tabla 18. Entrada y salida de datos en pseudocódigo y en C++ ** __ESTRUCTURA Y DISEÑO DE UN ALGORITMO EN PSEUDOCÓDIGO__ ** **__Encabezado__** **.**- Empezar con la palabra ALGORITMO seguida por una descripción adecuada de acuerdo al problema a resolver  Ejm: ALGORITMO //**Calcular Area del**// //**Circul**//**//o//**  __Inicio del Algoritmo__ .- Indicar el inicio del Algoritmo  Ejm INICIO  __//**Declaración de Constantes**//__ .- Definir los valores que no cambian en el transcurso del algoritmo  Ejm const real Pi = 3.1416 __ D**//eclaración de las Variables a usar//** __ **//.-//** Definir las variables (estructuras de datos ) que sean necesarios para resolver el problema, identificándolas con un nombre y determinando sus tipos.  Ejm. Real Radio, Area  __**//Leer Calcular o Imprimir//**__ .- Que permite leer, calcular o imprimir tantas veces se quiera. a) **Leer Datos**.- Permite introducir los valores de las variables de entrada disponibles como materia prima, para evaluar las variables de salida Ejm: LEER Radio  b) **Calcular .-** Permite procesar los valores de entrada para producir la salida adecuada. Ejm : Area **=** Pi * Radio * Radio o Area **=** Pi * pow ( Radio,2 ) c) **Mostrar** Resultados (Salida de Datos) .- Permite dar salida a la información requerida. Ejm: MOSTRAR Area  El algoritmo completo es el siguiente:  Ejm : para el problema del cálculo del area de un rectángulo visto anteriormente, en seudocódigo sería así:
 * **En algoritmos** |||||| **En C++** ||
 * **real v** || **entero v2** || **caracter sexo** || **double v;** || **int v2;** || **char sexo;** ||
 * //LEER// v |||||| **cin>>** v; ||
 * //LEER// v2 |||||| **cin>>**v2; ||
 * //MOSTRAR// v |||||| **cout<<**v; ||
 * //MOSTRAR// v, v2 |||||| **cout<<**v**<<**v2**<<**endl; ||
 * //LEER// sexo |||||| **cin>>**sexo; ||
 * **caracter nombre[20]** |||||| **char nombre[20]; //cadena de caracteres//** ||
 * LEER //nombre// |||||| **cin>>**nombre; lee un solo nombre sin espacios en blanco ||
 * |||||| **gets(**nombre**);** //lee nombre con espacios en blanco// ||
 * MOSTRAR //nombre// |||||| **cout<<**nombre; con y sin espacios en blanco ||

INICIO ** //Entrada (Lectura) de datos// ** // LEER Base, Altura // Area = Base * Altura ** //Salida de resultados// ** // MOSTRAR Area // // FIN // **Fig. 7.** Entrada, proceso y salida de información.Ejm : Hacer un algoritmo que permita calcular el jornal basico de un obrero, si para ello se requiere ingresar por teclado la tarifa horaria y el numero de horas trabajadas. La formula del jornal es : Jornal = TarHora x NroHoras. **Fig. 8.** Entrada, Proceso y salidad de información. ** ALGORITMO ** CalJornal INICIO Declaración de las variables real TarHora, Jornal entero NroHoras // Lectura de los Datos de Entrada**LEER** ** TarHora ** ** LEER ** NroHoras
 * Proceso: Calculo de Area**

// Calculo del Area del RectanguloJornal = TarHora * NroHoras.

// Muestra Area del Rectangulo ** MOSTRAR ** JornalFIN

{ Bloque_Verdadero } **//sino//** { BloqueFalso } || **if** ( **ExpBooleana** ) { Bloque_Verdadero } **else** { BloqueFalso } || { **caso** val1 : Bloque_1; salto **caso** val2 : Bloque_2; salto **sino** : Bloque_n; } || **switch** ( **selector** ) {  **case** val1 : Bloque_1 ** break ** ; **case** val2 : Bloque_2 ** break ** ; **default** : Bloque_n } || En caso selector sea //**val1**//, se ejecuta el **//Bloque_1//** En caso selector sea **//val2//**, se ejecuta el //**Bloque_2**// De lo contrario se ejecuta el //**Bloque_n**// || { Bloque_Repetitivo } || **for** ( i = vi ; i <= vf ; i = i+inc ) { Bloque_Repetitivo } //El valor inicial de i es vi, se ejecuta el Bloque_Repetitivo mientras i sea <=vf , con incrementos de i en inc// || { Bloque repetitivo }
 * **ESTRUCTURAS DE CONTROL** ||
 * **Algoritmo pseudocodigo** || **En Lenguaje C++** ||
 * **Estructura Selectiva** ||
 * **//si//** ( ** ExpBooleana ** )
 * **Estructura switch** ||
 * **Seleccione** ( ** selector **)
 * //**val1 y val2**// son los posibles valores de //**selector**//
 * **Estructura Repetitiva for** ||
 * **Para** ( i = vi ; hasta vf ; i=i+inc )
 * El Bloque_Repetitivo deja de ejecutarse, cuando el valor de i > vf ||
 * ** Estructura Repetitiva while ** ||
 * **Mientras** ( ** expresion_Booleana ** )

**Hacer** { Bloque repetitivo } **Mientras** **(** ** expresion_ **//** Booleana ** **)**// || ** while ** ( Expresión_Booleana) { Bloque_Repetitivo }

Evalúa la expresion Booleana antes de ejecutar el Bloque_Repetitivo, si es true ejecuta el Bloque_Repetitivo, de lo contrario ya no ejecuta el bloque_Repetitivo || { Bloque Repetitivo } ** while (** //expresion_//Booleans**);** //Evalúa la expresion Booleana despues de ejecutarse el Bloque_Repetitivo, si es true continua ejecutando el Bloque_Repetitivo, de lo contrario sale del Bloque_Repetitivo.// El Bloque_Repetitivo, se ejecuta por lo menos 1 vez. || **Tabla 19.** Tabla de //**estructuras de control,**// que facilitan la codificación en el lenguaje C++, a partir de algoritmos hechos en pseudocódigo.
 * ^  || ** do **

= Resolución de problemas de programación =

La **resolución de un problema** mediante un [|ordenador] consiste en el proceso que a partir de la descripción de un problema, expresado habitualmente en lenguaje natural y en términos propios del dominio del problema, permite desarrollar un [|programa] que resuelva dicho problema. Este proceso exige los siguientes pasos: Los dos primeros pasos son los más difíciles del proceso. Una vez analizado el problema y obtenido un algoritmo que lo resuelva, su transformación a un programa de ordenador es una tarea de mera traducción al lenguaje de programación deseado. == Índice == [ [|ocultar] ] == Análisis del problema informatico [  [|editar]  ·  [|editar código]  ]  == Cuando un usuario plantea a un programador un problema que resolver mediante su [|ordenador], por lo general ese usuario tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de [|informática]. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa será un experto en contabilidad (dominio del problema), pero no tiene por qué ser experto en [|programación]. Del mismo modo, el informático que va a resolver un determinado problema puede ser un experto programador, pero en principio no tiene por qué conocer el dominio del problema; siguiendo el ejemplo anterior, el informático que hace un programa no tiene por qué ser un experto en contabilidad. Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solución satisfactoria es necesario que: == Diseño del algoritmo [  [|editar]  ·  [|editar código]  ]  == Un [|algoritmo] consiste en una especificación clara y concisa de los pasos necesarios para resolver un determinado problema, pero para poder diseñar algoritmos es necesario disponer de una notación, que llamaremos ‘notación algorítmica’, que permita: Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lógicas (secuencia, decisión e iteración) con las que es posible escribir cualquier [|programa]. Lo que sigue a continuación es la descripción de las diferentes construcciones disponibles para el diseño de algoritmos. === Acciones elementales [  [|editar]  ·  [|editar código]  ]  === Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que serán de dos tipos: === Secuencia de acciones elementales [  [|editar]  ·  [|editar código]  ]  === Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, éstas se describen una detrás de otra según el orden en que deban ejecutarse. Si se desea se puede emplear algún tipo de símbolo para separar dos acciones consecutivas. En el siguiente ejemplo se nuestra la descripción de n acciones separadas por punto y coma (símbolo que habitualmente se emplea como separador). code <span style="background-color: #f9f9f9; font-family: monospace,Courier;">//Acción 1;// //Acción 2;// //...// //Acción n;// code === Composición condicional [  [|editar]  ·  [|editar código]  ]  === Cuando en un algoritmo se quiere indicar que cierta acción sólo se debe ejecutar bajo cierta condición se indica del siguiente modo: code <span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Si** //Condición// **Entonces** //Acción;// code Sólo si la //Condición// (operación lógica) es verdadera se ejecutará la //Acción//. En este caso, la //Acción// puede referirse tanto a una acción elemental como a un conjunto de ellas. === Composición condicional doble (alternativa) [  [|editar]  ·  [|editar código]  ]  === En ocasiones, se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condición. Esta especificación se realiza del siguiente modo: code <span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Si** //Condición// **Entonces** //Acción A;// //Acción B;// code Dependiendo de si la //Condición// es verdadera o falsa se ejecutará la //Acción A// o la //Acción B// respectivamente. De forma análoga a como ocurría en el caso anterior, tanto la //Acción A// como la //Acción B// pueden referirse a una acción elemental o a un conjunto de ellas. === Composición condicional múltiple [  [|editar]  ·  [|editar código]  ]  === También es posible que a la hora de especificar la ejecución de una acción haya que escoger ésta entre varias dependiendo del valor de una determinada variable (o indicador). Este caso se expresa del siguiente modo: code <span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Segun** //Indicador// Hacer **Caso** //Valor 1//: //Acción 1;// **Caso** //Valor 2//: //Acción 2;// ... **Caso** //Valor n//: //Acción n;// [**De Otro Modo**: //Acción X;//] code En esta construcción //Indicador// debe tener un determinado valor que en caso de coincidir con alguno de los //n// valores provocará la ejecución de la acción asociada a dicho valor. Si el valor del //Indicador// no coincidiera con ninguno de los especificados se ejecutará la //Acción X//. No tiene por qué haber una //Acción X// para cuando el //Indicador' no coincida con ninguno de los// n //valores; en ese caso, si el// Indicador' no coincide con ningún valor no se ejecutaría ninguna acción. Al igual que en los casos anteriores, todas las acciones que aparecen en esta estructura (//Acción 1//, //Acción 2//,..., //Acción n// y //Acción X//) pueden referirse a una única acción o a un conjunto de ellas. === Composición iterativa o bucle [  [|editar]  ·  [|editar código]  ]  === Cuando una acción o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle. En este tipo de estructuras se necesita una condición que determine cuando terminan las iteraciones. Dependiendo de si esa condición se evalúa al principio o al final de la estructura y de si la condición para que las iteraciones continúen debe ser verdadera o falsa, se pueden definir cuatro construcciones iterativas distintas: //Acción;//**FinMientras** || //(Estructura 2)// //Acción;//**FinHasta** || //Acción;//**Mientras**//Condición;// || //(Estructura 4)// //Acción;//**Hasta**//Condición;// || code <span style="background-color: #f9f9f9; font-family: monospace,Courier;"> code Sobre las cuatro construcciones que se acaban de presentar cabe hacer las siguientes observaciones: Existe una construcción especial para indicar una repetición de acciones que se suele emplear cuando se quiere que dicha repetición se realice un número determinado de veces: code <span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Para** //i = 1// **Hasta** //n// **Hacer** //Acción;// code En este caso la ‘Acción’ se repetirá n veces e ‘i’ será una variable que tomará todos los valores entre 1 y n (ambos inclusive) en cada una de las sucesivas repeticiones. Esta construcción, aunque de apariencia diferente a las anteriores, se podría expresar como un caso particular de la estructura 1 del siguiente modo: code <span style="background-color: #f9f9f9; font-family: monospace,Courier;">//i = 1;// //Acción;// //i = i + 1;// code En este caso la condición de finalización del bucle es que la variable ‘i’ sea mayor que ‘n’ y siempre, al finalizar la ejecución de la ‘Acción’, ‘i’ se incrementa en una unidad antes de volver a evaluar la ‘Condición’ para el nuevo valor
 * Análisis del problema.
 * Diseño o desarrollo de un [|algoritmo].
 * Transformación del algoritmo en un programa (codificación).
 * Ejecución y validación del programa.
 * [|1 Análisis del problema informatico]
 * [|2 Diseño del algoritmo]
 * [|2.1 Acciones elementales]
 * [|2.2 Secuencia de acciones elementales]
 * [|2.3 Composición condicional]
 * [|2.4 Composición condicional doble (alternativa)]
 * [|2.5 Composición condicional múltiple]
 * [|2.6 Composición iterativa o bucle]
 * [|3 Véase también]
 * **El problema esté bien definido con el máximo detalle**
 * **Las especificaciones de las entradas y salidas del problema, deben ser descritas también en detalle:**
 * ¿Qué [|datos] son necesarios para resolver el problema?
 * ¿Qué [|información] debe proporcionar la resolución del problema?
 * Describir las operaciones puestas en juego (acciones, instrucciones, comandos,...)
 * Describir los objetos manipulados por el algoritmo (datos/informaciones)
 * Controlar la realización de las acciones descritas, indicando la forma en que estas se organizan en el tiempo
 * **Aritmético – lógicas:** Operaciones que, a partir de unos determinados datos, realizan un cálculo aritmético (suma, resta, multiplicación,...) o un cálculo lógico (mayor que, menor que, igual que,...).Las primeras devuelven un valor numérico (4, -5.67,...) y las segundas un valor lógico (verdadero o falso).
 * **De entrada – salida:** Acciones que permiten capturar datos para su posterior tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de salida).
 * FinSi**
 * SiNo**
 * FinSi**
 * FinSegun**
 * || La condición de terminación ha de ser FALSA || La condición de terminación ha de ser VERDADERA ||
 * Condición al principio de la estructura || //(Estructura 1)//
 * Mientras**//Condición//**Hacer**
 * Hasta**//Condición//**Hacer**
 * Condición al final de la estructura || //(Estructura 3)//
 * Hacer**
 * Hacer**
 * Si en las estructuras 1 y 2, cuando se evalúa la ‘Condición’, ésta toma por primera vez un valor tal que no permita ejecutar la ‘Acción’ (FALSO en la 1 y VERDADERO en la 2), ésta no se ejecutará ninguna vez. Es decir, puede ocurrir que la ‘Acción’, en las estructuras 1 y 2, no se ejecute nunca.
 * En las estructuras 3 y 4, al estar la ‘Condición’ de terminación al final, la ‘Acción’ se ejecutará antes de que la condición se evalúe por primera vez, por lo que aunque la ‘Condición’ tome un valor tal que no se permita realizar más iteraciones, la ‘Acción’ se ejecutará al menos una vez.
 * Si las ‘Condiciones’ de las estructuras 1 y 2 son complementarias, es decir, que siempre que una es verdadera la otra es falsa y viceversa (ejemplo: [a > b] y [a ≤ b] son condiciones complementarias), entonces ambas estructuras son equivalentes ya que en ambas la ‘Acción’ se ejecutará el mismo número de veces.
 * De forma análoga, si las ‘Condiciones’ de las estructuras 3 y 4 son complementarias también ambas estructuras serán equivalentes.
 * FinPara**
 * Mientras** //i <= n// **Hacer**
 * FinMientras**