Manual de C++

25
UTPCH - PRIMER SEMESTRE 2012 PROFESOR: BALTAZAR APARICIO S. LENGUAJE DE PROGRAMACIÓN C++ Introducción a C++ El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue B. Stroustrup, de la ATT. Al comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. El nombre C++ es también de ese año, hace referencia al carácter del operador incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI (seguido algún tiempo después por un comité ISO) para estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad y eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar aplicaciones en Internet. C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con él, aunque ya se ha dicho que presenta ciertas ventajas . Como lenguaje orientado a objetos se basa en una filosofía completamente diferente, que exige del programador un completo cambio de mentalidad. Las características propias de la Programación Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que sí cambian radicalmente su naturaleza. C++ no es un lenguaje orientado a objetos puro (en el sentido en que puede serlo Java por ejemplo), además no nació como un ejercicio académico de diseño. Se trata

description

c++

Transcript of Manual de C++

Page 1: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Introducción a C++

El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue B. Stroustrup, de la ATT. Al comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. El nombre C++ es también de ese año, hace referencia al carácter del operador incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI (seguido algún tiempo después por un comité ISO) para estandarizarlo a nivel americano e internacional.

En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad y eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar aplicaciones en Internet.

C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con él, aunque ya se ha dicho que presenta ciertas ventajas . Como lenguaje orientado a objetos se basa en una filosofía completamente diferente, que exige del programador un completo cambio de mentalidad. Las características propias de la Programación Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que sí cambian radicalmente su naturaleza.

C++ no es un lenguaje orientado a objetos puro (en el sentido en que puede serlo Java por ejemplo), además no nació como un ejercicio académico de diseño. Se trata simplemente del sucesor de un lenguaje de programación hecho por programadores (de alto nivel) para programadores, lo que se traduce en un diseño pragmático al que se le han ido añadiendo todos los elementos que la práctica aconsejaba como necesarios, con independencia de su belleza o purismo conceptual.

Los programas escritos en C o C++ tienen otras ventajas sobre el resto. Con la excepción del ensamblador, generan los programas más compactos y rápidos. El código es portable, es decir, un programa ANSI en C o C++ podrá ejecutarse en cualquier máquina y bajo cualquier sistema operativo. Y si es necesario, proporcionan un acceso a bajo nivel de hardware sólo igualado por el ensamblador.

Otra ventaja importante, C tiene más de 30 años de vida, y C++ casi 20 y no parece que su uso se debilite demasiado. No se trata de un lenguaje de moda, y probablemente a ambos les quede aún mucha vida por delante. Sólo hay que pensar que sistemas operativos como Linux, Unix o incluso Windows, MySQL, Apache, etc. se escriben casi por completo en C.

Page 2: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Reglas generales del c++

Este lenguaje presenta varias características, entre las cuales están:1. Lenguaje de programación de propósitos generales2. Permite la Programación Estructurada 3. Abundancia de Operadores y Tipos de Datos4. No está asociado a ningún sistema operativo ni a ninguna máquina5. Popular y Eficaz6. Permite el desarrollo de Sistemas Operativos y programas de aplicación7. Portabilidad8. Existen las librerías en las bibliotecas9. tiene sólo 32 palabras reservadas

Estructura básica de un programa

Para conocer la estructura básica de un programa en C++ analicemos con detalles el siguiente programa:

//declaración de librerias// función main// llave de inicio de la función main//secuencia de instrucciones//valor de retorno de la función//cierre de la función main

 #include <iostream>

La parte del #include se refiere a la biblioteca de funciones que vamos a utilizar. Es decir para llamar a una biblioteca en particular debemos hacer lo siguiente:

#include <librería_solicitada>

El estándar de C++ incluye varias bibliotecas de funciones, y dependiendo del compilador que se esté usando, puede aumentar el número.

#include <iostream>int main(void){ cout << "Hello world!" << endl; return 0;}

Page 3: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

