Sie sind auf Seite 1von 33

UNIDAD I. CONCEPTOS BÁSICOS.

Programa.
Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas secuencialmente resuelven
un problema especifico.

Lenguaje de Programación.
Es cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su procesamiento
por un ordenador o computadora. Existen muchos lenguajes de programación entre ellos tenemos a Fortran, Algol,
BCPL, B, C, C++, C#, Java, Pascal, Cobol, Ada, Limbo, Visual Basic, Visual FoxPro, HTML, XML, Python, Ruby, entre
otros. Los lenguajes de programación pueden ser de 3 tipos:
Lenguaje Máquina: Es un lenguaje que puede ser interpretado directamente por los circuitos internos de la computadora
porque está basado en instrucciones compuestas por secuencias de ceros (0) y unos (1).
Lenguaje de Bajo Nivel (Ensamblador): Es un lenguaje que usa el programador para codificar sentencias simbólicas
que un compilador (programa traductor) puede convertir una a una en instrucciones de lenguaje máquina. Hace uso e
mnemotécnicos o abreviaturas, para representar las instrucciones de máquina.
Lenguaje de Alto Nivel: En un lenguaje de programación orientado al problema, objetos o procedimientos, es cercano al
idioma humano.

Programación Orientada a Objetos (POO) Vs. Programación Estructurada (PE).


La Programación Orientada a Objetos y la Estructurada son simplemente dos de los más grandes paradigmas de la
programación. Su diferencia simplemente radica en la manera de elaborar un programa. Mientras que la Programación
Orientada a Objetos, emplea clases, objetos, métodos, herencia y polimorfismo, que son las cinco características básicas
de la POO. Por el contrario la PE, emplea funciones y estructuras, en la elaboración de los programas.

Compilar.
Es traducir un programa escrito en lenguaje de bajo o alto nivel a un programa en lenguaje máquina, que es la forma en
que la computadora puede ejecutar directamente las acciones o instrucciones. Típicamente una instrucción de bajo o alto
nivel se compila o traduce en muchas instrucciones máquina. En algunos casos el proceso de compilar se descompone
en dos pasos.
• Compilar las instrucciones de alto nivel para producir lo que se denomina el código objeto.

• Enlazar (link) que es tomar el código objeto generado y cualquier otro código objeto (librerías), que haya sido
previamente generado y colocarlos juntos, produciendo así el programa ejecutable o código ejecutable, mediante
un linkador.

Dato.
El dato es cualquier objeto o elemento de información que se usa a lo largo de diversas operaciones dentro de un
programa o fragmentos de este. Los datos son elementos sobre los que se opera cuando se efectúa una operación en el
computador, es decir, cuando se ejecuta una instrucción en un programa.

Tipos de Datos.
El tipo de dato es una definición que agrupa los valores válidos para un conjunto de datos y las operaciones que sobre
ellos se pueden realizar. Normalmente, se puede establecer una relación de orden sobre los datos de naturaleza escalar
o con valores determinísticos.
Cada tipo de dato tiene una representación determinada en el computador. Esto tiene que ver con el tamaño o la
cantidad de memoria que el computador reserva para almacenar los datos de un tipo especifico cualquiera.
Los tipos de datos pueden ser:
Tipo de dato primitivo: Tipos básicos o simples predefinidos en el sistema.
Tipo de dato definido por el usuario: Agregados por el programador.

Los tipos de datos primitivos más importantes son: numéricos, lógicos, y carácter.
Numéricos: Pueden ser a su vez:
- Entero: Subconjunto finito del conjunto matemático de los números enteros. No tienen parte decimal.
- Real: Subconjunto finito del conjunto matemático de los números reales, llevan signo y parte decimal.
Lógicos o booleanos: Es aquel que sólo puede tomar uno de los valores, verdadero o falso (0 ó 1). Este es el tipo de
dato que retorna todas las operaciones lógicas.
Carácter: Abarca al conjunto finito y ordenador de caracteres que reconoce la computadora: letras, dígitos, caracteres
especiales, ASCII, UNICODE. Se representan dentro de un par de comillas simples, aunque también se puede
suministrar su código numérico o posición dentro del conjunto de caracteres válidos que se esté usando.
Cadena -String-: Conjunto de caracteres, que se presentan entre los símbolos de comillas dobles (“”).

Constantes.
Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.
Ejemplo: pi = 3.1416
Las constantes pueden llevar asociados un nombre o no, si no lo llevan, se llaman literales (5, 7, ‘a’, “Hola”). Su valor hay
que darlo al definir la constante y ya no puede cambiar a lo largo de la ejecución, y en cuanto al tipo, dependiendo de los
lenguajes en algunos hay que ponerlo, y en otros no hace falta ponerlo porque toma el tipo del dato que se le asigna.
Variables.
Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de
un proceso, su contenido puede cambiar durante la ejecución del programa.
Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos
identificarla dentro de un algoritmo.
Ejemplo: area = pi * radio ^ 2
Las variables son: el radio, el area y la constate es pi
Antes de usar una variable hay que definirla o declararla, al hacerlo hay que dar su nombre y su tipo, por ejemplo: entero
var
Donde “entero” es el tipo de dato asociado a la variable y “var” es el identificador o nombre de la variable.
El nombre que le damos tiene que ser un nombre significativo, va a ser un conjunto de caracteres que dependiendo del
lenguaje hay restricciones. Tiene que empezar por una letra, y el tamaño depende del lenguaje.
El valor de la variable si al declararla no se la inicializa, en algunos lenguajes toma una por defecto. En cualquier caso el
valor de la variable podemos darle uno inicial o podemos ir variándolo a lo largo de la ejecución.

Variables Acumuladoras.
Variable que suma o acumula valores. Permite determinar el total de los valores leídos o trabajados. Se incrementa en
cualquier valor.
Ejemplos:
c = c + 20
suma = suma + Valor
total = total + (N*E)

Variables Contadoras.
Variable que controla o determina la cantidad de veces que se repite un proceso o dato. Siempre se incrementa en uno.
Formato: variable=variable+1
Ejemplo: c = c + 1

Relación entre Variables y Constantes.


Al declarar una variable o constante con nombre (identificador), automáticamente se reserva en memoria espacio para
guardar esa variable o constante. El espacio reservado depende del tipo de la variable o constante.
En esa zona de memoria es en la que se guarda el valor asociado a la variable o constante y cuando el programa use
esa variable o constante, irá a esa zona de memoria a buscar su valor.

Expresiones.
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones
especiales, con un sentido unívoco y definido. De la evaluación de una expresión resulta un único valor o resultado.
Por ejemplo: a + (b + 3) / c

Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la
ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Una expresión tiene un tipo de dato que corresponde con el tipo de
valor que retorna cuando se evalúa la expresión, por lo que habrá tantos tipos de expresiones como tipos de datos. En tal
sentido, se tienen expresiones numéricas y lógicas.

Expresiones Numéricas. Operadores Aritméticos.


Una expresión numérica es una combinación de variables y constantes numéricas con operadores aritméticos que al
evaluarla devuelven un valor numérico. Existen 5 operadores numéricos, entre ellos tenemos: +, -, *, /, %, los cuales son
equivalentes a las operaciones de suma, resta, multiplicación, división, resto (de división) ó módulo respectivamente.

Los operadores anteriores se denominan operadores binarios porque utilizan dos operando. Existen también otros tipos
de operadores que solo necesitan de un operando y se denominan operadores unarios. Algunos operadores unarios son:
- El Signo Negativo: Operador unario que devuelve el valor actual del operando multiplicado por menos uno (-1).
Ejemplo: x = 7;
-x;
x = -7;

