Sunteți pe pagina 1din 18

INSTITUTO UNIVERSITARIO POLITECNICO SANTIAGO MARIÑO

EXTENSIÓN PORLAMAR
OCTUBRE DE 2010

PROGRAMACIÓN

Integrantes:
Eduardo Pérez # 23491731
Sección: A
Materia: Programación
Prof.: Sergio Lunar
1. Lenguaje C++

C++ es un lenguaje de programación diseñado a mediados de los años 1980


por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje
de programación C con mecanismos que permitan la manipulación de objetos. En ese
sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un
lenguaje híbrido.

Posteriormente se añadieron facilidades de programación genérica, que se


sumó a los otros dos paradigmas que ya estaban admitidos (programación
estructurada y la programación orientada a objetos). Por esto se suele decir que el C+
+ es un lenguaje de programación multiparadigma.

Actualmente existe un estándar, denominado ISO C++, al que se han adherido


la mayoría de los fabricantes de compiladores más modernos. Existen también
algunos intérpretes, tales como ROOT.

Una particularidad del C++ es la posibilidad de redefinir los operadores


(sobrecarga de operadores), y de poder crear nuevos tipos que se comporten como
tipos fundamentales.

El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el
lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se
había usado el nombre "C con clases". En C++, la expresión "C++" significa
"incremento de C" y se refiere a que C++ es una extensión de C.

C++ es considerado un C más grande y potente. La sintaxis de C++ es una


extensión de C, al que se han añadido numerosas propiedades, fundamentalmente
orientada a objetos. ANSI C ya adoptó numerosas características de C++, por lo que
la migración de C a C++ no suele ser difícil.

1.1. Elementos del lenguaje C++

Un programa en C++ es una secuencia de caracteres que se agrupan en


componentes léxicos (tokens) que comprenden el vocabulario básico del lenguaje.
Estos componentes de léxico son: palabras reservadas, identificadores, constantes,
constantes de cadena, operadores y signos de puntuación.

1.1.1. Caracteres
Los caracteres que se pueden utilizar para construir elementos del lenguaje
(componentes léxicos o tokens) son:
abcdefghijklmnopqrstuvwxyz
ABCDEFCHIJKLMNOPQRSTUVWXYZ
0123456789
Caracteres espacio (blancos y tabulaciones)

1.1.2. Librería Estándar

Con objeto de mantener el leguaje lo más sencillo posible, muchas sentencias


que existen en otros lenguajes no tienen su correspondiente contrapartida en C++. Por
ejemplo, en C++ no hay sentencias para entrada y salida de datos. Es evidente, sin
embargo, que esta es una funcionalidad que hay que cubrir de alguna manera. El
Lenguaje C++ lo hace por medio de funciones preprogramadas que se venden o se
entregan junto con el compilador. Estas funciones están agrupadas en un conjunto de
librerías de código objeto, que constituyen la llamada librería estándar del lenguaje.
La llamada a dichas funciones se hace como a otras funciones cualesquiera, y deben
ser declaradas antes de ser llamadas por el programa.

1.2. Palabras clave del C++

En C++ como en cualquier otro lenguaje, existen mía serie de palabras clave
(keywords) que el usuario no puede utilizar como identificadores (nombres de
variables y/o de funciones). Estas palabras sirven para indicar al computador que
realice una tarea muy determinada (desde evaluar mía comparación, hasta definir el
tipo de mía variable) y tienen mi especial significado para el compilador. El C++ es
un lenguaje muy conciso, con muchas menos palabras clave que otros lenguajes. A
continuación se presenta la lista de las 48 palabras clave de C++, para las que más
adelante se dará detalle de su significado (algunos compiladores añaden otras
palabras clave, propias de cada uno de ellos. Es importante evitarlas como
identificadores):

asm continue float new signed try


auto default for operator sizeof typedef
break delete friend private static union
case do goto protected struc unsigned
catch double if public switch virtual
char else inline register template void
class enum int return this volatile
const extern long short throw while
2. Comentarios

