Está en la página 1de 7

INTRODUCCION AL LENGUAJE C++

1. reve historia del lenguaje C y C++


El lenguaje C nació en los Laboratorios Bell de AT and T y ha sido asociado con el sistema operativo UNIX, ya que su desarrollo se realizó en este
sistema y debido a que tanto UNIX como el propio compilador C y la casi totalidad de los programas y herramientas de UNIX, fueron escritos en C.

El lenguaje C fue creado entre los años 1970 y 1972 por Brian Kernighan y Dennos Ritchie para escribir el código del sistema operativo UNIX. Fue
uno de los lenguajes de programación más aceptados por los programadores, porque hace una conjugación en lenguaje de alto nivel y lenguaje
máquina. El lenguaje C es el resultado de un proceso de desarrollo que inició con un lenguaje denominado BCPL. Este influenció a otro llamado B
(inventado por Ken Thompson). En los años 70; éste lenguaje llevó a la aparición del C.
En 1978 Kernighan y Ritchie publican su descripción en el libro "The C Programming Language", versión que es llamada hoy en día 'K&R C'. Este

3
libro se suele llamar entre los programadores “La biblia del C”, existen varias ediciones, en las universidades suele ser el libro principal de la
bibliografía
C++ nació como una extensión del lenguaje C, para conseguir aunar la eficiencia del lenguaje C con las ventajas del modelo orientado a objetos.
El primer paso hacia C++ se produjo en 1980, cuando se presentó un primer lenguaje llamado C with classes, descrito por Bjarne Stroustrup. En
1983/84 se rediseñó este lenguaje, pasando a llamarse C++ (el nombre proviene del operador incremento de C, ++, para indicar que es una
evolución). Tras pequeños refinamientos, en 1985 se puso a disposición de todo el mundo y se documentó en el libro de Bjarne Stroustrup, “The C++
Programming Language”.

2. structura de un programaen C++

#include <iostream >


using namespace std;
int main( )
{ sentencia1;
Sentencia2;
....
SentenciaN;
return 0;
}

Todo programa en C++, desde el más pequeño hasta el más complejo, tiene una función principal que es con la que se inicia la ejecución del
programa y esta es la función main(). Rutina, subrutina, método, procedimiento, macro

3. ntroducción al lenguaje:
Lenguaje de programación: Cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para que sean
procesadas o ejecutadas por una computadora.
a. Identificadores (variables): Un identificador (o variable) es un nombre con el que se hace referencia a una función o al
contenido de una localidad de la memoria donde estará guardado el valor que toma y que puede cambiar durante la ejecución.
Las reglas para formar el nombre de un identificador son:
i) Un identificador se forma con una secuencia de letras (minúsculas o mayúsculas), dígitos y el guión bajo.
ii) Debe iniciar con una letra o guión bajo y puede ser seguido de letra, dígito o guión bajo.
iii) No puede contener espacios u otros caracteres.
iv) El lenguaje distingue entre letras mayúsculas y minúsculas. Así BETA3≠BeTa3≠bEta3≠beta3.
v) No son válidos los nombres de palabras reservadas como int, float, if, else, while, return entre otras dado que tienen un
significado especial para el lenguaje.
vi) El nombre puede tener cualquier número de caracteres.
Es recomendable que una variable tenga un nombre relacionado con su uso en el programa.

b. Palabras reservadas: Son nombres predefinidos que tienen un significado especial para el lenguaje. char, int, float, double, void, for,
while, switch, if, entre otras
c. Constantes: Son cadenas o valores que no cambian durante toda la ejecución de un programa por ejemplo, constantes numéricas 5,
3.1416, 1958, constante de cadena “hola”, constante tipo char ‘a’.
d. Comentarios: Son explicaciones del funcionamiento del programa, lo que hacen ciertas instrucciones, el uso de algunas variables,
fecha de elaboración, nombre del programador, etc.
Comentario de varias líneas: inicia con /* y termina con */
Comentario de una línea: inicia con // y puede estar precedido de una sentencia o instrucción .
e. Tipos de datos: Un tipo de dato se define como un conjunto o rango de valores que puede tomar una variable, junto con ciertas operaciones válidas
sobre estos valores.
MEMORI
TIPO DE DATOS SE ESCRIBE RANGO
A
Entero int 2 bytes - 32768 a 32767
Entero largo long int 4 bytes - 2147483648 a 2147483647
Decimal simple float 4 bytes - 3.4*1038 a 3.4*1038
Decimal doble double 8 bytes - 1.79*10308 a 1.79*10308
Decimal doble
long double 12 bytes 3.4E-4932 a 1.1E+4932
largo
Carácter char 1 bytes 0 a 255
cadena string Sin limite
booleano bool 1 byte True, false