El lenguaje C++ tiene otros operadores unarios, usados para ayudar a incrementar o decrementar una variable en un
programa estos operadores son, ++ y --.
- Operador de Incremento: El operador ++ devuelve el valor actual del operador incrementado en una unidad. Ejemplo:
x = 7;
x++; -> equivale a: x=x+1
x = 8;
- Operador de Decremento: El operador -- devuelve el valor actual del operador decrementado en una unidad. Ejemplo:
x = 7;
x--; -> equivale a: x=x-1
x = 6;
Existen cuatro maneras diferentes en las cuales los dos operadores de incremento y decremento (++ y --) se pueden
usar estas son:
• x++;
• x--;
• ++x;
• --x;
Las primeras dos, x++ y x-- incrementa y decrementa x respectivamente en uno (1) después que el identificador se usa.
Por esta razón se les denomina operadores de post incremento y post decremento, respectivamente. Sin embargo
cuando el operador se usa de la forma ++x ó --x, las operaciones de incremento y decremento respectivamente, se
realizan antes, de que se use el identificador. Por esta razón se les llama operadores de pre incremento y pre
decremento.

Expresiones Lógicas. Operadores Relacionales y Lógicos.


Una expresión lógica es aquella que sólo puede devolver uno de dos valores: verdadero (true) ó falso (false). Los
operadores que pueden aparecer en una expresión lógica son de dos tipos: lógicos ó relacionales.
Operadores Relacionales: Trabajan con expresiones numéricas para realizar comparaciones que retornan un valor
booleano. Algunos de los operadores relacionales que se pueden usar para formar expresiones relacionales son:
< Menor que.
> Mayor que.
<= Menor o igual que.
>= Mayor o igual que.
Ejemplo: 45+2 <= 20*4
En la expresión anterior se evalúa el resultado de 45+2 y se determina si el valor es menor o igual 20*4, al evaluar esto
se obtiene un valor booleano de verdadero.
Operadores de Igualdad: Los operadores de igualdad y desigualdad comprueban la igualdad ó desigualdad entre dos
valores, para retornar una expresión booleana.
== Igual a.
!= No igual a.
Operadores Lógicos: los operadores lógicos únicamente trabajan sobre expresiones o datos que retornan valores
booleanos. Las expresiones relacionales conectadas por operadores lógicos se denominan expresiones lógicas. C++
ofrece provee tres operadores lógicos, también llamados conectores lógicos, que son:
&& Y (AND).
|| O (OR).
! NO (NOT).
El operador lógico && retorna el valor de VERDADERO (TRUE), si ambos operandos son verdaderos sino retorna el
valor de FALSO (FALSE). El operador || retorna el valor de VERDADERO (TRUE), si al menos uno de los operandos es
verdadero, si ambos son falsos retorna el valor de FALSO (FALSE). El operador “!” invierte el valor lógico de la expresión
evaluada, si el valor es falso retorna el valor de VERDADERO (TRUE) y si es verdadero retorna el valor de FALSO
(FALSE). Algunos ejemplos se dan a continuación:
(a + 2) == max && (n < 12)
(b != 13) || (max == - 3) && ! (12 >= b)

Nota: En lenguaje C++, se trabaja con los valores booleanos que retornan las expresiones relacionales y
lógicas con uno (1) para verdadero (true) y con cero (0) para falso (false).

Reglas de Precedencia.
El orden en que se evalúan los operadores aritméticos, relacionales y lógicos en una expresión influye directamente en el
resultado que retorna dicha expresión.
Ejemplo:
Sea la siguiente expresión aritmética: 7 + 3 * 2 + 5
Si se evalúa en orden de aparición se tiene: (((7 + 3) * 2) + 5) = 25
Si se evalúa primero la suma (+) y luego la multiplicación (*) se tiene: (7 + 3) * (2 + 5) = 70
Si se evalúa primero la multiplicación (*) y luego la suma (+) se tiene: (7 + (3 * 2)) + 5 = 18
Para resolver esta situación tan problemática, la solución es aplicar precedencia entre los operadores, de modo que ante
la posibilidad de usar varios operadores aritméticos aplicaremos primero el de mayor prioridad. Cada lenguaje puede
establecer sus propias reglas de prioridad o precedencia de operadores.
Siempre podemos usar paréntesis ( ) para definir y cambiar el orden en que se evalúa una expresión.
Categoría Operadores Asociatividad
Paréntesis () Izquierda a derecha
Unarios ++ -- Derecha a izquierda
Aritmética (potencia) ^ Izquierda a derecha
Aritmética (multiplicación, división, resto). */% Izquierda a derecha
Aritmética (suma, resta) +- Izquierda a derecha
Relacional < > <= >= Izquierda a derecha
Igualdad == != Izquierda a derecha
Y (and) lógico && Izquierda a derecha
O (or) lógico || Izquierda a derecha
NO (not) lógico ! Izquierda a derecha
Jerarquía de Operadores en C++.
En la tabla anterior se puede observar la jerarquía que poseen cada uno de los operadores.
Entre dos operaciones que tienen la misma precedencia para resolver la ambigüedad, hay que usar la regla de la
asociatividad. La más normal es la de la asociatividad por la izquierda (primero lo de la izquierda).

Operación de Asignación.
Consiste en atribuir un valor a una variable. El valor asignado será una expresión, una constante, u otra variable.
Ejemplo:
var = 5 + 7;
En el ejemplo anterior, var representa la variable a la que se le asigna el valor dado en la expresión a la derecha del
operador de asignación (=).

El proceso de asignación se realiza en 2 fases:


- Se evalúa la expresión de la parte derecha de la asignación obteniéndose un único valor.
- Se asigna ese valor a la variable de la parte izquierda del operador de asignación (=).

Hay que tener en cuenta:


- En la parte izquierda sólo puede haber una (1) variable.
- Únicamente puede existir un operador de asignación en la expresión.
- La variable a la que se le asigna el valor pierde su valor anterior.
- Si la variable a la que se le asigna un valor (parte izquierda) participa en la expresión a evaluar (parte derecha), como
por ejemplo la sentencia: x = x + 1, entonces primero se evalúa la expresión antes de realizar la asignación, el valor
usado en la expresión es el que tenía la variable antes de la operación.
En el ejemplo dado si x tenía un valor igual a 7 entonces, la evaluación de la expresión x = x + 1, será de x = 7 + 1,
quedando x con un valor final de 8.
- El tipo del valor que se obtiene al evaluar la parte derecha tiene que ser el mismo que el tipo de la variable de la parte
izquierda, es decir a una variable solo se le pueden dar valores de su mismo tipo. Cada lenguaje de programación
impone sus propias reglas de conversión de tipos de datos definiendo cuales son las operaciones definidas para cada
tipo de datos. En C++, se aplica una conversión (casting).

Operadores Compuestos de Asignación.


C++ proporciona unos operadores compuestos de asignación, que pueden ser utilizados como atajos al escribir las
declaraciones de asignación. Un operador compuesto de asignación consiste generalmente de un operador aritmético
binario y un operador de asignación simple. Este ejecuta la operación de un operador binario en ambos operandos y da
el resultado de esa operación al operador izquierdo. Tiene precedencia muy baja.

Operador Propósito Ejemplo Salida


x=3;
+= Suma / Asignación 7
x+=4;
x=11;
-= Resta / Asignación 8
x-=3;
x=5;
*= Multiplicación/ Asignación 10
x*=2;
x=15;
/= División / Asignación 5
x/=3;
x=21;
%= Módulo / Asignación 1
x%=4;
Operadores Compuestos de Asignación.

Funciones.
Desde el punto de vista algorítmico, una función es un subprograma que toma uno o varios parámetros como entrada y
devuelve un único resultado.

