Sunteți pe pagina 1din 9

Introduccin al C++

Informtica II
Dr. Paul Bustamante

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

1. Introduccin al C++
El lenguaje de programacin C++ se comenz a desarrollar en 1980 en los laboratorios de la Ca. AT&T. Es una ampliacin del lenguaje C. El nombre C++ proviene del operador incremento ++. Es un lenguaje potente, verstil y general. Sus principales caractersticas son: Programacin estructurada. Abundancia de operadores y tipos de datos. Riqueza y flexibilidad en las expresiones. Sobrecarga de funciones y operadores. Programacin orientada a objetos (POO). Codificacin en alto y bajo nivel simultneamente. Manipulacin de excepciones. Facilidad de aprendizaje. Es totalmente compatible con el lenguaje C.

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

2. Aspectos bsicos del C++


Los ficheros fuente terminan con la extensin *.cpp (de C plus plus). Los ficheros de encabezado figuran con la extensin *.h y se incluyen en el fichero fuente usando la directriz #include del preprocesador, por ejemplo:
#include iostream.h #include <iostream.h>

Las variables se pueden declarar en cualquier lugar del programa, pero teniendo cuidado de usarlas una vez que hayan sido declaradas. Los comentarios se pueden hacer de dos formas:
Una sla lnea: // este es un comentario de una lnea Un bloque: /* comentario de un bloque. Sigue en la siguiente lnea */

Las llaves {..} constituyen el modo utilizado en el lenguaje C++ para agrupar a las funciones o los bloques. Cada sentencia debe terminar en un Punto y coma (;), ejemplo: a=3*4; En una misma lnea se pueden poner varias sentencias, separadas por el ;. Por ejemplo: a=var1*5; b=var2*6; Existe una nica funcin principal que est por encima de todas, por la cual se empieza la ejecucin del programa. Dicha funcin es main().
Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

3. La funcin main()
La funcin main() es la funcin principal del programa, por donde empieza la ejecucin del mismo. Puede recibir argumentos desde la consola, cuando se llama al programa, en cuyo caso hay que declararla de la siguiente manera:
void main (int argc, char *argv[]){ . . . }

Donde argc indica el nmero de argumentos que vienen y argv es un array de caracteres que tiene la informacin de los argumentos.
void main(void){ ... }

Sino se esperan argumentos y no se desea retornar nada, se puede declarar as: A continuacin vemos la estructura general de un programa en C++:
#include <iostream.h> //fichero de encabezado //empieza main() int main (int argc, char *argv[]){ if (argc > 1) { cout << "No. argumentos: " << argc << endl; }else { cout << "No vienen.." << endl; } return 0; }/* fin de main*/

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

4. Tipos bsicos de datos


Tipo bool char short int long float double unsigned void Bytes 1 1 2 4 8 4 8 n Rango Descripcin true - false Slo valores true o false -128 a 127 Un carcter -32768 a 32767 Valores enteros -2^31 a 2^31-1 Valores enteros -2^63 a 2^63-1 Valores enteros 3.4E-38 a 3.4E+38 Valores reales (6 a 7 cifras decimales) 1.7E-308 a 1.7E+308 Valores reales (15 cifras decimales) Variables sin signo, donde "n" puede 0 a 2^(8*n)-1 ser 1,2,4,8 para char,short,int y long Representa una expresin sin valor

Las variables tipo char se usan para almacenar caracteres ASCII como A,1,&, etc. Cuando se desea trabajar con enteros, dependiendo del rango, se puede usar short, int o long, con signo o sin signo. Para trabajar con enteros sin signo, se debe anteponer la palabra reservada unsigned delante del tipo (unsigned int). Esto nos permite aumentar el rango del tipo. Por defecto son con signo, no hace falta anteponer la palabra signed.
Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun 5

5. Variables
Se entiende por variable aquel tipo de informacin numrica o alfanumrica que puede cambiar en tiempo de ejecucin del programa, sin necesidad de volver a compilar.

Nombres de variables: variables


