SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Tema 2

Conceptos b´sicos de C++
           a

     En este cap´
                ıtulo vamos a introducir el lenguaje de programaci´n C++
                                                                  o
  que se va a utilizar en la asignatura, describiendo algunos conceptos b´sicos y
                                                                         a
  plasmando la estructura general de un programa escrito en este lenguaje. A lo
  largo de los sucesivos temas se seguir´ la notaci´n BNF para ir describiendo las
                                        a          o
  diferentes reglas sint´cticas del lenguaje. De esta forma se ir´ introduciendo
                        a                                        a
  de una manera formal la sintaxis de C++.




                                         1
´
Indice General

2 Conceptos b´sicos de C++
             a                                                                              1
   2.1   Elementos del lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . .     3
   2.2   Constantes, variables y tipos de datos . . . . . . . . . . . . . . . . . . . .      6
         2.2.1   El tipo int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     8
         2.2.2   El tipo unsigned int . . . . . . . . . . . . . . . . . . . . . . . .       8
         2.2.3   El tipo float . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     9
         2.2.4   El tipo bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    9
         2.2.5   El tipo char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    9
         2.2.6   Chequeo de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . .     10
   2.3   Estructura de un programa en C++ . . . . . . . . . . . . . . . . . . . . .         10
         2.3.1   Esquema general de un programa . . . . . . . . . . . . . . . . . .         10
         2.3.2   Listas de inclusiones . . . . . . . . . . . . . . . . . . . . . . . . .    11
         2.3.3   Espacios de nombres . . . . . . . . . . . . . . . . . . . . . . . . .      11
         2.3.4   Declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    12
         2.3.5   Cuerpo del programa . . . . . . . . . . . . . . . . . . . . . . . . .      12
         2.3.6   Asignaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                         o                                                                  13
         2.3.7   Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    13
   2.4   Entrada/salida en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . .        14
         2.4.1   Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   14
         2.4.2   Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    15



2.1      Elementos del lenguaje
Comenzaremos viendo los elementos m´s simples que integran un programa escrito en
                                   a
C++, es decir palabras, s´
                         ımbolos y las reglas para su formaci´n.
                                                             o

  1. Identificadores

                                              3
4                                                               ´
                                             TEMA 2. CONCEPTOS BASICOS DE C++

      Son nombres elegidos por el programador para representar entidades (variables,
      tipos, constantes, procedimientos, m´dulos) en el programa. El usuario puede
                                          o
      elegir cualquier identificador excepto un peque˜o grupo que se reserva para usos
                                                    n
      espec´
           ıficos.

      C++ distingue entre letras may´ sculas y min´ sculas, por lo que a efectos
                                    u             u
      del programa ser´n identificadores distintos hola, Hola o hoLa.
                      a

      No se impone ning´n l´
                       u ımite en cuanto a la longitud de los identificadores.


                     <Ident> ::= <letra> {<letra>|<digito>}


    2. Palabras reservadas

      Tienen un significado predeterminado para el compilador y s´lo pueden ser usadas
                                                                o
      con dicho sentido.
        and          and eq     asm            auto       bitand     bitor
        bool         break      case           catch      chat       class
        compl        const      const cast     continue   default    delete
        do           double     dynamic cast   else       enum       explicit
        export       extern     false          float       for        friend
        goto         if         inline         int        long       mutable
        namespace new           not            not eq     operator or
        or eq        private    protected      public     register   reinterpret cast
        return       short      signed         sizeof     static     static cast
        struct       switch     template       this       throw      true
        try          typedef    typeid         typename   union      unsigned
        using        virtual    void           volatile   wchar t    while
        xor          xor eq

    3. Literales constantes

      Se distingue entre n´meros reales, n´meros enteros y cadenas de caracteres.
                          u               u


              <num_entero> ::= <digito> {<digito>}                                 |
                                 <digito_octal> {<digito_octal>} (u|U|l|L)|
                                 <digito> {<digito_hex>} H
              <num_real>      ::= <digito> {<digito>}.{<digito>} [<factor_esc>]
              <factor_esc> ::= E (+|-|e) {<digito>}
2.1. ELEMENTOS DEL LENGUAJE                                                          5

   Si el n´mero lleva u como sufijo, es un n´mero sin signo. Si lleva L como sufijo es
          u                                u
   de tama˜o long. Todo n´mero al que se le antepone el car´cter 0 est´ expresado
          n              u                                 a          a
   en base 8. Si se le antepone 0x, est´ expresado en base 16. Cuando se usa E en
                                       a
   un literal constante real se dice que el n´mero est´ expresado en punto flotante
                                             u        a
   (notaci´n cient´
          o       ıfica).

   Una cadena de caracteres (string) en C++ es una secuencia de caracteres encerrados
   entre comillas dobles (” ”). Las constantes que representan un solo car´cter se
                                                                          a
   encierran entre comillas simples(’ ’).

 4. Delimitadores

   Son s´
        ımbolos (con o sin significado propio) que indican comienzo o fin de una
   entidad. Son elementos indivisibles: por ejemplo al escribir == se debe hacer sin
   ning´n car´cter intercalado.
       u     a


        {    }      [    ]   #     ##   (    )    <:   >:   <%   >%   %:%:
        %:   ;      :    ?   ::    .    .*   +    -    *    /    %    ^
        &    |      ~    !   =     <    >    +=   -=   *=   /=   %=   ^=
        &=   |=     <<= >>= <<     >>   ==   !=   <=   >=   &&   ||   ++
        --   ,      ->   ->* ...


 5. Comentarios

   Un comentario es una secuencia de caracteres que es ignorada por el compilador.
   Se usan para documentar el programa, de manera que aunque no contribuyan a
   resolver el problema, s´ ayudan a mejorar la comprensi´n del programa. Hay dos
                          ı                              o
   formas de incluir un comentario en C++. El texto que hay entre // y el fin de
   l´
    ınea se considera un comentario. Tambi´n es comentario el texto que se encuentra
                                          e
   entre los s´
              ımbolos /* y */. Los comentarios de este estilo no se pueden anidar.

   Debe tenerse cuidado para no encerrar trozos de c´digo util dentro de un comenta-
                                                    o     ´
   rio, ya que un comentario puede extenderse a lo largo de m´ltiples l´
                                                             u         ıneas. Encerrar
   trozos de c´digo como comentarios es util cuando se est´ desarrollando un progra-
              o                         ´                 a
   ma para comprobar si ciertas partes funcionan o no, pero es un error muy com´n
                                                                               u
   encerrar por descuido otras zonas de c´digo que son necesarias o bien olvidarse de
                                         o
   sacar sentencias de dentro de un comentario.

 6. Separadores
6                                                           ´
                                         TEMA 2. CONCEPTOS BASICOS DE C++

      Son espacios en blanco, tabuladores, retornos de carro, fin de fichero y fin de l´
                                                                                    ınea.
      Habr´ ocasiones en que se pongan para dar legibilidad al programa, y otras por ne-
          a
      cesidad. Los comentarios son considerados tambi´n separadores por el compilador.
                                                     e


2.2      Constantes, variables y tipos de datos
En un programa intervienen objetos sobre los que act´an las instrucciones que lo com-
                                                    u
ponen. Algunos de estos objetos tomar´n valores a lo largo del programa. Dependiendo
                                     a
de si pueden cambiar de valor o no, podemos distinguir dos tipos de objetos:

    • Constante: Objeto, referenciado mediante un identificador, que tomar´ un valor al
                                                                         a
      principio (zona de declaraciones) y no se podr´ modificar a lo largo del programa.
                                                    a

    • Variable: Objeto, referenciado por un identificador, que puede tomar distintos
      valores a lo largo del programa.

    Ser´ misi´n del programador asignar el identificador que desee a cada constante y
       a     o
variable. El identificador o nombre de cada objeto sirve para identificar sin ning´n tipo
                                                                                u
de ambig¨edad a cada objeto, diferenci´ndolo de los dem´s objetos que intervienen en el
        u                             a                a
programa.
    En C++ hay que indicar el nombre de las constantes y variables que vamos a usar,
para que el compilador pueda asociar internamente a dichos nombres las posiciones de
memoria correspondientes. La declaraci´n tiene que encontrarse en el c´digo antes de
                                      o                               o
cualquier instrucci´n que las use.
                   o
    Al realizar las declaraciones de las variables, adem´s de indicar su identificador o
                                                        a
nombre, hay que indicar expl´
                            ıcitamente el tipo de los datos que pueden contener.
    Un tipo determina la clase de valores que puede asumir una variable, constante o
expresi´n. Cada valor pertenece a un tipo. Sobre los tipos de datos hay que destacar:
       o

    • Importancia de poseer tipo. Cada variable, constante y expresi´n tienen aso-
                                                                    o
      ciado un unico tipo. La informaci´n de tipo determina la representaci´n de los
               ´                       o                                   o
      valores, y la cantidad de espacio de memoria que debe serle asignado. Esa infor-
      maci´n tambi´n determina la forma en que deben ser interpretados los operadores
          o       e
      aritm´ticos, y permite al compilador detectar errores sem´nticos en aquellos pro-
           e                                                   a
      gramas que contienen operaciones inapropiadas. El tipo de una variable no s´lo
                                                                                 o
      determina el conjunto de valores que puede almacenar sino tambi´n el conjunto de
                                                                     e
      operaciones permitidas sobre dicha variable. Esto ultimo es el principio fundamen-
                                                        ´
      tal de la programaci´n usando Tipos Abstractos de Datos (TADs).
                          o