El Lenguaje C++ permite que el programador introduzca comentarios en los


ficheros fuente que contienen el código de su programa. La misión de los comentarios
es servir de explicación o aclaración sobre como está hecho el programa, de forma
que pueda ser entendido por una persona diferente. El compilador ignora por
completo los comentarios.
Los caracteres (/*) se emplean para iniciar un comentario introducido entre el
código del programa; el comentario termina con los caracteres (*/). Todo texto
introducido entre los símbolos de comienzo (/*) y final (*/) de comentario son
siempre ignorados por el compilador. Por Ejemplo:

/* Esto es un comentario simple*/

/* Esto es un comentario más largo,


distribuido en varias líneas. El
texto se suele alinear por la izquierda. */

3. Variable y tipos de datos

Conceptualmente, desde el punto de vista de un programador, una variable es una


entidad cuyo valor puede cambiar a lo largo de la ejecución de un programa.
En el nivel más bajo, una variable se almacena en la memoria del ordenador.
En un nivel más lógico, una variable ocupa un espacio de memoria reservado en el
ordenador para contener sus valores durante la ejecución de un programa. Cada
variable debe pertenecer a un tipo determinado, y ese tipo determina, por una parte, el
tamaño del espacio de memoria ocupado por la variable, y por otra, el modo en que se
manipulará esa memoria por el ordenador.

C++ tiene los siguientes tipos fundamentales:


 Caracteres: char (también es un entero), wchar_t
 Enteros: short int, int, long int, long long int
 Números en coma flotante: float, double, long double
 Booleanos: bool
 Vacío: void
El modificador unsigned se puede aplicar a enteros para obtener números sin
signo (por omisión los enteros contienen signo), con lo
que se consigue un rango mayor de números naturales. Número de
Tipo
Bits
3.1. Tamaños asociados
char 8
Según la máquina y el compilador que se utilice los tipos
primitivos pueden ocupar un determinado tamaño en short 16
memoria. La siguiente lista ilustra el número de bits que int 32
ocupan los distintos tipos primitivos la arquitectura x86.
Otras arquitecturas pueden requerir distintos tamaños float 32
de tipos de datos primitivos. C++ no dice nada acerca de
cuál es el número de bits en un byte, ni del tamaño de double 64
estos tipos; más bien, ofrece solamente las siguientes
"garantías de tipos":
 Un tipo char tiene el tamaño mínimo en bytes asignable por la máquina, y
todos los bits de este espacio deben ser "accesibles".
 El tamaño reconocido de char es de 1. Es decir, sizeof (char) siempre
devuelve 1.
 Un tipo short tiene al menos el mismo tamaño que un tipo char.
 Un tipo long tiene al menos el doble tamaño en bytes que un tipo short.
 Un tipo int tiene un tamaño entre el de short y el de long, ambos inclusive,
preferentemente el tamaño de un apuntador de memoria de la máquina.
 Un tipo unsigned tiene el mismo tamaño que su versión signed.

3.2. wchar_t

Para la versión del estándar que se publicó en 1998, se decidió añadir el tipo de
dato wchar_t, que permite el uso de caracteres UNICODE, a diferencia del
tradicional char, que contempla simplemente al código de caracteres ASCII
extendido. A su vez, se ha definido para la mayoría de las funciones y clases, tanto de
C como de C++, una versión para trabajar con wchar_t, donde usualmente se prefija
el carácter w al nombre de la función (en ocasiones el carácter es un infijo). Por
ejemplo:
 strcpy - wstrcpy
 std::string - std::wstring
 std::cout - std::wcout
Cabe resaltar que en C se define wchar_t como:
typedef unsigned short wchar_t;
Mientras que en C++ es en sí mismo un tipo de dato.

3.3. La palabra clave "void"