Funciones Incorporadas.
Las funciones incorporadas son funciones adicionales a las operaciones básicas que se incorporan al lenguaje de
programación. Se consideran estándar la mayoría de los lenguajes de programación. Son dependientes del lenguaje y
normalmente se encuentran en librerías externas que se pueden incluir en un programa. La sintaxis exacta y el nombre
de las funciones pueden variar de un lenguaje a otro, pero la funcionalidad suele mantenerse entre diversas herramientas
de programación.
Las más comunes son las librerías de soporte matemático y las de entrada / salida.

En lenguaje C++ la sintaxis para el llamado de librerías es el siguiente:


#include <iostream.h>

Instrucciones o Sentencias.
Para que una instrucción se ejecute tiene que ser llevada a memoria. En cuanto al orden de ejecución de las
instrucciones, el programa puede ser de dos tipos:
- Programas Lineales: Se va ejecutando una instrucción más otra y el orden de ejecución es igual al orden de escritura.
- Programas no Lineales: Las instrucciones no se ejecutan en el mismo orden en el que aparecen escritas, sino que se
realizan saltos que nos mandan de unas instrucciones a otras.
Tipos de instrucciones:
1. Inicio y fin.
2. Asignación: Dar un valor a una variable.
3. Lectura / escritura: Introducir o sacar información por dispositivos E/S.
4. Instrucciones de bifurcación: Alternan el orden de ejecución del programa. Salto a otra instrucción que no es la
siguiente.
Ejemplo: INICIO
Sentencia 1;
Sentencia 2;

Sentencia N;
FIN
Nota: Todas las sentencias en lenguaje C++ terminan en el delimitador de sentencia punto y coma (;).

Entrada/Salida de la Información (I/O).


Las dos operaciones básicas en un programa son las de lectura (in) y de escritura (out). La lectura es equivalente a la
asignación en cuanto que va a haber una variable que recibe un valor, pero este valor no resulta de evaluar ninguna
expresión, sino que el valor lo vamos a leer de un dispositivo externo de entrada (teclado, red, disco duro, scanner, entre
otros).
Ejemplo: Leer (nombre de la variable).
El valor introducido por el dispositivo externo, tiene que ser del mismo tipo del que la variable que se le asigne.
La operación de escritura lo que hace es mostrar el valor de una variable en un dispositivo externo de salida (monitor,
impresora, red, disco duro, entre otros).
Ejemplo: Escribir (variable).
Al pedir un valor al usuario es recomendable decirle que es lo que se le quiere pedir escribiendo un mensaje.

Restricciones en el uso de caracteres.


Todos los lenguajes de programación están construidos en el idioma inglés, esto significa que las vocales acentuadas, la
letra eñe (ñ), y algunos caracteres especiales, no son soportados por la mayoría de los lenguajes de programación.
Algunos lenguajes como HTML, superan esta dificultad empleando entidades de referencia y otros como Java soportan
el uso de la letra “ñ”. Sin embargo lenguajes como C y C++, no lo soportan, por lo tanto es conveniente no emplear jamás
en ninguna parte del programa, vocales acentuadas ni la letra “ñ”.
UNIDAD II. ALGORITMOS.

Algoritmos.
El concepto de algoritmos fue desarrollado por el matemático persa Abu Jafar Mohammed Ibn Al Khwarizmi. Se puede
decir que un algoritmo es una fórmula para resolver un problema. Es un conjunto de acciones o secuencia de
operaciones que ejecutadas en un determinado orden, resuelven el problema planteado.
Un algoritmo debe tener las siguientes características:
• Estar bien definido.
• Ser preciso.
• Ser finito.

Básicamente un algoritmo es un proceso metodológico que define una serie finita de pasos sencillos y sin ambigüedades
para la solución de un problema. El algoritmo es independiente de la implementación de en algún lenguaje de
programación.

Metodología para Diseñar Algoritmos.


Un algoritmo es una fórmula para obtener la solución a un problema, ésta fórmula puede ser planteada de diferentes
formas y cada una de estas formas puede resolver efectivamente el problema planteado. Por esta razón, el diseño de un
algoritmo es un proceso creativo, ya que no existe un conjunto de reglas que indiquen expresamente cómo escribir un
algoritmo en forma correcta, por el contrario, si existen muchas maneras de resolver un problema, entonces existen
muchos algoritmos que implementen la solución.

Sin embargo, hay una serie de pasos que permiten resolver un problema de la forma más conveniente, estos son:
• Análisis del problema.
El primer paso es identificar el problema. Se debe revisar cuidadosamente el problema para determinar qué tipo de
información se necesita producir como salida. Luego se identifica toda la información que se necesita para encontrar la
solución. En otras palabras, es importante considerar lo que se está pidiendo en el problema, con qué elementos se
cuenta y cuales se deben solicitar para establecer el camino a seguir para la solución del problema. Luego de obtener
todos estos datos se inicia la fase de Diseño del algoritmo.
• Diseño del algoritmo.
En esta fase la solución del problema puede requerir varios pasos, así que es necesario buscar la manera más fácil
para simplificar la propuesta. Una forma de hacerlo es identificar los procesos más importantes y colocarlos en orden
ascendente según su importancia y precedencia., esto sirve como un algoritmo inicial.
Este algoritmo inicial podrá ser refinado en sucesivas operaciones, hasta obtener una solución más detallada y más fácil
de traducir a un lenguaje de programación.
• Verificación del algoritmo.
Cuando el algoritmo está listo, es necesario comprobar que cumple con los procesos ideados y produce el resultado
esperado. Una manera de hacerlo, es por medio de la ejecución manual, que consiste en realizar una prueba del
algoritmo con datos significativos comprobar que al ejecutar todos los procesos se obtienen los resultados esperados
para la salida.
Diseño Estructurado.
El diseño estructurado es una metodología para el desarrollo de programas que puede ser definida a través de las
siguientes características:
- El sistema desarrollado siguiendo el diseño estructurado tendrá una entrada y una salida, con variaciones ocasionales.
- El diseño estructurado divide el problema a resolver en partes o módulos.

Diseño Top Down.


El diseño Top Down también llamado “Refinamiento Paso a Paso”, establece que debe irse de lo más general a lo más
especifico, y se define como el proceso de dividir un problema en sub-problemas o pasos más específicos, de forma que
la salida de una etapa va a servir de entrada a la siguiente.
A continuación ser presenta un problema ejemplo y se explica cómo se aplica esta técnica en el diseño de programas.
Enunciado del Problema:
Se le ha solicitado que desarrolle un programa para una tienda de videos que tenga como objetivo permitir que un
cliente, previamente registrado en la tienda alquile videos. La tienda tiene un conjunto de reglas que deben cumplirse
para que un cliente alquile un video. Estas son:
• Un cliente es un miembro registrado.
• El cliente no debe tener alquileres vencidos.
• La película está en el inventario.

El programa de alto nivel es, alquilar un video.


Al descomponer este programa de alto nivel, se obtienen los siguientes subprogramas:
• Verificar si el cliente es un miembro registrado.
• Verificar si el cliente tiene alquileres vencidos.
• Verificar si la película está en el inventario.

Al descomponer de nuevo cada uno de los pasos anteriores se obtiene:


1.- Verificar si el cliente es un miembro registrado:
• Ingresar una identificación del cliente en el sistema.
• Verificar si el sistema ha encontrado un perfil que coincida con este cliente.
2.- Verificar los alquileres vencidos.
• Ver si el perfil del cliente refleja cualquier alquiler vencido en el sistema.
3.- Verificar si la película está en el inventario.
• Ingresar nombre de la película en el sistema.
• Verificar si hay alguna copia que no esté alquilada.

De nuevo al descomponer el sub-programa “Verificar si el cliente es un miembro registrado”:


1.1.- Verificar si el cliente es un miembro registrado:
• Preguntar la identificación del cliente.
1.2.- Ingresar la identificación en el sistema:
• Seleccionar del menú la opción de “verificar la identificación del miembro”.
• Ingresar la identificación del cliente.
• Presionar la tecla que indica al sistema que está listo, para que éste verifique por un número que coincida con el
que se ha ingresado.
1.3.- Leer la pantalla para ver si el sistema ha encontrado alguna coincidencia:
Verificar visualmente si el sistema dice “si” o “no” es un miembro.