3
Una constante de cadena es una secuencia de caracteres tales como letras, números y signos de puntuación encerradas entre comillas
dobles. Para utilizar el tipo string se debe incluir #include <string>.

f. Declaración de variables: En C++ toda variable debe estar declarada antes de ser utilizada en el programa.
Sintaxis:
TipoDeDato listaDeVariables; //toda instrucción debe estar terminada con “;”
Ejemplo:
int contador; // contador es una variable de tipo entero
contador=0; // inicialización
int suma, limite, valorInicial;
C++ permite que en la declaración se asocien o asignen valores iniciales a las variables.
int contador=0;
g. La declaración CONST: C++ permite darle nombre a una constante que a diferencia de las variables estas no pueden cambiar de valor en el
programa.
const tipoDeDato nombre = constante;
Ejemplo: const float e=2.71828;

4. ntrada/Salida
Todos los programas tienen una estructura general que es recibir una entrada realizar un proceso y dar una salida.
a. Entrada desde teclado: cin >>variable >>variable >> ...; leer a,b,c cin>>a>>b>>c;
b. Salida a Pantalla: cout <<expresion<<expresion<< ...; // expresión también puede ser una cadena

Ejemplos:
cout << ”El valor de i es” << i << “\n”; // endl o “\n” para cambio de renglón

cin >> c >> b >> a; // se asocian valores a las variables c, b y a desde el teclado

5. xpresiones (operadores aritméticos y jerarquía)


Una expresión aritmética es una variable, una constante o la combinación de constantes, variables y operadores aritméticos.
Los operadores aritméticos son:
Operador Jerarquía Propósito Ejemplo de expresión: 3+5*x-y/2
+, - menor Suma, resta Otro ejemplo: (a+b)*5+ (x-y)
*, / Multiplicación, división La jerarquía de los operadores indica el orden en que se evalúan en una expresión, esto es,
% Residuo de la división entera primero se evaluaran los de más alta jerarquía.
- mayor Menos unario
Ejemplo. En la expresión a + 5*x - 3 primero se evaluará la multiplicación, después la suma y finalmente la resta.
Si en una expresión los operadores tienen la misma jerarquía se evalúan de izquierda a derecha.
Los símbolos de agrupación “( )” permiten modificar la jerarquía de los operadores, esto es, primero se evaluara la expresión que se encuentre dentro
de los paréntesis. Ejercicio: Indicar el orden de evaluación de la siguiente expresión a+b-c+5*x+y/2+x%3

6. entencia de asignación: El operador ”=” permite asociar a una variable el resultado de una expresión, el valor de una variable o una
constante y tiene la sintaxis siguiente.
variable = expresión;
Ejemplo: x = a + 5*y +3; // evalúa el lado derecho del operador “=” y se lo asigna a x.
Otros operadores de asignación:

Operador de asignación ejemplo Equivale a


+= x+=1; x=x+1;
-= x-=1; x=x-1;
*= x*=3; x=x*3;
/= x/=5; x=x/5;
%= x%=2; x=x%2;

En C++, el operador incremento (++) y el operador decremento (--) actúan siempre sobre un solo operando, una variable. Por tanto, son operadores
unarios, y sirven para incrementar o decrementar en una unidad el valor de dicho operando.

3
Unos=unos +1; unos++;
operació equivalente también
n
suma++; suma=suma+1; suma+=1;
suma--; suma=suma-1; suma-=1;