2.2. CONSTANTES, VARIABLES Y TIPOS DE DATOS                                             7

   • Cardinalidad. El n´mero de valores que tiene un tipo de datos.
                       u

   • Operadores b´sicos. A cada tipo se le asocia un conjunto de operadores b´sicos,
                 a                                                           a
     destinados a ser de utilidad en el dise˜o de programas y que, adem´s, tienen por
                                            n                          a
     lo menos una implementaci´n razonablemente eficiente en un computador. Por su-
                              o
     puesto, la selecci´n de operadores b´sicos es, en cierta medida, arbitraria, y podr´
                       o                 a                                              ıa
     haberse aumentado o disminuido. El principio que suele seguirse es posibilitar al
     programador construir cualquier operaci´n adicional en funci´n de las b´sicas, y
                                            o                    o          a
     permitir hacerlo de una forma eficiente. Las operaciones m´s importantes y m´s
                                                              a                 a
     generales definidas para los datos de cualquier tipo, son la asignaci´n (representada
                                                                         o
     por =) y la verificaci´n de igualdad (==).
                          o

   • Compatibilidad de tipos. Cada operador act´a sobre operandos de un mismo
                                               u
     tipo, y da como resultado un valor siempre de un mismo tipo determinado. Como
     ya se ha dicho la informaci´n de tipo ayuda a los compiladores para detectar si se
                                o
     est´n realizando operaciones inapropiadas con tipos de datos distintos. Cuando el
        a
     mismo s´
            ımbolo es aplicado para varios tipos distintos (por ejemplo + para la suma
     de enteros y la de reales –se le llama operador sobrecargado–), dicho s´
                                                                            ımbolo puede
     considerarse ambig¨o, denotando varios operadores concretos diferentes.
                       u

   En un lenguaje de programaci´n existen normalmente una serie de tipos de datos
                               o
predefinidos (tipos b´sicos) que el programador puede utilizar directamente para decla-
                    a
rar variables. Por otro lado se pueden definir nuevos tipos propios para satisfacer las
necesidades particulares del programador. Los principales tipos de datos predefinidos en
C++ son:

   • El tipo int. N´meros enteros.
                   u

   • El tipo bool. Valores l´gicos Verdadero y Falso.
                            o

   • El tipo char. Caracteres del c´digo ASCII.
                                   o

   • El tipo float. N´meros reales.
                     u

   Todos ellos tienen dos propiedades en com´n: cada uno est´ formado por elemen-
                                            u               a
tos indivisibles o at´micos que adem´s est´n ordenados. Los tipos de datos con estas
                     o              a     a
caracter´
        ısticas se denominan tipos de datos escalares. Cuando decimos que un valor es
at´mico, nos referimos a que no contiene partes componentes a las que pueda acceder-
  o
se independientemente. Por ejemplo, un car´cter es indivisible, mientras que la cadena
                                          a
8                                                           ´
                                         TEMA 2. CONCEPTOS BASICOS DE C++

de caracteres ”Hola”no. Cuando hablamos de que un conjunto de valores est´ ordena-
                                                                         a
do, queremos decir que los operadores relacionales est´ndares (<, >, ==, <=, >=, !=)
                                                      a
pueden aplicarse a aqu´llos.
                      e
    Todos estos tipos, excepto float, poseen una propiedad adicional. Cada valor tiene
un predecesor y un sucesor unicos (excepto el primer y ultimo valor, respectivamente).
                           ´                           ´
Los tipos de datos escalares que tienen esta propiedad se denominan tipos de datos
ordinales. De los tipos de datos predefinidos s´lo el tipo float no es ordinal, pues 0.0501
                                              o
es el predecesor de 0.0502 con cuatro d´
                                       ıgitos de precisi´n, pero 0.05019 es el predecesor
                                                        o
de 0.05020 con un d´
                   ıgito m´s de precisi´n.
                          a            o


2.2.1     El tipo int
Los valores que pertenecen a este tipo son los n´meros enteros. Los operadores aplicables
                                                u
a los enteros son:

    • + suma

    • - resta

    • * producto

    • / cociente de la division entera

    • % resto de la divisi´n entera.
                          o

    Cada computador restringir´ el conjunto de valores de este tipo a un conjunto finito
                              a
de enteros, comprendido en el intervalo −2N −1 ... 2N −1 − 1, donde N es el n´mero de
                                                                             u
bits que el computador usa para representar internamente un entero.
    En nuestro caso, para el tipo int, N = 32, por lo que este rango es: - 2147483648
.. 2147483647. Se pueden definir variables para valores enteros con un rango menor
indicando que son de tipo short int. En nuestro compilador, para los short int N
= 16 y el rango es: -32768 .. 32767. Asimismo, long int est´ pensado para un rango
                                                           a
mayor de valores, pero en el caso de nuestro compilador coincide con los int.


2.2.2     El tipo unsigned int
No es tipo independiente de int, sino una variaci´n de aqu´l. Sus valores son los n´meros
                                                 o        e                        u
enteros no negativos, esto es, los n´meros naturales (incluido el 0). Los operadores
                                    u
aplicables son los mismos que para int. La ventaja de usar unsigned int en lugar
de int es que hacemos expl´
                          ıcito que una determinada variable s´lo puede ser positiva.
                                                              o
2.2. CONSTANTES, VARIABLES Y TIPOS DE DATOS                                             9

Adem´s de esto, si un computador usa N bits para almacenar un entero, el rango de los
    a
valores unsigned int ser´ 0...2N - 1, con lo que podemos almacenar un n´mero entero
                        a                                              u
positivo m´s grande que con el tipo int. En nuestro caso los rangos para unsigned int
          a
y short unsigned int son, respectivamente: 0 .. 4294967295 y 0 .. 65535.


2.2.3    El tipo float
Los valores del tipo float son los n´meros reales. Los operadores disponibles son los
                                    u
b´sicos anteriormente mencionados. La divisi´n se denota por /, siendo la divisi´n real,
 a                                          o                                   o
no la entera. Las constantes de tipo float se caracterizan por tener un punto decimal
y, posiblemente, un factor de escala. Por ejemplo:

         1.5      1.50     1.5E2    2.34E-2      0.0    0.    5.

Si se quieren representar n´meros con mayor precisi´n, se puede usar el tipo double y
                           u                       o
long double.
   En C++ el mayor real representable es 3.40282347e+38F (6 d´
                                                             ıgitos de precisi´n) y el
                                                                              o
menor n´mero positivo distinto de 0 es 1.17549435e-38F.
       u


2.2.4    El tipo bool
Un valor bool es uno de los dos valores de verdad l´gicos denotados por los identificadores
                                                   o
est´ndares del lenguaje: true y false (Verdadero y Falso). Las expresiones de tipo
   a
bool son muy importantes en programaci´n. Estos valores no pueden leerse o escribirse
                                      o
directamente desde el teclado o al monitor, al contrario de lo que ocurre con los tipos
num´ricos.
   e
   Cuando se eval´a una expresi´n en C++, cualquier valor distinto de 0 es considerado
                 u             o
true y 0 es considerado false.


2.2.5    El tipo char
Cada computador se comunica con su entorno mediante alg´n dispositivo de entrada y
                                                       u
salida. Lee, escribe, o imprime elementos pertenecientes a un conjunto fijo de caracteres.
Este conjunto constituye el rango de valores del tipo char. El conjunto fijo de caracteres
m´s estandarizado es el denominado ASCII (American Standard Code for Information
 a
Interchange). Este conjunto est´ ordenado y cada car´cter tiene una posici´n fija o
                               a                    a                     o
n´mero ordinal.
 u
   Las constantes de tipo char se denotan por el car´cter encerrado entre comillas sim-
                                                    a
ples(’ ’). Un valor car´cter puede ser asignado a una variable de tipo char, pero no puede
                       a
10                                                            ´
                                           TEMA 2. CONCEPTOS BASICOS DE C++

usarse en operaciones aritm´ticas. Sin embargo, las operaciones aritm´ticas pueden apli-
                           e                                         e
carse a sus n´meros obtenidos por la funci´n de cambio de tipo int(ch). De forma
             u                            o
inversa el car´cter con el n´mero n asociado, se obtiene con la funci´n est´ndar char(n).
              a             u                                        o     a
Estas dos funciones se complementan se relacionan con las ecuaciones:

      int(char(ch)) = ch         y     char(int(n)) = n


2.2.6      Chequeo de tipos
En C++ cada variable y constante tiene un tipo concreto, y cuando se efect´a una
                                                                          u
operaci´n, sus operandos deben tener el tipo apropiado.
       o
     En principio, y hasta que no presentemos las reglas para el uso de tipos, supondremos
que las operaciones s´lo est´n definidas entre operandos del mismo tipo. Dos tipos son
                     o      a
iguales si tienen el mismo nombre, y no si su composici´n es la misma. Esto resultar´
                                                       o                            a
especialmente importante cuando se trabaje con tipos de datos estructurados.
     Si el programador necesita usar expresiones en las que los operandos sean de distintos
tipos, debe efectuar conversi´n de tipos expl´
                             o               ıcita (casting). Para ello se especifica el tipo
al que se convierte y, entre par´ntesis, la expresi´n que se convierte.
                                e                  o

           int(Valor)       //Convierte el parametro Valor al tipo int.
           float(Valor)     //Convierte el parametro Valor al tipo float.
           etc...


2.3       Estructura de un programa en C++
Comenzaremos viendo la estructura global de un programa escrito en C++ para a con-
tinuaci´n ir desglosando y analizando cada uno de sus componentes.
       o


2.3.1      Esquema general de un programa
      //lista de inclusiones
      //declaraciones globales


      int main(int argc, char *argv[])
      {
           //declaraciones locales
           //sentencias de programa
      }
2.3. ESTRUCTURA DE UN PROGRAMA EN C++                                                  11

2.3.2    Listas de inclusiones
Dentro de un programa podemos necesitar algunos procesos que por ser muy frecuentes
est´n disponibles en el lenguaje y por tanto no nos debemos preocupar de programarlos.
   a
Para ello hay que indicar expl´
                              ıcitamente que estamos incluyendo en nuestro programa
los ficheros que contienen esos recursos. Una l´
                                              ınea de inclusi´n consta de la expresi´n
                                                             o                      o
reservada #include y el nombre del fichero a incluir entre los caracteres ’<’ y ’>’:

      #include <cstdlib>
      #include <iostream>


2.3.3    Espacios de nombres
Es posible que en varios ficheros diferentes se encuentre un recurso con el mismo nombre.
Para evitar la confusi´n hay una herramienta, los espacios de nombres, que permite
                      o
agrupar bajo un mismo contexto distintos recursos. Cuando se vaya a hacer uso de un
recurso hay que especificar a qu´ espacio de nombre pertenece. As´ podemos usar en
                               e                                ı