int main(void){

Todo programa en C++ comienza con una función main(), y sólo puede haber una.En C++ el main() siempre regresa un entero, es por eso se antepone “int” a la palabra “main”. Los paréntesis que le siguen contienen lo que se le va a mandar a la función. En este caso se puso la palabra “void” que significa vacío, es decir que a la función main no se le está mandando nada, podría omitirse el void dentro de los paréntesis, el compilador asume que no se enviará nada. La llave que se abre significa que se iniciará un bloque de instrucciones.

cout<<”hola mundo”<<endl;

Esta es una instrucción. La instrucción cout está definida dentro de la biblioteca iostream.h, que previamente declaramos que íbamos a utilizar. Una función, en este caso main() siempre comienza su ejecución con una instrucción (la que se encuentra en la parte superior), y continúa así hasta que se llegue a la última instrucción (de la parte inferior). Para terminar una instrucción siempre se coloca “;”.Pero además de instrucciones se pueden invocar funciones definidas por el usuario (por supuesto diferentes de main) como se verá mas adelante.

return 0;

Esta es otra instrucción, en este caso la instrucción return determina que es lo quese devolverá de la función main(). Habíamos declarado que main devolvería un entero, así que la instrucción return devuelve 0. Lo cual a su vez significa que no han ocurrido errores durante su ejecución.

}La llave de cierre de la función main() indica el termino del bloque de instrucciones.En algunos programas de ejemplo, notará el uso de dobles diagonales (“//”). Estas diagonales se usan para escribir comentarios de una línea dentro del código del programa. Además podrá encontrar el uso de “/*” “*/” estos caracteres encierran un comentario de varias líneas y cualquier cosa que se escriba dentro de ella no influenciará en el desempeño del programa.También verá que muchas veces utilizaremos una diagonal invertida (“\”). Este signo se utiliza cuando una instrucción ocupará varias líneas y por razones de espacio en la hoja es mejor dividirla en partes.

Page 4: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Elementos básicos del C++

Identificadores y palabras reservadasLos identificadores es un conjunto de caracteres alfanuméricos que se emplean para nombrar de variables, constantes, funciones, tipos de datos, etc. Pueden estar formadas por combinaciones de letras, números o signos sin embargo la definición de los identificadores es propia de cada lenguaje de programación. Para el caso de lenguaje C++ estas son las reglas que deben ser respetadas a la hora de proponer los identificadores:

C++ distingue entre letras mayúsculas y minúsculas. El primer carácter siempre debe ser una letra o un guion bajo (_). No se pueden emplear palabras reservadas como identificadores.

Los siguientes son ejemplos de identificadores validos para C++

   X                      _nombre                     resultado1                  area1              _funcion

Los siguientes son ejemplos de identificadores no validos para C++

            &y                   1nombre                     res$                 .x                     char

En lenguaje C++ una variable llamada area es completamente distinta de una llamada Area pues el lenguaje C++ distingue entre mayúsculas y minúsculas.

Palabras reservadas

C++ al igual que otros lenguajes de programación posee un conjunto de palabras que no pueden ser empleadas como identificadores para nombrar variables, constantes o funciones son llamadas Palabras reservadas. Enseguida se presenta una lista de las palabras reservadas ANSI/ISO C++.

asm continue float new signed tryauto Default for operator sizeof typedefbreak Delete friend private stact unioncase Do goto protected struct unsignedcatch Double if public switch virtualchar Else inline register template voidclass Enum int return this volatileconst Extern long short trhow while

 Tipos de datos básicos

Las computadoras pueden trabajar con varios tipos de datos, los algoritmos y programas operan sobre estos. Existen dos clases de datos: datos simples y datos compuestos.

Los distintos tipos de datos se representan como un conjunto o secuencia de dígitos binarios (bits). Los lenguajes de programación de alto nivel nos permiten basarnos en abstracciones para no manejar los detalles de representación interna.

Los tipos de datos simples son: numéricos (enteros y reales), lógicos y caracteres.

Page 5: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Datos numéricos

Este tipo de datos se divide en enteros y reales.

Los enteros son aquellos números que no tienen componente fraccionario o decimal y dentro de la computadora son un subconjunto finito de los números enteros. Estos números pueden ser negativos o positivos y el rango es de –32,768 a 32,767.

El tipo de datos "real" son aquellos números que tienen una parte fraccionaria y pueden ser positivos y negativos dentro de la computadora forman un subconjunto de los números reales. Para representar números muy pequeños o muy grandes se emplea la notación de punto flotante, que es una generalización de la notación científica. En esta notación se considera al número real como mantisa y al exponente la potencia de 10 a la que se eleva este número.

Datos lógicos

Este tipo de dato es aquel que solo puede tomar uno de 2 valores: verdadero (true) o falso (false). En lenguaje C no existe el tipo lógico pero se puede implementar con un número entero conociendo que 0 es falso y cualquier número diferente de cero verdadero.

Caracteres

El dato tipo carácter puede tomar un valor de un conjunto finito y ordenado de caracteres o símbolos que la computadora reconoce (código ASCII). Este tipo de dato ocupa un byte y almacena un solo carácter.

Existe también el dato tipo cadena (compuesto) que es una sucesión de caracteres que se encuentran delimitados por comillas, la longitud de una cadena es el número de caracteres comprendidos entre los delimitadores.

Tipos de datos Descripción Memoria

Int Entero 2 bytes

Char Caracter 1 byte

Float Flotante 4 bytes

Double Flotante de doble precisión 8 bytes

Constantes y variables

Una constante es un dato que permanece sin cambio durante el desarrollo del algoritmo o durante la ejecución del programa. La mayoría de los lenguajes de programación nos permiten el manejo de diferentes tipos de constantes, estas pueden ser enteras, reales, caracteres y cadenas. En lenguaje C++ una constante se define por medio de la instrucción #define (directiva del procesador).

Page 6: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Una variable es un dato cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecución del programa. Hay diferentes tipos de variables: enteras, reales, caracteres y cadenas. Una variable que es de cierto tipo solo puede tomar valores que correspondan a ese tipo. Si se intenta asignar un valor de tipo diferente se producirá un error.

Una variable se identifica por dos atributos: el nombre de la variable (identificador) y el tipo de la variable. El identificador se puede formar con caracteres alfanuméricos y el carácter de subrayado ( _ ) empezando siempre por una letra. No se admiten como identificadores palabras reservadas del lenguaje de programación que se esté utilizando. Los nombres de variables que se elijan para el algoritmo o programa deben ser significativos y tener relación con el objeto que representa. En lenguaje C la sintaxis para definir una variable es:

tipo_de_dato identificador;

Contador

Los procesos repetitivos requieren contar los sucesos y acciones internas, una forma de hacerlo es mediante un contador. Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada repetición. La forma en que se construye un contador es la siguiente:

int contador = 1; //variable con valor inicial de 1contador = contador+1;contador += 1;contador ++;

Acumulador

Un acumulador o totalizador es una variable cuya función es almacenar cantidades resultantes de operaciones sucesivas. Realiza la misma función que un contador con la diferencia de que el incremento o decremento es variable en lugar de constante.

int acumulador = 0;acumulador = acumulador + valor;acumulador += valor;

Banderas

Una bandera, también denominada interruptor o conmutador es una variable que puede tomar uno de dos valores (verdadero o falso) a lo largo de la ejecución del programa y permite comunicar información de una parte a otra del mismo.

int primo;primo = 0;primo = 1;

Declaraciones de variables globales y locales

Una variable global se declara fuera de todas las funciones, incluyendo a la función main(). Una variable global puede ser utilizada en cualquier parte del programa.

Page 7: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Por ejemplo:

short numero, suma;int numerogr, sumagr;char letra;

main(){...}Es también posible preinicializar variables globales usando el operador de asignación =, por ejemplo:

float suma= 0.0;

int sumagr= 0;char letra= 'A';

main(){...}

Que es lo mismo que:

float suma;int sumagr;char letra;

main(){ suma = 0.0; sumagr= 0; letra = 'A';

...}Dentro de C también se permite la asignación múltiple usando el operador =, por ejemplo:

a = b = c = d = 3;...que es lo mismo, pero más eficiente que:

a = 3;

Page 8: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

b = 3;c = 3;d = 3;La asignación múltiple se puede llevar a cabo, si todos los tipos de las variables son iguales.

Se pueden redefinir los tipos de C usando typedef. Como un ejemplo de un simple uso se considera como se crean dos nuevos tipos real y letra. Estos nuevos tipos pueden ser usados de igual forma como los tipos predefinidos de C.

typedef float real;typedef char letra;

/* Declaracion de variables usando el nuevo tipo */real suma=0.0;letra sig_letra;

Entrada y salida de datosEn esta lección se verá como generar datos de salida desde el sistema. En general la obtención de datos de entrada al sistema se conoce como lectura y la generación de datos desde el sistema se denomina escritura. Veremos cómo escribir información en la pantalla de su monitor y en la impresora. En otra lección, aprenderá cómo escribir información en un archivo, así como leer información desde el teclado y desde un archivo en disco.

Las bibliotecas estándar de C++ proporcionan un amplio conjunto de capacidades de entrada/salida. Esta lección trata de los flujos de E/S comunes, suficiente para resolver la mayoría de los problemas de computación, además ofrece una panorámica de las capacidades restantes.

Las características de E/S que aquí se describen están orientadas a objetos. Deberá encontrar interesante el ver la manera en que se implementan. Este estilo de E/S utiliza otras características de C++, tales como referencias, sobrecarga de funciones y de operadores.

Como veremos, C++ utiliza E/S a prueba de tipos. Cada operación de E/S se realiza automáticamente en una forma sensible con respecto al tipo de datos. Si una función de E/S se ha definido adecuadamente para que maneje un tipo de dato en particular, entonces dicha función manejará automáticamente ese tipo de datos. Si no hay concordancia entre el tipo de datos y la función que maneja ese tipo de datos, el compilador envía un mensaje de error. Por lo tanto, los datos inadecuados no pueden andar furtivamente por el sistema (como puede suceder en C un hueco que C permite para producir algunos errores sutiles y extraños).

Los usuarios pueden especificar la E/S tanto de tipos estándar como de tipos definidos por el usuario. Esta capacidad es una de las características más valiosas de C++.

Page 9: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

La biblioteca iostream de C++ proporciona cientos de capacidades de E/S. Varios

archivos de encabezado contienen partes de la interfaz a la biblioteca.

La mayoría de los programas C++ incluyen el archivo de encabezado <iostream.h>, que contiene la información básica requerida para todas las operaciones de flujo de E/S. Dicho archivo contiene los objetos cin, cout, cerr y clog, que corresponden respectivamente con el flujo de entrada y salida estándar, el flujo de errores estándar no almacenado en búfer y el flujo de errores estándar almacenado en búfer. Se proporcionan capacidades de E/S formateadas y sin formato.

El archivo de encabezado <iomanip.h> contiene información útil para realizar la E/S formateada con los llamados manipuladores de flujo con parámetros.

El archivo de encabezado <fstream.h> contiene información importante para las operaciones de procesamiento de archivos controladas por el usuario.

La sobrecarga de operadores (utilización de un operador para realizar más de una tarea) proporciona una notación conveniente para la realización de la entrada/salida. El operador de desplazamiento a la izquierda (<<) está sobrecargado para indicar el flujo de salida y se denomina operador de inserción de flujo. El operador de desplazamiento a la derecha (>>) está sobrecargado para indicar el flujo de salida y se denomina operador de extracción de flujo. Estos operadores se utilizan con los objetos de flujo estándar cin, cout, cerr, clog, y comúnmente con los objetos de flujo definidos por el usuario.

cin es un objeto de la clase istream, y se dice que está enlazado (o conectado) al dispositivo de entrada estándar que normalmente es el teclado. El operador de extracción de flujo, como se utiliza en la siguiente instrucción, causa que un valor para la variable entera calificacion (suponiendo que calificacion ha sido declarada como int) se reciba desde cin hacia la memoria:

cin >> calificacion;

Observe que la operación de extracción de flujo es lo suficientemente inteligente para saber el tipo de dato que es. Suponiendo que calificacion se haya declarado adecua- damente, no se necesita especificar información adicional con dicho operador (como es el caso de la E/S estilo C).

cout es un objeto de la clase ostream, y se dice que está enlazado al dispositivo de salida estándar que normalmente es la pantalla. El operador de inserción de flujo, como se utiliza en la siguiente instrucción, causa que al valor de la variable entera calificacion se le dé salida desde la memoria hacia el dispositivo de salida estándar:

cout << calificacion;

Observe que el operador de inserción es lo suficientemente inteligente para saber el tipo de calificacion (suponiendo que se haya declarado adecuadamente), por lo que no se necesita especificar información adicional con dicho operador.

Page 10: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

El formato general para el enunciado cout es el siguiente:cout << elemento1 << elemento2 << elemento 3 << ... << elementoN;

Como puede observar, después de cout sigue una lista de elementos para escribirse, los cuales están separadas por el operador de inserción de flujo <<. De esta manera, un enunciado cout representa una secuencia o flujo de datos o que se dirige a la pantalla del monitor. Los elementos se insertan dentro de un flujo de salida a través del operador de inserción de flujo <<.

Ejemplo:

Codifique un programa en C++ que permita leer el nombre de una persona, su cedula y su edad. Imprimir los resultados.

#include <iostream>using namespace std;int main(void){ char nombre[25],cedula[15]; int edad; cout << "Introduzca el nombre: "; cin >> nombre; cout << "Introduzca la cedula: "; cin >> cedula; cout << "Introduzca la edad: "; cin >> edad; cout << "Nombre: " << nombre << "\nCedula: " << cedula << "\nEdad: " << edad;}

Secuencias de EscapesIndica que debe ejecutar algo extraordinario.

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 alarma del sistema\\ Imprime un carácter de diagonal invertida\? Imprime el carácter del signo de interrogación\” Imprime una doble comilla

Operaciones y expresiones

Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de operación (operadores), paréntesis y nombres de funciones especiales. Por ejemplo:

Page 11: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

sqrt ((p-a)*(p-b)*(p-c));

(a+b+c) / p;

Una expresión toma un valor que se determina por el resultado de la ejecución de las operaciones indicadas, tomando los valores de las variables y constantes y aplicando las prioridades de las operaciones.

Según el tipo de operadores que se emplee en la expresión. Estas se clasifican en aritméticas, lógicas, de caracteres o mixtas.

Expresiones aritméticas

Este tipo de expresiones nos sirve para representar formulas matemáticas y utilizan los operadores siguientes:

Operador Acción+ Suma- Resta* Multiplicación/ División% Módulo++ Incremento-- Decremento

Las expresiones que tienen 2 o más operadores requieren reglas de precedencia que permiten determinar el orden en que habrán de efectuarse dichas operaciones. Por ejemplo:

5 + 8 * 2 //Primero se hace 8 * 2 y luego se suma 5

5+16 = 21

10%3 = 1 //Regresa el residuo de la división entera

Nota: En caso de coincidir la prioridad de varios operadores en una expresión el orden en el que se efectúan es de izquierda a derecha.

Page 12: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Expresiones lógicas

Estas emplean los operadores lógicos:

Operador AcciónOperadores Relacionales> Mayor que>= Mayor o igual< Menor que<= Menor o igual== Igual!= DiferenteOperadores lógicos&& Y|| O! Negación

Por ejemplo:

5>3 && 6>2

año%4==0 && año%100!=0 || año%400==0

Nota: Las expresiones lógicas se utilizan para formar condiciones en los programas.

Operadores de asignación

C++ dispone de los siguientes operadores de asignación:

Sintaxis:

Page 13: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Ejemplo: x &= 3; x += 3; b>= 3;Todos ellos son operadores binarios, de los cuales, b>= es el único de asignación simple, los demás son operadores de asignación compuestosLos seis primeros aceptan operandos de distinto tipo, mientras que los cinco últimos: =, &=, ^= y /=, implican manejo de bits por lo que sus operandos deben ser tipos int en sus distintas variantes. Ejemplo: int num; float f = 3.14;_num = f + 1;En este caso, el valor 4.14, resultado de , se aplica a num. Teniendo en cuenta que el tipo resultante debe ser el de num (un int en este caso), se realiza automáticamente una conversión del float 4.14 a int (con pérdida de precisión si es necesario), con el resultado de que num recibe el valor 4 y el resultado de la asignación es un int de valor 4. Esta propiedad de las asignaciones de producir un resultado, es justamente la que permite expresiones de asignación compuesta del tipo: A = B = C = D;y es ampliamente utilizada en la programación de C++. Considere el bucle del siguiente ejemplo: while ( (ch = getchar() ) != 27 ) ; aprovechando que en este caso, el resultado de la asignación es un char, se utiliza directamente en la cláusula del while, resultando que el bucle se ejecuta indefinidamente hasta que se pulse la tecla ESC (escape).En general las sentencias de asignación tienen la forma: variable = expresionLa parte izquierda (que tiene que ser un Lvalue no constante) adquiere el valor señalado en la expresión de la derecha, pero se mantiene el tipo original de la variable de la parte izquierda. En caso necesario se realiza una conversión de tipo (con pérdida de precisión en su caso) del izquierdo al derecho. Nota: observe que el operador C++ de asignación simple (=) se distingue de otros lenguajes como Pascal que utilizan el símbolo := para este operador. Observe también que la asignación simple (=) utiliza un símbolo distinto del operador relacional de igualdad (==). Las variables se pueden inicializar en el mismo momento de la declaración (asignándoles un valor). Este es el único caso en que se puede asignar una constante Ejemplo:int primero =0;char ch = "a"; float balance = 123.456; char string[10] = "1234567890";const float pi = 3.14159 ;

Sentencias de Control

Estructuras SecuencialesSe les denomina así, por que; son estructuras en un programa, que después de ejecutar una instrucción o sentencia, continúan con la otra, hasta llegar al final del programa. Veamos un ejemplo:Diseñe un programa en C++ que permita leer dos valores de tipo entero y sumaros. Imprimir la suma.#include <iostream>using namespace std;int main(void){ int a=0, b=0; cout << "Introduzca el valor A: "; cin >> a;

Page 14: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

cout << "Introduzca el valor B: "; cin >> b; cout << "Suma: " << a+b;}