En ejercicio anterior se observaron mensaje como “Ingresar” y “Leer”, estos son fundamentales para la interacción del
usuario con el sistema, ya que un programa debe ser capaz de tomar datos ingresados por el usuario del sistema.
También se deben enviar mensajes de alerta o avisos al usuario, para esto se usará la expresión “Mostrar”. El siguiente
ejercicio ilustrará mejor esto.

Enunciado del Problema:


Dada las horas trabajadas de una persona y la tarifa de pago por hora, calcule su salario.
1. Mostrar “Ingrese la cantidad de horas: ”
2. Leer horas.
3. Mostrar “Ingrese la tarifa”
4. Leer tarifa.
5. salario=horas*tarifa
6. Mostrar “El salario es: “ salario

Se envían mensajes al usuario indicando que debe ingresar un valor (horas, tarifa), esto es útil para que la persona que
está usando el sistema sepa que datos debe ingresar en un momento específico. Finalmente se realiza el cálculo del
salario el cual está dado por “horas*tarifa” y se muestra el salario actual del trabajador.
UNIDAD III. FUNDAMENTOS DE C++.

C++.
C++ es una mejoría sobre muchas de las características de su predecesor el lenguaje C, y proporciona capacidades de
Programación Orientada a Objetos (OOP, por Object Oriented Programming), además de soportar la programación
Estructurada, esto lo convierte en un lenguaje híbrido.
C++ fue desarrollado por Bjarne Stroustrup, en los Laboratorios Bell, y originalmente fue llamado “C con clases”. El
nombre C++ incluye el operador de incremento (++) de C, para indicar que C++ es una versión mejorada de C.

Primeros Pasos para Escribir un Programa en C++.


Los primeros pasos para escribir un programa de computadora en C++, son los siguientes:
• Paso 1: Leer y entender el contexto del problema que requiere una solución mediante un programa de
computadora.
• Paso 2: Desarrollar un algoritmo resolver el problema.

• Paso 3: Verificar el algoritmo para su validez.

• Paso 4: Convertir el algoritmo a lenguaje C++.

• Paso 5: Probar y verificar el programa C++, para su validez.

Estructura de un Programa en C++.


Cuando se escribe un programa en C++, empleando la Programación Estructurada, se utiliza comúnmente el siguiente
formato:
1. Llamadas a bibliotecas.
2. Declaración de constantes.
3. Declaración de funciones (prototipo de funciones).
4. Declaración de variables globales.
5. main() {
6. declaración de variables locales.
7. sentencias.
8. }
9. Definición de funciones.

Cualquier aplicación hecha en lenguaje C++, debe constar de una función principal denominada main, que será la
primera en ser llamada (desde este punto iniciaran todos los programas). En la estructura anterior el main comprende
desde la línea 4 hasta la 7.

A continuación se escribirá el primer programa en C++:


#include <iostream.h>
void main(){
cout<<“Hola Mundo”;
}
Se ha escrito el primer programa en C++, siguiendo las reglas anteriormente descritas. El programa únicamente envía un
saludo (Hola Mundo), por pantalla. La salida del programa anterior será:

Identificadores.
Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una
secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que permite acceder a
su contenido.
La sintaxis de programación C++ impone algunas reglas en la construcción de identificadores:
- Los nombres de identificadores deben empezar siempre con una letra, esto incluye a los caracteres “_” y “$”. Sin
embargo es una buena práctica de programación tener nombres de variables que empiecen con minúsculas (a - z).
- Los nombres de identificadores pueden estar formados por una secuencia de letras del alfabeto y/o dígitos del 0 al 9 y/o
el carácter “_” ó “$”.
- No se permiten espacios, comas, puntos, vocales acentuadas ni la letra “ñ” en el nombre de un identificador.
- La longitud de identificadores puede ser de varios caracteres. Pero es recomendable una longitud promedio de 8
caracteres.
- No se permiten usar palabras reservadas por el lenguaje.
- Los únicos caracteres especiales permitidos son “_” y “$”.

Palabras reservadas en C++.


Esta es una lista de palabras que se debe evitar usar como identificadores de variables, nombres de funciones. Estas
son las 49 palabras claves, sin embargo algunos compiladores añaden otras.
Tipos de Datos Básicos en C++.
Ya se han definido e identificado los tipos de datos más comunes, sin embargo es necesario determinar de qué manera
son implementados cada uno de ellos en C++.
Los tipos de datos básicos en C++ son: int, float, double, char y bool.
- int, es un tipo de dato entero y define el conjunto de valores que una variable de tipo int puede almacenar, y también
el conjunto de operaciones que se pueden utilizar con los datos enteros.
Ejemplo: int edad;
- float, también llamado número de punto flotante, es un tipo de dato que define un conjunto de valores para los
números reales. Estos no pueden ser enumerados como en int, y las operaciones definidas para float, son +, - , *, /.
Sin embargo % no está definido para float. Los tipos de dato float deben tener siempre una parte decimal y estar
seguidos por una f, al momento de declarar una variable (8.87f).
Ejemplo: float peso;
- double, es un tipo de dato que define un conjunto de valores para los números reales, sin embargo a diferencia de los
float su rango de precisión de la parte decimal del número es mayor. Las operaciones definidas para double son las
mismas que float.
Ejemplo: double radio;
- char, tipo de dato que permite definir cualquier carácter alfanumérico individual que se encuentre comprendido en el
código ASCII ó UNICODE. Es importante recordar que únicamente trabajará con un (1) carácter alfanumérico a la vez.
Ejemplo: char vocal;
- bool, este tipo de dato únicamente trabaja con valores booleanos, verdadero (true) ó falso (false).
Ejemplo: bool respuesta;

Cada uno de estos datos básicos se almacena en forma diferente en la memoria de la computadora. C++ provee del
operador sizeof que permite determinar el tamaño de cada tipo de dato que es soportado por el hardware subyacente.
Sin embargo el número de bytes realmente asignados para los tipos específicos puede variar de un modelo de
computadora a otro.

Requerimiento típico en
Tipo de Dato Descripción
memoria
int Entero 4 byte.
float Número de Punto Flotante 4 byte.
Número de Punto Flotante
double 8 byte.
de doble precisión.
char Carácter simple 1 byte.
bool Valor Booleano. 1 byte.
Tipo de Dato y Espacio Requerido en Memoria.

Más Acerca de las Declaraciones.


Cuando se declaran múltiples variables, no se necesita declararlas separadamente. Se puede combinar su declaración
en una sola sentencia como se muestra a continuación:
int num, valor, digito;
En otras palabras, se puede declarar múltiples variables en una sola sentencia con la lista de variables separadas por
coma (,). El int especifica que una variable entera se está declarando. Se asigna un espacio, de manera que los
números enteros se puedan almacenar allí. En estas variables se puede asignar cualquier entero válido.

Tratar de asignar un no entero, por ejemplo 3.1452 o el carácter A, se asignará 3 (parte entera de 3.1452) ó 65 (código
ASCII para el carácter A) a la variable. A parte de las variables enteras se puede definir otros tipos de datos, como una
variable de número real o una variable de punto flotante:
float altura, pi;
Esta declaración crea dos variables de punto flotante que pueden almacenar números reales de la forma 3.454f o
-0.458f. Los datos son truncados cuando a una variable entera se le asigna una real, pero si ocurre lo siguiente:
float peso=75;
La constante literal entera 45, será convertida a forma flotante 75.0 y asignada a la variable peso.