Cualquier conjunto de caracteres numricos y alfanumricos, sin coincidir con algunos caracteres especiales definidos y usados en C++, como +-;*/ etc. No pueden coincidir con las palabras reservadas (ver lista al final). Tampoco pueden coincidir con un nombre de una variable que ha sido declarada en el mismo bloque, ya sea del mismo o diferente tipo: int k; float k; //error En lo posible darle un nombre que vaya de acuerdo a su cometido. Por ejemplo, si se desea implementar un contador, usar como nombre cont o contador.

Declaraci Declaracin de variables: variables


Para declarar un variable, use este formato general: tipo nombre;
int cont1, cont2; //2 variables.de igual tipo, separadas por una ,. float rpms; double radio_del_circulo;

Se puede inicializar la variable en el momento de la declaracin: int cont1=10; Tener en cuenta que C++ diferencia las maysculas y minsculas. As, las siguientes declaraciones son correctas: int CONT=3,cont=4;
for if, else class auto const extern Algunas palabras reservadas int,char,.. float,.. new protected true break continue delete public false goto static return switch cin,cout case while do

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

Variables (cont..)
Visibilidad y duraci duracin de las variables: variables
La visibilidad o Scope de una variable es la parte del programa en la que esa variable est definida y puede ser utilizada. De acuerdo a la visibilidad podemos dividir en dos las variables: locales y globales.
Variables locales o auto: son aquellas que son declaradas dentro de un bloque y son visibles en ese bloque y en los bloques anidados dentro de l. Ocultan a las variables globales con el mismo nombre. Variables globales o extern: son aquellas que han sido declaradas fuera de cualquier bloque o funcin, por ejemplo antes de definir la funcin main(). Existen durante toda la ejecucin del programa y son visibles por todas las funciones y bloques que se encuentren entre la declaracin y el fin del fichero.

La duracin o Lifetime hace referencia al tiempo que transcurre entre la creacin de una variable y el instante en que es destruida. Si son variables auto (por defecto), la variable se crea y se destruye cada vez que pasa por el bloque. Si es una variable static, la duracin de dicha variable es hasta que finalice el programa. Para acceder a una variable global en un bloque donde exista una local de igual nombre, se utiliza el operador (::), denominado operador de resolucin de visibilidad.
int var=10; void main(void){ int var = 20; int b = ::var*2; } //variable global //variable local, oculta a la global //acceder a la variable global con operador ::

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

Variables (cont..)
Variables tipo Referencia:
Las variables tipo referencia se declaran con el operador & y deben ser inicializadas con otra variable. Por lo dems, son variables normales que contienen valores numricos o alfanumricos. El principal uso de estas variables es como valor de retorno o argumentos de funciones. La variable referencia y la que sirve para inicializarla comparten la misma posicin de memoria, esto es lo que hace que la variable referencia sea en realidad un alias de la otra.
int x1=32; int& x2=x1 ; cout << x1 << " " << x2 << endl; x1=10; cout << x1 << " " << x2 << endl; cout << &x1 << " " << &x2 << endl; //salida: 32 32 //salida: 10 10 //salida: 0xnnn 0xnnn

Tipos definidos por el usuario: typedef


En C++ se pueden definir nuevos nombres de tipos de datos, los cuales son derivados de los tipos de datos fundamentales. Por ejemplo puedo definir un nuevo nombre de tipo, que derive de unsigned int:
typedef unsigned int mio; mio a=30; //mi nuevo nombre //uso del nuevo nombre

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

6. Constantes
Una constante es un tipo de informacin numrica o alfanumrica que no puede cambiar ms que con una nueva compilacin del programa. Hay tres diferentes tipos de constantes: con nombre y sin nombre y de enumeracin. Constantes sin nombre: aquellas que se escriben literalmente en el cdigo fuente. Pueden ser numricas (enteras o de punto flotante) o alfanumricas (1 carcter o cadena):
var1 = 245*x; //la var. x se multiplica por la constante numrica entera 245 longitud = 2 * 3.141592 * r; //uso de una constante numrica de punto flotante char *name="Juan Perez"; //a name se le asigna una const. Alfanumrica

Constantes con nombre: son variables a las que se le antepone el cualificador const en el momento de la declaracin.
const int k=100; const double PI=3.141592;