Estructuras de decisión

Estructura de decisión If-Else

Cuando el programador desea especificar en un programa uno o más caminos alternativos se debe utilizar una estructura de decisión, la cual evalúa una condición y en función del resultado, realiza una parte de la estructura u otra. Las condiciones se especifican mediante expresiones lógicas. Una de las estructuras de decisión es la estructura if-else y su sintaxis es la siguiente:

//Si se trata de dos o más instrucciones, estas van entre llaves { }if (condición)

Instrucciones a ejecutar cuando la condición es verdadera;

else

Instrucciones a ejecutar cuando la condición es falsa;Ejemplo:Diseñe un programa que permita indicar cuando un año es bisiesto.#include <stdlib.h>#include <iostream>using namespace std;int main(void){ int agno;

system("cls"); //Limpia la pantallacout << "Progama para determinar si un año es bisiesto";cout << "\nIntroduce un numero de año: ";cin >>agno;if ((agno%4 == 0) && (agno%100 != 0) || (agno%400 == 0))

cout <<"\a\nEl año si es bisiesto" << agno;

elsecout << "\a\nEl año no es bisiesto", agno;

}

If’s anidados

if (condición)

if (condición)

Instrucciones a ejecutar cuando la condición es verdadera;

else

Page 15: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Instrucciones a ejecutar cuando la condición es falsa;