un mismo programa dos recursos que, aunque tengan el mismo nombre, pertenezcan a
espacios de nombres distintos. Existen tres formas de refenciar un recurso definido en un
espacio de nombres:

   • Nombrado expl´
                  ıcito: Se escribe el identificador del espacio de nombre, seguido del
     los caracteres :: y el identificador del recurso. Por ejemplo std::cout, nos permite
     usar el recurso cout definido en el espacio de nombres std. M´s adelante en este
                                                                 a
     mismo tema se explicar´ qu´ es cout.
                           a e

   • Importaci´n expl´
              o      ıcita. Se declara en una l´
                                               ınea de importaci´n cu´les van a ser los
                                                                o    a
     recursos del espacio de nombres que se van a usar, mediante la sentencia using. Por
     ejemplo, si importamos using std::cout;, podemos usar en nuestro programa
     el recurso cout simplemente escribiendo su nombre, pero cualquier otro recurso
     del mismo espacio de nombres hay que referenciarlo junto con el identificador del
     espacio de nombres, por ejemplo std::cin.

   • Importaci´n general. Se importa con una sentencia using un espacio de nombres
              o
     completo, por lo que se pueden usar todos sus recursos sin tener que hacer referencia
     al identificador del espacio de nombres. Por ejemplo si escribimos using namespace
     std;, basta con escribir cout y cin para acceder a esos recursos.

   Nosotros no vamos a definir ning´n espacio de nombres propio durante este curso y,
                                  u
de los que ya est´n definidos, s´lo usaremos recursos pertenecientes al espacio de nombres
                 a             o
12                                                             ´
                                            TEMA 2. CONCEPTOS BASICOS DE C++

std, que es el que contiene todos los recursos estandar del lenguaje.


2.3.4     Declaraciones
En un programa escrito en C++ habr´ que declarar todos los objetos que se empleen.
                                  a
Aunque C++ da una gran libertad sobre el lugar en que se pueden hacer nuevas de-
claraciones, nosotros nos vamos a restringir a hacerlo en ciertos lugares, bien antes del
inicio de la funci´n main para los objetos globales, bien antes de las instrucciones de una
                  o
funci´n en concreto para los objetos locales a una funci´n.
     o                                                  o


2.3.5     Cuerpo del programa
Es la zona del programa formada por las sentencias a ejecutar, especific´ndose los pasos
                                                                       a
a seguir para la resoluci´n del problema.
                         o
   En C++ hay diversos tipos de sentencias:
 Asignaci´n
         o         switch      for          exit
 Llamada a funci´n while
                o                   return     break
 if                   do-while continue
   Entre estas sentencias no hay ninguna dedicada a entrada/salida (E/S). Lo que ocurre
es que la E/S en C++ se efect´a mediante llamadas a procedimientos que hay que
                             u
importar mediante listas de inclusiones.
     Los procedimientos que se importan se encuentran en bibliotecas. Aunque existe
un conjunto est´ndar de bibliotecas, cada compilador de C++ puede a˜adir sus propias
               a                                                   n
librer´ predefinidas e informar de las caracter´
      ıas                                     ısticas de los procedimientos que contiene.
´
Este es un aspecto a revisar siempre que, a´n usando el mismo lenguaje, cambiemos de
                                           u
compilador.

      <sec_sent>   ::=       <sentencia>; {<sentencia>}
      <sentencia> ::=        <sent_asignacion>             |
                             <llamada_funcion>             |
                             <sent_if>                     |
                             <sent_switch>                 |
                             <sent_while>                  |
                             <sent_do_while>               |
                             <sent_for>                    |
                             exit                          |
                             break                         |
                             continue                      |
2.3. ESTRUCTURA DE UN PROGRAMA EN C++                                                       13

                                 return[<expresion>]          |
                                 <sent_vacia>


2.3.6     Asignaci´n
                  o
Es el operador que permite dar un valor a una variable.

      <sent_asignacion> ::= <variable> = <expresion>

   Ejemplo:

      i = 10;

   El operador de asignaci´n es ”=”, y se lee toma el valor. La variable (izquierda)
                          o
toma el valor de la expresi´n (derecha). Por defecto, las variables, despu´s de haber sido
                           o                                              e
declaradas, no tienen ning´n valor (est´n indefinidas) y el programador debe encargarse
                          u            a
de inicializarlas, es decir, asignarles un valor conocido, en el caso de que se vaya a utilizar
su contenido.
   En el lado izquierdo de la sentencia de asignaci´n s´lo puede haber una variable. Se
                                                   o o
eval´a la expresi´n de la derecha y el resultado se guarda en la variable.
    u            o
   Las variables mantienen el valor que se les asigna hasta que cambian mediante otra
sentencia de asignaci´n (u otro mecanismo), momento en que pierden el antiguo valor.
                     o


2.3.7     Expresiones
En los lenguajes de programaci´n el concepto de expresi´n es similar al usado en matem´-
                              o                        o                              a
ticas. Una expresi´n ser´ un conjunto de operadores y operandos que tras su evaluaci´n
                  o     a                                                           o
devolver´ un unico valor. Para saber el resultado de una expresi´n debemos conocer la
        a    ´                                                  o
precedencia de los operadores, es decir, el orden en el que se eval´an dentro de la misma.
                                                                   u
De mayor a menor precedencia, los operadores disponibles son:



                !
                *   /   %    &&
                +   -   ||
                == != <      >     <= >=

   En caso de igualdad de precedencia se eval´an de izquierda a derecha. Estas reglas
                                             u
pueden alterarse mediante el uso de par´ntesis.
                                       e
14                                                            ´
                                           TEMA 2. CONCEPTOS BASICOS DE C++

   Ejemplos:
 A = 3 * B - 7 ↔         A = (3*B)-7
 A = 3 - B - C ↔         A = (3-B)-C
 A = 3 - B * 7 ↔         A = 3-(B*7)


2.4       Entrada/salida en C++
Trataremos por el momento la entrada y salida de datos en forma de caracteres. En
principio supondremos que nuestros programas de C++ son procesos (programas en
ejecuci´n) que toman informaci´n de un flujo de entrada y entregan informaci´n a un
       o                      o                                            o
flujo de salida, utilizando para ello dispositivos externos capaces de manejar informaci´n
                                                                                       o
en forma de caracteres organizados como una sucesi´n de l´
                                                  o      ıneas.
     Se conocen como flujos de entrada/salida est´ndares aquellos que se realizan con la
                                                a
pantalla y con el teclado (E/S interactiva).
     Otra alternativa de comunicaci´n con un programa consiste en preparar un fichero de
                                   o
datos, por ejemplo en el disco, de donde el programa los pueda leer cuando los necesite
o grabar cuando tenga resultados ( E/S diferida).
     En C++ las instrucciones para efectuar E/S se encuentran en m´dulos de librer´
                                                                  o               ıa,
es decir, m´dulos preprogramados disponibles para el programador. A continuaci´n
           o                                                                  o
se describir´n algunas de las instrucciones de E/S interactiva contenidas en la librer´
            a                                                                         ıa
iostream.


2.4.1      Salida
Para enviar datos a la salida por defecto (generalmente la pantalla del monitor del or-
denador), vamos a usar el flujo de salida cout. Este flujo se encuentra en el fichero de
biblioteca iostream. Aunque se pueden efectuar muchas operaciones diferentes sobre
este flujo, por ahora s´lo vamos a ver la operaci´n <<. Esta operaci´n manda un valor
                      o                         o                  o
al flujo cout. Este valor puede ser de cualquier tipo. Ejemplo:

       cout << quot;El valor de la variable cuyo nombre es i es quot;;
       cout << i;
       cout << endl;

El primer ejemplo escribe una cadena de caracteres, el segundo el contenido de la variable
i y en el tercero se escribe el valor del car´cter endl, lo que hace que se escriba una nueva
                                             a
l´
 ınea. Tambi´n se pueden concatenar los valores que se vayan a mandar a la salida. La
            e
siguiente instrucci´n equivale a las tres anteriores:
                   o
2.4. ENTRADA/SALIDA EN C++                                                            15

    cout << quot;El valor de la variable cuyo nombre es i es quot; << i << endl;


2.4.2    Entrada
Este apartado se refiere a todas aquellas instrucciones que hacen posible introducir datos
para que el programa los maneje. A continuaci´n veremos instrucciones que tambi´n se
                                             o                                 e
encuentran en el fichero de biblioteca iostream. En este caso, el flujo de entrada en cin
y la operaci´n que vamos a ver de momento para la lectura de datos es >>. Como en el
            o
caso de la salida, el par´metro puede ser de cualquier tipo. Ejemplo:
                         a

      int i, j;
      char c;
      cin >> i;
      cin >> j;
      cin >> c;

   Finalmente vamos a se˜alar algunas notas importantes que hay que tener en cuenta
                        n
al hacer entrada/salida interactiva:

  1. Las entradas y salidas de nuestro programa tienen eco normalmente en el monitor
     y se mezclan. El programador debe prever este efecto para que el resultado sea
     legible.

  2. El computador normalmente no se percata de lo que se teclea hasta pulsar la tecla
     ENTER, quien provoca adem´s un salto de l´
                              a               ınea en la pantalla. Por tanto es posible
     una edici´n limitada de los valores que se est´n tecleando (borrarlos, cambiarlos,
              o                                    a
     etc...) antes de pulsar ENTER.

  3. Hay otras instrucciones que permiten hacer una salida con formato para que sea
     m´s visible, aunque por ahora no lo vamos a ver.
      a


Ejercicios
  1. Copiar (editar), compilar y ejecutar el siguiente programa que permite introducir
     una medida en cent´
                       ımetros y muestra la medida equivalente en pulgadas (una
     pulgada mide 2,54 cent´
                           ımetros).


        #include <iostream>
        #include <cstdlib>