El compilador dar un mensaje de error si se trata de modificar el valor de la variable declarada como const. Tampoco puede figurar en la parte izquierda de un operador de asignacin. Es ms conveniente para nombrar constantes enteras que usando const. Se usan para definir los posibles valores de ciertos identificadores que slo deben poder tomar pocos valores. Se asignan por omisin en incrementos unitarios a partir de cero.
enum {lunes=1,martes,miercoles,jueves,viernes,sabado,domingo}; cout << "Dia: " << martes << endl; //saldr en la consola: Dia: 2

Constantes de tipo Enumeracin:


Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

7. Operadores
Un Operador es un carcter o grupo de caracteres que acta sobre una, dos o ms variables para realizar una determinada operacin con un determinado resultado.
Operador && , || ++ , -?: Otros operadores Utilizacin Descripcin op1&&op2 Oper. Lgicos AND y OR Operador incremental y var1++ , var1-decremental Operador de comparacin expres ? op1:op2 terciario

Operadores Aritmticos Operador Utilizacin Descripcin op1 + op2 Suma op1 y op2 + op1 - op2 Resta op1 y op2 op1 * op2 Multiplica op1 y op2 * op1 / op2 Divide op1 y op2 / op1 % op2 Calcula el resto de dividir op1 por op2 %
Operadores Relacionales Utilizacin Devuelve true si: op1 > op2 op1 es mayor que op2 op1 >= op2 op1 mayor o igual que op2 op1 < op2 op1 es menor que op2 op1 <= op2 op1 es menor o igual que op2 op1 == op2 op1 es igual a op2 op1 != op2 op1 distinto de op2

Operador > >= < <= == !=

Operadores a nivel de bit Operador Utilizacin Descripcin op1 >> n Desplaza n bits de op1 a la der. >> op1 << n Desplaza n bits de op1 n a la izq. << op1 & op2 Operador AND a nivel de bits & op1 | op2 Operador OR a nivel de bits | op1 ^ op2 Operador XOR a nivel de bits ^

int x1=9, x2=3, res; //9=00001001 3=00000011 ret=(x1>x2) ? 10:15; // ret=10 ret=(x1<x2) ? 10:15; // ret=15 ret = x1++; //ret = 9 1)asigna 2)increm. ret = x1; //ret = 10 ret= ++x2; //ret=3 1)incrementa 2)asigna

int x1=9, x2=3, res; //9=00001001 res = x1 & x2; //res res = x1 | x2; //res res = x1 ^ x2; //res res = x1 >> 2; //res res = x1 << 1; //res

3=00000011 = 1 = 11 = 10 = 2 = 18

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

10

Operadores (cont.)
Operador = += -= *= /= <<= >>= &= |= ^= Operadores de Asignacin Utilizacin Descripcin res = expresin Operador de asignacin simple op1 = op1 + val Sumar y asignar op1 = op1 - val Restar y asignar op1 = op1 * val Multiplicar y asignar op1 = op1 / val Dividir y asignar op1 = op1 << n Desplaza n bits(izq) y asigna op1 = op1 >> n Desplaza n bits(der.) y asigna op1 = op1 & val AND a nivel de bits y asigna op1 = op1 | val OR a nivel de bits y asigna op1 = op1 ^ val XOR a nivel de bits y asigna

#include <iostream.h> //empieza main() void main (){ int x1=9, x2=3; int ret=2; ret *= x2; // ret = ret /= 2; // ret = ret <<= 1; // ret = ret |= 3; // ret = cout << ret << endl; }/* fin de main*/ 2*3 = 6 6/2 = 3 3<<1 = 6 6|3 = 7

El resultado de una expresin, depende del orden en que se ejecuten las operaciones.
Precedencia de Operadores Operadores Asociatividad izqda a dcha ( ) [ ] -> . dcha a izqda ++ -- ! Sizeof (tipo) izqda a dcha * / % izqda a dcha + izqda a dcha < <= > >= izqda a dcha == != izqda a dcha && izqda a dcha || dcha a izqda ?: dcha a izqda = += -= *= /=