else

Instrucciones a ejecutar cuando la condición es falsa;

Ejemplo:Diseñe un programa que permita leer 4 números y encontrar de estos cual es el mayor.

#include <stdlib.h>#include <iostream>using namespace std;int main(void){ int a, b, c, d, mayor;

system("cls"); //Limpia la pantallacout << "Programa que indica cual de 4 numeros es el mayor\n";cout << "Introduce 4 numeros enteros: \n";cin >>a >> b>> c>> d;if (a > b)

if (a > c)if (a > d)

mayor = a;

elsemayor = d;

elseif (c > d)

mayor = c;

elsemayor = d;

elseif (b > c)

if (b > d)mayor = b;

elsemayor = a;

elseif (c > d)

mayor = c;

elsemayor = d;

cout << "El mayor es " << mayor;}

Page 16: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

Estructura de decisión múltiple (switch)

Como su nombre lo indica, permite seleccionar entre varios caminos para llegar al final. En este caso se pueden elegir un camino o acción a ejecutar de entre varios posibles que se debe de evaluar, llamada selector.Sintaxis:switch(selector) { case Etiqueta A: Acción A; break; case Etiqueta B: Acción B; break; case Etiqueta n: Acción n; break; default: Excepción; break;}

En donde:Selector: Variables, expresiones simples de tipo ordinal, (enteros y caracteres –int y char-)Etiqueta: Tiene que ser del mismo tipo de datos de selecto. Estas deber ser constantes únicas y diferentes de otras.Excepción: Es opcional.Ejemplo:Diseñe un programa que lea dos valores a y b de tipo flotante y decidir si se desea sumarlos, restarlos, dividirlos o multiplicarlos. Imprima lo resultados según sea el caso.