El tipo de datos char permite almacenar caracteres como letras del alfabeto a-z, A-Z, dígitos 0-9, y algunos caracteres
especiales como @, &, $, #, etc. Las siguientes son asignaciones válidas a una variable de tipo char.
char letra = ‘a’, vocal;
vocal=’G’;
letra=vocal;

Es válido asignar el valor de una variable o constante a otra variable, sin embargo se sebe tener en cuenta que los tipos
de datos debe ser del mismo tipo para evitar errores o conversiones no deseadas.

Constantes en C++.
Las constantes son únicamente espacios de memoria (igual a las variables), que no pueden cambiar su valor inicial.
Cuando se crea una constante y se le asigna su valor inicial, este no puede ser cambiado durante la ejecución de la
aplicación, sin embargo pueden ser asignados como valor a una variables, formar parte de una expresión, etc. La
manera de declarar una constante en C++ es la siguiente:
#define MAX 100

Para empezar se emplea el carácter especial numeral (#), seguido por la palabra define. Luego se define el nombre
(identificador) de la constante y finalmente el valor (observe que no cierra con comillas).

Si el valor es numérico simplemente se coloca luego del nombre de la constante. Si es una variable de tipo carácter el
valor (carácter) se coloca entre comillas simples (‘’). Si es una valor de tipo cadena de caracteres se coloca la cadena
entre comillas dobles (“”). Si es un valor booleano se coloca el valor (true o false) luego del nombre de la variable.

A continuación se presentará un ejemplo que ejemplifica el uso de las constantes:

1. #include <iostream.h>
2. #define ENTERO 20
3. #define REAL 5.6f
4. #define DOBLE 15.2301
5. #define VOCAL 'T'
6. #define CADENA "MENSAJE"
7. #define PREGUNTA true
8. void main(){
9. int datoEntero=ENTERO;
10. cout<<"Valor entero: " <<ENTERO <<"\n";
11. cout<<"Valor cadena: " <<CADENA <<"\n";
12. cout<<"Valor booleano: " <<PREGUNTA <<"\n";
13. cout<<"Valor REAL: " <<REAL <<"\n";
14. }

La salida del programa anterior será:

De la línea 2 a la línea 7, se declararon todas las constantes, observe que no se define ningún tipo de dato, esto es
porque cuando se le asigna el valor automáticamente se reserva ese espacio de memoria con ese valor. En la línea 9, se
le asigna el valor de la constante “ENTERO” a la variable “datoEntero”. Las líneas 10, 11, 12 y 13, imprimen los valores
asignados a las constantes. Observe que el valor de la constante “PREGUNTA” de tipo booleano se imprime como uno
(1), esto ocurre porque C++, trabaja indistintamente con cero (0) ó uno (1), para valores booleanos falso (false) o
verdadero (true), respectivamente.

Flujos.
Toda entrada y salida de información se maneja mediante flujos – secuencias de caracteres organizadas en líneas. Cada
línea está formada por cero o más caracteres y está terminada por el carácter de nueva línea. El estándar indica que las
aplicaciones de ANSI C deben soportar líneas de por lo menos 254 caracteres, incluyendo un carácter de nueva línea de
terminación.
Cuando empieza la ejecución del programa, de forma automática se conectan tres (3) flujos al programa. Por lo regular,
el flujo estándar de entrada se conecta al teclado y el flujo estándar de salida se conecta al monitor. Es posible conectar
estos flujos a otros dispositivos. El tercer flujo, el error estándar, se conecta a la pantalla.

Flujo de Entrada/Salida de C++.


C++ permite manejar la entrada/salida de los tipos y cadenas de datos estándar empleando las funciones cout y cin:
cout << “Ingrese el dato: ”;
cin >> dato;
cout << “El nuevo dato es: ” << dato << “\n”;

La primera sentencia utiliza el flujo estándar de salida cout y el operador << (operador de inserción de flujo que se
pronuncia “colocar en”). La sentencia se lee:
La cadena “Ingrese el dato” es colocada en el flujo de salida cout.

La segunda sentencia utiliza flujo estándar de entrada cin y el operador >> (operador de extracción de flujo que se
pronuncia “obtener de”). La sentencia se lee:
Obtener un valor para dato del flujo de entrada cin.

Para utilizar entradas/salidas de flujo, los programas C++, deben incluir el archivo de cabecera iostream.h.

Nota: C++ al ser un C mejorado permite el uso de todas las funciones existentes en lenguaje C, incluyendo
las de manejo de flujos scanf y printf.

Secuencias de Escape.
La mayor parte de los caracteres literales, a imprimirse en una sentencia cout, pueden ser incluidos en la cadena de
control de formato. Sin embargo existen varios caracteres “problema”, tal como los caracteres comilla (“), que delimitan la
cadena de control de la misma. Varios caracteres de control como son la nueva línea y el tabulador, deben ser
representados por secuencias de escape. Una secuencia de escape es representada por una diagonal invertida (\)
seguida por un carácter de escape en particular. En la siguiente tabla se listan todas las secuencias de escape y las
acciones que causan.
Secuencia de Escape Descripción
\a Genera una alerta visual o audible (timbre).
\b Mueve el cursor hacia atrás una posición en la línea actual
\r Mueve el cursor al principio de la línea actual.
\n Mueve el cursor al inicio de la línea siguiente.
\t Mueve el cursor a la siguiente posición del tabulador
horizontal.
\v Mueve el cursor a la siguiente posición del tabulador
vertical.
\\ Salida del carácter de diagonal invertida (\).
\? Salida del signo de interrogación (?).
\’ Salida del carácter de una sola comilla (’).
\” Salida del carácter de dobles comillas (”).

Nota: Se puede incluir más de una secuencia de escape dentro de una cadena de control de formato.
Código ASCII (American Standard Code for Information Interchange).
Es un código de caracteres basado en el alfabeto latino creado en 1963, actualmente es ampliamente usado para
representar texto en casi todos los sistemas informáticos.

Código ASCII Código ASCII


Carácter Valor Carácter Valor
Valor Binario Valor Binario
Decimal Decimal
A 100 0001 65 0 011 0000 48
B 100 0010 66 1 011 0001 49
C 100 0011 67 2 011 0010 50
D 100 0100 68 3 011 0011 51
E 100 0101 69 4 011 0100 52
F 100 0110 70 5 011 0101 53
G 100 0111 71 6 011 0110 54
H 100 1000 72 7 011 0111 55
I 100 1001 73 8 011 1000 56
J 100 1010 74 9 011 1001 57
K 100 1011 75 espacio 010 0000 32
L 100 1100 76 . 010 1110 46
M 100 1101 77 < 011 1100 60
N 100 1110 78 ( 010 1000 40
O 100 1111 79 + 010 1011 43
P 101 0000 80 & 010 0110 38
Q 101 0001 81 ! 010 0001 33
R 101 0010 82 $ 010 0100 36
S 101 0011 83 * 010 1010 42
T 101 0100 84 ) 010 1001 41
U 101 0101 85 ; 010 1011 59
V 101 0110 86 , 010 1100 44
W 101 0111 87 % 010 0101 37
X 101 1000 88 _ 101 1111 95
Y 101 1001 89 > 011 1110 62
Z 101 1010 90 ? 011 1111 63
a 110 0001 97 : 011 1010 58
b 110 0010 98 # 010 0011 35
c 110 0011 99 @ 100 0000 64
d 110 0100 100 ‘ 010 0111 39
e 110 0101 101 = 011 1101 61
f 110 0110 102 “ 010 0010 34
g 110 0111 103 - 010 1101 45
h 110 1000 104 / 010 1111 47
i 110 1001 105 \ 101 1100 92
j 110 1010 106 [ 101 1011 91
k 110 1011 107 ] 101 1101 93
l 110 1100 108 ^ 101 1101 94
m 110 1101 109 € 111 1111 63
n 110 1110 110 { 111 1011 123
o 110 1111 111 } 111 1101 125
p 111 0000 112 | 111 1100 124
q 111 0001 113 ½ 1010 1011 171
r 111 0010 114 ¼ 1010 1100 172
s 111 0011 115 ² 1111 1101 253
t 111 0100 116 █ 1101 1011 219
u 111 0101 117 ⁿ 1111 1100 252
v 111 0110 118 √ 1111 1011 251
w 111 0111 119 (blanco) 1111 1111 255
x 111 1000 120
y 111 1001 121
z 111 1010 122
Ejercicios Resueltos.
1.- Dada las horas trabajadas de una persona y la tarifa de pago por hora, calcule su salario e imprímalo.
#include <iostream.h>
void main(){
int horas;
float tarifa, salario;
cout << “Ingrese las horas trabajadas: ”;
cin >> horas;
cout << “Ingrese la tarifa de pago por hora: ”;
cin >> tarifa;
salario = horas * tarifa;
cout << “Su salario es: ”<< salario <<“ por trabajar: ” << horas <<“ horas\n”;
}

La salida del programa anterior será la siguiente:

2.- Un instructor prepara 3 modelos de exámenes para tres salones. El instructor sabe que tarda 3 min en el modelo del
salón A, 6 min en el modelo del salón B y 7 min en el modelo del salón C. dadas las cantidades de estudiantes de cada
salón, ¿Cuántas horas y minutos tardará el instructor en revisar los exámenes de todos los salones?
#include <iostream.h>
#define SalonA 3
#define SalonB 6
#define SalonC 7
void main(){
int exam_A, exam_B, exam_C, tiempoA, tiempoB, tiempoC, tiempoT, horasT, minutosT;
cout << “Ingrese la cantidad de examenes del salon A: ”;
cin >> exam_A;
cout << “Ingrese la cantidad de examenes del salon B: ”;
cin >> exam_B;
cout << “Ingrese la cantidad de examenes del salon C: ”;
cin >> exam_C;
tiempoA = exam_A * SalonA;
tiempoB = exam_B * SalonB;
tiempoC = exam_C * SalonC;
tiempoT = tiempoA + tiempoB + tiempoC;
horasT = tiempoT / 60;
minutosT = tiempoT % 60;
cout << “El instructor tardara: ”<< horasT <<“ horas con ” << minutosT <<“ minutos\n”;
}
La salida del programa anterior será la siguiente:

El programa anterior podría modificarse para recibir desde el teclado el número de minutos que tarda el instructor por
cada modelo de prueba, e inclusive enviar un reporte más detallado al usuario.

Ejercicios Propuestos.
1.- Obtener la edad de una persona en meses, si se ingresa su edad en años y meses. Por ejemplo si se ingresan 25
años y 2 meses se debe mostrar 302 meses.

2.- Hacer un programa que permita ingresar dos números y calcule las cuatro operaciones básicas (suma, resta,
multiplicación y división) con ellos. Además calcular la potencia.

3.- Realice un programa que extraiga los dígitos individuales de un entero de dos dígitos.

4.- Calcule el interés generado (interes) por un capital depositado (capdep), durante cierta cantidad de meses (cm) a una
tasa de interés determinada (tasa) expresada en porcentaje. Use las fórmulas:
a. monto = (capdep) * (1 + tasa / 100) * cp
b. interes = monto – capdep
UNIDAD IV. PROGRAMACIÓN ESTRUCTURADA I.

La Programación Estructurada (PE) posee tres (3) tipos de estructuras básicas: Estructuras Secuenciales, Estructuras
Selectivas y las Estructuras Repetitivas ó de Ciclo.

Estructuras Secuenciales.
En las estructuras secuenciales una instrucción sigue a otra en secuencia, es decir, la salida de una instrucción es la
entrada de la siguiente. Todas las estructuras secuenciales se ejecutarán automáticamente uno después de otro
iniciando desde la función principal main. Todos los programas anteriores siguen este tipo de estructuras.

Estructuras Selectivas.
En este tipo de estructuras se evalúa una condición booleana y en función del resultado lógico (verdadero o falso) u otro
resultado, se ejecuta un conjunto de instrucciones. Permiten al programador especificar que la sentencia siguiente a
ejecutar puede ser otro diferente del que sigue en secuencia. Son también denominadas estructuras de control de flujo,
estructuras condicionales o de toma de decisiones. Hay tres tipos de estructuras selectivas: simples, compuestas o
múltiples.

• Estructura Selectiva Simple.


La estructura selectiva simple es la estructura condicional elemental y básica. Presenta la siguiente forma:
Si <condición> entonces
<acción>
Fin si

En esta estructura condicional se evalúa la condición, si el resultado es verdadero se ejecuta el conjunto de acciones
asociadas, si el resultado es falso no se ejecuta acción alguna. La traducción a C++ es la siguiente:
if (condición)
sentencia;

La palabra reservada if se traduce como “si”. Si la “condición” (que debe estar encerrada entre paréntesis) se evalúa y
retorna un valor de verdadero entonces se ejecuta la sentencia que se encuentra luego de la condición. Esta “condición”
usualmente es una expresión booleana, aunque también podría ser una expresión numérica, en cuyo caso el resultado
cero (0) se interpretaría como falso y cualquier otro valor numérico se interpretaría como un valor verdadero.

Esto se estudiará mejor con un ejemplo.


Enunciado del Problema:
Se ha solicitado un programa para vender artículos en una licorería, sin embargo existe una restricción, si el cliente es
menor de edad (tiene menos de 18 años) no se venderá ningún artículo.
Para este programa, únicamente nos interesa investigar la edad del comprador, es por ello que lo único que debe realizar
nuestro programa es solicitar la edad del comprador y determinar si es apto para comprar cualquier producto. Si no
cumple esta condición el programa debe informar que no puede realizar la venta. El programa es como sigue:
#include <iostream.h>
void main(){
int edad;
cout << “Ingrese la edad del cliente:\n”;
cin >> edad;
if (edad < 18)
cout << “Lo siento, no se atiende a personas menores de edad...\a\n”;
}

Observe las dos posibles salidas del programa anterior.


Si la edad ingresada es menor a 18, la salida será: Si la edad ingresada es 18 o más, la salida será:

El programa anterior es muy limitado, ya que no permite enviar una respuesta si el cliente fue aceptado. Este problema
podría solucionarse agregando otra estructura if debajo de la sentencia asociada a la primera estructura decisiva o
empleando las estructuras de selección múltiple, que se estudiarán a continuación.

• Estructura Selectiva Doble.


La estructura selectiva simple es una estructura condicional que evalúa una condición dada. Si es verdad, se
ejecutan el conjunto de de acciones asociadas a la parte del “si”, si es falso se ejecutan las acciones asociadas a la parte
del “no”.

La forma de la estructura selectiva doble es:

Si <condición> entonces
<acción>
Sino
<acción>
Fin si

La traducción a C++, es como sigue:


if (condición)
sentencia;
else
sentencia;
La palabra reservada else se traduce como “sino” ó “caso contrario”. Si la condición del if retorna falso (false) o cero
(0), la sentencia asociada al if no será ejecutada, pero la sentencia luego del else se ejecutará. Esto se demostrará
ampliando el programa anterior, de la siguiente manera:

#include <iostream.h>
void main(){
int edad;
cout << “Ingrese la edad del cliente:\n”;
cin >> edad;
if (edad < 18)
cout << “Lo siento, no se atiende a personas menores de edad...\a\n”;
else
cout << “Bienvenido, que desea comprar?\n”;
}

Cuando este código se ejecuta se obtienen dos salidas diferentes dependiendo de la edad introducida por el usuario.

Nota: Jamás se coloca punto y coma (;) luego de la condición de un if. El else tampoco termina en punto y
coma (;).

Los programas anteriores únicamente ejecutarán una sentencia asociada al if o else. Si se intenta ejecutar dos o más
sentencias exclusivamente cuando se cumpla alguna condición, únicamente la primera se ejecutará o no de acuerdo a la
condición, las otras se ejecutarán de manera independiente.
Observe el siguiente ejemplo.

1. #include <iostream.h>
2. #define MIN 58
3. void main(){
4. int nota;
5. cout << “Ingrese la nota (1-100):\n”;
6. cin >> nota;
7. if (nota >= MIN)
8. cout << “Aprobado. Felicitaciones\n”;
9. else
10. cout << “Reprobado\n”;
11. cout << “Debe volver a cursar la materia\n”;
12. }

La salida del programa anterior será la siguiente:


El programa anterior produce una salida no deseada, ya que se deseaba imprimir la línea 11 únicamente si la condición
del if (que la nota sea mayor o igual que 58). De la misma manera, si se intenta agregar más de una línea entre la
estructura if y else ocurrirá un error.
Para incluir un conjunto de sentencias dentro del cuerpo de un if, se encierran el conjunto de sentencias entre llaves
({ y }). Se replantea el ejercicio anterior empleando llaves.

1. #include <iostream.h>
2. #define MIN 58
3. void main(){
4. int nota;
5. cout << “Ingrese la nota (1-100):\n”;
6. cin >> nota;
7. if (nota >= MIN)
8. cout << “Aprobado. Felicitaciones\n”;
9. else {
10. cout << “Reprobado\n”;
11. cout << “Debe volver a cursar la materia\n”;
12. }
13. }

La salida del programa anterior será la siguiente:


Nota: Un conjunto de sentencias contenidas dentro de un par de llaves, se conoce como un enunciado compuesto.

Con el uso de llaves se obtuvo el resultado deseado. Se resolverá otro ejercicio para reforzar mejor lo aprendido.
Enunciado del Problema:
Convertir una letra Mayúscula en Minúscula y viceversa.
El programa a realizar debe recibir como entrada una letra que puede ser minúscula o mayúscula. Cada letra posee una
representación ASCII, lo que permite manipular la entrada y saber con exactitud cual letra ha sido introducida por el
usuario. Los pasos para resolver el planteamiento se muestran a continuación:
Paso 1: Se lee una letra cualquiera.
Paso 2: Según el código ASCII se calcula la diferencia entre la representación minúscula y mayúscula de cualquier letra,
eso para obtener el valor numérico que permitirá hacer la conversión. Para todos los casos es 32.
Paso 3: Siendo a=97, b=98 …, z=122 y A=65, B=66 …, Z=90, se establecen las condiciones que nos permiten saber si
la letra introducida es mayúscula o minúscula. Si es minúscula al valor ASCII que la representa se le resta la diferencia
calculada en el paso 2. Si es mayúscula al valor ASCII que la representa se le suma la diferencia mencionada. El
resultado obtenido para cualquiera de los casos representa el código ASCII de la conversión de la letra original.
Paso 4: Se muestra en pantalla la representación de la letra seleccionada.

#include <iostream.h>
void main(){
char letra, ch;
int dif;
cout << “Ingrese una letra.\n”;
cin >> letra;
dif = ‘a’ – ‘A’;
if ((letra >= 97) && (letra <= 122)) {
ch = letra - dif;
}
if ((letra >= 65) && (letra <= 90)) {
ch = letra + dif;
}
cout << “La correlativa de la letra ” << letra << “ es: ”<<ch<< “\n”;
}

• Estructura Selectiva de Alternativa Múltiple.


En la estructura selectiva de alternativa múltiple se evalúa una condición o expresión que puede tomar “n” valores
distintos. Según sea el valor de la expresión en un instante dado, se ejecutarán las acciones correspondientes a ese
valor. En realidad equivale a un conjunto de sentencias anidadas. En muchos lenguajes de programación se conocen
como sentencias Case o Switch.

Es una sentencia de forma:


Según sea <expresión>
<valor1>: <acciones 1>
<valor2>: <acciones 2>
[<otro>: <acciones n>]
Fin según

En C++, esta estructura es llamada switch… case. La representación de esta estructura en C++ es como sigue:
switch (expresión){
case valor1: sentencias;
break;
case valor2: sentencias;
break;
default: sentencias;
break;
}

Un ejemplo de la estructura switch… case, será, escribir un programa que reciba como entrada un valor entre el 1 y 7,
e imprima el día de la semana que corresponde al número que se ingresó. 1 denota el día lunes, 2 el día martes y así
sucesivamente. Si la entrada no es válida se debe mostrar un mensaje.

#include <iostream.h>
void main(){
int dia;
cout << “Ingrese numero en el rango 1-7\n”;
cin >> dia;
switch (dia){
case 1: cout << “El 1 es lunes\n”;
break;
case 2: cout << “El 2 es martes\n”;
break;
case 3: cout << “El 3 es miercoles\n”;
break;
case 4: cout << “El 4 es jueves\n”;
break;
case 5: cout << “El 5 es viernes\n”;
break;
case 6: cout << “El 6 es sabado\n”;
break;
case 7: cout << “El 7 es domingo\n”;
break;
default: cout << “El dato no es correcto\n”;
break;
}
}
La salida del programa anterior será:
La etiqueta default, se usa para ejecutar una sentencia cuando ninguno de los casos (case), anteriores fue satisfecho.
Si la sentencia break no está presente, la ejecución fluye lógicamente a las sentencias siguientes al próximo case, lo
cual comúnmente no se desea.
La construcción switch… case, puede usarse únicamente para condiciones de igualdad. No puede usarse para una
condición como if (dia <= 8). La variable en la construcción switch… case, puede ser de cualquier tipo de dato
que puede se enumerado (datos alfanuméricos, booleanos), esto significa que los tipos de datos float y double no son
tipos de datos válidos para esta estructura.

Estructuras Anidadas.
Las estructuras selectivas y los bucles, se pueden escribir unas dentro de otras. Esto se conoce como estructuras
anidadas.
En otras palabras una estructura condicional if puede tener dentro de sus sentencias otro if, o cualquier otra
estructura, condicional o repetitiva (estas serán estudiadas en la siguiente unidad).

Anidación de Condicionales.
En muchas situaciones, se requiere evaluar un conjunto de condiciones en forma secuencial y separada. En estos casos
se recomienda utilizar una anidación de sentencias condicionales. Una manera de hacer esto es como sigue:
if (condición){
sentencia;
}else if (condición){
sentencia;
}else if (condición){
sentencia;
}
}
}
La forma común de realizar el anidamiento es colocar la condición en la parte ‘no’ (else) de la sentencia.
La sentencia switch… case, siempre equivale a una anidación de condicionales, pero lo contrario no es cierto. Para
entender mejor esto realizaremos un ejemplo.
Enunciado del Problema:
Contar los días de un mes.
El usuario ingresa un número entero entre el uno (1) y el doce (12), que significa el mes. Aquí 1 representa Enero, 2
representa Febrero y así sucesivamente hasta llegar a Diciembre. El problema consiste en escribir un programa que
tome esta entrada y muestre el número de días de este mes en particular. Asuma que el mes de Febrero solo tiene 28
días.