7. entencia de decisión: La ejecución de las instrucciones en un programa se realiza en forma secuencial, es decir una después de la otra
hasta llegar al final. En la gran mayoría de los programas será necesario tomar decisiones sobre qué sentencias ejecutar, esto es permitir la
modificación de la secuencia de ejecución de las sentencias en el programa.
La sentencia de decisión o estructura condicional permite modificar el flujo del programa. Su sintaxis es:
if (condición) {
bloque de sentencias que se ejecutan si la condición es verdadera;
}
else {
bloque de sentencias que se ejecutan si la condición es falsa;
}

Si la condición es verdadera se ejecuta el primer bloque de sentencias y el segundo no, si es falsa se ejecuta el segundo bloque y el primero no.
El bloque del else es opcional. Si no se encuentra, sólo se realizará la acción correspondiente al primer bloque y tendrá la forma:
if (condición) {
bloque de sentencias que se ejecutan si la condición es verdadera;
}

Cuando un bloque de instrucciones sólo contiene una instrucción, las llaves { y } son opcionales. Un bloque es un conjunto de sentencias encerradas
entre llaves { y }.

La condición está formada por operando operadorRelacional operando. Los operadores relacionales nos permiten comparar expresiones de tipos
compatibles, devolviendo un resultado de tipo lógico esto es, el resultado de la comparación es VERDADERO O FALSO, o bien un SI o un NO.
a. Operadores relacionales (de relación o de comparación )
operador significado Operador significado
< Menor que >= Mayor o igual que
<= Menor o igual que == Igual que
> Mayor que != No igual o diferente que
Ejemplo:
if (b > a)
cout << “El mayor valor es b”<<endl; //endl = cambio de línea o de renglón
else
cout << “El menor valor es b”<<”\n”;

En C++ se toma como falso el valor 0, y como verdadero cualquier otro valor, una práctica común es expresar condiciones sin utilizar
ningún operador.
if (divisor) {
resultado = dividendo / divisor;
cout << resultado<<”\n”;
} else
cout << “No se puede dividir por cero”<<”\n”;

b. If corto.
variable = (condición) ? expresion1 : expresion2; // si condición es verdadera se asigna expresion1 si no expresión2
Que es equivalente a la siguiente expresión:
if (condicion) expresion1 else expresion2;
Por ejemplo, para asignar el máximo de a y b a la variable x, usando ?, tendríamos:
x = (a>b) ? a : b;
que es lo mismo que:
if (a > b) x = a; else x = b;
Otro ejemplo: Encontrar el menor de tres valores
a = (x<y) ? ((y<z) ? z : y) : ((x<z) ? z : x);//se puede anidar
c. Operadores lógicos: Los operadores lógicos permiten introducir nexos entre condiciones como “y se cumple también que” ó “o se
cumple que”. Su sintaxis es operando operadorLógico operando sus operandos son de tipo booleano y el resultado también es
booleano, esto es “VERDADERO” o “FALSO”.

Operador Significado Explicación

&& Y “and” Se cumplen las dos condiciones

3
|| O “or” Se cumple una u otra condición

! Negación “not” Si la condición es VERDADERA la hace FALSA y viceversa

Ejemplo: Si las variables a, b y c tienen los valores 5, 7 y 2 respectivamente se evalúan las siguientes expresiones

Expresión Pregunta equivalente Resultado Ejemplo código

(a == 5) && (a < c) ¿Es a igual a 5 y a menor que c? 0 (falso) cout << “Pregunta (a== b) && (a < c) vale "<< (a == b) && (a < c);

(a == 5) || (a > 7) ¿Es a igual a 5 ó es a mayor que 7? 1 (verdadero) cout << "Pregunta (a == 5) || (a > 7) vale "<< (a == 5) || (a > 7));

! ( a == 5 ) ¿a es NO igual a 5? 0 (falso) cout << "Pregunta ! ( a == 5 ) vale "<<! ( a == 5 );

8. entencia de selección
La instrucción switch (alternativa múltiple) permite seleccionar, por medio de una expresión, el siguiente bloque de instrucciones a ejecutar de
entre varios posibles. En lenguaje C++, para escribir una instrucción de alternativa múltiple (switch) se utiliza la sintaxis:

switch ( selector )
{
   case etiqueta_1 : conjunto_de_instrucciones_1    break;
case etiqueta _2 : conjunto_de_instrucciones_2    break;
   ...
   case etiqueta _n : conjunto_de_instrucciones_n break;
    default : bloque_de_instrucciones_n+1
}