16                                                             ´
                                            TEMA 2. CONCEPTOS BASICOS DE C++



          using namespace std;


          const float cent_por_pulgada = 2.54;


          int main()
          {
              float centimetros, pulgadas;


              cout << quot;Teclee una medida en centimetrosnquot;;
              cin >> centimetros;
              pulgadas = centimetros / cent_por_pulgada; // Calculo de pulgadas
              cout << quot;Sus quot; << centimetros << quot; centimetros equivalen a quot; <<
                       pulgadas << quot;pulgadasquot; << endl;


              return 0;
          }


     2. Escribir (editar), compilar y ejecutar el programa siguiente, que recibe el radio de
       un c´
           ırculo y que muestra en pantalla el di´metro, la longitud de la circunferencia
                                                 a
       y el ´rea de ese c´
            a            ırculo.


          #include <iostream>
          #include <cstdlib>


          using namespace std;


          const float PI = 3.14;


          int main() {
              float radio, diametro, longitud, area;
              cout << quot;Teclee la medida del radio de la circunferencia en cmnquot;;
              cin >> radio;
              // Calculos de magnitudes
              diametro = 2.0 * radio;
              longitud = PI * diametro;
2.4. ENTRADA/SALIDA EN C++                                                        17

          area = PI * radio * radio;
          // Salida de resultados
          cout << quot;DATOS DEL CIRCULO:quot; << endl;
          cout << quot;Radio introducido por el usuario: quot; << radio <<
                   quot; cmquot; << endl;
          cout << quot;Diametro de la circunferencia: quot; << diametro <<
                   quot; cmquot; << endl;
          cout << quot;Longitud de la circunferencia: quot; << longitud <<
                   quot; cmquot; << endl;
          cout << quot;Area de la circunferencia: quot; << area << quot; cm2quot; << endl;


          return 0;
      }


 3. Al principio de un viaje en autom´vil, el conductor se asegura de que el dep´sito
                                     o                                          o
    de combustible est´ lleno y anota la lectura del cuentakil´metros. Al terminar su
                      e                                       o
    viaje, anota la nueva lectura y la cantidad de combustible que se requiri´ para
                                                                             o
    volver a llenar el dep´sito. Copiar el siguiente programa, que calcula el consumo
                          o
    de combustible (por cada 100 Km.), con una precisi´n de tres decimales, a partir
                                                      o
    de esta informaci´n.
                     o


      #include <iostream>
      #include <cstdlib>


      using namespace std;


      int main()
      {
          float kmInicial, kmFinal, litros, consumo;


          // Datos de entrada
          cout << quot;Teclee el kilometraje al principio del viajequot; << endl;
          cin >> kmInicial;
          cout << quot;Teclee el kilometraje al final del viajequot; << endl;
          cin >> kmFinal;
          cout << quot;Teclee los litros necesarios para llenar el depositoquot; << endl;
18                                                             ´
                                            TEMA 2. CONCEPTOS BASICOS DE C++

              cin >> litros;


              // Calculos de resultados
              consumo = 100.0 * litros / (kmFinal - kmInicial);
              // Salida de resultados
              cout << quot;El automovil consume quot; << consumo <<
                        quot; litros por cada 100 km.quot; << endl;


              return 0;
          }


     4. Escriba un programa que acepte un dato de tipo int de teclado y posteriormente
        lo escriba en pantalla. Ejec´telo introduciendo un n´mero int v´lido, y posterior-
                                    u                       u          a
        mente ejec´telo introduciendo por teclado un valor que no pertenezca al tipo int.
                  u
        Eval´e las diferencias entre ambas ejecuciones del mismo programa.
            u

     5. Escriba un programa que s´lo declare variables de tipo short int. El programa
                                 o
        deber´ leer dos n´meros desde el teclado, posteriormente los sumar´, almacenando
             a           u                                                a
        el resultado en una variable, y finalmente escribir´ por pantalla el resultado de la
                                                          a
        suma. Ejecute dicho programa tomando como datos de entrada 1 y 90000. ¿Por
        qu´ no funciona?.
          e

     6. Escriba un programa que declare cuatro variables de tipo int y las escriba en
        pantalla sin haberles dado ning´n valor. ¿Cu´l es el resultado escrito? ¿Por qu´?
                                       u            a                                  e

     7. Escribir un programa que reciba el precio neto de cierta mercanc´ comprada y la
                                                                        ıa
        tasa de impuesto al valor a˜adido (IVA) como un porcentaje, y que muestre en
                                   n
        pantalla el importe del IVA y el total a pagar en una forma correctamente anotada.

     8. La distancia que recorre un objeto cuando se le deja caer desde cierta altura despu´s
                                                                                           e
        de cierto tiempo se calcula mediante la siguiente f´rmula de gravitaci´n: s = 1 gt2
                                                           o                  o       2
        con (g=9.81 m/s2 ). Realizar un programa en C++ que pidiendo al usuario del pro-
        grama el tiempo despu´s de haberse soltado un objeto, calc´lense tanto la distancia
                             e                                    u
        recorrida como la velocidad media durante ese tiempo.

     9. Escribir un programa que lea el lado de un cubo y calcule el ´rea lateral y el volumen
                                                                     a
        del mismo.
2.4. ENTRADA/SALIDA EN C++                                                             19

 10. Escribir un programa para calcular el salario bruto semanal de un empleado, pi-
     diendo por teclado la tarifa que se le paga por hora por su trabajo y el n´mero
                                                                               u
     de horas normales y extra trabajadas durante la semana. Las horas normales se
     pagan seg´n la tarifa est´ndar y cualquier tiempo extra se paga a 1,5 veces la tarifa
              u               a
     est´ndar por hora.
        a

 11. Escriba un programa que intercambie el valor de dos variables enteras. Posterior-
     mente ampl´ para que intercambie el valor de tres variables. Si inicialmente los
               ıelo
     valores eran {x == x0 ; y == y0 ; z == z0 }, al final del programa los valores deben
     ser {x == y0 ; y == z0 ; z == x0 }. Opcional: Haga una nueva versi´n el ejercicio
                                                                       o
     sin usar variables intermedias.

 12. Escriba un programa que transforme un n´mero dentro de un intervalo [x0 , y0 ] al
                                            u
     punto equivalente dentro de otro intervalo [x1 , y1 ].

 13. Escriba un programa en el que se asigna cada una de las siguientes f´rmulas ma-
                                                                         o
     tem´ticas a una variable real.
        a
                                                3x
                                             5x + 6y
                                               x+7
                                                y
                                               x+y
                                               z∗3

 14. Escriba un programa que lea una palabra de cuatro letras por teclado, y poste-
     riormente escriba dicha palabra de manera que cada letra se encuentre codificada
     sustituy´ndola por aquel car´cter que le sigue en la tabla de c´digo ASCII.
             e                   a                                  o

 15. Escriba un programa que lea una palabra de cuatro letras y a continuaci´n la
                                                                            o
     escriba en may´sculas. H´galo primero usando la funci´n toupper y despu´s haga
                   u         a                            o                 e
     una nueva versi´n sin usar la funci´n toupper. La funci´n toupper se encuentra
                    o                   o                   o
     en el fichero de biblioteca cctype.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Concepto de introducción
Concepto de introducciónConcepto de introducción
Concepto de introducción
 
Material iii parcial
Material iii parcialMaterial iii parcial
Material iii parcial
 
40278 leng deprog1
40278 leng deprog140278 leng deprog1
40278 leng deprog1
 
Punteros presentacion
Punteros presentacionPunteros presentacion
Punteros presentacion
 
2.poo
2.poo2.poo
2.poo
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje C para Administradores de Red - Script I
Lenguaje C para Administradores de Red - Script ILenguaje C para Administradores de Red - Script I
Lenguaje C para Administradores de Red - Script I
 
Proyecto De Analisis
Proyecto De AnalisisProyecto De Analisis
Proyecto De Analisis
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Practicadeword 111017205627-phpapp01-111019095249-phpapp01
Practicadeword 111017205627-phpapp01-111019095249-phpapp01Practicadeword 111017205627-phpapp01-111019095249-phpapp01
Practicadeword 111017205627-phpapp01-111019095249-phpapp01
 
Entrega1
Entrega1Entrega1
Entrega1
 
Compu1 (1)
Compu1 (1)Compu1 (1)
Compu1 (1)
 
Practica de word!!
Practica de word!!Practica de word!!
Practica de word!!
 
Unidad1
Unidad1Unidad1
Unidad1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++
 

Destacado

Montès-fr
Montès-frMontès-fr
Montès-frlibnam
 
Gouverner à l'ère du big data : promesses et périls de l'action publique algo...
Gouverner à l'ère du big data : promesses et périls de l'action publique algo...Gouverner à l'ère du big data : promesses et périls de l'action publique algo...
Gouverner à l'ère du big data : promesses et périls de l'action publique algo...polenumerique33
 
Presentación en Valledupar
Presentación en ValleduparPresentación en Valledupar
Presentación en ValleduparFundación CiGob
 
Les qualités du son
Les qualités du sonLes qualités du son
Les qualités du sonludiazg
 
MINI 755 - Embarquez avec Armand sur la Mini Transat 205
MINI 755 - Embarquez avec Armand sur la Mini Transat 205MINI 755 - Embarquez avec Armand sur la Mini Transat 205
MINI 755 - Embarquez avec Armand sur la Mini Transat 205adejacqu
 
Fr outil 7 compte rendu photos bauge, chaux et paille
Fr outil 7 compte rendu photos bauge, chaux et pailleFr outil 7 compte rendu photos bauge, chaux et paille
Fr outil 7 compte rendu photos bauge, chaux et paillelibnam
 
Le Beloeil, un ruisseau qui prend vie
Le Beloeil, un ruisseau qui prend vieLe Beloeil, un ruisseau qui prend vie
Le Beloeil, un ruisseau qui prend vieGroupe ProConseil
 
Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013
Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013
Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013Fabrice Epelboin
 
Manuel Aristarán en CiGob
Manuel Aristarán en CiGobManuel Aristarán en CiGob
Manuel Aristarán en CiGobFundación CiGob
 
Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...
Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...
Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...Easy Video Creations
 
Bishop cornish school_FR
Bishop cornish school_FRBishop cornish school_FR
Bishop cornish school_FRlibnam
 
IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015IBM France Lab
 
Fr outil 7 compte rendu photos chanvre dans tous ses états
Fr outil 7 compte rendu photos chanvre dans tous ses étatsFr outil 7 compte rendu photos chanvre dans tous ses états
Fr outil 7 compte rendu photos chanvre dans tous ses étatslibnam
 
Présentation d'EReputationDefender
Présentation d'EReputationDefenderPrésentation d'EReputationDefender
Présentation d'EReputationDefenderEReputationDefender
 
IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015IBM France Lab
 

Destacado (20)

Montès-fr
Montès-frMontès-fr
Montès-fr
 
F te du-papier_au_portugal1
F te du-papier_au_portugal1F te du-papier_au_portugal1
F te du-papier_au_portugal1
 