#include <stdlib.h>#include <iostream>using namespace std;int main(void){ float a, b; int opc; cout << "Introduzca los Valores de A: "; cin >>a; cout << "Introduzca los Valores de B: "; cin >>b; cout << "Opciones a Elegir \n"; cout << "\n1. Suma "; cout << "\n2. resta "; cout << "\n3. Multiplica "; cout << "\n4. Divide"; cout << "\nIntroduzca la opcion:"; cin >> opc; switch(opc) { case 1: cout << "\nSuma =" << a+b; break; case 2:

Page 17: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

cout << "\nResta =" << a-b; break; case 3: cout << "\nMultiplicacion =" << a*b; break; case 4: cout << "\nDivision =" << a/b; break; default: cout << "\nError en seleccion ...!"; }}Cuestionario

1. Mencione las diferencias entre las expresiones y los operadores:______________________________________________________________________________________________________________________________________

2. Que tipo de datos son válidos para los operadores aritméticos:______________________________________________________

3. Explique, el resultado de los operadores incremento y decremento, dependiendo de su posición:___________________________________________________________________________________________________________________________________________________________________________________________

4. ¿Qué son y para que sirven los operadores unarios?:__________________________________________________________________________________________________________________________

5. Explique, el funcionamiento de los operadores de asignación:________________________________________________________________________________________________________________________________________________________________________________________