#include <iostream.h>
main(){
int mes, dias;
cout << "Ingrese el mes que se encuentre entre el 1 -12\n";
cin >> mes;
if ((mes >= 1) && (mes <= 12)){
if ((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11))
dias = 30;
else if (mes == 2)
dias = 28;
else
dias = 31;
cout << "El numero de dias del mes " << mes << " es: "<<dias<< "\n";
} else
cout << "Ingrese un dato valido\n";
}

Formas de la Sentencia IF.


Algunas de las formas de la sentencia if se listan a continuación:

1. if (condición)
Ejecuta una sola sentencia;

2. if (condición)
Ejecuta una sola sentencia;
else
Ejecuta una sola sentencia;

3. if (condición) {
Ejecuta una o más sentencias;
}
else {
Ejecuta una o más sentencias;
}

4. if (condición)
Ejecuta una sola sentencia;
else {
if (condición)
Ejecuta una sola sentencia;
else {
Ejecuta una o más sentencias;
}
}

5. if (condición) {
if (condición)
Ejecuta una sola sentencia;
else {
Ejecuta una ó más sentencia;
else {
Ejecuta una o más sentencias;
}
}
else
Ejecuta una sola sentencia;

Operador Ternario.
El operador ternario en C++ es una construcción if de una línea la cual tiene tres términos. Los símbolos de
interrogación ( ? ) y dos puntos ( : ) se usan como operadores ternarios. Si la condición evalúa a verdadero entonces la
sentencia después del signo de interrogación ( ? ) se ejecuta, sí no la sentencia después de los dos puntos ( : ) se
ejecuta.
Condición ? Condición_Valor_Verdadero : Condición_Valor_Falso;

Un ejemplo del operador ternario es el siguiente:


(a==b)? cout<<"Iguales\n":cout<<"Diferentes\n";

El operador ternario también se puede usar en sentencias de asignación como sigue:


a=10;
b=8;
x =(a==b)? a : b;
La condición a==b evalúa falso y la sentencia después del : se ejecuta. Por tanto, x toma el valor de 8. Los operadores
ternarios permiten el uso conciso de una construcción if-else simple. Un ejemplo de este operador puede ser el
siguiente:

#include <iostream.h>
void main(){
int x , y; //se declaran las variables
cout << “Ingrese dos numeros separador por un espacio\n”;
cin >> x >> y;
/*Se muestran los valores de “x” y “y” al usuario*/
cout << “El numero x es: ”<< x << “El numero y es: ”<< y << “\n”;
(x > y) ? cout << “x es mayor...\n” : cout << “y es mayor...\n”;
}

En el programa anterior se emplearon algunos comentarios, a continuación veremos como se emplean y para que sirven.

Comentarios.
Los programadores insertan comentarios para documentar los programas y mejorar la legibilidad de los mismos. Al
ejecutarse el programa, los comentarios no hacen que la computadora realice ninguna acción. Los comentarios serán
ignorados por el compilador de C++ y no harán que se genere ningún código objeto en lenguaje máquina.
Se pueden escribir comentarios en C++ de dos maneras. La primera consiste en agregar dos barras de división (//) antes
de la línea o sentencia que será comentada. Comentará únicamente dicha línea o sentencia.
La segunda forma consiste en utilizar /* */, todas las líneas o sentencias que se encuentren entre /* */, serán
ignoradas por el procesador. Se comentarán todas las líneas que se encuentren
Errores en Programación.
Existen dos tipos de errores básicos en la programación, los errores de sintaxis y los lógicos. Los errores de sintaxis se
producen cuando el código está mal escrito, por ejemplo, le falta un punto y coma, una variable no se declaró, etc. Los
errores lógicos ocurren cuando se ha planteado de manera incorrecta la solución a un problema, generalmente esto
ocurre cuando elaboramos el algoritmo.

Un error de sintaxis será detectado por el compilador. Un error lógico hará su efecto durante la ejecución. Un error lógico
fatal hará que el programa falle y se termine en forma prematura. Un error lógico no fatal permitirá que continúe el
programa, pero produciendo resultados incorrectos o no deseados.
A continuación se presentará una lista con algunos de los errores más comunes en la programación:
• Olvidar terminar un comentario con */
• Iniciar un comentario con los caracteres */ o terminar un comentario con los caracteres /*
• Escribir en un programa el nombre de la función de salida cout como count.

• Usar una letra mayúscula donde debería haberse usado una minúscula (por ejemplo Main, en vez de main).
• Finalizar la declaración de una constante con punto y coma (;).
• El cálculo en un enunciado de asignación debe aparecer en el lado derecho del operador =. Es un error de
sintaxis colocar un cálculo del lado izquierdo.
• Olvidar una o ambas de las comillas dobles que rodean la cadena de control de formato en un cout.

• Colocar una secuencia de escape como \n fuera de una cadena de control de formato en un cout.

• Colocar una variable que debería imprimirse dentro de una cadena de control de formato en un cout.

• Olvidar separar una cadena de control formato de una variable empleando de operador de inserción de flujo <<
en un cout.

• Colocar dos variables seguidas que deberían ser obtenidas por teclado (cin>> var1 var2;), cuando se deben
estar separadas por el operador de extracción de flujo >> en un cin.

• Confundir los operadores de extracción de flujo (>>), por los operadores de inserción de flujo (<<) en una función
cin o cout.
• Un intento de dividir entre cero (0), por lo regular, resulta no definido en sistemas de cómputo, y en general da
un resultado fatal, es decir, un error que hace que un programa se termine de inmediato sin haber ejecutado de
forma exitosa su tarea.
• Ocurrirá un error de sintaxis si los dos símbolos en cualquiera de los operadores, ==, !=, >=, <=, están separados
por espacios.
• Ocurrirá un error de sintaxis si los dos símbolos en cualquiera de los operadores, !=, >=, <=, están invertidos, por
ejemplo =>, =<, =!
• Confundir el operador de igualdad ==, con el de asignación =
• Olvidar colocar un punto y coma (;) al final de una sentencia.
• Colocar un punto y coma (;) de inmediato a la derecha del paréntesis derecho, después de la condición if.

• Olvidar una o ambas llaves que delimitan un enunciado compuesto.


• Olvidar cerrar una llave, comilla doble o simple, un corchete.
• Olvidar declarar una variable, antes de usarla.
• Utilizar incorrectamente los operadores lógicos en una expresión booleana.
• Olvidar separar las variables con comas (,) en una declaración múltiple.
• Olvidar una o ambas llaves que delimitan un enunciado compuesto.
• Escribir alguna palabra reservada como if, con una I como If (recuerde que C++ es un lenguaje sensible a la
caja tipográfica) todas las palabras reservadas de C++, como else, if y while contienen solo letras
minúsculas.

Ejercicios Propuestos.
1.- Leer tres números enteros y, si el primero de ellos es negativo, calcular el producto de los tres, en caso contrario
calcular la suma de ellos.

2.- Escribir un programa que pida un año y diga si es bisiesto o no. Un año es bisiesto si es múltiplo de 4 salvo el caso en
que sea múltiplo de 100, que no es bisiesto, y no sea múltiplo de 400. Por ejemplo, el año 1900 no fue bisiesto, el 2000 sí
y el 2100 no lo es.

3.- Escribir un programa que permita efectuar el cálculo del área de un cuadrado, un círculo o un triángulo equilátero
según la opción seleccionada por el usuario a través de un menú.
• Crear una primera versión con la estructura de control if ... else
• Y una segunda versión con la estructura de control switch... case...

4.- Escribir un programa que pida dos caracteres por pantalla, los ordene alfabéticamente, y los imprima ordenados.

5.- La empresa “LA ABEJA”, es productora de dos tipos de mallas: mayas planas y mayas en rollo. La alta gerencia
requiere controlar las ventas por día según las siguientes políticas: si el comprador tiene más de 5 años adquiriendo
malla en rollo tendrá un descuento del 8% en está malla. Si es comprador de malla plana por más de 6 años tendrá un
descuento del 6% en esa malla. El costo de la malla plana es de 400 Bs.F, por metro y la malla de rollo es de 290 Bs.F.
por metro. Elabore un programa que capture los metros a comprar por tipo de malla, además del tiempo en años que
como comprador ha adquirido los tipos de malla existente. La salida del programa será la cantidad total de descuento
obtenido por cliente.

Das könnte Ihnen auch gefallen