Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNO C++
>>.
El fichero iostream.h posee variedad de facilidades, definidas en
cada una de las clases que posee, las cuales intervienen en los
procesos de conversin de objetos en secuencia de caracteres y
viceversa; a estas facilidades se las denomina streams.
SALIDA.
Este flujo se abre automticamente cuando comienza la
ejecucin del programa. Este mtodo de salida (insercin)
consiste en aplicar el operador de insercin "<<" a cout.
ejemplo:
#include<iostream.h>
void main()
{
cout<<"hola mundo!";
}
Adems el objeto cout (objeto desde el punto de vista de la
POO), se puede sobrecargar, por ejemplo:
porcentaje_pureza = 5.4;
cout<<"El porcentaje de pureza
es:"<<porcentaje_pureza<<endl;
son lneas de cdigo que nos producira la siguiente salida:
El porcentaje de pureza es : 5.4 el stream endl es un salto de
lnea.
SALIDA DE ERROR.
Al igual que existe un dispositivo estndar de salida, existe uno
de error al cual se envan los mensajes mediante el uso del
objeto cerr en lugar de cout:
cerr<<"El dato es incorrecto, se ha producido un error!";
SALIDA CON FORMATO.
La entrada y salida se puede realizar aplicndole un formato el
cual se asocia con el stream de salida, un conjunto de
manipuladores, estos permiten manipular la forma como son
visualizados los resultados al usuario, dichos manipuladores son
funciones que son llamadas en determinada parte del cdigo
fuente, estos son algunos de los manipuladores los cuales se
encuentran en el archivo de cabecera iomanip.h:
endl
inserta el caracter de fin de lnea '\n'
ends
inserta el caracter de fin de cadena '\0'
dec
conversin a decimal
hex
conversin a hexadecimal
oct
conversin a octal
Extrae un espacio en blanco del inicio de un
ws
stream
vaca el buffer respecto de un stream de
flush
salida
precisin de un dato coma flotante (cifras
setprecision ( int n)
significativas)
determina el caracter de relleno para las
setfill (int car)
cadenas de caracteres
setw (int n)
establece anchura de campo
setiosflags (long fs) establece una lista de indicadores de
formato, fija bites de formato
4
Tipos de Datos en C++ Para realizar un programa en C++, identificamos que tipo de
informacin vamos a manejar para que podamos representarla mediante los tipos de datos
que nos proporciona C++, generalmente con una palabra reservada y un identificador. Los
tipos de datos en C++ se dividen en dos grupos:
Tipos de datos bsicos.
TAMAO(byte
NOMBRE
RANGO
s)
int
-32768..32767 2
short
-32768..32767 2
2,147.483.648
long
4
..2,147.438.64
7
unsigned
0..65535
2
unsigned short 0..65535
2
0..4,294.967.2
unsigned long
4
95
3.4Efloat
4
38..3.4E+38
1.7Edouble
8
308..1.7E+308
long double
3.4E10
4932..3.4E+49
5
32
char
-128..127
1
unsigned char 0..255
1
Tipos de datos avanzados.
TIPO
DESCRIPCIN.
class
clases
enum
tipo enumerado
struct
estructuras
typedef
definiciones de tipo
union
uniones
Enteros.
Los tipos de datos Enteros son: char, int, long. El tipo char se usa a menudo para la
manipulacin de caracteres. C++ utiliza enteros en decimal (base 10), octal (base 8) o
hexadecimal (base 16).
Caracteres.
El tipo caracter char es una forma de entero, este tipo de dato se encuentra encerrado entre
apstrofos, como 'A', '=', etc.
Reales.
En general en C++ se utiliza tres tipos de reales: float, double y long doble, este tipo de
datos requiere que cada tipo posea como mnimo valor a un valor en el rango 1E-37 a
1E+37.
Constantes.
Durante la ejecucin de un programa podemos necesitar un valor que no cambie en ningn
momento, este valor se llama constante y puede ser definido de cualquier tipo de dato. Hay
dos maneras de definir una constante:
#define PI 3.14158967
const float PI = 3.14158967
En el ejemplo el uso de const puede ser el ms correcto y claro, en este caso PI es un lvalue
no modificable, mientras en el caso Define, PI es un literal.
Enumerado.
En este tipo de datos se define una variable de tipo enumerado, la cual puede tomar un
determinado valor de una lista, la cual contiene definidas unas constantes, a las cuales
podemos acceder mediante su nombre. El siguiente es un ejemplo:
enum ciudades{Bogot, BuenosAires, Lima = 3, Caracas}Latinoamericanas;
Aqu estamos definiendo la variable ciudades, Bogot, Buenos Aires, Lima, Caracas y la
variable Latinoamericanas de tipo enum.
En los tipos enumerados los valores que se asignan a las variables y constantes es de tipo
entero, a cada constante se asigna automticamente un valor por omisin, a menos que se
especifique.
En el ejemplo anterior a la constante Bogot se le asigna por omisin el valor 0 por ser la
primera en la lista, adems esta no ha sido tratada de forma especifica. EL valor de Buenos
aires es 1, ya que aparece despus de una constante con valor 0. La variable Lima se
inicializa explcitamente con el valor 3. La variable caracas contiene el valor 4.
una vez creada la variable Ciudades podemos definir una nueva variable as:
enum Ciudades Suramericanas;
6
Suramericanas = Lima;
La variable suramericanas es inicializada con el valor 3.
Arreglos y matrices
Los arreglos o vectores son grupos de posiciones de memoria contiguos los cuales tienen
como caracterstica especial ser del mismo tipo de dato, a cada uno de estos datos lo
llamamos elemento del arreglo. Un arreglo se pueden visualizar de la siguiente forma:
En este caso tenemos un arreglo que contiene datos de tipo entero (int), el numero de
datos es 4, ntese que tenemos un subndice para acceder a cada posicin del arreglo,
adems, un arreglo siempre comienza por el subndice o posicin 0.
DECLARACIN DE UN ARREGLO.
La forma cmo se declara un arreglo en C++ es la siguiente:
tipo_dato nombre_arreglo[tamao];
en donde como ya mencionamos, tipo_dato es cualquiera de los tipos de datos definidos en
C++, nombre_arreglo es el nombre que nosotros deseemos para nuestro arreglo y tamao
es una constante que define la cantidad de elementos del arreglo, adems es de tipo
entero. Un ejemplo de declaracin de un arreglo es:
char letras[10];
INICIALIZACION DE UN ARREGLO.
Existen diferentes formas de inicializar un arreglo.
Por omisin.
Cuando tenemos un arreglo esttico utilizamos este metodo, la forma de hacerlo es la
siguiente:
char letras[10];
Sin tamao especfico.
Podemos crear un arreglo sin decirle el tamao, siempre y cuando le asignemos a este los
elementos que lo conforman, as:
char frase[]="arreglo sin longitud explcita";
lo cual nos crea un arreglo del tamao suficiente para guardar la frase.
Definicin explcita.
En este caso creamos un arreglo de tamao especfico y a la vez le asignamos los elementos
que lo conforman:
int numeros[3]={100,23,90};
ACCESO A LOS ELEMENTOS DEL ARREGLO.
Para acceder a un elemento del arreglo utilizamos un subndice, el cual determina la
posicin que ocupa dicho elemento dentro del arreglo. La sintaxis es:
7
nombre_arreglo[subndice];
Supongamos que tenemos un arreglo
int numeros[3]={2,800,67};
S queremos acceder al elemento 1 el cual contiene el valor 800 entonces la instruccin es
numeros[1];
TAMAO (en bytes) DE UN ARREGLO.
Para determinar el tamao en bytes de un arreglo utilizamos la funcin sizeof asi:
sizeof(nombre_arreglo);
ARREGLOS MULTIDIMENSIONALES.
Cmo su nombre lo indica son arreglos de varias dimensiones, es decir utilizan varios
subndices para acceder a los elementos, se podran ver como una matriz:
Como se puede ver este es una arreglo bidimensional, la declaracin es similar a un arreglo
normal, slo que en este caso utilizamos otro par de corchetes, por ser bidimensional. Si
tiene de tres pares de corchetes en adelante el arreglo es multidimensional.
En el dibujo si queremos acceder al elemento 20 y cambiar su valor por 1000 declaramos:
int A[1][2]=1000;
Estructuras de Control
Para comenzar a realizar programas en C++ necesitaremos otras herramientas, las cuales
nos van a servir para controlar el flujo de la informacin; estas son las estructuras de
control.
Estructuras Condicionales: estas instrucciones nos van a servir para ejecutar una o
varias lneas de cdigo de manera especifica, a continuacin una descripcin de cada una de
ellas.
Estructura if:
se utiliza para ejecutar una lnea de cdigo condicionalmente. A continuacin la forma mas
sencilla:
if(expresion) {
8
accion 1;
accion 2;
.
.
accion n; }
Como podemos observar la expresin debe ir entre los parntesis, al ejecutarse la primera
lnea de cdigo la expresin se evala como falso(0) o verdadero(1 o cualquier otro valor
diferente de cero), si la condicin es verdadera se ejecutan las acciones accion 1, accion 2,
accion 3...accion n. Se continuar con las dems sentencias, si la condicin es falsa las
acciones sern ignoradas, pasando a las siguientes sentencias.
Otra versin de la estructura if mas general es la estructura if-else:
if(expresion) {
accion 1;
accion 2;
.
.
accion n; }else
{
accion 1;
accion 2;
.
.
accion n; }
Este tipo de Estructura permite evaluar la expresin de manera especfica y tomar dos
acciones distintas y ejecutar su respectivo bloque de acciones.
Estructura condicional "?".
Al igual que las anteriores estructuras permite evaluar una expresin particular y hacer una
nica seleccin de dos posibles acciones dependiendo de la validez o falsedad de la
expresin as:
expresion ? accion_1: accion_2;
Estructura switch.
Cuando realizamos un programa encontraremos que necesitamos comprobar posibles
valores de una variable, es para esto que nos sirve la
estructura switch, ahora su sintaxis:
switch (expresion) {
case valor_1: instruccion_1;
break;
case valor_2: instruccion_2;
break;
.
.
.
9
instruccion_n;
}
Generalmente este tipo de estructura se utiliza cuando necesitamos realizar un ciclo un
numero indefinido de veces.
Estructura do-while.
La estructura do-while se diferencia de las anteriores, en que la verificacin de una
determinada condicin se realiza al final del ciclo, es decir al entrar a la estructura do-while
el ciclo se realiza por lo menos una vez, la sintaxis es la siguiente:
do {
instruccion_1;
instruccion_2;
.
.
instruccion_n;
}while(condicion);
este tipo de estructura se utiliza (recomendable) cuando necesitemos presentar informacin
al usuario por lo menos una vez, es el caso de la presentacin de un men.
Instruccin break.
La instruccin break tiene dos usos importantes entre los conocidos, el primero es terminar
con la ejecucin de un ciclo y continuar con el siguiente bloque de instrucciones del
programa. El segundo uso es
terminar con la ejecucin de un bloque case en la estructura switch.
Instruccin continue.
Esta instruccin sirve para terminar de forma prematura la ejecucin de las instrucciones en
el interior de un ciclo, es decir saltando el segmento de instrucciones entre continue y el
final del ciclo pero forzando a ejecutarse la siguiente iteracin.
Instruccin exit.
Como ya hemos mencionado, muchas veces resulta til o es necesario terminar la ejecucin
de un programa antes de que todas sus instrucciones se hayan realizado, esta funcin se
encuentra en el archivo de cabecera stdlib.h.
Funciones en C++
Cuando realizamos un programa un poco ms avanzado podremos darnos cuenta que la
cantidad de cdigo fuente es muy grande, para ello utilizamos las funciones (subrutinas en
otros lenguajes) las cuales pasan a ser pequeos programas que operando en conjunto
vienen a formar la aplicacin en s, la sintaxis es la siguiente:
tipo_devuelto nombre_representativo ( tipo_argumentos
nombre_argumentos)
{
.
11
.
declaraciones de datos-cuerpo de la funcin;
.
.
}
respecto al prototipo de funcin es la forma como el compilador conoce el tipo de
informacin o resultado devuelto as como el tipo y cantidad de argumentos que contiene.
La funcin debe ser definida antes de ser llamada en cualquier parte del cuerpo principal del
programa (funcin main).
referente al tipo_devuelto este puede ser void (no se retorna un tipo especfico), int ,float o
cualquier otro tipo de dato, en cuanto a nombre_representativo este puede ser un nombre
que identifique a la funcin, siguiendo con tipo_argumentos nombre_argumentos nos
referimos a los tipos y nombres de los valores enviados a la funcin para que sean tratados
de forma especfica.
A la hora de definir una funcin en C++ existen reglas para hacerlo:
Especificacin de la forma de almacenamiento: extern o static esto es opcional.
tipo devuelto por la funcin, por omisin se retorna int.
nombre de la funcin el cual debe ser preferiblemente referente a su contenido, para
hacer mas legible el programa.
Lista de declaracin de argumentos.
cuerpo de la funcin, el cual esta contenido entre { y }.
Argumentos de funciones.
En una funcin los argumentos o parmetros son opcionales, si se encuentran en la funcin
estos puden ser de cualquier tipo de dato. Ahora desde el punto de vista lgico de un
programa se identifican dos tipos de argumentos:
Parmetros formales. Estos parmetros son los que se definen en el mismo
momento de la definicin de la funcin.
Parmetros Actuales. Cuando llamamos a una funcin dentro del cuerpo principal
del programa, la lista de parmetros que le enviamos es lo que se denomina
parmetros actuales.
Llamadas por valor y llamadas por referencia.
Cuando los argumentos se pasan por valor, lo que realmente se hace es enviar una copia de
la variable sin alterar el valor de esta, pero aqu nos encontramos con una limitacin y es
que la funcin o puede retornar ms de un valor.
Cuando llamamos a una funcin por referencia lo que se hace en realidad es enviar la
direccin del argumento mas no su valor, otra caracterstica importante de este tipo de paso
de argumentos es que las variables que hicieron la llamada pueden ser alteradas en su
valor, en este caso la funcin si puede retornar mas de un valor.
Esta es la versin html del archivo
http://www.cvc.uab.es/shared/teach/a21292/docs/cpp_arg.ppt.
G o o g l e genera automticamente versions html de los documentos mientras explora la
web.
Para vincularse a esta pgina o para marcarla, utilize el siguiente url:
http://www.google.com/search?
q=cache:XVKbnSXoWvcC:www.cvc.uab.es/shared/teach/a21292/docs/cpp_arg.ppt+lenguaj
e+c%2B%2B&hl=es&lr=lang_es&ie=UTF-8
12
Google no tiene relacin con los autores de esta pgina ni es responsable de su contenido.
Se han resaltado estos trminos de bsqueda:
lenguaje
c++
Lenguaje C++
Introduccin
B. Stroustrup, mediados de los 80, AT&T
Paso de la programacin tradicional (C) a estilos de abstraccin de datos y orientacin a
objetos
Conserva caractersticas del C y aade nuevos conceptos
Lenguaje C++
Extensiones respecto al C
No orientadas a objeto
Orientadas a objetos
Lenguaje C++
Extensiones respecto al C
No orientadas a objeto
Mejoras en entrada/salida - streams
Sobrecarga de funciones y operadores
Parmetros por defecto. Referencias
Lenguaje C++
Estandarizacin
Comit ANSI X3J16
Desde 1995
ltima versin adoptada por ISO 1997
Lenguaje C++
#include<iostream.h>
main()
{//begin
cout << Hello world;
}//end
Lenguaje C++
Organizacin de programas
Ficheros de declaraciones (.h)
Del sistema
Del usuario (#ifndef .... #define ..... #endif)
Ficheros de cdigo fuente (.cc, .cpp)
Lenguaje C++
Scope (alcance)
Fichero: declaraciones que no pertenecen a funcin o clase alguna
Funcin: etiquetas (go to)
Local: cualquier nombre declarado en un bloque pertenece al bloque.
Clase: declaraciones asociadas a una clase
Cada variable tiene un scope o un contexto
Lenguaje C++
Operadores y sentencias
Sentencias
Misma sintaxis y semntica que las de C
Operadores idem sentencias excepto:
new, delete, delete[], ::
<<, >>
13
Sobrecarga
Lenguaje C++
Declaracin:
enumerados
enum status {error, ok};
punteros
int i = 25;
int *np;
np = &i;
Lenguaje C++
Declaracin:
referencias
int i = 5;
int& j = i;
i = 7;
cout << i << j; //cout : salida estandard
Comentarios
/*........*/, //..........
Lenguaje C++
Entrada / salida
iostream.h, iostream
cout, cin, operator<<, operator>>
sobrecarga de los operadores para entrada salida de tipos definidos por el usuario.
Lenguaje C++
Variables y aritmtica.
Todo nombre y/o expresin tiene un tipo.
El tipo determina las operaciones que se pueden realizar con el.
Ejemplo:
int dato;
operaciones: + - / *
Lenguaje C++
Tipos fundamentales.
char float
short double
int long double
long (unsigned)
Operaciones asociadas.
+,-,*,/,%, ==,!=,<,>,<=,>=,
Lenguaje C++
Tipos fundamentales.
Conversiones implcitas.
En asignaciones y operaciones algebraicas el lenguaje lleva a cabo todas las
conversiones implcitas que faciliten el uso y sean seguras.
Lenguaje C++
Punteros y vectores.
char v[10]; //vector de 10 caracteres (0 a 9)
char *p; // puntero a un carcter
p = &v[3]; //p apunta al cuarto elemento de v
Lenguaje C++
Funciones
14
datos miembros
funciones miembro
control de acceso
Lenguaje C++
Soporte para abstraccin de datos
Inicializacin y destruccin.
Inicializacin y asignacin.
Patrones.
Gestin de excepciones.
Conversiones de tipo
complex a = complex(1);
Mltiples implementaciones
Lenguaje C++
Soporte para orientacion a objetos
Funciones virtuales. Polimorfismo.
Clases abstractas.
Clases patrn.
Herencia simple y mltiple.
Encapsulado.
Lenguaje C++
Bloques {}
Operador ::
int x;
void f()
{
int x = 1;
::x = 2;
}
Lenguaje C++
Los
Los
Los
Los
objetos
objetos
objetos
objetos
El tipo this de
Funcin miembro
Funcin miembro
Funcin miembro
Constructores
Funciones con el mismo nombre de la clase pero que no retornan nada. - Excepciones.
Constructor de copia
Constructor por defecto
Constructores como conversores de tipo
Destructores
virtuales
Lenguaje C++
clases
Friend
Calificacin de nombres
operador ::
Clases anidadas
Miembros estticos
Punteros a miembros
typedef void (cl::*PFM)(int)
PFM pf = &cl::f;
Lenguaje C++
clases
Construccin de objetos
automticos
variables locales: se ejecuta su constructor cada vez que el programa pasa por la
declaracin
secuencia de construccin - destruccin
inicializacin y asignacin
estticos
utilizada para asegurar la correcta inicializacin y destruccin de objetos de bibliotecas :
cin, cout
en memoria disponible
new T, delete
Lenguaje C++
clases
Construccin de objetos
como miembros de otro objeto
sintaxis de inicializacin :
secuencia de llamada a los constructores 1 los miembros
secuencia de llamada a los destructores 1 el objeto
uso de punteros a objetos miembros
vectores de objetos
los objetos deben tener constructor por defecto
la destruccin de objetos es implcita si el vector es automtico
la destruccin es explicita cuando se trata de punteros
delete, delete[]
Lenguaje C++
clases y herencia
Construccin de objetos
18
Lenguaje C++
sobrecarga de operadores
+ - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &=
|= << >> >>= <<= == != <= >= && || ++ -->* -> , [ ] ( ) new new[ ] delete delete[ ]
No se sobrecargan:
::
.
.*
Lenguaje C++
sobrecarga de operadores
operator= operator[ ] operator( ) y operator->
deben ser funciones miembro no estticas lo cual
garantiza que sus primeros operandos sean L-values
Los operadores = & y , tienen significados
predefinidos cuando se aplican a objetos de una clase;
pero pueden hacerse inaccesibles o bien redefinirlos
Generalidades
Comentarios
Constantes
Operadores
Identificadores
Declaraciones
Tipos Bsicos
Instrucciones de entrada/salida
Funciones
Clases
Sentencias
Tipos de datos
Programa principal
Estructura de un Programa C++
Ms informacin sobre el lenguaje C++
Generalidades
C++ es el lenguaje de programacin multiobjetivo ideado en 1984 por Bjarne Stroustrup a partir del lenguaje C.
C++ es un lenguaje en el que se diferencian las minsculas y las maysculas (case sensitive). Tambin es un
lenguaje de formato libre, es decir, que se admiten espacios, tabuladores, saltos de lnea y comentarios en cualquier
parte del cdigo.
20
Las palabras clave del lenguaje son reservadas, aunque cada grupo de alumnos slo ha de tener en cuenta las
palabras asignadas al grupo.
C++ es un lenguaje con estructura de bloques, que se definen mediante la utilizacin de las llaves { }. Los nombres
declarados dentro de un bloque son locales a dicho bloque. Los bloques vienen definidos por las funciones, clases y
mtodos. Los nombres declarados fuera de cualquier funcin, mtodo o clase son globales y pueden ser utilizados
desde cualquier mtodo o funcin.
No se permite la definicin de funciones o mtodos anidados. C++ es un lenguaje con recursividad, por lo que
cualquier funcin o mtodo puede ser recursivo. El paso de parmetros puede ser por valor o por referencia.
No es necesario considerar para el ejercicio de implementacin las directivas del preprocesador de C++.
En C++ es necesario declarar previamente todo lo que se utilice. Las sentencias finalizan en punto y coma.
Comentarios
En C++ hay dos tipos de comentarios, de los que solamente hay que implementar uno de ellos:
1. Se utilizan los caracteres /* para abrir el comentario, y */ para cerrarlo. No se admiten comentarios anidados.
Los comentarios pueden ocupar ms de una lnea y pueden ir colocados en cualquier parte del cdigo donde pueda ir
un espacio:
/* Comentario con apertura y cierre */
2. Los comentarios comienzan por los caracteres // y finalizan al acabar la lnea. Este tipo de comentario solo
ocupa una lnea y puede ir colocado en cualquier parte del cdigo donde pueda ir un espacio:
// Comentario de lnea
Constantes
Constantes enteras. Hay tres notaciones: decimal, octal y hexadecimal [slo es obligatorio implementar la
primera]:
Decimal: 159
Octal (usando como prefijo un cero): 052
Hexadecimal (usando como prefijo un cero y una equis): 0x1E4
Constantes de cadenas de caracteres. Van encerradas entre comillas dobles: "Hola, mundo". Se utiliza el
carcter nulo (cuyo cdigo ASCII es 0) como carcter de fin de cadena.
Para representar caracteres especiales se utiliza una secuencia de escape, que comienza mediante el carcter barra
inversa y va seguido de un carcter. Algunos de estos caracteres son el salto de lnea (\n), el tabulador (\t), el
carcter nulo (\0), las comillas dobles (\") o el carcter de barra inversa (\\) [la implementacin de estos
caracteres especiales es opcional].
Constantes lgicas. Son las constantes true y false. Adems, cualquier expresin que se evale como 0 se
considera como falso, y cualquier expresin que se evale con un valor distinto a 0 se considera verdadera [es
opcional implementar las constantes true y false].
Operadores
Operadores aritmticos. Suma, resta, producto, divisin y mdulo: +, -, *, / y % [obligatorio implementar uno].
Tambin existen los operadores ms y menos unarios: +, - [implementacin opcional].
Operadores relacionales. Igual, distinto, menor, mayor, menor o igual, mayor o igual: ==, !=, <, >, <= y >=
[obligatorio implementar uno].
Operadores lgicos. And, or y not: &&, || y ! [obligatorio implementar uno]. Debe tenerse en cuenta que las
expresiones lgicas en C++ se evalan en cortocircuito (evaluacin perezosa).
Auto-incrementos y auto-decrementos. ++ y -- (tanto prefijos, como sufijos) [implementacin opcional]:
a = j++; // si j vala 5, ahora a == 5 y j == 6
a = ++j; // si j vala 5, ahora a == 6 y j == 6
Operador condicional. condicin ? exp1 : exp2. Si la condicin es cierta, devuelve exp1, en caso
contrario, devuelve exp2 [implementacin opcional]:
max = (a > b) ? a : b; //Si a > b entonces max == a, en caso contrario, max
== b
21
Identificadores
Los identificadores deben comenzar con una letra o con un subrayado, y pueden ir seguidos de cualquier nmero de
letras, dgitos o subrayados. Debe tenerse en cuenta que las maysculas y las minsculas son letras distintas.
Declaraciones
El lenguaje C++ exige declaracin previa de todos los nombres que se utilicen.
Para realizar una declaracin de una variable, se coloca el tipo seguido del nombre de la variable, finalizando en
punto y coma. Se puede poner una lista de variables separadas por comas [esta declaracin mltiple es opcional para
la implementacin]:
Tipo var1;
Tipo var1, var2, var3; // se declaran las tres variables del mismo tipo
En una declaracin se puede inicializar la variable mediante el signo igual [opcional para la implementacin]:
Tipo var4 = valor;
Si una variable no se inicializa cuando se declara, tendr un valor indefinido hasta que se le asigne un determinado
valor (es decir, el compilador no realiza una inicializacin por omisin).
22
Pueden realizarse declaraciones en cualquier lugar de un bloque; en este caso, la variable ser visible desde ese
punto hasta el final del bloque. Tambin pueden realizarse declaraciones fuera de las clases en cualquier parte del
cdigo (variables globales), siendo solo visibles desde ese punto hasta el final del fichero.
Tipos Bsicos
Se consideran nicamente los siguientes tipos bsicos: entero, que se indica mediante la palabra int, lgico, que se
indica mediante la palabra bool, y vaco, que se indica mediante la palabra void (se usa para funciones que no
devuelvan ningn valor o que no reciban argumentos) [es opcional implementar el tipo bool].
int i; // declara una variable entera i
Instrucciones de entrada/salida
La sentencia cin >> var lee un nmero del teclado y lo almacena en la variable var.
La sentencia cout << expresin_entera evala la expresin e imprime el resultado por pantalla.
La sentencia cout << cadena imprime la cadena por pantalla.
Las sentencias de salida pueden agruparse en una nica sentencia de la siguiente forma [es opcional implementar
esta secuencia]:
cout << "Hola, tengo " << a << " aos."; // Imprime una cadena, un entero y
una cadena
Funciones
Es necesario definir cada funcin antes de poder utilizarla. Para definir una funcin se pone el tipo, el nombre y los
argumentos entre parntesis, seguido de un bloque con el cuerpo de la funcin:
tipo nombre (lista de argumentos)
{
sentencias;
}
El tipo se puede omitir en la definicin de la funcin; en el caso de que se omita, se considera que la funcin es de
tipo int. Los tipos que han de implementarse sern int o void [opcionalmente, tambin bool]. Si la funcin es
de tipo int o no se indica el tipo, quiere decir que devuelve un valor de tipo entero. Si la funcin es de tipo void,
quiere decir que no devuelve ningn valor.
La lista de argumentos (que puede estar vaca, indicndose con void) consta de un tipo seguido del nombre del
argumento. Si hay ms de un argumento, stos se separan por comas. A continuacin se muestran algunas cabeceras
de funciones:
f1 (int p)
// funcin de tipo entero con un argumento entero
int f2 (void)
// funcin entera sin argumentos (parntesis obligatorios)
void f3 (int a, int b) // funcin que no devuelve nada, con dos argumentos
enteros
C++ admite recursividad. Todos los grupos han de considerarla en la implementacin. Tanto los mtodos como las
funciones pueden ser recursivas, es decir, pueden llamarse a s mismas.
En cuanto al paso de parmetros, se pasan por referencia si se antepone al nombre del argumento formal el smbolo
&, con la excepcin de los vectores y las cadenas, que siempre se pasan por valor y no se pone el smbolo &. En el
resto de casos, el paso es por valor. Ejemplos:
f (int a, int v[])
// a es por valor, v es por referencia
f (int &a, char *s)
// a es por referencia, s es por referencia
Dentro de una funcin se tiene acceso a las variables que se declaren en ella (locales), a los argumentos y a las
variables globales. Si en una funcin se declara una variable local o un argumento con el mismo nombre que una
variable global, sta ltima no es accesible desde dicha funcin.
Clases
C++ es un lenguaje orientado a objetos, por lo que cuenta con la posibilidad de definir y utilizar clases. Es necesario
declarar cada clase antes de poder utilizarla. Para definir una clase se pone la palabra class, el nombre y los
miembros entre llaves:
23
class nombre
{
miembros;
};
Los miembros pueden ser de dos tipos: atributos y mtodos. Los atributos son variables declaradas en el seno de la
clase y los mtodos son funciones de la clase. El siguiente ejemplo muestra la declaracin de una clase con dos
atributos y dos mtodos:
class Ejemplo
{
int i; // atributo i entero
bool b; // atributo b lgico
void imprime(int);
// mtodo que recibe un entero y no devuelve
nada
int valor(void);
// mtodo que no recibe nada y devuelve un
entero
};
Obsrvese que los mtodos nicamente se declaran en el cuerpo de la clase, indicando el tipo que devuelve, su
nombre y los parmetros. La definicin del mtodo deber realizarse con posterioridad (de manera similar a la
explicada para las funciones y siguiendo sus caractersticas de funcionamiento), usando la siguiente notacin:
tipo NombreClase::NombreMtodo (parmetros)
{
sentencias;
}
La caracterstica de la ocultacin de la informacin se encuentra implantada en C++ mediante el control de acceso a
los miembros de las clases. Para controlar el acceso a los miembros, stos pueden declararse como pblicos o
privados, utilizando las correspondientes palabras reservadas:
public: los miembros pblicos pueden ser utilizados por todos los usuarios de la clase.
private: los miembros privados slo pueden ser utilizados por los propios mtodos de la clase.
Si no se indica un control de acceso, se supone que los miembros son privados. Un mtodo de una clase puede
acceder a todos los dems miembros (sean pblicos o privados) directamente por su nombre.
Para declarar una variable (un objeto) del tipo de la clase se pone el tipo de la clase y el nombre del objeto, es decir,
el nombre de la clase constituye un nombre de un tipo.
NombreClase variable;
Un mtodo puede acceder a otros miembros directamente por su nombre, pero para acceder a un miembro de una
clase desde el exterior se utiliza el operador punto (.), como ya se ha comentado:
class DNI
{
char *nombre;
// atributo cadena privado
public:
int edad, numero;
// atributos enteros pblicos
void printNombre (void);
// mtodo pblico que imprime el
atributo nombre
void ponNombre (char *);
// mtodo pblico que cambia el
atributo nombre
private:
int sexo;
// atributo entero privado
};
...
DNI obj;
// se declara el objeto obj del tipo DNI
obj.edad = 2001-1973;
// se accede al atributo pblico
obj.printNombre();
// se llama a un mtodo pblico
obj.sexo = 0;
// error: el atributo sexo es privado
Las operaciones permitidas sobre objetos de una clase son la asignacin de objetos y el acceso a sus miembros
pblicos (mediante el operador punto):
DNI yo, tu;
// declara las variables yo y tu de tipo DNI
24
Sentencias
Sentencia de asignacin: identificador, igual, expresin, punto y coma: asigna al identificador el resultado de
evaluar la expresin:
i = 8 + 6;
Sentencia de llamada a una funcin o mtodo: nombre de la funcin o mtodo, argumentos entre parntesis:
func ();
/* llamada a una funcin sin argumentos */
f2 (b, i - 8); /* llamada a una funcin con dos argumentos */
obj.func ();
/* llamada a un mtodo sin argumentos */
obj.f2 (b, i - 8);
/* llamada a un mtodo con dos argumentos */
Deber comprobarse que los parmetros en la llamada coincidan en nmero y tipo con los de la declaracin.
Sentencia de retorno de una funcin o mtodo: return. Si la funcin o mtodo es de tipo int hay que aadir
una expresin:
return;
/* la funcin o mtodo es de tipo void */
return i / 2;
/* la funcin o mtodo devuelve un entero */
Sentencia condicional: if (condicin) sentencia1; else sentencia2;
Si la condicin se evala como cierta se ejecuta la sentencia1, en caso contrario, se ejecuta la sentencia2
(si existe). Cada una de estas sentencias puede ser sustituida por un bloque:
if (a > b) c = b; else {c = a; cin >> d;}
Sentencia while: while (condicin) sentencia;
Se evala la condicin y, si resulta ser cierta, se ejecuta la sentencia. Este proceso se repite hasta que la
condicin sea falsa. La sentencia puede ser un bloque:
while (a) {a--; c *= b;}
/* mientras que a no sea 0... */
Sentencia do while: do sentencia while (condicin);
Se ejecuta la sentencia, se evala la condicin y, si resulta ser cierta, se ejecuta de nuevo la sentencia.
Este proceso se repite hasta que la condicin sea falsa. La sentencia puede ser un bloque:
do {a++; c *= b;} while (a < b);
Sentencia for: for (inicializacin; condicin; actualizacin) sentencia;
Se ejecuta la inicializacin, se evala la condicin y, si sta es cierta, se ejecuta la sentencia y se
ejecuta la actualizacin. A continuacin se vuelve a evaluar la condicin y se sigue el proceso hasta que
sea falsa. La sentencia puede ser un bloque:
for (i = 1; i < 10; i++) f *= i;
Sentencia switch:
switch (expresin_entera)
{
case etiqueta1: sentencia1;
case etiqueta2: sentencia2;
. . .
default: sentencian;
}
Se evala la expresin entera, se busca la etiqueta que coincida con el resultado y se ejecutan sus sentencias hasta el
final de la sentencia switch. Puede haber mltiples sentencias en cada case. Si no se encuentra la etiqueta, se
ejecutan las sentencias asociadas a default [default es opcional para la implementacin].
switch (dia)
{
case 1: cout << "lunes";
case 2: cout << "martes";
25
Tipos de datos
Vectores: Se declaran y definen de la siguiente forma:
Tipo nombre_var [tamao]; // declaracin del vector
Los ndices del vector van desde cero hasta tamao-1. Para acceder a un elemento del vector se usan el operador
corchete:
int v[15];
// declara el vector v de enteros. Los ndices irn desde 0
hasta 14
v[5] = 88;
cout << v[5];
/* escribe 88 */
Cadenas: El tipo usado para representar las cadenas es char * (puntero a caracteres) y la sintaxis para declarar o
definir una variable cadena es:
char * nombre_var;
/* declara una cadena */
char * nombre_var = "Hola";
// inicializa la cadena con los caracteres
indicados
Se permiten operaciones de asignacin de cadenas y de clculo de la longitud de cadena ( strlen (cadena)).
Una variable de tipo cadena se representa internamente como un puntero a una direccin de memoria donde estn
los caracteres que forma la cadena:
char * s = "";
// inicializa a la cadena vaca
s = "Hola, mundo!";
// la variable s apuntar a la constante cadena
cout << strlen (s);
// imprime un 13 (strlen no cuenta el carcter nulo
que
indica el fin de cadena)
cout << s;
/* imprime Hola, mundo! */
Programa principal
La funcin principal (la que se ejecutar al arrancar el programa) ser una funcin especial que recibe el nombre de
main, sin argumentos y tiene que ser de tipo void:
void main (void)
{
implementacin_de_la_funcin_principal;
}
Un ejemplo de un fichero vlido para el ejercicio de implementacin de Compiladores sera el que se puede obtener
aqu.
Todo programa en C consta de una o ms funciones, una de las cuales se llama main. El
programa siempre comenzar por la ejecucin de la funcin main. Las definiciones de las
funciones adicionales pueden preceder o seguir a main.
Una cabecera de la funcin, que consta del nombre de la funcin, seguido de una lista
opcional de argumentos encerrados con parntesis.
Una lista de declaracin de argumentos, si se incluyen stos en la cabecera.
Una sentencia compuesta, que contiene el resto de la funcin.
Los comentarios pueden aparecer en cualquier parte del programa, mientras estn situados
entre los delimitadores /* */.
27
PRCTICA No. 1
#include <stdio.h>
#include <conio.h>
main()
pi=3.141592654;
clrscr();
area=pi*radio*radio;
printf("\n\nwww.geocities.com/area52_escom");
28
getch();
Las funciones getchar, putchar, scanf, printf, gets y puts permiten la transferencia de
informacin entre la computadora y los dispositivos de entrada/salida estndar (por ejemplo
un teclado y un monitor).
Si el diseo y planteamiento es correcto nunca ser preciso volver atrs ya que los niveles
anteriores al que se est situando en un momento dado ya habrn resuelto el problema en
su totalidad.
29
Secuencial
Alternativa
Repetitiva
Estructura Secuencial. Es aquella que ejecuta las acciones sucesivamente unas a
continuacin de otras sin posibilidad de omitir ninguna y naturalmente, sin bifurcaciones.
Todas estas estructuras tendrn una entrada y una salida.
Si las acciones son a1, a2, ... an, la representacin secuencial sera:
DIAGRAMA DE FLUJO
Algoritmo
30
Inicio
Accin a1
Accin a2
.
.
.
Accin an
Fin
Ejemplo:
Algoritmo
Inicio
Declarar A, B, S
Leer dos nmeros A, B
Sumar S=A+B
Escribir S
Fin
Las estructuras alternativas tambin llamadas condicionales pueden ser de tres tipos:
Simple
Doble
Mltiple
31
Algoritmo
Si {condicin}
Entonces {accin}
Fin-si
Diagrama de flujo
- Estructura alternativa doble. Es aquella que permite la eleccin entre dos acciones o
tratamientos en funcin de que se cumpla o no determinada accin.
Algoritmo
Si {condicin}
Entonces {accin A1}
Si-no {accin A2}
Fin-si
Diagrama de flujo
32
Estructura alternativa mltiple. Se adoptan cuando las condiciones pueden tomar n valores
enteros distintos: 1, 2, 3, ..., n.
Segn se elija uno de estos valores en la condicin se realizar una de las n acciones (cada
vez slo se ejecuta una accin). Esta estructura es la CASE.
Estructuras repetitivas. Las estructuras repetitivas o iterativas son aquellas en las que las
acciones se ejecutan un nmero determinado de veces y dependen de un valor predefinido
o el cumplimiento de una determinada accin.
Estructura Mientras
Estructura Repetir-hasta
Estructura Para (Desde-hasta)
33
en donde cadena de control hace referencia a una cadena de caracteres que contiene cierta
informacin sobre el formato de los datos y arg1, arg2,...,argn son argumentos que
representan los datos.
34
CARCTER DE CONVERSIN
SIGNIFICADO
c
El dato es un carcter
d
El dato es un entero decimal
e
El dato es un valor en coma flotante
f
El dato es un valor en coma flotante
g
El dato es un valor en coma flotante
h
El dato es un entero corto
i
El dato es un entero, octal o hexadecimal
o
El dato es un entero octal
s
El dato es una cadena de caracteres seguida de un carcter de espacio (se aade
automticamente el carcter nulo \0 al final)
u
El dato es un entero decimal sin signo
x
El dato es un entero hexadecimal
[...]
El dato es una cadena de caracteres que puede incluir caracteres de espacio
Los argumentos pueden ser variables o arrays, y sus tipos deben coincidir con los indicados
por los grupos de caracteres correspondientes en la cadena de control. Cada nombre de
variable debe ser precedido por un ampersand (&).
La funcin gets
35
Esta funcin acepta un argumento. El argumento es un dato que acepta una cadena de
caracteres (un array de caracteres). La cadena de caracteres puede incluir caracteres de
espaciado. La cadena se introducir por el teclado y terminar con un carcter de nueva
lnea (cuando el usuario apriete RETURN).
gets(argumento)
putchar(variable de carcter)
en donde variable de carcter hace referencia a una variable de tipo carcter previamente
declarada.
en donde cadena de control hace referencia a una cadena de caracteres que contiene
informacin sobre el formato de salida y arg1, arg2,...,argn son argumentos que
representan los datos de salida. Los argumentos pueden ser constantes, variables simples o
nombres de arrays, o datos de salida.
La cadena de control esta compuesta por grupos de caracteres, con un grupo de caracteres
por cada dato de salida. Cada grupo de caracteres debe comenzar por un signo de
porcentaje (%) seguido de un carcter de conversin que indica el tipo de dato
correspondiente.
CARCTER DE CONVERSIN
SIGNIFICADO
c
El dato es visualizado como un carcter
d
El dato es visualizado como un entero con signo
e
El dato es visualizado como un valor en coma flotante con exponente
f
El dato es visualizado como un valor en coma flotante sin exponente
g
El dato es visualizado como un valor en coma flotante utilizando la conversin tipo e o tipo f
segn sea el caso; no se visualizan el punto ni los ceros finales cuando no es necesario
i
El dato es visualizado como un entero con signo
o
El dato es visualizado como un entero octal, sin el cero inicial
37
s
El dato es visualizado como una cadena de caracteres
u
El dato es visualizado como un entero decimal sin signo
x
El dato es visualizado como un entero hexadecimal sin el prefijo 0x
La funcin puts
Acepta un solo argumento. Facilita la transferencia de cadenas de caracteres entre la
computadora y el dispositivo de salida estndar.
puts(argumento)
Una sentencia puede consistir de: una sentencia simple, un bloque de sentencias o ninguna
sentencia (en el caso de que la sentencia sea vaca).
donde sentencia puede ser una simple o un bloque de sentencias. La forma de if ocn
bloques de sentencias como objetos es as:
39
Las condiciones se evalan de arriba hacia abajo. Tan pronto como se encuentre una
condicin true, se ejecuta la sentencia asociada con ella, y el resto de la escala se pasa por
alto. Si ninguna de las condiciones es true, se ejecuta el else final. Si no tiene else final, no
tiene lugar ninguna accin si todas las condiciones son false.
Se utiliza para crear bucles en C. Esta sentencia incluye una expresin que especifica el
valor inicial de un ndice, otra expresin que determina cuando se contina o no el bucle y
una tercera expresin que permite que el ndice se modifique al final de cada pasada.
en donde
La forma general es :
Se evala la expresin.
Si el resultado anterior es cero (falso), la sentencia no se ejecuta y se pasa a ejecutar la
siguiente sentencia en el programa.
Si el resultado de la expresin es distinto de cero (verdadero), se ejecuta la sentencia del
while y el proceso se repite comenzando en el punto 1.
NOTA:
41
expresin 1
while (expresin 2)
{
sentencia
expresin 3;
}
Ejecuta una sentencia simple o compuesta, una o ms veces, dependiendo del valor de una
expresin.
do
Sentencia;
while (expresin)
SENTENCIA switch
Esta sentencia permite ejecutar una de varias acciones, en funcin del valor de una
expresin.
switch (expresin)
{
declaraciones
case expresin1:
|sentencia 1, break;|
case expresin2:
|sentencia 2;, break;|
.
.
.
|default:|
|sentencia N;|
43
expresin, una constante entera, una constante de caracteres o una expresin constante. El
valor es convertido a tipo int.
La sentencia switch evala la expresin entre parntesis y compara su valor con las
constantes de cada case. La ejecucin de la sentencia del cuerpo de la sentencia switch,
comienza en el case cuya constante coincida con el valor de la expresin y contina hasta el
final del cuerpo o hasta una sentencia que transfiera el control fuera del cuerpo.
SENTENCIA break
44
SENTENCIA continue
La sentencia continue funciona de forma algo similar a break. Slo que en vez de forzar la
terminacin, continue fuerza una nueva iteracin del ciclo y salta cualquier cdigo que exista
entre medias.
En los ciclos while y do-while, una sentencia continue da lugar a que el control pase
directamente a la evaluacin de la condicin y prosiga el proceso del ciclo.
En el caso del for, primero se ejecuta la parte de incremento del ciclo, a continuacin se
ejecuta la evaluacin de la condicin, y finalmente el ciclo contina.
undefined
undefined
More...
[Close]
[Close]
Find Old Friends
Instrucciones y comandos de C++
INSTRUCCIONES Y COMANDOS DE C++
NORMALFLUORESCENTENORMALFLUORESCENTE
0 - Negro
1 - Azul
2 - Verde
3 - Azul Claro
4 - Rojo
5 - Fushia
6 - Naranja
7 - Blanco
8 - Gris9 - Azul
10 - Verde
45
11
12
13
14
15
16
18
19
20
21
22
23
24
26
27
28
29
30
31
32
Azul Claro
Rojo
Fushia
Amarillo
Blanco
Negro17 - Azul
Verde
Azul Claro
Rojo
Fushia
Amarillo
Blanco
Gris25 - Azul
Verde
Azul Claro
Rojo
Fushia
Naranja
Blanco
Gris
46
#include<iostream.h>
#include<math.h>
double b,h;
void main()
{
cout<<"introduzca la base del triangulo"<<endl;
cin>>b;
cout<<"introduzca la altura del triangulo"<<endl;
cin>>h;
cout<<" "<<endl;
cout<<"Area del triangulo: "<<((b*h)/2)<<endl;
cout<<" "<<endl;
}
2.
#include<iostream.h>
#include<math.h>
int mn=0;
void main()
{
cout<<" INDIQUE SU MES DE NACIMIENTO ?"<<endl;
cin>>mn;
switch (mn)
{
case 01:
cout<<" "<<endl;
cout<<"FELICIDADES CELEBRA TU CUMPLEAOS"<<endl;
break;
case 02:
cout<<" "<<endl;
cout<<"HAZ UNA FIESTA"<<endl;
break;
case 03:
cout<<" "<<endl;
cout<<"JUEGA LOTERIA"<<endl;
break;
default:
cout<<" "<<endl;
cout<<"opcion invalida:"<<endl;
}
cout<<" "<<endl;
}
47
3.
#include<iostream.h>
#include<math.h>
#include<process.h>
void main ()
{
int tmv,tms,tdi=0;
int opc,si=1;
do
{
cout<<"Indique cual es su Mvil"<<endl;
cout<<" 1.- Movilnet "<<endl;
cout<<" 2.- Movilnet "<<endl;
cout<<" 3.- Digitel "<<endl;
cout<<" 4.- SALIR "<<endl;
cin>>opc;
switch(opc)
{
case 1:
cout<<" Movilnet "<<endl;
tmv=tmv+1;
break;
case 2:
tms++;
break;
case 3:
tdi++;
break;
}
}
while(opc<4);
cout<<" Total Movilnet = "<<tmv<<endl;
cout<<" Total Movistar = "<<tms<<endl;
cout<<" Total Digitel = "<<tdi<<endl;
}
4.
CALCULO DE AREA:
#include<iostream.h>
#include<math.h>
main()
{
double pi=3.1416;
double r;
double h;
double V;
cout<<"Introducir el valor del radio";
cin>>r;
cout<<endl;
cout<<"Introducir el valor de la altura";
48
cin>>h;
cout<<endl;
V=pi*pow(r,2)*h;
cout<<endl;
cout<<"El resultado es:";
cout<<V;
cout<<endl;
return 0;
}
5.
#include<iostream.h>
#include<math.h>
#include<process.h>
void main ()
{
int tguar=0,tguat=0;
int opc=1;
do
{
cout<<"Indique donde Vive"<<endl;
cout<<" 1.- Guarenas "<<endl;
cout<<" 2.- Guatire "<<endl;
cout<<" 3.- SALIR "<<endl;
cin>>opc;
switch(opc)
{
case 1:
cout<<" GUARENAS "<<endl;
tguar++;
break;
case 2:
cout<<" GUATIRE "<<endl;
tguat++;
break;
}
}
while(opc<3);
cout<<" Total Guarenas = "<<tguar<<endl;
cout<<" Total Guatire = "<<tguat<<endl;
cout<<" Total Geeneral = "<<tguar+tguat<<endl;
}
6.
#include<iostream.h>
#include<ctype.h>
main ()
{
char resp;
49
50