Ejercicios:1. Diseñe un programa que dados tres números indique cual es el mayor de ellos.2. Diseñe un programa que dados tres números indique cual de ellos es el menor.3. En un cine se exhiben, películas para mayores de edad, diseñe un programa que dada la

edad, indique si la persona puede o no ver la película.4. En un supermercado, se realizan descuentos por las compras a partir de unas bolitas de

colores. Si el cliente saca una bolita color azul, tiene un descuento del 20%, si la bolita es roja, se aplica un descuento del 30% y si saca una bolita color blanca, no se aplica ningún descuento. Diseñe un programa que a partir del importe de la compra y el color de la bolita, muestre lo que debe pagar dicho cliente.

5. Se procesan las notas de 5, alumnos, de las cuales se desea saber cual es el promedio de esas 5 notas, y cual fue la nota mayor y menor, además de imprimir al final el nombre y la nota de cada alumno en forma de tabla.

6. un estudiante desea saber cuál fue su promedio en matemática I, para ello dispone de la siguiente información: tiene 3 exámenes, con una ponderación del 20% cada uno y 2 laboratorios con una ponderación del 30% cada uno. Diseñe un programa que dadas las notas calcule el promedio del alumno y muestre en pantalla si el alumno esta reprobado o no (para aprobar esta materia se requiere de una nota mayor o igual a 6.00).