La palabra clave void define en C++ el concepto de no existencia o no
atribución de un tipo en una variable o declaración. Como tal, puede ser usada para
destacar que una función no recibe parámetros, como en:
int funcion (void);
Aunque la tendencia actual es la de no colocar la palabra "void". Además se
utiliza para determinar que una función no retorna un valor, como en:
void funcion (int parámetro);
Cabe destacar que void no es un tipo. Una función como la declarada
anteriormente no puede retornar un valor por medio de return: la palabra clave va
sola. No es posible una declaración del tipo:
void t; //Está mal
En este sentido, void se comporta de forma ligeramente diferente a como lo
hace en C, especialmente en cuanto a su significado en declaraciones y prototipos de
funciones.
Sin embargo, la forma especial void * indica que el tipo de datos es un
puntero. Por ejemplo:
void *memoria;
Indica que memoria es un puntero a alguna parte, donde se guarda
información de algún tipo. El programador es responsable de definir estos "algún",
eliminando toda ambigüedad. Una ventaja de la declaración "void *" es que puede
representar a la vez varios tipos de datos, dependiendo de la operación
de cast escogida. La memoria que hemos apuntado en alguna parte, en el ejemplo
anterior, bien podría almacenar un entero, un flotante, una cadena de texto o un
programa, o combinaciones de éstos. Es responsabilidad del programador recordar
qué tipo de datos hay y garantizar el acceso adecuado.

4. Sintaxis

Las partes opcionales se colocan entre corchetes [ ], los valores separados con
| indican que sólo puede escogerse uno de esos valores. Los valores entre <> indican
que debe escribirse obligatoriamente un texto que se usará como el concepto que se
escribe en su interior.
Por ejemplo, veamos la siguiente sintaxis, que define una sentencia de
declaración de variables de tipo char:

[signed|unsigned] char <identificador>[,<identificador2>[,<identificador3>]...];

Significa que se puede usar signed o unsigned, o ninguna de las dos, ya que
ambas están entre [ ], y separadas con un |.
El subrayado de signed indica que se trata de la opción por defecto. En este
caso, si no se usa signed ni unsigned, el compilador elige la opción signed.
A continuación de char, que debe aparecer de forma obligatoria, debe
escribirse un texto, que tiene ser una única palabra que actuará como identificador o
nombre de la variable. Este identificador es el que usaremos para referirnos a la
variable en el programa. En un programa C++ siempre llamaremos a las cosas por su
nombre. Opcionalmente, podemos declarar más variables del mismo tipo, añadiendo
más identificadores separados con comas. Podemos añadir tantos identificadores
como queramos.
Para crear un identificador hay que tener en cuenta algunas reglas, ya que no
es posible usar cualquier cosa como identificador.
- Sólo se pueden usar letras (mayúsculas o minúsculas), números y ciertos
caracteres no alfanuméricos, como el '_', pero nunca un punto, coma, guión, comillas
o símbolos matemáticos o interrogaciones.
- El primer carácter no puede ser un número.
- C++ distingue entre mayúsculas y minúsculas, de modo que los
identificadores numero y Numero son diferentes. Finalmente, la declaración termina
con un punto y coma.
Las palabras en negrita son palabras reservadas de C++. Eso significa que son
palabras que no se pueden usar para otras cosas, concretamente, no se pueden usar
como identificadores en un programa C++. Es decir, están reservadas para usarse del
modo en que se describe en la sintaxis, y no se pueden usar de otro modo.
Serán válidos estos ejemplos:

signed char cuenta, cuenta2, total;


unsigned char letras;
char caracter, inicial, respuesta;
signed char _letra;

5. Tipos de Operadores

Un operador es un carácter o grupo de caracteres que actúa sobre una, dos o


más variables para realizar una determinada operación con un determinado resultado.
En C existen muchos operadores de diversos tipos (éste es uno de los puntos fuertes
del lenguaje), que se verán a continuación.
5.1. Operadores Aritméticos:

En C se utilizan los cinco operadores siguientes:


Suma (+)
Resta (–)
Multiplicación (*)
División (/)
Módulo (%)

Nota: El operador módulo (%) se utiliza para calcular el resto del cociente entre dos
enteros, NO puede ser aplicado a variables del tipo float ó double.

5.2. Operadores De Asignación Aritmética:

La combinación del operador de asignación (=) con los operadores aritméticos


+,-,*,/ y % te ofrece otro tipo de operadores , los Operadores De Asignación
Aritmética.

5.3. Operador Descripción

+= Operador de asignación de suma


-= Operador de asignación de resta
*= Operador de asignación de multiplicación
/= Operador de asignación de división
%= Operador de asignación de residuo

5.4. Operadores de Incremento y Decremento:

Para incrementar y decremento el valor de las variables se pueden utilizar


respectivamente los operadores de incremento (++) y de decremento (--).
Se pueden utilizar en forma prefijo o postfijo, con significados distintos. En forma
prefijo primero se realiza la operación de incremento o decremento y luego se entrega
el resultado para las otras operaciones.
En forma postfijo primero se entrega el resultado de la variable, y luego se
incrementa o decrementa el valor de la variable.
5.5. Operadores Relaciónales:

Los operadores relacionales comparan sus operandos y devuelven el valor 1 si


la relación es cierta, y 0 si no lo es. Son:

< Menor que


<= Menor o igual que
> Mayor que
>= Mayor o igual que
== Igual
¡= No igual

Recordemos que estas operaciones nos dan resultados lógicos de 1 ó 0 es decir


valores de verdadero o falso; el lenguaje C considera todo valor no cero como un
valor verdadero.

5.6. Operadores Lógicos:

C proporciona operadores lógicos para combinar los resultados de varias


condiciones. Una expresión compuesta es aquella que utiliza operadores como estos y
que se pueden evaluar para obtener un único resultado de verdadero o falso.
Dos de los operadores lógicos son binarios porque usan dos operandos, devuelven un
resultado basado en los operandos recibidos y en el operador.
AND ( && ): Este operador conocido como producto lógico retorna un valor
de verdadero si los operandos son verdaderos.
OR ( || ): El operador de suma lógica retorna un valor de verdadero si los
operandos o uno de los operandos es verdadero.
NOT ( ! ): Operador de negación, tiene por efecto invertir el resultado de la
expresión que le sigue es decir si la expresión es verdadera después de aplicar este
operador la expresión será falsa y viceversa.-

6. Sentencias

Una sentencia es cualquier expresión en C que se espera que tenga alguna


consecuencia. Pueden ser asignaciones, operaciones, llamadas a funciones o
combinaciones de ellas.
Toda sentencia termina con un ";". Una sentencia simple consiste en una
expresión acabada en un punto y coma (;).

6.1 Etiquetas de sentencia


Sirven para etiquetar una sentencia de forma que el control del programa
pueda ser transferido a ella. Se separan de la sentencia por dos puntos ":".
La sintaxis es:etiqueta: sentencia;
Por ejemplo, etiq100: x++

6.2. Tipos de Sentencias

6.2.1. Sentencia de declaración

Se utilizan para establecer la existencia y, opcionalmente, los valores iniciales


de objetos identificados por nombre.
nombreTipo identificador, …;
nombreTipo identificador = expresión, …;
const NombreTipo identificador = expresión, …;
Algunas sentencias válidas en C++ son:
char cl;
int p, q = 5, r =a + b; //suponiendo que a y b han sido declaradas e inicializadas antes
const double IVA = 16.0;

6.2.2. Sentencias expresión

Las sentencias de expresiones hacen que la expresión sea evaluada. Su