Selector: puede ser una variable o una expresión de tipo int o char.
Etiqueta_1, etiqueta_2….: Es del mismo tipo del selector y cada una debe ser única.

Dependiendo del valor obtenido al evaluar el selector se ejecutará uno y solo un conjunto de instrucciones que sea igual al valor de etiqueta_1 o
etiqueta_2….

Opcionalmente, se puede escribir un bloque_de_instrucciones_n+1 después de default: Este bloque de instrucciones se ejecutará en el caso de
que el valor obtenido al evaluar la expresión del selector, no se encuentre en ninguna de las etiquetas después de cada case.
Al final del conjunto de instrucciones que corresponda a cada etiqueta debe estar la palabra reservada break que de otra manera se ejecutarían en
secuencia.
En cualquier caso que se ejecute la instrucción 1, 2, 3, … , n o default : la ejecución continuará con la instrucción que se encuentre después de la
llave } que cierra toda la estructura del switch.

#include <iostream>
using namespace std;
/* Programa para calcular los dias del mes incluyendo los años bisiestos.
Elaborado por: Ing. Mario Rojas
Un año es bisiesto si es múltiplo de 4, pero no es múltiplo de 100, pero si lo es si es múltiplo de 400 */
int main(int argc, char** argv) {
int mes=0, anio=0;
cout<<"teclea el numero del mes " ; // entrada de datos
cin>>mes;
cout<<"Teclea el anio ";
cin>>anio;
switch(mes) {
case 10: case 3: case 5: case 7: case 8:
case 1:
case 12: cout<< "\n"<<"El mes "<<mes<<" del anio "<<anio<<" tiene 31 dias"<<endl; break;
case 4:
case 6:
case 9:
case 11: cout<<"\n"<<"El mes "<<mes<<" del anio "<<anio<<" tiene 30 dias"; break;
case 2: if(((anio%4==0)&&!(anio%100==0)) || (anio%400==0))
cout<< "\n"<<"El mes "<<mes<<" del anio "<<anio<<" tiene 29 dias";
else
cout<< "\n"<<"El mes "<<mes<<" del anio "<<anio<<" tiene 28 dias"; break;
default: cout<<"Ese mes no existe";

3
}// fin del switch
return 0;
}// fin del main

9. entencias de repetición
En la solución de muchos problemas es necesario ejecutar repetidas veces una instrucción o un conjunto de instrucciones, en algunos casos el
número de veces que se repiten dicha instrucciones se conoce con anterioridad, mientras que en otras ocasiones el número de repeticiones
depende del cálculo o estado de variables, que están dentro del problema.
Las instrucciones se repiten dependiendo del resultado de la validación de una condición.
a. Sentencia for
Cuando se desea ejecutar una sentencia simple o bloque, repetidamente un número de veces conocido, la construcción adecuada es la
sentencia for. La sintaxis es la siguiente:

for (inicializador; condición; incremento)


sentencia;

Inicializador: representa la variable o las variables que serán inicializadas a un valor determinado.
Condición: es una expresión booleana (operandos unidos por operadores relacionales y/o lógicos). Si se omite, se supone siempre que es
verdadera.
Incremento: es una expresión cuyo valor evoluciona en el sentido de que se dé la condición para finalizar la ejecución de la sentencia for.
Sentencia: es una sentencia simple o compuesta. Una sentencias compuesta o bloque es un grupo de sentencias agrupadas entre llaves {y}.
Si es una sentencia simple las llaves son opcionales.

La ejecución de la sentencia for sucede de la siguiente forma:


i) Se inicializan la o las variables de inicialización.
ii) Se evalúa la condición.
iii) Si el resultado de la condición es distinto de cero (o verdadero), se ejecuta la sentencia, y se vuelve al punto ii).
iv) Si el resultado de la condición es cero (o falso), la ejecución de la sentencia for se da por finalizada y se continúa en la siguiente
sentencia del programa.

#include <iostream>
using namespace std;
/* Programa que solicita el ingreso de un número entero y muestra la tabla de multiplicar del mismo.
Programa elaborado por: Ing. Mario Rojas */

