Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación: Introducción Al Lenguaje C++: Contenido
Programación: Introducción Al Lenguaje C++: Contenido
Programacin:
Introduccin al Lenguaje
C++
Contenido
__________________________________________________________________________
1.1
Ejercicios
En este captulo vamos a introducir el lenguaje de programacin C++ que se va a utilizar
en la asignatura, describiendo algunos conceptos bsicos y plasmando la estructura general
de un programa escrito en este lenguaje. A lo largo de los sucesivos temas se seguir la
notacin BNF para ir describiendo las diferentes reglas sintcticas del lenguaje. De esta
forma se ir introduciendo de una manera formal la sintaxis de C++.
1.1
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg 1
<carcter_ident> ::= a | b || z | A | B | | Z | _
<dgito> ::= 0 | 1 | 2 | | 9
asm
case
const
auto
catch
const_cast
bitand
cdecl
continue
bitor
char
double
extern
if
new
dynamic_cast
false
inline
not
else
float
int
not_eq
enum
for
long
private
protected
public
return
struct
try
short
switch
typedef
signed
template
typeid
using
virtual
void
xor_eq
while
sizeof
this
Cuando se usa e en un literal constante real se dice que el nmero est expresado en
punto flotante (notacin cientfica). En cuanto a las cadenas de caracteres (o strings),
en C++ se expresan mediante una secuencia de caracteres cualesquiera1 encerrados
entre comillas simples.
e) Delimitadores: Son smbolos que indican el comienzo o fin de una entidad.
1
El smbolo \ tiene un significado especial en C/C++ como introductor de caracteres especiales (e.g., \n
para un salto de lnea, \t para una tabulacin, \ para las comillas dobles, etc.), lo que deber tenerse en
cuenta a la hora de su introduccin como literal. Si se desea usar literalmente, utilcese \\.
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
!
%
^
&
(
)
+
=
{
}
~
[
]
\
;
:
<
>
?
,
.
/
Debe tenerse cuidado para no encerrar trozos de cdigo til dentro de un comentario,
ya que un comentario puede extenderse a lo largo de mltiples lneas. Encerrar trozos de
cdigo como comentarios es til cuando se est desarrollando un programa para
comprobar si ciertas partes funcionan o no, pero es un error muy comn encerrar por
descuido otras zonas de cdigo que son necesarias o bien olvidarse de sacar rdenes de
dentro de un comentario.
El anidamiento de comentarios (poner comentarios dentro de otros
comentarios) puede dar problemas en algunos compiladores. Nunca
emplearemos este tipo de anidamiento.
g) Separadores: Son espacios en blanco, tabuladores, retornos de carro, fin de fichero
y fin de lnea. Habr ocasiones en que se pongan para dar legibilidad al programa, y
otras por necesidad. Los comentarios son considerados tambin separadores por el
compilador.
1.2
HolaMundo.cpp
Johann Sebastian Mastropiero
01/01/2001
Este es el programa Hola Mundo.
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
1.3
En un programa intervienen objetos sobre los que actan las instrucciones que lo
componen. Algunos de estos objetos tomarn valores a lo largo del programa.
Dependiendo de si pueden cambiar de valor o no, podemos distinguir dos tipos de
objetos:
Constante: Objeto referenciado mediante un identificador- al que se le asignar
un valor que no se podr modificar a lo largo del programa.
Todas las rdenes que comienzan por la almohadilla (#) van dirigidas al preprocesador, un programa
que repasa el cdigo y realiza diversas modificaciones sobre el mismo antes de proceder a la compilacin
del mismo. En este caso se le est indicando que incluya en el texto del programa el contenido completo
de los ficheros iostream.h y stdlib.h.
3
Las variantes que pueda tener esta lnea de comienzo se vern ms adelante cuando se tengan los
conceptos precisos para su compresin. De momento asumiremos que siempre es esa la forma de
comenzar el algoritmo principal.
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
En C++ existen una serie de tipos bsicos predefinidos, as como herramientas para
la construccin de tipos ms complejos. Los principales tipos de datos predefinidos en
C++ son los siguientes:
Enteros: el tipo bsico es int. Las variables definidas de este tipo podrn tomar
tpicamente valores entre -2147483648 y 2147483647. En determinadas
circunstancias podremos querer modificar este rango, para lo que disponemos de
dos tipos de modificadores short/long y signed/unsigned.
o
unsigned int: ocupa la misma memoria que un int, pero slo toma
valores positivos (e.g., 0 a 4294967295).
long int:
El rango de representacin en cada caso depende tanto del compilador como del sistema subyacente.
Particularizando para la versin 4.01 de Dev-C++ sobre sistemas Windows, se da la circunstancia de que
internamente un long int es equivalente a un int. Por ese motivo el rango de representacin es
exactamente el mismo.
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
double.
double.
Todos estos tipos tienen dos propiedades en comn: cada uno est formado por
elementos indivisibles o atmicos que adems estn ordenados. Los tipos de datos con
estas caractersticas se denominan tipos de datos escalares. Cuando decimos que un
valor es atmico, nos referimos a que no contiene partes componentes a las que pueda
accederse independientemente. Por ejemplo, un carcter es indivisible, mientras que la
cadena de caracteres Hola no. Cuando hablamos de que un conjunto de valores est
ordenado, queremos decir que los operadores relacionales estndares (mayor que, menor
que, igual, etc.) pueden aplicarse a los mismos.
Para declarar una variable basta con indicar el tipo de la misma y su nombre. La
declaracin termina con el punto y coma. Los siguientes ejemplos muestran
declaraciones vlidas:
int num;
unsigned x,y;
long double masaPlanetaria;
char car = c, letra;
short int corto;
Como puede apreciarse en el ltimo ejemplo, es posible dar un valor inicial a una
variable a la vez que se declara. As, la sintaxis BNF de una declaracin de variable es:
<decvar> ::= <tipo> <ident> [= <literal>] {, <ident> [=
<literal>]};
LOCAL
Aunque no es una imposicin sintctica del lenguaje, como regla de estilo se emplean en este caso
maysculas para designar a las constantes.
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
int num, x, y;
void main()
{
int num, x, y;
void main()
{
1.4
Dentro del cuerpo del algoritmo principal se indicarn las acciones que conducirn a la
resolucin del problema para el que dicho algoritmo fue confeccionado. La accin ms
bsica que se puede realizar es la asignacin. Su sintaxis es:
<asignacin> ::=
<ident> = <expresin>;
<expresin>
::=
En general, se emplear una expresin para asignar valores a las variables. Las posibles
expresiones que se pueden utilizar dependern en principio del tipo de los objetos
involucrados en las mismas. Sin embrago, debe tenerse en cuenta que C++ no es un
lenguaje con una comprobacin de tipos muy fuerte. Ello quiere decir que no se
controla el tipo de los objetos que forman parte de una operacin. Por ejemplo, es lgico
suponer que para sumar dos objetos, stos han de ser de un tipo numrico (enteros o
reales, en cualquiera de sus variantes). Sin embargo, esto no se comprueba,
permitindose sin ir ms lejos que se sumen dos caracteres. Lo que ocurre internamente
es que se produce una operacin de conversin (casting) mediante la cual los valores de
tipo carcter se convierten en valores numricos. Dicha conversin se puede producir
entre cualesquiera dos tipos. De hecho podemos forzar a que ocurra indicndolo
explcitamente. Para ello es preciso indicar el tipo al que queremos realizar la
conversin, y el objeto que queremos convertir, este ltimo entre parntesis. Por
ejemplo, si letra es un objeto de tipo char y queremos convertir su valor a entero
indicaremos int(letra). Esto no modifica el tipo ni el valor de letra, sino que
permite obtener un valor de conversin que podremos mostrar en pantalla, emplear
dentro de una expresin ms compleja, etc.
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
num1 = -10*num2;
num2 = num1%7;
num3 = num1/num2;
Operaciones relacionales: se proporcionan los operadores binarios ==, !=, >, <,
>=, <= con el significado respectivo de comparacin de igualdad, desigualdad,
mayor que, menor que, mayor o igual que y menor o igual que. El resultado de la
operacin relacional ser un valor lgico, e.g.,
int num1, num2;
bool b1, b2;
b1 = num2 == num1;
b2 = (num1-num2) >= (num2*2);
b1 = !(num2 == num1); //
num2!=num1
b2 = (num1>num2) && (num2<0);
equivale
C++ proporciona una sintaxis especial en el caso bastante frecuente en el que el valor de
una variable use como operando en una expresin aritmtica logica cuyo resultado se
asigna a la propia variable. Dicha sintaxis permite simplificar asignaciones del tipo v =
v <op> E, permitiendo expresarlas como v <op>= E. Por ejemplo:
int x, y, z;
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
Precisamente en relacin con este ltimo ejemplo, C++ proporciona una forma
sintctica an ms simple mediante el uso de los denominados operadores de
incremento (++) y decremento (--). stos son operadores unarios que slo pueden
aplicarse sobre variables (no sobre expresiones) y que modifican el valor de la misma,
incrementndola o decrementndola segn corresponda. Por ejemplo:
int x, y, z;
z++;
1
--x;
1
// equivale a z = z + 1 o a z +=
// equivale a x = x - 1 o a x -=
x = --y * z++;
// equivale a y = y - 1
//
x = y * z;
//
z = z + 1;
Introduccin a la Informtica.
Fundamentos de la Programacin.Pg
1.5
ENTRADA/SALIDA EN C++
Introduccin a la Informtica.
10
Fundamentos de la Programacin.Pg
setprecision().
setfill():
11
Fundamentos de la Programacin.Pg
cout
cout
cout
cout
endl;
cout
endl;
cout
endl;
}
<<
<<
<<
<<
setprecision(2) <<
setprecision(4) <<
setprecision(5) <<
a1 << setw(10)
a3
a3
a3
<<
<< endl;
<< endl;
<< endl;
setfill(.) << a1 <<
Introduccin a la Informtica.
12
Fundamentos de la Programacin.Pg
EJERCICIOS
1 El siguiente programa escrito en C++ tiene errores. Encuntrelos.
/*
* Nombre:
* Autor:
* Fecha:
* Descripcin:
lxicos,
*
*
*/
Ejemplo.cpp
Chindasvinto de Prusia
10/12/2000
Programa ejemplo sobre
errores
sintcticos y semnticos
#include <iostream.h>
void main ()
{
const int tasa = 25.00;
double horas, das, total, neto;
cout << Introduce las horas trabajadas: ' <<
endl;
cin >> horas
cout << Introduce los dias trabajados: << endl;
cin >> dias;
horas*dias = total;
neto = total-Tasa;
cout
cin
cout
cout
>>
<<
<<
<<
Introduccin a la Informtica.
13
Fundamentos de la Programacin.Pg
4 Experimente con las conversiones entre tipos. Lea una variable de tipo carcter, e
imprima en pantalla el valor de la misma, y el valor de su conversin a entero. Haga lo
mismo con enteros negativos y su conversin a enteros sin signo (unsigned), o con
nmeros en punto flotante y su conversin a entero.
5 Escriba un programa que lea una palabra de cuatro letras por teclado, y
posteriormente escriba dicha palabra de manera que cada letra se encuentre codificada
sustituyndola por aquel carcter que le sigue en la tabla de cdigo ASCII. (Ayuda:
deber emplear conversiones entre tipos).
Introduccin a la Informtica.
14
Fundamentos de la Programacin.Pg