Jmj cracovie-2016-trzebinia
Jmj cracovie-2016-trzebiniaJmj cracovie-2016-trzebinia
Jmj cracovie-2016-trzebinia
 
Gouverner à l'ère du big data : promesses et périls de l'action publique algo...
Gouverner à l'ère du big data : promesses et périls de l'action publique algo...Gouverner à l'ère du big data : promesses et périls de l'action publique algo...
Gouverner à l'ère du big data : promesses et périls de l'action publique algo...
 
Presentación en Valledupar
Presentación en ValleduparPresentación en Valledupar
Presentación en Valledupar
 
Les qualités du son
Les qualités du sonLes qualités du son
Les qualités du son
 
MINI 755 - Embarquez avec Armand sur la Mini Transat 205
MINI 755 - Embarquez avec Armand sur la Mini Transat 205MINI 755 - Embarquez avec Armand sur la Mini Transat 205
MINI 755 - Embarquez avec Armand sur la Mini Transat 205
 
Fr outil 7 compte rendu photos bauge, chaux et paille
Fr outil 7 compte rendu photos bauge, chaux et pailleFr outil 7 compte rendu photos bauge, chaux et paille
Fr outil 7 compte rendu photos bauge, chaux et paille
 
Le Beloeil, un ruisseau qui prend vie
Le Beloeil, un ruisseau qui prend vieLe Beloeil, un ruisseau qui prend vie
Le Beloeil, un ruisseau qui prend vie
 
Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013
Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013
Petit déjeuner Astrolab - Fabrice Epelboin - 14 fev. 2013
 
Manuel Aristarán en CiGob
Manuel Aristarán en CiGobManuel Aristarán en CiGob
Manuel Aristarán en CiGob
 
Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...
Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...
Tutoriel Web Speaker Pro : Comment générer un commentaire audio en synthèse v...
 
Le coaching H2020
Le coaching H2020Le coaching H2020
Le coaching H2020
 
Bishop cornish school_FR
Bishop cornish school_FRBishop cornish school_FR
Bishop cornish school_FR
 
IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 -Ecole 42 - 9 décembre 2015
 
áLgebra [u de chile]
áLgebra  [u de chile]áLgebra  [u de chile]
áLgebra [u de chile]
 
Zoom
ZoomZoom
Zoom
 
Fr outil 7 compte rendu photos chanvre dans tous ses états
Fr outil 7 compte rendu photos chanvre dans tous ses étatsFr outil 7 compte rendu photos chanvre dans tous ses états
Fr outil 7 compte rendu photos chanvre dans tous ses états
 
Présentation d'EReputationDefender
Présentation d'EReputationDefenderPrésentation d'EReputationDefender
Présentation d'EReputationDefender
 
IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015
IBM Paris Bluemix Meetup #12 - Ecole 42 - 9 décembre 2015
 

Similar a Tema2 C++ 2004 2005

Identificadores, variables y constantes
Identificadores, variables y constantesIdentificadores, variables y constantes
Identificadores, variables y constantesCarlos Pes
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++Nana Garces
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxMundoGamerHD
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacionkarenyulithza
 
Guia examen diagnostico_pseint
Guia examen diagnostico_pseintGuia examen diagnostico_pseint
Guia examen diagnostico_pseintLeidyEspinoza6
 
Republica bolivariana de venezuela
Republica bolivariana de venezuelaRepublica bolivariana de venezuela
Republica bolivariana de venezuelaroyimar
 
02. lenguaje c autor enrique vicente bonet esteban
02. lenguaje c autor enrique vicente bonet esteban02. lenguaje c autor enrique vicente bonet esteban
02. lenguaje c autor enrique vicente bonet estebanLuisBeltrnAlvinoAlva
 

Similar a Tema2 C++ 2004 2005 (20)

Identificadores, variables y constantes
Identificadores, variables y constantesIdentificadores, variables y constantes
Identificadores, variables y constantes
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacion
 
Guia examen diagnostico_pseint
Guia examen diagnostico_pseintGuia examen diagnostico_pseint
Guia examen diagnostico_pseint
 
Clase 1 Programación II
Clase 1 Programación IIClase 1 Programación II
Clase 1 Programación II
 
Republica bolivariana de venezuela
Republica bolivariana de venezuelaRepublica bolivariana de venezuela
Republica bolivariana de venezuela
 
Dev c 1 2011
Dev c  1 2011Dev c  1 2011
Dev c 1 2011
 
Programacion kmi
Programacion kmiProgramacion kmi
Programacion kmi
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
PROGRAMACIÓN EN C
PROGRAMACIÓN EN CPROGRAMACIÓN EN C
PROGRAMACIÓN EN C
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 
Actividades 1 7
Actividades 1 7Actividades 1 7
Actividades 1 7
 
Actividades 1 7
Actividades 1 7Actividades 1 7
Actividades 1 7
 
Actividades 1 7
Actividades 1 7Actividades 1 7
Actividades 1 7
 
Actividades 1-7
Actividades 1-7Actividades 1-7
Actividades 1-7
 
02. lenguaje c autor enrique vicente bonet esteban
02. lenguaje c autor enrique vicente bonet esteban02. lenguaje c autor enrique vicente bonet esteban
02. lenguaje c autor enrique vicente bonet esteban
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 

Más de martha leon

Trabajo Practico Uap Arreglos
Trabajo Practico Uap ArreglosTrabajo Practico Uap Arreglos
Trabajo Practico Uap Arreglosmartha leon
 
Silabo Prog De Computadoras 2
Silabo Prog  De Computadoras 2Silabo Prog  De Computadoras 2
Silabo Prog De Computadoras 2martha leon
 
Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1martha leon
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimomartha leon
 
B2 T5 Vectores Ii
B2 T5 Vectores IiB2 T5 Vectores Ii
B2 T5 Vectores Iimartha leon
 
Sem5 Interaccion Con La Computadoras Software
Sem5 Interaccion Con La Computadoras   SoftwareSem5 Interaccion Con La Computadoras   Software
Sem5 Interaccion Con La Computadoras Softwaremartha leon
 
Sem2 En El Interior De Las Computadoras Hardware I
Sem2 En El Interior De Las Computadoras   Hardware ISem2 En El Interior De Las Computadoras   Hardware I
Sem2 En El Interior De Las Computadoras Hardware Imartha leon
 
Jhtp5 20 Datastructures
Jhtp5 20 DatastructuresJhtp5 20 Datastructures
Jhtp5 20 Datastructuresmartha leon
 
Ejemplos Interfaces Usuario 3
Ejemplos Interfaces Usuario 3Ejemplos Interfaces Usuario 3
Ejemplos Interfaces Usuario 3martha leon
 
Sem1 El Mundo De Las Computadoras
Sem1 El Mundo De Las ComputadorasSem1 El Mundo De Las Computadoras
Sem1 El Mundo De Las Computadorasmartha leon
 
Sem3 En El Interior De Las Computadoras Hardware Ii
Sem3 En El Interior De Las Computadoras   Hardware IiSem3 En El Interior De Las Computadoras   Hardware Ii
Sem3 En El Interior De Las Computadoras Hardware Iimartha leon
 
Arrays In General
Arrays In GeneralArrays In General
Arrays In Generalmartha leon
 

Más de martha leon (15)

Trabajo Practico Uap Arreglos
Trabajo Practico Uap ArreglosTrabajo Practico Uap Arreglos
Trabajo Practico Uap Arreglos
 
SeúDocodigo
SeúDocodigoSeúDocodigo
SeúDocodigo
 
Silabo Prog De Computadoras 2
Silabo Prog  De Computadoras 2Silabo Prog  De Computadoras 2
Silabo Prog De Computadoras 2
 
Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimo
 
B2 T5 Vectores Ii
B2 T5 Vectores IiB2 T5 Vectores Ii
B2 T5 Vectores Ii
 
Sem5 Interaccion Con La Computadoras Software
Sem5 Interaccion Con La Computadoras   SoftwareSem5 Interaccion Con La Computadoras   Software
Sem5 Interaccion Con La Computadoras Software
 
Sem2 En El Interior De Las Computadoras Hardware I
Sem2 En El Interior De Las Computadoras   Hardware ISem2 En El Interior De Las Computadoras   Hardware I
Sem2 En El Interior De Las Computadoras Hardware I
 
Jhtp5 20 Datastructures
Jhtp5 20 DatastructuresJhtp5 20 Datastructures
Jhtp5 20 Datastructures
 
Ejemplos Interfaces Usuario 3
Ejemplos Interfaces Usuario 3Ejemplos Interfaces Usuario 3
Ejemplos Interfaces Usuario 3
 
Sem1 El Mundo De Las Computadoras
Sem1 El Mundo De Las ComputadorasSem1 El Mundo De Las Computadoras
Sem1 El Mundo De Las Computadoras
 
Sem3 En El Interior De Las Computadoras Hardware Ii
Sem3 En El Interior De Las Computadoras   Hardware IiSem3 En El Interior De Las Computadoras   Hardware Ii
Sem3 En El Interior De Las Computadoras Hardware Ii
 
Arrays In General
Arrays In GeneralArrays In General
Arrays In General
 
3433 Ch09 Ppt
3433 Ch09 Ppt3433 Ch09 Ppt
3433 Ch09 Ppt
 