Existen 2 reglas para determinar el orden y evaluacion: precedencia y asociatividad. El orden puede modificarse por medio del parntesis. Siempre se realizarn primero las operaciones que estn en los parntesis ms interiores. Por ejemplo: 3 + 4 * 2 nos dara 14 u 11, dependiendo del orden que se elija. Segn el orden establecido en C++ nos va a dar como resultado 11, ya que primero se ejecuta la multiplicacin y luego la suma. Si queremos obtener 14, haramos: (3+4)*2.
11

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

8. Expresiones
Una expresin es una combinacin de variables y/o constantes y operadores que dan lugar a un nico valor. Una expresin puede estar formada por otras expresiones ms sencillas, y puede contener parntesis de varios niveles agrupando distintos trminos.

Expresiones Aritm Aritmticas: ticas


Estn formadas por variables y/o constantes y distintos operadores aritmticos e incrementales (+,-,*,/,++,--,%). Dan como resultado de la evaluacin cualquier tipo numrico, ya sea entero o real. Por ejemplo:
X = (-b + sqrt((b*b) (4*a*c)))/(2*a);

Expresiones L Lgicas o de Boole: Boole


Una expresin de Boole da como resultado los valores lgicos 0 o 1 (true o false). Slo intervienen operadores lgicos y operadores de relacin (>,<,&&,||,>=,..).
p = (x < y) && (y <= z); //si x=15,y=18,z=20 p=1

Expresiones generales: generales


Son aquellas en las que intervienen expresiones aritmticas y lgicas como subexpresiones.
p = (a - b*2.0) && (c != d); //a=10,b=2,c=3,d=4 p=1 p = (a - b*2.0) * (c != d); //a=10,b=2,c=3,d=4 p=6 p = (a - b*2.0) * (c != d); //a=10,b=2,c=4,d=4 p=0 Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

12

9. Conversin de tipos
Cuando los operandos que intervienen dentro de una expresin son de tipos diferentes (int, long, float, etc), stos se convierten automticamente a un solo tipo comn, que por lo general es el de mayor precisin. A este tipo de conversin se le denomina Conversin Implcita de tipos. Por ejemplo:
int x=4; long z=3; float y=2.5, ret; ret = x * y * z; //ret=30.0

Algunas de las reglas que rigen la conversin, aplicadas en el siguiente orden, son:
Si un operando es double, el otro es convertido a double, aunque sea entero (int, short o long). Si un operando es float, el otro es convertido a float. Si un operando es long, el otro es convertido a long. Si un operando es unsigned int, el otro es convertido a unsigned int. En cualquier otro caso , ambos operados son del tipo int.

Conversin Explcita: En C++ se dispone de una conversin explcita de tipos de variables, directamente controlada por el programador, llamada cast.
El cast se realiza anteponiendo al nombre de la variable o expresin el tipo de variable a la que se desea convertir, encerrado entre parntesis. Por ejemplo:
float y=4.5,z=2.1; int x=(int)(y/z) + 1; // y/z=2.14 x=2+1=3

Por ltimo, se debe tener mucho cuidado con las conversiones implcitas, ya que muchas veces se pierde informacin sin poder notarlo, sobre todo cuando las expresiones son un poco extensas, en cuyo caso es ms conveniente dividirla en subexpresiones. Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun 13

10. E/S de datos por consola


La entrada y salida de datos en C++ est basada en el concepto de stream o flujo, que se puede definir como un dispositivo que produce o consume informacin. Un flujo est siempre ligado a un dispositivo fsico: teclado, pantalla, disco,... Para la entrada y salida de datos del usuario, se abren automticamente los siguientes flujos:
cin: entrada estndar de datos (teclado). cout: salida estndar de datos (pantalla). cerr: salida de mensajes de error (pantalla).

Para poder utilizar los flujos es necesario incluir el fichero iostream.h en las primeras lneas del programa, de la siguiente manera: #include <iostream.h>. La utilizacin de los flujos se hacen en conjunto con los operadores de extraccin (>>) y de insercin (<<), de la siguiente manera:
cout << "Hola"; cin >> x; //Saldr en la Pantalla: Hola //Pide datos por teclado y lo guarda en x