formato general es:
expresión;
Ejemplo:
n++;
425; // legal, pero no hace nada
a + b; // legal, pero no hace nada
n = a < b || b != 0;
a += b = 3; // sentencia compleja
C++ permite asignaciones múltiples en una sentencia.
m = n + (p=5) equivale a p=5; m = n + p ;
6.2.3. Sentencias compuestas

Una sentencia compuesta es una serie de sentencias encerradas entre llaves.


Las sentencias compuestas tienen el formato:
{
sentencia
sentencia
sentencia
....
}
Las sentencias encerradas pueden ser cualquiera: declaraciones, expresiones,
sentencias compuestas, etc. Un ejemplo es:
int i = 5;
double x = 3.14, y = -4.25;
int j = 4 - i
x = 4.5 * (x - y);
El cuerpo de una función C++ es siempre una sentencia compuesta.

6.2.4. Sentencias condicionales: if

if (expresion) if (expresion){
sentencia <secuencia de sentencias>
}
Si expresión es verdadera (distinta de cero), entonces se ejecuta sentencia o
secuencia de sentencias; en caso contrario, se salta la sentencia. Después que la
sentencia if se ha ejecutado, el control pasa a la siguiente sentencia:
Ejemplo 1:
if ( a < 0 )
negativos++;
Si la variable a es negativa, se incrementa la variable negativos.
Ejemplo 2:
if ( numerodedias < 0 )
numerodedias = 0;
if ( (altura - 5) < 4 )
{
area = 3.14 * radio * radio;
volumen = area * altura;
}
Ejemplo 3:
if (temperatura >= 45)
cout << “Estoy en Sonora - Hermosillo, en Agosto”;
cout << ”Estoy en Veracruz ” << temperatura <<endl;
La frase ‘Estoy en Sonora-Hermosillo, en Agosto” se visualiza cuando temperatura es
mayor o igual que 45. La sentencia siguiente se
ejecuta siempre.
La sentencia if_else tiene el formato siguiente:
1.if (expresión) 2.if (expresión)
sentencia 1 <secuencia de sentencia 1>
else else
sentencia 2 <secuencia de sentencias 2>
Si expresión es distinto de cero, la sentencia1 se ejecuta y sentencia2 se
salta; si expresión es cero, la sentencial se salta y sentencia2 se ejecuta. Una vez que
se ha ejecutado la sentencia if else, el control pasa a la siguiente sentencia.

6.2.5. Sentencias de alternativa múltiple: switch

La sentencia switch ofrece una forma de realizar decisiones de alternativas


múltiples. El formato de switch es:
switch (expresion){
case constante 1:
sentencias
break;
case constante 2:
sentencias
.
.
break;
case constante n:
sentencias
break;
default: //opcional
sentencias
}
La sentencia switch requiere una expresión cuyo valor sea entero. Este valor
puede ser una constante, una variable, una llamada a función o una expresión. El
valor de constante ha de ser una constante. Al ejecutar la sentencia se evalúa
expresión y si su valor coincide con una constante se ejecutan las sentencias a
continuación de ella, en caso contrario se ejecutan las sentencias a continuación de
default.
switch (puntos)
{
case 10:
nota = a;
break;
case 9:
nota =5;
break;
case 7,8:
nota = c;
break;
case 5.6:
nota = d;
break;
default:
nota = f;
}

6.2.6. Bucles: sentencias o estructuras repetitivas

Los bucles sirven para realizar tareas repetitivas. En C++, existen tres
diferentes tipos de sentencias repetitivas:

- Sentencia while

La sentencia while es un bucle condicional que se repite mientras la


condición es verdadera. El bucle while nunca puede iterar si la condición comprobada
es inicialmente falsa. La sintaxis de la sentencia while es:
while (expresión)
sentencia;
o bien:
while (expresión) {
< secuencia de sentencias >
}

int n, suma = 0;
int i = 1;
while ( i <= 100 )
{
cout << “Entrar”;
cin >> n;
suma += n;
i++;
}
cout << “La media es” << double(suma) / 100.0;

- Sentencia do

