Escuela Superior de Ingenieros de San Sebastián

Anuncio
Introducción al C++
Informática II
Fundamentos de Programación
18 de Febrero de 2002
Escuela Superior de Ingenieros de San Sebastián - Tecnun
1
1. Introducción al C++
•
•
•
El lenguaje de programación C++ se comenzó a desarrollar en 1980 en los
laboratorios de la Cía. AT&T. Es una ampliación del lenguaje C.
El nombre C++ proviene del operador incremento ++.
Es un lenguaje potente, versátil y general. Sus principales características son:
– Programación estructurada.
– Abundancia de operadores y tipos de datos.
– Riqueza y flexibilidad en las expresiones.
– Sobrecarga de funciones y operadores.
– Programación orientada a objetos (POO).
– Codificación en alto y bajo nivel simultáneamente.
– Manipulación de excepciones.
– Facilidad de aprendizaje.
– Es totalmente compatible con el lenguaje C.
Escuela Superior de Ingenieros de San Sebastián - Tecnun
2
2. Aspectos básicos del C++
•
•
Los ficheros fuente terminan con la extensión *.cpp (de C plus plus).
Los ficheros de encabezado figuran con la extensión *.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 sóla línea: // este es un comentario de una línea
– Un bloque:
/* comentario de un bloque.
Sigue en la siguiente línea */
•
•
•
•
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 línea se pueden poner varias sentencias, separadas por el “;”.
Por ejemplo: a=var1*5; b=var2*6;
Existe una única función principal que está por encima de todas, por la cual se
empieza la ejecución del programa. Dicha función es main().
Escuela Superior de Ingenieros de San Sebastián - Tecnun
3
3. La función main()
•
•
La función main() es la función principal del programa, por donde empieza la
ejecución 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 número de argumentos que vienen y argv es un array de caracteres que
tiene la información de los argumentos.
Sino se esperan argumentos y no se desea retornar nada, se puede declarar así:
void main(void){
•
... }
A continuación 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án - Tecnun
4
4. Tipos básicos de datos
Tipo
bool
char
short
int
long
float
double
Bytes
1
1
2
4
8
4
8
unsigned
n
void
-
Rango
Descripción
true - false
Sólo valores true o false
-128 a 127
Un carácter
-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 expresión 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án - Tecnun
5
5. Variables
•
Se entiende por variable aquel tipo de información numérica o alfanumérica que puede cambiar en tiempo de ejecución del programa, sin necesidad de volver a compilar.
•
Nombres de variables:
variables
– Cualquier conjunto de caracteres numéricos y alfanuméricos, 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ón 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 declaración: int cont1=10;
– Tener en cuenta que C++ diferencia las mayúsculas y minúsculas. 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
Escuela Superior de Ingenieros de San Sebastián - Tecnun
case
while
do
6
Variables (cont..)
• Visibilidad y duración 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
función, por ejemplo antes de definir la función main(). Existen durante toda la ejecución del
programa y son visibles por todas las funciones y bloques que se encuentren entre la declaración y
el fin del fichero.
– La duración o Lifetime hace referencia al tiempo que transcurre entre la creación 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 duración
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 resolución 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án - Tecnun
7
Variables (cont..)
• Variables tipo Referencia:
– Las variables tipo referencia se declaran con el operador & y deben ser inicializadas con
otra variable. Por lo demás, son variables normales que contienen valores numéricos o
alfanuméricos.
– 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 posición 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án - Tecnun
8
6. Constantes
•
•
•
Una constante es un tipo de información numérica o alfanumérica que no puede
cambiar más que con una nueva compilación del programa.
Hay tres diferentes tipos de constantes: con nombre y sin nombre y de enumeración.
Constantes sin nombre: aquellas que se escriben literalmente en el código fuente. Pueden
ser numéricas (enteras o de punto flotante) o alfanuméricas (1 carácter o cadena):
var1 = 245*x;
//la var. x se multiplica por la constante numérica entera 245
longitud = 2 * 3.141592 * r; //uso de una constante numérica de punto flotante
char *name="Juan Perez";
//a name se le asigna una const. Alfanumérica
•
Constantes con nombre: son variables a las que se le antepone el cualificador const en el
momento de la declaración.
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 asignación.
Constantes de tipo Enumeración:
–
–
Es más conveniente para nombrar constantes enteras que usando const. Se usan para definir los
posibles valores de ciertos identificadores que sólo deben poder tomar pocos valores.
Se asignan por omisión 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”
Escuela Superior de Ingenieros de San Sebastián - Tecnun
9
7. Operadores
•
Un Operador es un carácter o grupo de caracteres que actúa sobre una, dos o más variables
para realizar una determinada operación con un determinado resultado.
Operadores Aritméticos
Operador Utilización
Descripción
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
%
Operador
>
>=
<
<=
==
!=
Operadores Relacionales
Utilización
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
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
Operador
&& , ||
++ , -?:
Otros operadores
Utilización
Descripción
op1&&op2
Oper. Lógicos AND y OR
Operador incremental y
var1++ , var1-decremental
Operador de comparación
expres ? op1:op2
terciario
Operadores a nivel de bit
Operador Utilización
Descripción
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
res = x1 & x2;
//res
res = x1 | x2;
//res
res = x1 ^ x2;
//res
res = x1 >> 2;
//res
res = x1 << 1;
//res
Escuela Superior de Ingenieros de San Sebastián - Tecnun
3=00000011
= 1
= 11
= 10
= 2
= 18
10
Operadores (cont.)
Operadores de Asignación
Operador Utilización
Descripción
res = expresión Operador de asignación 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 expresión, 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 paréntesis.
• Siempre se realizarán primero las operaciones que estén
en los paréntesis más interiores.
• Por ejemplo: 3 + 4 * 2 nos daría 14 u 11, dependiendo del
orden que se elija. Según el orden establecido en C++ nos va
a dar como resultado 11, ya que primero se ejecuta la
multiplicación y luego la suma.
• Si queremos obtener 14, haríamos: (3+4)*2.
Escuela Superior de Ingenieros de San Sebastián - Tecnun
11
8. Expresiones
•
•
•
Una expresión es una combinación de variables y/o constantes y operadores que dan lugar
a un único valor.
Una expresión puede estar formada por otras expresiones más sencillas, y puede contener
paréntesis de varios niveles agrupando distintos términos.
Expresiones Aritméticas:
Aritméticas
– Están formadas por variables y/o constantes y distintos operadores aritméticos e
incrementales (+,-,*,/,++,--,%). Dan como resultado de la evaluación cualquier tipo
numérico, ya sea entero o real. Por ejemplo:
X = (-b + sqrt((b*b) – (4*a*c)))/(2*a);
•
Expresiones Lógicas o de Boole:
Boole
– Una expresión de Boole da como resultado los valores lógicos 0 o 1 (true o false).
– Sólo intervienen operadores lógicos y operadores de relación (>,<,&&,||,>=,..).
p = (x < y) && (y <= z);
//si x=15,y=18,z=20
Escuela Superior de Ingenieros de San Sebastián - Tecnun
12
Descargar