3433 Ch10 Ppt
3433 Ch10 Ppt3433 Ch10 Ppt
3433 Ch10 Ppt
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Tema2 C++ 2004 2005

  • 1. Tema 2 Conceptos b´sicos de C++ a En este cap´ ıtulo vamos a introducir el lenguaje de programaci´n C++ o que se va a utilizar en la asignatura, describiendo algunos conceptos b´sicos y a plasmando la estructura general de un programa escrito en este lenguaje. A lo largo de los sucesivos temas se seguir´ la notaci´n BNF para ir describiendo las a o diferentes reglas sint´cticas del lenguaje. De esta forma se ir´ introduciendo a a de una manera formal la sintaxis de C++. 1
  • 2.
  • 3. ´ Indice General 2 Conceptos b´sicos de C++ a 1 2.1 Elementos del lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Constantes, variables y tipos de datos . . . . . . . . . . . . . . . . . . . . 6 2.2.1 El tipo int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.2 El tipo unsigned int . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.3 El tipo float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.4 El tipo bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.5 El tipo char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.6 Chequeo de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 Estructura de un programa en C++ . . . . . . . . . . . . . . . . . . . . . 10 2.3.1 Esquema general de un programa . . . . . . . . . . . . . . . . . . 10 2.3.2 Listas de inclusiones . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3.3 Espacios de nombres . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3.4 Declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.5 Cuerpo del programa . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.6 Asignaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 13 2.3.7 Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Entrada/salida en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4.1 Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4.2 Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1 Elementos del lenguaje Comenzaremos viendo los elementos m´s simples que integran un programa escrito en a C++, es decir palabras, s´ ımbolos y las reglas para su formaci´n. o 1. Identificadores 3
  • 4. 4 ´ TEMA 2. CONCEPTOS BASICOS DE C++ Son nombres elegidos por el programador para representar entidades (variables, tipos, constantes, procedimientos, m´dulos) en el programa. El usuario puede o elegir cualquier identificador excepto un peque˜o grupo que se reserva para usos n espec´ ıficos. C++ distingue entre letras may´ sculas y min´ sculas, por lo que a efectos u u del programa ser´n identificadores distintos hola, Hola o hoLa. a No se impone ning´n l´ u ımite en cuanto a la longitud de los identificadores. <Ident> ::= <letra> {<letra>|<digito>} 2. Palabras reservadas Tienen un significado predeterminado para el compilador y s´lo pueden ser usadas o con dicho sentido. and and eq asm auto bitand bitor bool break case catch chat class compl const const cast continue default delete do double dynamic cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new not not eq operator or or eq private protected public register reinterpret cast return short signed sizeof static static cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar t while xor xor eq 3. Literales constantes Se distingue entre n´meros reales, n´meros enteros y cadenas de caracteres. u u <num_entero> ::= <digito> {<digito>} | <digito_octal> {<digito_octal>} (u|U|l|L)| <digito> {<digito_hex>} H <num_real> ::= <digito> {<digito>}.{<digito>} [<factor_esc>] <factor_esc> ::= E (+|-|e) {<digito>}
  • 5. 2.1. ELEMENTOS DEL LENGUAJE 5 Si el n´mero lleva u como sufijo, es un n´mero sin signo. Si lleva L como sufijo es u u de tama˜o long. Todo n´mero al que se le antepone el car´cter 0 est´ expresado n u a a en base 8. Si se le antepone 0x, est´ expresado en base 16. Cuando se usa E en a un literal constante real se dice que el n´mero est´ expresado en punto flotante u a (notaci´n cient´ o ıfica). Una cadena de caracteres (string) en C++ es una secuencia de caracteres encerrados entre comillas dobles (” ”). Las constantes que representan un solo car´cter se a encierran entre comillas simples(’ ’). 4. Delimitadores Son s´ ımbolos (con o sin significado propio) que indican comienzo o fin de una entidad. Son elementos indivisibles: por ejemplo al escribir == se debe hacer sin ning´n car´cter intercalado. u a { } [ ] # ## ( ) <: >: <% >% %:%: %: ; : ? :: . .* + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= <<= >>= << >> == != <= >= && || ++ -- , -> ->* ... 5. Comentarios Un comentario es una secuencia de caracteres que es ignorada por el compilador. Se usan para documentar el programa, de manera que aunque no contribuyan a resolver el problema, s´ ayudan a mejorar la comprensi´n del programa. Hay dos ı o formas de incluir un comentario en C++. El texto que hay entre // y el fin de l´ ınea se considera un comentario. Tambi´n es comentario el texto que se encuentra e entre los s´ ımbolos /* y */. Los comentarios de este estilo no se pueden anidar. Debe tenerse cuidado para no encerrar trozos de c´digo util dentro de un comenta- o ´ rio, ya que un comentario puede extenderse a lo largo de m´ltiples l´ u ıneas. Encerrar trozos de c´digo como comentarios es util cuando se est´ desarrollando un progra- o ´ a ma para comprobar si ciertas partes funcionan o no, pero es un error muy com´n u encerrar por descuido otras zonas de c´digo que son necesarias o bien olvidarse de o sacar sentencias de dentro de un comentario. 6. Separadores
  • 6. 6 ´ TEMA 2. CONCEPTOS BASICOS DE C++ Son espacios en blanco, tabuladores, retornos de carro, fin de fichero y fin de l´ ınea. Habr´ ocasiones en que se pongan para dar legibilidad al programa, y otras por ne- a cesidad. Los comentarios son considerados tambi´n separadores por el compilador. e 2.2 Constantes, variables y tipos de datos En un programa intervienen objetos sobre los que act´an las instrucciones que lo com- u ponen. Algunos de estos objetos tomar´n valores a lo largo del programa. Dependiendo a de si pueden cambiar de valor o no, podemos distinguir dos tipos de objetos: • Constante: Objeto, referenciado mediante un identificador, que tomar´ un valor al a principio (zona de declaraciones) y no se podr´ modificar a lo largo del programa. a • Variable: Objeto, referenciado por un identificador, que puede tomar distintos valores a lo largo del programa. Ser´ misi´n del programador asignar el identificador que desee a cada constante y a o variable. El identificador o nombre de cada objeto sirve para identificar sin ning´n tipo u de ambig¨edad a cada objeto, diferenci´ndolo de los dem´s objetos que intervienen en el u a a programa. En C++ hay que indicar el nombre de las constantes y variables que vamos a usar, para que el compilador pueda asociar internamente a dichos nombres las posiciones de memoria correspondientes. La declaraci´n tiene que encontrarse en el c´digo antes de o o cualquier instrucci´n que las use. o Al realizar las declaraciones de las variables, adem´s de indicar su identificador o a nombre, hay que indicar expl´ ıcitamente el tipo de los datos que pueden contener. Un tipo determina la clase de valores que puede asumir una variable, constante o expresi´n. Cada valor pertenece a un tipo. Sobre los tipos de datos hay que destacar: o • Importancia de poseer tipo. Cada variable, constante y expresi´n tienen aso- o ciado un unico tipo. La informaci´n de tipo determina la representaci´n de los ´ o o valores, y la cantidad de espacio de memoria que debe serle asignado. Esa infor- maci´n tambi´n determina la forma en que deben ser interpretados los operadores o e aritm´ticos, y permite al compilador detectar errores sem´nticos en aquellos pro- e a gramas que contienen operaciones inapropiadas. El tipo de una variable no s´lo o determina el conjunto de valores que puede almacenar sino tambi´n el conjunto de e operaciones permitidas sobre dicha variable. Esto ultimo es el principio fundamen- ´ tal de la programaci´n usando Tipos Abstractos de Datos (TADs). o
  • 7. 2.2. CONSTANTES, VARIABLES Y TIPOS DE DATOS 7 • Cardinalidad. El n´mero de valores que tiene un tipo de datos. u • Operadores b´sicos. A cada tipo se le asocia un conjunto de operadores b´sicos, a a destinados a ser de utilidad en el dise˜o de programas y que, adem´s, tienen por n a lo menos una implementaci´n razonablemente eficiente en un computador. Por su- o puesto, la selecci´n de operadores b´sicos es, en cierta medida, arbitraria, y podr´ o a ıa haberse aumentado o disminuido. El principio que suele seguirse es posibilitar al programador construir cualquier operaci´n adicional en funci´n de las b´sicas, y o o a permitir hacerlo de una forma eficiente. Las operaciones m´s importantes y m´s a a generales definidas para los datos de cualquier tipo, son la asignaci´n (representada o por =) y la verificaci´n de igualdad (==). o • Compatibilidad de tipos. Cada operador act´a sobre operandos de un mismo u tipo, y da como resultado un valor siempre de un mismo tipo determinado. Como ya se ha dicho la informaci´n de tipo ayuda a los compiladores para detectar si se o est´n realizando operaciones inapropiadas con tipos de datos distintos. Cuando el a mismo s´ ımbolo es aplicado para varios tipos distintos (por ejemplo + para la suma de enteros y la de reales –se le llama operador sobrecargado–), dicho s´ ımbolo puede considerarse ambig¨o, denotando varios operadores concretos diferentes. u En un lenguaje de programaci´n existen normalmente una serie de tipos de datos o predefinidos (tipos b´sicos) que el programador puede utilizar directamente para decla- a rar variables. Por otro lado se pueden definir nuevos tipos propios para satisfacer las necesidades particulares del programador. Los principales tipos de datos predefinidos en C++ son: • El tipo int. N´meros enteros. u • El tipo bool. Valores l´gicos Verdadero y Falso. o • El tipo char. Caracteres del c´digo ASCII. o • El tipo float. N´meros reales. u Todos ellos tienen dos propiedades en com´n: cada uno est´ formado por elemen- u a tos indivisibles o at´micos que adem´s est´n ordenados. Los tipos de datos con estas o a a caracter´ ısticas se denominan tipos de datos escalares. Cuando decimos que un valor es at´mico, nos referimos a que no contiene partes componentes a las que pueda acceder- o se independientemente. Por ejemplo, un car´cter es indivisible, mientras que la cadena a
  • 8. 8 ´ TEMA 2. CONCEPTOS BASICOS DE C++ de caracteres ”Hola”no. Cuando hablamos de que un conjunto de valores est´ ordena- a do, queremos decir que los operadores relacionales est´ndares (<, >, ==, <=, >=, !=) a pueden aplicarse a aqu´llos. e Todos estos tipos, excepto float, poseen una propiedad adicional. Cada valor tiene un predecesor y un sucesor unicos (excepto el primer y ultimo valor, respectivamente). ´ ´ Los tipos de datos escalares que tienen esta propiedad se denominan tipos de datos ordinales. De los tipos de datos predefinidos s´lo el tipo float no es ordinal, pues 0.0501 o es el predecesor de 0.0502 con cuatro d´ ıgitos de precisi´n, pero 0.05019 es el predecesor o de 0.05020 con un d´ ıgito m´s de precisi´n. a o 2.2.1 El tipo int Los valores que pertenecen a este tipo son los n´meros enteros. Los operadores aplicables u a los enteros son: • + suma • - resta • * producto • / cociente de la division entera • % resto de la divisi´n entera. o Cada computador restringir´ el conjunto de valores de este tipo a un conjunto finito a de enteros, comprendido en el intervalo −2N −1 ... 2N −1 − 1, donde N es el n´mero de u bits que el computador usa para representar internamente un entero. En nuestro caso, para el tipo int, N = 32, por lo que este rango es: - 2147483648 .. 2147483647. Se pueden definir variables para valores enteros con un rango menor indicando que son de tipo short int. En nuestro compilador, para los short int N = 16 y el rango es: -32768 .. 32767. Asimismo, long int est´ pensado para un rango a mayor de valores, pero en el caso de nuestro compilador coincide con los int. 2.2.2 El tipo unsigned int No es tipo independiente de int, sino una variaci´n de aqu´l. Sus valores son los n´meros o e u enteros no negativos, esto es, los n´meros naturales (incluido el 0). Los operadores u aplicables son los mismos que para int. La ventaja de usar unsigned int en lugar de int es que hacemos expl´ ıcito que una determinada variable s´lo puede ser positiva. o
  • 9. 2.2. CONSTANTES, VARIABLES Y TIPOS DE DATOS 9 Adem´s de esto, si un computador usa N bits para almacenar un entero, el rango de los a valores unsigned int ser´ 0...2N - 1, con lo que podemos almacenar un n´mero entero a u positivo m´s grande que con el tipo int. En nuestro caso los rangos para unsigned int a y short unsigned int son, respectivamente: 0 .. 4294967295 y 0 .. 65535. 2.2.3 El tipo float Los valores del tipo float son los n´meros reales. Los operadores disponibles son los u b´sicos anteriormente mencionados. La divisi´n se denota por /, siendo la divisi´n real, a o o no la entera. Las constantes de tipo float se caracterizan por tener un punto decimal y, posiblemente, un factor de escala. Por ejemplo: 1.5 1.50 1.5E2 2.34E-2 0.0 0. 5. Si se quieren representar n´meros con mayor precisi´n, se puede usar el tipo double y u o long double. En C++ el mayor real representable es 3.40282347e+38F (6 d´ ıgitos de precisi´n) y el o menor n´mero positivo distinto de 0 es 1.17549435e-38F. u 2.2.4 El tipo bool Un valor bool es uno de los dos valores de verdad l´gicos denotados por los identificadores o est´ndares del lenguaje: true y false (Verdadero y Falso). Las expresiones de tipo a bool son muy importantes en programaci´n. Estos valores no pueden leerse o escribirse o directamente desde el teclado o al monitor, al contrario de lo que ocurre con los tipos num´ricos. e Cuando se eval´a una expresi´n en C++, cualquier valor distinto de 0 es considerado u o true y 0 es considerado false. 2.2.5 El tipo char Cada computador se comunica con su entorno mediante alg´n dispositivo de entrada y u salida. Lee, escribe, o imprime elementos pertenecientes a un conjunto fijo de caracteres. Este conjunto constituye el rango de valores del tipo char. El conjunto fijo de caracteres m´s estandarizado es el denominado ASCII (American Standard Code for Information a Interchange). Este conjunto est´ ordenado y cada car´cter tiene una posici´n fija o a a o n´mero ordinal. u Las constantes de tipo char se denotan por el car´cter encerrado entre comillas sim- a ples(’ ’). Un valor car´cter puede ser asignado a una variable de tipo char, pero no puede a
  • 10. 10 ´ TEMA 2. CONCEPTOS BASICOS DE C++ usarse en operaciones aritm´ticas. Sin embargo, las operaciones aritm´ticas pueden apli- e e carse a sus n´meros obtenidos por la funci´n de cambio de tipo int(ch). De forma u o inversa el car´cter con el n´mero n asociado, se obtiene con la funci´n est´ndar char(n). a u o a Estas dos funciones se complementan se relacionan con las ecuaciones: int(char(ch)) = ch y char(int(n)) = n 2.2.6 Chequeo de tipos En C++ cada variable y constante tiene un tipo concreto, y cuando se efect´a una u operaci´n, sus operandos deben tener el tipo apropiado. o En principio, y hasta que no presentemos las reglas para el uso de tipos, supondremos que las operaciones s´lo est´n definidas entre operandos del mismo tipo. Dos tipos son o a iguales si tienen el mismo nombre, y no si su composici´n es la misma. Esto resultar´ o a especialmente importante cuando se trabaje con tipos de datos estructurados. Si el programador necesita usar expresiones en las que los operandos sean de distintos tipos, debe efectuar conversi´n de tipos expl´ o ıcita (casting). Para ello se especifica el tipo al que se convierte y, entre par´ntesis, la expresi´n que se convierte. e o int(Valor) //Convierte el parametro Valor al tipo int. float(Valor) //Convierte el parametro Valor al tipo float. etc... 2.3 Estructura de un programa en C++ Comenzaremos viendo la estructura global de un programa escrito en C++ para a con- tinuaci´n ir desglosando y analizando cada uno de sus componentes. o 2.3.1 Esquema general de un programa //lista de inclusiones //declaraciones globales int main(int argc, char *argv[]) { //declaraciones locales //sentencias de programa }
  • 11. 2.3. ESTRUCTURA DE UN PROGRAMA EN C++ 11 2.3.2 Listas de inclusiones Dentro de un programa podemos necesitar algunos procesos que por ser muy frecuentes est´n disponibles en el lenguaje y por tanto no nos debemos preocupar de programarlos. a Para ello hay que indicar expl´ ıcitamente que estamos incluyendo en nuestro programa los ficheros que contienen esos recursos. Una l´ ınea de inclusi´n consta de la expresi´n o o reservada #include y el nombre del fichero a incluir entre los caracteres ’<’ y ’>’: #include <cstdlib> #include <iostream> 2.3.3 Espacios de nombres Es posible que en varios ficheros diferentes se encuentre un recurso con el mismo nombre. Para evitar la confusi´n hay una herramienta, los espacios de nombres, que permite o agrupar bajo un mismo contexto distintos recursos. Cuando se vaya a hacer uso de un recurso hay que especificar a qu´ espacio de nombre pertenece. As´ podemos usar en e ı un mismo programa dos recursos que, aunque tengan el mismo nombre, pertenezcan a espacios de nombres distintos. Existen tres formas de refenciar un recurso definido en un espacio de nombres: • Nombrado expl´ ıcito: Se escribe el identificador del espacio de nombre, seguido del los caracteres :: y el identificador del recurso. Por ejemplo std::cout, nos permite usar el recurso cout definido en el espacio de nombres std. M´s adelante en este a mismo tema se explicar´ qu´ es cout. a e • Importaci´n expl´ o ıcita. Se declara en una l´ ınea de importaci´n cu´les van a ser los o a recursos del espacio de nombres que se van a usar, mediante la sentencia using. Por ejemplo, si importamos using std::cout;, podemos usar en nuestro programa el recurso cout simplemente escribiendo su nombre, pero cualquier otro recurso del mismo espacio de nombres hay que referenciarlo junto con el identificador del espacio de nombres, por ejemplo std::cin. • Importaci´n general. Se importa con una sentencia using un espacio de nombres o completo, por lo que se pueden usar todos sus recursos sin tener que hacer referencia al identificador del espacio de nombres. Por ejemplo si escribimos using namespace std;, basta con escribir cout y cin para acceder a esos recursos. Nosotros no vamos a definir ning´n espacio de nombres propio durante este curso y, u de los que ya est´n definidos, s´lo usaremos recursos pertenecientes al espacio de nombres a o
  • 12. 12 ´ TEMA 2. CONCEPTOS BASICOS DE C++ std, que es el que contiene todos los recursos estandar del lenguaje. 2.3.4 Declaraciones En un programa escrito en C++ habr´ que declarar todos los objetos que se empleen. a Aunque C++ da una gran libertad sobre el lugar en que se pueden hacer nuevas de- claraciones, nosotros nos vamos a restringir a hacerlo en ciertos lugares, bien antes del inicio de la funci´n main para los objetos globales, bien antes de las instrucciones de una o funci´n en concreto para los objetos locales a una funci´n. o o 2.3.5 Cuerpo del programa Es la zona del programa formada por las sentencias a ejecutar, especific´ndose los pasos a a seguir para la resoluci´n del problema. o En C++ hay diversos tipos de sentencias: Asignaci´n o switch for exit Llamada a funci´n while o return break if do-while continue Entre estas sentencias no hay ninguna dedicada a entrada/salida (E/S). Lo que ocurre es que la E/S en C++ se efect´a mediante llamadas a procedimientos que hay que u importar mediante listas de inclusiones. Los procedimientos que se importan se encuentran en bibliotecas. Aunque existe un conjunto est´ndar de bibliotecas, cada compilador de C++ puede a˜adir sus propias a n librer´ predefinidas e informar de las caracter´ ıas ısticas de los procedimientos que contiene. ´ Este es un aspecto a revisar siempre que, a´n usando el mismo lenguaje, cambiemos de u compilador. <sec_sent> ::= <sentencia>; {<sentencia>} <sentencia> ::= <sent_asignacion> | <llamada_funcion> | <sent_if> | <sent_switch> | <sent_while> | <sent_do_while> | <sent_for> | exit | break | continue |
  • 13. 2.3. ESTRUCTURA DE UN PROGRAMA EN C++ 13 return[<expresion>] | <sent_vacia> 2.3.6 Asignaci´n o Es el operador que permite dar un valor a una variable. <sent_asignacion> ::= <variable> = <expresion> Ejemplo: i = 10; El operador de asignaci´n es ”=”, y se lee toma el valor. La variable (izquierda) o toma el valor de la expresi´n (derecha). Por defecto, las variables, despu´s de haber sido o e declaradas, no tienen ning´n valor (est´n indefinidas) y el programador debe encargarse u a de inicializarlas, es decir, asignarles un valor conocido, en el caso de que se vaya a utilizar su contenido. En el lado izquierdo de la sentencia de asignaci´n s´lo puede haber una variable. Se o o eval´a la expresi´n de la derecha y el resultado se guarda en la variable. u o Las variables mantienen el valor que se les asigna hasta que cambian mediante otra sentencia de asignaci´n (u otro mecanismo), momento en que pierden el antiguo valor. o 2.3.7 Expresiones En los lenguajes de programaci´n el concepto de expresi´n es similar al usado en matem´- o o a ticas. Una expresi´n ser´ un conjunto de operadores y operandos que tras su evaluaci´n o a o devolver´ un unico valor. Para saber el resultado de una expresi´n debemos conocer la a ´ o precedencia de los operadores, es decir, el orden en el que se eval´an dentro de la misma. u De mayor a menor precedencia, los operadores disponibles son: ! * / % && + - || == != < > <= >= En caso de igualdad de precedencia se eval´an de izquierda a derecha. Estas reglas u pueden alterarse mediante el uso de par´ntesis. e
  • 14. 14 ´ TEMA 2. CONCEPTOS BASICOS DE C++ Ejemplos: A = 3 * B - 7 ↔ A = (3*B)-7 A = 3 - B - C ↔ A = (3-B)-C A = 3 - B * 7 ↔ A = 3-(B*7) 2.4 Entrada/salida en C++ Trataremos por el momento la entrada y salida de datos en forma de caracteres. En principio supondremos que nuestros programas de C++ son procesos (programas en ejecuci´n) que toman informaci´n de un flujo de entrada y entregan informaci´n a un o o o flujo de salida, utilizando para ello dispositivos externos capaces de manejar informaci´n o en forma de caracteres organizados como una sucesi´n de l´ o ıneas. Se conocen como flujos de entrada/salida est´ndares aquellos que se realizan con la a pantalla y con el teclado (E/S interactiva). Otra alternativa de comunicaci´n con un programa consiste en preparar un fichero de o datos, por ejemplo en el disco, de donde el programa los pueda leer cuando los necesite o grabar cuando tenga resultados ( E/S diferida). En C++ las instrucciones para efectuar E/S se encuentran en m´dulos de librer´ o ıa, es decir, m´dulos preprogramados disponibles para el programador. A continuaci´n o o se describir´n algunas de las instrucciones de E/S interactiva contenidas en la librer´ a ıa iostream. 2.4.1 Salida Para enviar datos a la salida por defecto (generalmente la pantalla del monitor del or- denador), vamos a usar el flujo de salida cout. Este flujo se encuentra en el fichero de biblioteca iostream. Aunque se pueden efectuar muchas operaciones diferentes sobre este flujo, por ahora s´lo vamos a ver la operaci´n <<. Esta operaci´n manda un valor o o o al flujo cout. Este valor puede ser de cualquier tipo. Ejemplo: cout << quot;El valor de la variable cuyo nombre es i es quot;; cout << i; cout << endl; El primer ejemplo escribe una cadena de caracteres, el segundo el contenido de la variable i y en el tercero se escribe el valor del car´cter endl, lo que hace que se escriba una nueva a l´ ınea. Tambi´n se pueden concatenar los valores que se vayan a mandar a la salida. La e siguiente instrucci´n equivale a las tres anteriores: o
  • 15. 2.4. ENTRADA/SALIDA EN C++ 15 cout << quot;El valor de la variable cuyo nombre es i es quot; << i << endl; 2.4.2 Entrada Este apartado se refiere a todas aquellas instrucciones que hacen posible introducir datos para que el programa los maneje. A continuaci´n veremos instrucciones que tambi´n se o e encuentran en el fichero de biblioteca iostream. En este caso, el flujo de entrada en cin y la operaci´n que vamos a ver de momento para la lectura de datos es >>. Como en el o caso de la salida, el par´metro puede ser de cualquier tipo. Ejemplo: a int i, j; char c; cin >> i; cin >> j; cin >> c; Finalmente vamos a se˜alar algunas notas importantes que hay que tener en cuenta n al hacer entrada/salida interactiva: 1. Las entradas y salidas de nuestro programa tienen eco normalmente en el monitor y se mezclan. El programador debe prever este efecto para que el resultado sea legible. 2. El computador normalmente no se percata de lo que se teclea hasta pulsar la tecla ENTER, quien provoca adem´s un salto de l´ a ınea en la pantalla. Por tanto es posible una edici´n limitada de los valores que se est´n tecleando (borrarlos, cambiarlos, o a etc...) antes de pulsar ENTER. 3. Hay otras instrucciones que permiten hacer una salida con formato para que sea m´s visible, aunque por ahora no lo vamos a ver. a Ejercicios 1. Copiar (editar), compilar y ejecutar el siguiente programa que permite introducir una medida en cent´ ımetros y muestra la medida equivalente en pulgadas (una pulgada mide 2,54 cent´ ımetros). #include <iostream> #include <cstdlib>
  • 16. 16 ´ TEMA 2. CONCEPTOS BASICOS DE C++ using namespace std; const float cent_por_pulgada = 2.54; int main() { float centimetros, pulgadas; cout << quot;Teclee una medida en centimetrosnquot;; cin >> centimetros; pulgadas = centimetros / cent_por_pulgada; // Calculo de pulgadas cout << quot;Sus quot; << centimetros << quot; centimetros equivalen a quot; << pulgadas << quot;pulgadasquot; << endl; return 0; } 2. Escribir (editar), compilar y ejecutar el programa siguiente, que recibe el radio de un c´ ırculo y que muestra en pantalla el di´metro, la longitud de la circunferencia a y el ´rea de ese c´ a ırculo. #include <iostream> #include <cstdlib> using namespace std; const float PI = 3.14; int main() { float radio, diametro, longitud, area; cout << quot;Teclee la medida del radio de la circunferencia en cmnquot;; cin >> radio; // Calculos de magnitudes diametro = 2.0 * radio; longitud = PI * diametro;
  • 17. 2.4. ENTRADA/SALIDA EN C++ 17 area = PI * radio * radio; // Salida de resultados cout << quot;DATOS DEL CIRCULO:quot; << endl; cout << quot;Radio introducido por el usuario: quot; << radio << quot; cmquot; << endl; cout << quot;Diametro de la circunferencia: quot; << diametro << quot; cmquot; << endl; cout << quot;Longitud de la circunferencia: quot; << longitud << quot; cmquot; << endl; cout << quot;Area de la circunferencia: quot; << area << quot; cm2quot; << endl; return 0; } 3. Al principio de un viaje en autom´vil, el conductor se asegura de que el dep´sito o o de combustible est´ lleno y anota la lectura del cuentakil´metros. Al terminar su e o viaje, anota la nueva lectura y la cantidad de combustible que se requiri´ para o volver a llenar el dep´sito. Copiar el siguiente programa, que calcula el consumo o de combustible (por cada 100 Km.), con una precisi´n de tres decimales, a partir o de esta informaci´n. o #include <iostream> #include <cstdlib> using namespace std; int main() { float kmInicial, kmFinal, litros, consumo; // Datos de entrada cout << quot;Teclee el kilometraje al principio del viajequot; << endl; cin >> kmInicial; cout << quot;Teclee el kilometraje al final del viajequot; << endl; cin >> kmFinal; cout << quot;Teclee los litros necesarios para llenar el depositoquot; << endl;
  • 18. 18 ´ TEMA 2. CONCEPTOS BASICOS DE C++ cin >> litros; // Calculos de resultados consumo = 100.0 * litros / (kmFinal - kmInicial); // Salida de resultados cout << quot;El automovil consume quot; << consumo << quot; litros por cada 100 km.quot; << endl; return 0; } 4. Escriba un programa que acepte un dato de tipo int de teclado y posteriormente lo escriba en pantalla. Ejec´telo introduciendo un n´mero int v´lido, y posterior- u u a mente ejec´telo introduciendo por teclado un valor que no pertenezca al tipo int. u Eval´e las diferencias entre ambas ejecuciones del mismo programa. u 5. Escriba un programa que s´lo declare variables de tipo short int. El programa o deber´ leer dos n´meros desde el teclado, posteriormente los sumar´, almacenando a u a el resultado en una variable, y finalmente escribir´ por pantalla el resultado de la a suma. Ejecute dicho programa tomando como datos de entrada 1 y 90000. ¿Por qu´ no funciona?. e 6. Escriba un programa que declare cuatro variables de tipo int y las escriba en pantalla sin haberles dado ning´n valor. ¿Cu´l es el resultado escrito? ¿Por qu´? u a e 7. Escribir un programa que reciba el precio neto de cierta mercanc´ comprada y la ıa tasa de impuesto al valor a˜adido (IVA) como un porcentaje, y que muestre en n pantalla el importe del IVA y el total a pagar en una forma correctamente anotada. 8. La distancia que recorre un objeto cuando se le deja caer desde cierta altura despu´s e de cierto tiempo se calcula mediante la siguiente f´rmula de gravitaci´n: s = 1 gt2 o o 2 con (g=9.81 m/s2 ). Realizar un programa en C++ que pidiendo al usuario del pro- grama el tiempo despu´s de haberse soltado un objeto, calc´lense tanto la distancia e u recorrida como la velocidad media durante ese tiempo. 9. Escribir un programa que lea el lado de un cubo y calcule el ´rea lateral y el volumen a del mismo.
  • 19. 2.4. ENTRADA/SALIDA EN C++ 19 10. Escribir un programa para calcular el salario bruto semanal de un empleado, pi- diendo por teclado la tarifa que se le paga por hora por su trabajo y el n´mero u de horas normales y extra trabajadas durante la semana. Las horas normales se pagan seg´n la tarifa est´ndar y cualquier tiempo extra se paga a 1,5 veces la tarifa u a est´ndar por hora. a 11. Escriba un programa que intercambie el valor de dos variables enteras. Posterior- mente ampl´ para que intercambie el valor de tres variables. Si inicialmente los ıelo valores eran {x == x0 ; y == y0 ; z == z0 }, al final del programa los valores deben ser {x == y0 ; y == z0 ; z == x0 }. Opcional: Haga una nueva versi´n el ejercicio o sin usar variables intermedias. 12. Escriba un programa que transforme un n´mero dentro de un intervalo [x0 , y0 ] al u punto equivalente dentro de otro intervalo [x1 , y1 ]. 13. Escriba un programa en el que se asigna cada una de las siguientes f´rmulas ma- o tem´ticas a una variable real. a 3x 5x + 6y x+7 y x+y z∗3 14. Escriba un programa que lea una palabra de cuatro letras por teclado, y poste- riormente escriba dicha palabra de manera que cada letra se encuentre codificada sustituy´ndola por aquel car´cter que le sigue en la tabla de c´digo ASCII. e a o 15. Escriba un programa que lea una palabra de cuatro letras y a continuaci´n la o escriba en may´sculas. H´galo primero usando la funci´n toupper y despu´s haga u a o e una nueva versi´n sin usar la funci´n toupper. La funci´n toupper se encuentra o o o en el fichero de biblioteca cctype.