La sentencia do actúa como la sentencia while. La única diferencia real es


que la evaluación y la prueba de salida del bucle se hace después que el cuerpo del
bucle se ha ejecutado, en lugar de antes. El formato es:
do {
sentencias
}while (expresión);
sentencia siguiente
Se ejecuta sentencia y a continuación se evalúa expresión y, si es verdadero
(distinto de cero), el control se pasa de nuevo al principio de la sentencia do y el
proceso se repite, hasta que expresión es falso(cero) y el control pasa a la sentencia
siguiente.
Ejemplo 1:
int n, suma=0, i = 1;
do
{
cout << ”entrar”;
cin >> n;
suma += n;
i++;
}
while ( i <= 100)
cout << “La media es” << double (suma)/100.0;
Ejemplo 2:
El siguiente ejemplo visualiza los cuadrados de 2 a 10:
int i=2;
do
cout << i << “12 = ” << i * i++ << endl ;
while (i < 11);

- La sentencia for

Una sentencia for ejecuta la iteración de un bucle un número determinado


de veces. for tiene tres componentes: expresion1, inicializa las variables de control
del bucle; expresion2, es la condición que determina si el bucle realiza otra iteración;
la última parte del bucle for es la cláusula que incrementa o decrementa las variables
de control del bucle. El formato general de for es:
for (expresionl; expresion2; expresion3)
sentencia; <secuencia de sentencias>;
expresionl se utiliza para inicializar la variable de control de bucle; a continuación
expresion2 se evalúa, si es verdadera (distinta de cero), se ejecuta la sentencia y se
evalúa expresion3 y el control pasa de nuevo al principio del bucle. La iteración
continúa hasta que expresion2 es falsa (cero), en cuyo momento el control pasa a la
sentencia siguiente al bucle.
1. for (int i = 0; i < 5; i++) // se realizan 5 iteraciones sentenciasles
2. Suma de 100 números int o, suma = 0;
for (int i = 0; i < 100; i++)
{
cout <<“Entrar”;
cin >> n;
suma+=n:
}

6.2.7. Sentencias break y continue

El flujo de control ordinario de un bucle se puede romper o interrumpir


mediante las sentencias break y continue. La sentencia break produce una salida
inmediata del bucle flor en que se encuentra situada:

for (i = 0; i < 100; i++)


{
cin » X;
if (x < 0.0)
{
cout <<”salir del bucle” <<endl;
break;
}
cout << sqrt(x)<< endl;
}
La sentencia break también se utiliza para salir de la sentencia switch. La
sentencia continue termina la iteración que se está realizando y comenzará de nuevo
la siguiente iteración:
for (i = 0; i < 100; ++i)
{
cin >> x;
if (x < 0.0)
continue;
}
Advertencia:
• Una sentencia break puede ocurrir únicamente en el cuerpo de una sentencia for,
while, do o switch.
• Una sentencia continue sólo puede ocurrir dentro del cuerpo de una sentencia for,
while o do.

6.2.8. Sentencia nula

La sentencia nula se representa por un punto y coma, y no hace ninguna


acción.
char cad[80]=”Cazorla”;
int i;
for (i = 0; cad[i] != ‘\0’; i++);

6.2.9. Sentencia return

La sentencia return detiene la ejecución de la función actual y devuelve el


control a la función llamada. Su sintaxis es:
return expresión;
donde el valor de expresión se devuelve como el valor de la función.

7. Ejemplos

7.1. Escriba un programa que imprima el mensaje "Primer programa".

/* Primer programa */
#include <stdio.h>
main()
{
printf("Primer programa\n");
}
7.2. Escriba un programa que lea y escriba un carácter.

/* Leer y escribir un caracter */


#include <stdio.h>
main ()
{
char car;
printf("Escriba un caracter: ");
}
r=getchar();printf("\nEl caracter introducido es %c.\n",car);}

S-ar putea să vă placă și