7. En un estacionamiento, se cobra de la siguiente manera: los primeros 10 minutos son gratis, los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60. diseñe un programa que reciba tanto minutos como horas y muestre lo que debe cancelar el cliente. Tomando en cuenta que si es Martes y Sábado se hace un descuento del 12.56% sobre el monto total.

Page 18: Manual de C++

UTPCH - PRIMER SEMESTRE 2012PROFESOR: BALTAZAR APARICIO S.

LENGUAJE DE PROGRAMACIÓN C++

8. Diseñe un programa que al introducir un dígito del 0 a 9, muestre como se lee.9. Diseñe un pequeña calculadora que, al digitar un código realice una operación

específica: si el código es 1, la operación es la suma, si es 2, Resta. 3, multiplicación y 4 división. Si el usuario a escrito otro código inválido, mostrar un mensaje de error.

10. Construya un programa que dado el salario de un empleado, permita aplicarle un aumento de 10% si el salario es inferior a $500, si es mayor se le aumentará un 8%. Luego debe aplicar una retención del 0.96% en concepto de Renta a ambos casos.

11. Se desea calcular el sueldo de un trabajador, a partir de las horas trabajadas en la semana y la clase a la que pertenece: Trabajadores Clase “A”, se les paga $7 por hora. Trabajadores clase “B”, se paga $5 por hora. Trabajadores clase “C”, se les paga $4 por hora y los de clase “D”, $3.5 por hora.

12. Un comerciante se dedica a la venta de sillas únicamente. Vende tres tipos de sillas: tipo A, tipo B y Tipo C los precios son $5.00, $7.00 y $10.00 respectivamente. Por cada cinco sillas compradas del tipo A, del tipo B o del tipo C los clientes reciben un descuento de 3%, 5% y 7%, las demás se cobran a precio normal. Diseñe un programa que imprima en forma de factura, con el nombre, precio unitario, precio total, nombre de la tienda, etc lo que debe cancelar cada cliente en concepto de la compra.

Descubre donde está el error. El siguiente código, es de un programa que a partir de una nota determina si un alumno esta o no reprobado, y este puede presentar algunos errores de lógica, de sintaxis o de ejecución. ¿Puedes descubrirlos y modificarlos?#include <stdlib.h>#include <iostream>using namespace std;int main(void){ float nota; cout “Digite la nota:\n” cin nota; if(nota>=6.00) cout << “Aprobado\n\n); else cout >> (Reprobado\n\n); return 0;}