int main(int argc, char** argv) {


int numero, i, producto; //Declaración de variables
//Solicitando y leyendo el ingreso de datos desde el teclado
cout<<"Ingrese un numero: "<<endl;
cin>>numero;
cout<<endl<<"Tabla del numero "<<numero<<endl; //endl = end line
for(i=0; i<numero; i++)
{
producto=i*numero;
cout<<numero<<"x"<<i<<"="<<producto<<endl;
}//fin del for

return 0;
}// fin del main

b. Sentencia while
Ejecuta una sentencia, simple o compuesta, cero o más veces, dependiendo del valor de una expresión.
while (expresión)
sentencia;

Expresión: es cualquier expresión numérica, relacional o lógica.


Sentencia: es una sentencia simple o compuesta.
La ejecución de la sentencia while sucede así:

i) Se evalúa la expresión.
ii) Si el resultado de la expresión es cero (falso), la sentencia no se ejecuta y se pasa a ejecutar la siguiente sentencia en el programa.
iii) Si el resultado de la expresión es distinto de cero (verdadero), se ejecuta la sentencia y el proceso se repite comenzando en el
punto 1.

c. Sentencia do-while

3
Ejecuta una sentencia, simple o compuesta, una o más veces, dependiendo del valor de una expresión.

do {
sentencia;
}while (expresión);

Expresión: es cualquier expresión numérica, relacional o lógica.


Sentencia: es una sentencia simple o compuesta.
La ejecución de la sentencia do-while sucede de la siguiente forma:

i) Se ejecuta la sentencia o cuerpo de la sentencia do.


ii) Se evalúa la expresión.
iii) Si el resultado de la expresión es cero (falso), se pasa a ejecutar la siguiente sentencia en el programa.
iv) Si el resultado de la expresión es distinto de cero (verdadero), el proceso se repite comenzando en el punto 1.

Esta forma de repetición es útil en el caso de necesitar validar datos de entrada.


Ejemplo:

int mes;
do{
cout<<"Teclea un numero de mes ";
cin>>mes;
} while (!(mes>=1&&mes<=12)); //uso de operadores relacionales y lógicos en la condición
cout<<endl<<" mes valido";

Ejemplo 1:
#include <iostream>
using namespace std;
/* Programa para ejemplificar el uso de los tres tipos de repeticiones que tiene el lenguaje.
Calculo del factorial de un numero.
Programa elaborado por: Ing. Mario Rojas*/

int main(int argc, char** argv) {


int n, i, fact1,fact2,fact3;
cout<<"Teclea un numero para calcular el factorial ";
cin>>n;

//usando la repeticion for


fact1=1;
for(i=1;i<=n;i++)
fact1*=i;

//usando la repeticion while


fact2=1;
i=1;
while(i<=n){
fact2*=i;
i++;
}

//usando la repeticion do-while


i=fact3=1;
do{
fact3*=i;
i++;
}while(i<=n);

cout<<"Factorial de "<<n<<"\n"<<" con for "


<<fact1<<"\n"<<" con while "<<fact2<<"\n"<<" con do-while "<<fact3<<"\n";
return 0;
}

Ejemplo 2:
#include <iostream>
using namespace std;
int main(){
    int selector1, selector2;

3
    cout<<"ingrese un numero para convertirlo a letras "<<endl;
    cin>>selector1;
     //el primer switch evalua la variable del selector y la convierte a un numero
  switch(selector1){
   case 1:     cout<<"UNO";     break;
   case 2:     cout<<"DOS";     break;
   case 3:    cout<<"TRES";    break;
   case 4:     cout<<"CUATRO";     break;
   case 5:     cout<<"CINCO";     break;
   default: cout<<"fuera de rango numerico";//si selecciona numero distinto de 1 a 5
   }//fin del switch
     cout<<"ingrese el numero de posicion de una vocal "<<endl;
     cin>>selector2;
  //El switch 2 se usa para convertir el numero a su correspondiente vocal
  switch(selector2){
   case 1:    cout<<"      A";     break;
   case 2:    cout<<"      E";    break;
   case 3:    cout<<"      I";    break;
   case 4:    cout<<"      O";    break;
   case 5:    cout<<"      U";    break;
   default: cout<<"           No hay vocal";
   }
   system("pause");
    }

También podría gustarte