Una de las grandes ventajas de los flujos de C++ es que no es necesario decirle de antemano qu tipo de informacin quiero sacar a la pantalla (numrica o alfanumrica, enteros o reales) ni en qu tipo de variables voy a almacenar la informacin que venga del teclado, ya que si no coincide con el tipo declarado, hace la conversin de forma implcita. Ver los ejemplos que se muestran a continuacin.
Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun 14

E/S de datos (cont.)


Veamos cmo en el siguiente cdigo se mezclan diferentes tipos de variables para enviar a la pantalla (cadenas de caracteres, variables tipo int y tipo float) :
int x1=2; float x2=4.5; cout << "Var x1=" << x1 << " //declaracin de variables " << "Var x2="<< x2;

En el siguiente ejemplo, el programa espera que el usuario introduzca por teclado un nmero entero, pero si se introduce uno real, ste es convertido a entero:
int x1; cout << "Dar un numero:"; cin >> x1;

Formato de E/S: C++ cuenta tambin con algunos manipuladores que permiten controlar el formato de los flujos, tanto de entrada como salida. Los ms utilizados son:
dec, hex y oct: establecen base (decimal, hexadecimal y octal) para enteros. endl: se imprime un \n y se vaca el buffer de salida. setw(int num): establece la anchura mnima de campo. Necesita declarar <iomanip.h> setprecision(p): establece el nmero de cifras.

El efecto de los manipuladores permanece en el flujo correspondiente hasta que se cambien por otro manipulador (ver ejemplo: permanece en hex sino se cambia a dec).
int x1=32; cout << x1 << " en hex: " << hex << x1 << dec << endl; cout << setw(5) << x1 << " en oct: " << oct << x1 << endl; cout << setprecision(12) << (double)(x1/7.0) << endl; cin >> hex >> x1; //la entrada ser en hex(si doy 10 ser 16 en dec)

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

15

11. Ejemplos
#include <iostream.h> void main (){ char name[30]; int edad; //fichero de encabezado //variables

Mi Primer Programa en C++

cout << "Escribe tu nombre:" ; cin >> name; cout << "Escribe tu edad: "; cin >> edad; cout << "Hola " << name ; cout << ",tienes " << edad << "anyos"<<endl; }/* fin de main*/

#include <iostream.h> #define CAMBIO 166.386 void main (void){ float pesetas, euros;

//tasa de cambio

Mi Euro Conversor

cout << "Cuantos Euros:" ; cin >> euros; cout << euros << " euros son "; cout << euros*CAMBIO << " pesetas" << endl; }

* Hacer los ejercicios utilizando el debug para ver las variables y cambiarlas.
Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun 16

Ejemplos (cont..)
#include <iostream.h> //fichero de encabezado void main (){ float temp_c, temp_f; //variables de temperatura cout << "Conversor de temperatura (C->F)" << endl; cout << "*******************************" << endl << endl; cout << "Dar Temperatura:"; cin >> temp_c; //toma dato del teclado //convierte temp_f = 9.0/5.0 * temp_c + 32; //ver precedencia de oper. cout << temp_c << " g.Cent."; cout << "en g.Farenh es " << temp_f << endl; }/* fin de main*/ #include <iostream.h> //para cin y cout #include <math.h> //para sqrt() void main (){ double a,b,c,d,x1,x2; cout << "Introducir coeficientes a b c: "; cin >> a >> b >> c; //primero a,... d = sqrt(b*b - 4*a*c); //necesita <math.h> x1 = (-b + d)/(2 * a); x2 = (-b - d)/(2 * a); cout << "Ecuacion: "<< a <<"x^2+"<<b<<"x+"<<c<<endl; cout << "Soluciones:"<<endl; cout << "x1: " << x1 << endl; cout << "x2: " << x2 << endl; }

Conversor de Temperatura

Ecuaci Ecuacin de 2 grado:


x= b b2 4 * a * c 2*a

Escuela Superior de Ingenieros de San Sebasti Sebastin - Tecnun Tecnun

17

S-ar putea să vă placă și