SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

51
SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0

Transcript of SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

Page 1: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

SINTAXIS EN C++

Preparado por: Nelliud D. Torres

Enero/2003

Versión 1.0

Page 2: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

LA ESTRUCTURA DE C++

main function

Square function

Cube function

1. En C++ todos los sub-programas se llaman funciones (“functions”).

2. Un programa en C++ puede ser un conjunto de funciones.

3. Cada función realiza una tarea en particular con el objetivo de resolver un problema.

4. El ejemplo del lado tiene 3 funciones. La principal y dos auxiliares.

Page 3: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

ESTRUCTURA (CONT.)

main function

Square function

Cube function

Todo programa en C++ tiene una función llamada “main”. La ejecución del programa siempre comienza aqui. Se puede decir que “main” es la función “master” e invoca a las demas para poder completar su tarea.

Square y Cube son las funciones auxiliares que son invocadas por la función main. Las tres funciones son necesarias para poder completar el problema.

Page 4: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

LISTADO DEL PROGRAMA EN C++

//******************************************************************

// Sample program

// This program computes the square and cube of 27

//******************************************************************

#include <iostream>

using namespace std;

int Square( int );

int Cube( int );

int main()

{

cout << "The square of 27 is " << Square(27) << endl;

cout << "and the cube of 27 is " << Cube(27) << endl;

return 0;

}

int Square( int n )

{

return n * n;

}

int Cube( int n )

{

return n * n * n;

}

Page 5: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

FUNCIÓN main

int main()

{

cout << "The square of 27 is " << Square(27) << endl;

cout << "and the cube of 27 is " << Cube(27) << endl;

return 0;

}

Marca el comienzo de las intrucciones que se van a ejecuar.

Marca el final de las intrucciones que se van a ejecuar.

Estas instrucciones se conocen como el cuerpo “body” del programa.

Primera instrucción del programa.

El resultado que va a devolver este programa es:

The square of 27 is 729

And the cube of 27 is 19683

Encabezamiento.

Page 6: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

FUNCIONES AUXILIARES

int Square( int n )

{

return n * n;

}

int Cube( int n )

{

return n * n * n;

}

Ambas funciones son ejemplo de funciones llamadas “value-returning functions”

Este identifier establece que la función Square devuelve un resultado entero.

El “identifier” return le permite a la función devolver un valor.

Page 7: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

VOCABULARIO1.1. FunciFunciónón – Un sub-programa en C++.

2.2. SyntaxSyntax – Reglas que indican como se escriben las instrucciones correctamente en un lenguaje de programación.

3.3. SemanticsSemantics – Conjunto de reglas que determinan el significado de las instrucciones escritas en un lenguaje de programación.

4.4. MetalanguageMetalanguage – Un lenguaje que es usado para escribir las reglas de sintaxis para otros lenguajes.

5.5. IdentifierIdentifier – Un nombre asociado a una función o “data object” y se utiliza para hacer referencia a esa función o “data object”.

Page 8: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

METALANGUAGE “Syntax template”

Existen muchas formas de hacer anotaciones para especificar los lenguages. Estas anotaciones, se llaman “metalanguage”. Utilizaremos el formato llamado “syntax template” para indicar formatos de instrucciones en el programa.

Letter Letter _ _ … Digit

Ejemplo: El “template” para un identifier es:

El área sombreada significa que es opcional. Los 3 puntos significan que se puede repetir el símbolo que le precede.

Page 9: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

TEMPLATE NÚMERO Y LETRASPor lo tanto concluimos que un “identifier” puede comenzar con una letra o un guión y puede seguir repitiendose ese patrón. Los templates para letras y números son: A a J j S s B b K k T t C c L l U u D d M m V v E e N n W w F f O o X x G g P p Y y H h Q q Z z I I R r

0

123456789

Page 10: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

TEMPLATE DE LA FUNCIÓN “main”

int main(){ statement

.

.

.}

La instrucción en gris significa que es opcional y los tres puntos, que se pueden incluir mas instrucciones. El programa mas corto en C++ sería.

int main()

{

return 0;

}

Page 11: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

IDENTIFIERSLos “identifiers” se utilizan en C++ para nombrar cosas tales como sub-programas, variables, constantes, etc. Se compone de letras (A-Z, a-z) y de dígitos (0-9) y el “underscore” (_). Sin embargo, debe empezar con una letra o con el “underscore”. Los que comienzan con el “underscore”, tienen un significado especial en algunos compiladores de C++, de modo que siempre comenzaremos con letras.

Letter Letter _ _ … Digit

Template del “identifier”Ejemplos de “identifiers válidos

1. suma_de_cuadrados

2. J9

3. ObtenerDatos

4. Contador

5. Bin3D4

Page 12: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

IDENTIFIERS INVÁLIDOS

IDENTIFIER INVÁLIDO

Explicación

40Horas No puede comenzar con números.

Obtener Datos No se permiten espacios en blanco.

box-22 El guión (“hyphen”) no es válido.

costo_en_$No se pueden utilizar símbolos especiales como el signo de dolar.

intLa palabra “int” es una palabra reservada en C++.

Page 13: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

QUIZZ # 1– DETERMINE SI ES VÁLIDO O INVÁLIDO24

IDENTIFIER VÁLIDO/INVÁLIDO (Razón)

say_what

eres_#_1

return

Buscar

pacoAmigoGrande

5Veces

habichuela Colora

dude

cuajito-con-guineo

Main

Page 14: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

IDENTIFIER VÁLIDO/INVÁLIDO (Razón)

say_what Válido

eres_#_1 Inválido – Signo “#”

return Inválido – Palabra reservada

Buscar Válido

pacoAmigoGrande Válido

5Veces Inválido – Comienza con un número.

habichuela Colora Inválido – Espacio en blanco.

dude Válido

cuajito-con-guineo Inválido – Uso del guión.

Main Válido

QUIZZ # 1– RESPUESTAS

Page 15: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

DATA TYPEEl “Data type” determina como los datos son representados en la computadora y los tipos de procesamientos que la computadora puede ejecutar en ellos. El propósito de las distintas representaciones, es optimizar el uso de la memoria. Algunas de las representaciones de datos en C++ es.

ch ar sh o rt in t long

In te gra l

f lo a t d oub le lo ng d oub le

F loa ting

C + +d a ta typ es

S im p le

Page 16: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

Char Data TypeLos “Data type” tipo char describen datos los cuales consisten de un solo caracter. Pueden ser una letra, un dígito o un caracter especial. Se utilizará el signo (‘ ) para representar los valores tipo char.

EJEMPLOS:

‘A’ ‘a’ ‘8’ ‘2’ ‘?’

‘+’ ‘-’ ‘$’ ‘*’ ‘ ‘

Page 17: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

String Data TypeLos “Data type” tipo String describen datos los cuales consisten de mas de un caracter. Pueden ser letras, dígitos o caracteres especiales. Se utilizará el signo (“ ) para representar los valores tipo String.

EJEMPLOS:

“C++” “Programación” “Petraca”

“la vaca” “ y “ “Minga “

Page 18: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

Naming Elements: DeclarationsLos “identifiers” se utilizan entre otras cosas para ponerle nombre a las constantes y a las variables. En otras palabras, un “identifier” puede ser el nombre de una localización de memoria. Utilizamos declaraciones para poder definir varibles y constantes.

Formato para declarar una variable.

DataType Identifier , Identifier . . .;

Page 19: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EJEMPLO DE DECLARACIONES DE VARIABLESchar letra, laInicial, ch;

char letra;

char laInicial;

char ch;

float payRate; //Pago por hora al empleado

float horas; // Horas trabajadas

float salario; // Salario del empleado

int cantidadEmpleados; // Cantidad de empleados

Se puede definir mas de una variable en una sola declaración del mismo tipo.

Se recomienda que se declaren las varibles con una sola declaración.

Separar las declaraciones permite documentarlas.

Page 20: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

CONSTANTESTodo caracter encerrado entre comillas sencillas (‘) y “strings” encerrados en doble comillas (“) son constantes. Las constantes son valores que nunca cambian. Cuando usamos el valor de una constante en un programa, la llamamos “literal value”. También se le conoce como “named constant” o “symbolic constant”.

EJEMPLOS

‘A’ ‘@’ “UPR”

“Entre número” ‘*’ “123456789”

Se pueden utilizar en un programa como un “literal string” o una constante (“named constant”).

Literal string “Programming and Problem Solving with C++”

Named constant BOOK_TITLE

Page 21: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EJEMPLO DE DECLARACIONES DE CONSTANTES

const DataType Identifier = LiteralValue;

El template para definir una constante es:

Ejemplo de declaraciones de constantes:

const string ESTRELLAS = “**********”;

const char BLANCO = ‘ ‘;

const string BOOK_TITLE = “Programming and Problem Solving with C++”

const string EL_MENSAJE = “café puya”

Page 22: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

QUIZZ # 2– ESCRIBA LA DECLARACIÓN

DESCRIPCIÓN DECLARACIÓNVariable entera llamada total.

Constante tipo float llamada PI con valor 3.14159.

Variable tipo char llamada inicial.

Variable tipo string llamada titulo.

Constante entera llamada HORAS_SEMANA con valor = 40.

Constante tipo char llamada PORCIENTO con valor = ‘%’.

Constante tipo string llamada CAFE con valor = “agua de piringa”.

Page 23: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

QUIZZ # 2– RESPUESTAS

DESCRIPCIÓN DECLARACIÓNVariable entera llamada total. int total;Constante tipo float llamada PI con valor 3.14159.

const float PI = 3.14159;

Variable tipo char llamada inicial. char inicial;Variable tipo string llamada titulo. string titulo;

Constante entera llamada HORAS_SEMANA con valor = 40.

const int HORAS_SEMANA = 40;

Constante tipo char llamada PORCIENTO con valor = ‘%’.

const char PORCIENTO = ‘%’;

Constante tipo string llamada CAFE con valor = “agua de piringa”.

const string CAFE = “agua de piringa”;

Page 24: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

VOCABULARIO (2)1. Palabra reservada – Una palabra que tiene un significado especial

en C++. No puede ser usado como una variable.

2. Data Type – Valores de datos en conjunto con unas operaciones para esos valores.

3. Variable - Localización en memoria a la cual se le hace referencia utilizando un “identifier” que contiene un valor y puede ser modificable.

4. Declaration – Comando que asocia un “identifier” con un “data object”, función o “data type”.

5. Constantes – Localización en memoria a la cual se le hace referencia utilizando un “identifier” que contiene un valor y NO puede ser modificable.

Page 25: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

ASIGNACIONESEl valor de una variable puede ser definido o cambiado utilizando un “assignment statement” el cual almacena el valor de una expresión.

Por ejemplo:

lastName = “Lincoln”;

Asigna el “string” “Lincoln” a la variable lastName. El “template” para asignar valores es:

Variable = Expression;

Page 26: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EJEMPLO DE ASIGNACIONES VÁLIDAS

Utilizando las siguientes

declaraciones:

string firstName;

string middleName;

string lastName;

string title;

char middleInitial;

char letter;

VÁLIDOS

firstName = “Pablo”;

middleName = firstName;

middleName = “”;

lastName = “Rivera”;

title = “Ingeniero”;

middleInitial = ‘ ‘;

letter = middleInitial;

Page 27: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EJEMPLO DE ASIGNACIONES INVÁLIDAS

Utilizando las siguientes

declaraciones:

string firstName;

string middleName;

string lastName;

string title;

char middleInitial;

char letter;

INVÁLIDOS

middleInitial = “A.”; No se puede guardar un “string” una variable tipo “char”.

letter = firstName; No se puede guardar una varibla tipo “string” en otra variable tipo “char”.

firstName = Tomas; La computadora piensa que Tomas es un identifier.

“Rivera” = lastName; Al reves.

lastName = ; No esta asignando nada.

Page 28: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

QUIZZ # 3 – DETERMINE VALIDEZ

DECLARACIONES INSTRUCCIONES VÁLIDO/INVÁLIDO (Razón)

char letra;

string nombre;

float promedio;

int cuentaGota;

const float PI = 31.14159;

const string MENSAJE = “yo tengo un sapo”;

const int TOTAL_PERSONAS = 50;

letra = “abc”;

nombre = carlos;

cuentaGota = cuentaGota + 1;

cuentaGota = promedio + 50;

promedio = promedio + 1.0;

nombre = MENSAJE;

MENSAJE = “fin”;

Page 29: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

QUIZZ # 3 – RESPUESTAS

DECLARACIONES INSTRUCCIONES VÁLIDO/INVÁLIDO (Razón)

char letra;

string nombre;

float promedio;

int cuentaGota;

const float PI = 31.14159;

const string MENSAJE = “yo tengo un sapo”;

const int TOTAL_PERSONAS = 50;

letra = “abc”; INVÁLIDO

nombre = carlos; INVÁLIDO

cuentaGota = cuentaGota + 1;

VÁLIDO

cuentaGota = promedio + 50;

INVÁLIDO

promedio = promedio + 1.0;

VÁLIDO

nombre = MENSAJE; VÁLIDO

MENSAJE = “fin”; INVÁLIDO

Page 30: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

VOCABULARIO (3)

1. Literal value – Cualquier constante escrita en un progama.

2. Named constant (symbolic constant) – Definición similar a la de constante.

3. Assignment statement – Instrucción que almacena el valor de una expresión dentro de una variable.

4. Expression – Conjunto de “identifiers”, literales y operadores de los cuales se puede obtener un resultado.

5. Evaluate – Calcular un nuevo valor ejecutando un conjunto específico de operaciones con unos valores dados.

Page 31: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

STRING“String Expressions’ – Aunque no se puede ejecutar aritmética con los “strings”, se puede ejecutar una operación llamada concadenación (“concatenation”) la cual utiliza el símbolo de suma (+).

De acuerdo a la siguientes declaraciones:

string bookTitle;

string phrase1;

string phrase2;

phrase1 = “Programming and ”;

phrase2 = “Problem Solving”;

Las siguientes instrucciones:

bookTitle = phrase1 + phrase2;

bookTitle = phrase2 + phrase3;

Almacenan en la variable “bookTitle” lo siguiente:

“Programming and Problem Solving”

“Problem SolvingProgramming and ”

Page 32: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

STRING (EXAMPLE)

De acuerdo a la siguiente definición:

const string WORD1 = “rogramming”;

const string WORD3 = “Solving”;

const string WORD5 = “C++”;

Podriamos asignar la siguiente expresión a la variable bookTitle

bookTitle = ‘P’ + WORD1 + “ and Problem “ + WORD3 + “ with “ + WORD5;

Para que contenga el siguiente “string”:

“Programming and Problem Solving with C++”

Page 33: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

COUTPara poder mostrar resultados en pantalla, utilizaremos en C++ el comando cout en conjunto con el “insertion operator” (<<).

Ejemplo: la instrucción: cout << “Hello”; va a mostrar la palabra Hello en el “standard output device”, usualmente el monitor. El “template” de cout es:

cout << Expression << Expression . . .;

EJEMPLOS DE COUT Y DISPLAY DE PSEUDOCÓDIGO

cout << “Hello”; DISPLAY “Hello”

cout << “a” << “b”; DISPLAY “a” + “b”

cout “total: “ << cantDinero; DISPLAY “total: “ + cantDinero;

Page 34: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

COUT (CONT.)

EJEMPLOS DE COUT

cout << ch; 2

cout << “ch = “ << ch; ch= 2

cout << firstName + “ “ + lastName; MarieCurie

cout << firstName << lastName; MarieCurie

cout << firstName << ‘ ‘ << lastName; MarieCurie

cout << “ERROR MESSAGE”; ERROR MESSAGE

cout << “Error=“ << ch; Error=2

Asuma que ch = ‘2’, firstName = “Marie” y lastName = “Curie”

Page 35: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

OTRAS CARACTERISTICAS IMPORTANTES DEL COUT

Si queremos mostrar en pantalla la siguiente frase:

Juanito “el cuco” Trucupei

El cout quedaría: cout << “Juanito \”el cuco\” Trucupei”;

Para terminar una línea, utilizamos el “identifier” endl.

Cout << “Hi”;

Cout << “there”;

Produce lo siguiente:

Hithere

Cout << “Hi” << endl;

Cout << “there” << endl;

Produce lo siguiente:

Hi

thereEl “identifier” endl es particular de C++ y se le conoce como un manipulador.

Page 36: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

COMENTARIOSPodemos poner los comentarios en C++ de dos formas:

1. Se puede poner cualquier comentario entre los símbolos. /* */

Ejemplo:

/* Este programa calcula el sueldo neto de un empleado */

2. Comenzar el comentario con dos ‘slashes’. (la mas común)

Ejemplo:

// Este programa calcula el sueldo neto de un empleado

La documentación en un programa es bien importante. En las reglas para programar en C++ se discute el formato de los programas que se van a entregar en la clase incluyendo la documentación.

Page 37: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

CONSTRUCCIÓN DE UN PROGRAMA EN C++

Ya hemos explorado lo que son “identifiers”, declaraciones, variables, constantes, expresiones, “statements”, comentarios, etc. Ahora vamos a ver como integrar esos elementos en un programa. Como vimos anteriormente, un programa en C++ se compone de funciones y una de ellas se tiene que llamar “main”. El “syntax template” de un programa en C++ es:

Declaration...FunctionDefinitionFunctionDefinition...

Un “Function Definition” consiste del encabezamiento de la función y del cuerpo (“body). Su “Syntax Template” es:

Heading{Statement...}

Page 38: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EJEMPLO DE UN PROGRAMA EN C++ CON UNA SOLA FUNCIÓN//******************************************************************// PrintName program// This program prints a name in two different formats//******************************************************************#include <iostream>#include <string>

using namespace std;

const string FIRST = "Herman"; // Person's first nameconst string LAST = "Smith"; // Person's last nameconst char MIDDLE = 'G'; // Person's middle initial

int main(){ string firstLast; // Name in first-last format string lastFirst; // Name in last-first format

firstLast = FIRST + " " + LAST; cout << "Name in first-last format is " << firstLast << endl;

lastFirst = LAST + ", " + FIRST + ", "; cout << "Name in last-first-initial format is "; cout << lastFirst << MIDDLE << '.' << endl;

return 0;}

La instrucción #include le indica al compilador que inserte en el programa el contenido de los archivos llamados “iostream” y “string”. El primer archivo contiene información que C++ necesita para mostrar valores (cout). El segundo contiene información para manejo de cualquier “string”.

Definición de constantes.

Final de la función. Devuelve el valor 0 indicando que termino exitosamente. Se le conoce como el “exit status”.

Comentarios.

Page 39: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

Block, FunctionDefinition, Statement

{Statement...}

HeadingBlock

NullStatement Declaration AssignmentStatement OutputStatement Block

BLOCK FunctionDefinition Statement

El cuerpo de una función es un ejemplo de un bloque (“block), el cual esta delimitado por los corchetes ({}).

Con eso en mente, podemos redefinir una función con solo 2 palabras. “Heading” y “Block”.

El “syntax template” de un statement de acuerdo a lo que hemos discutido hasta aqui, queda como el que se muestra arriba. El “NullStatement” es una linea con solo el (;).

Page 40: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

“BLOCKS”, “FUNCTION DEFINITIONS” Y “STATEMENTS” EN EL PROGRAMA DE C++ QUE VIMOS ANTERIORMENTE

//******************************************************************// PrintName program// This program prints a name in two different formats//******************************************************************#include <iostream>#include <string>

using namespace std;

const string FIRST = "Herman"; // Person's first nameconst string LAST = "Smith"; // Person's last nameconst char MIDDLE = 'G'; // Person's middle initial

int main(){ string firstLast; // Name in first-last format string lastFirst; // Name in last-first format

firstLast = FIRST + " " + LAST; cout << "Name in first-last format is " << firstLast << endl;

lastFirst = LAST + ", " + FIRST + ", "; cout << "Name in last-first-initial format is "; cout << lastFirst << MIDDLE << '.' << endl;

return 0;}

Function Definitions

BLOCK

Statements

Statements

Page 41: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

COMENTARIO ADICIONAL SOBRE LOS BLOQUES (“BLOCKS”)

Como indica el “syntax template”, dentro de un bloque yo puedo poner instrucciones de asignación. Esto significa que se pueden poner en cualquier orden. Sin embargo se recomienda que se pongan las asignaciones primero y las demas instrucciones despues. Ejemplo: DESORGANIZADO ORGANIZADO

{char ch;ch = ‘A’;cout << ch;string str;Str = “Hello”;Cout << str;}

{char ch;string str;

ch = ‘A’;cout << ch;Str = “Hello”;Cout << str;}

Page 42: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EL PRE-PROCESADOR DE C++Si compilamos el siguiente programa:

//*******************************************

// This program prints Happy Birthday

//********************************************

int main()

{

cout << “Feliz cumpleaños” << endl;

return 0;

}

El compilador reconoce los identifiers “int” y “main”, pero no reconoce “cout” y “endl”. Esto es debido a que no se ha incluido la librería “iostream”. Si en el programa se va a trabajar con “string”, también faltaria la librería “string”. Estos problemas se arreglan incluyendo la instrucción:

#include <iostream>

Page 43: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EL PRE-PROCESADOR DE C++ (2)//*******************************************

// This program prints Happy Birthday

//********************************************

#include <iostream>

int main()

{

cout << “Feliz cumpleaños” << endl;

return 0;

}

La línea “#include” no es manejado por el compilador, sino por el pre-procesador. Las líneas que comienzan con el “#” no se considera una instrucción del lenguaje, sino una directiva del pre-procesador. El pre-procesador es un programa que actua como un filtro durante la fase de compilación

Page 44: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

EL PRE-PROCESADOR DE C++ (3)

Source Program

ExpandedSource Program

C++ compiler

Preprocessor

El pre-procesador expande una directiva al insertar físicamente el contenido del archivo de la directiva dentro del source program. (diagrama)

Los archivos que aparecen en el “#include” se conocen como “header file” y contienen constantes, variables, “datatypes” y declaraciones de funciones necesarios para el programa.

Los “brackets” (< >) son requeridos e indica que busque el archivo en el “standard include directory” que es donde estan todos los “header files”.

Page 45: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

NAMESPACESAún incluyendo la directiva, el programa no corre. El compilador todavía no reconoce los “identifers” cout y endl. Esto se debe a que el “header file iostream” y todos los “headers files”declaran sus “identifiers” para que estén en un “namespace” llamado “std”;

Ejemplo:

namespace std

{

Declaraciones de variables, “data types”, etc.

}

Page 46: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

NAMESPACES (2)Los programadores tiene dos opciones para aceder a los “identifiers” que están dentro de un “namespace”, las dos formas son:

I. Usar un “qualified name” para el “identifier”> Consiste de nombre :: operador. De esta forma el programa quedaría asi://*************************************

// This program prints Happy Birthday

//*************************************

#include <iostream>

int main()

{

std::cout << “Feliz cumpleaños” << std::endl;

return 0;

}

Page 47: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

NAMESPACES (3)II. La otra forma es usar un “statement” con una directiva

llamada “using”. De esta forma no hay que cualificar cada directiva, sino definirla solo al principio.

using namespace std:

//*************************************

// This program prints Happy Birthday

//*************************************

#include <iostream>

using namespace std;

int main()

{

cout << “Feliz cumpleaños” << endl;

return 0;

}

Page 48: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

CONCEPTOS ADICIONALES DE OUTPUTManejo de líneas

STATEMENTS OUTPUT PRODUCEDcout << “Hi there, “;cout << “Lois Lane. “ << endl;cout << “Have you seen “;cout << “Clark Kent?” << endl;

Hi there, Lois Lane.Have you seen Clark Kent?

cout << “Hi there, “ << endl;cout << “Lois Lane. “ << endl;cout << “Have you seen “ << endl;cout << “Clark Kent?” << endl;

Hi there,Lois Lane.Have you seenClark Kent?

cout << “Hi there, “ << endl;cout << “Lois Lane. “;cout << “Have you seen “ << endl;cout << “Clark Kent?” << endl;

Hi there,Lois Lane. Have you seenClark Kent?

Page 49: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

CONCEPTOS ADICIONALES DE OUTPUT (2)3 FORMAS DE DECIR LO MISMO

STATEMENTSOUTPUT

PRODUCEDcout << “Hi there, “ << endl;cout << endl;cout << “Lois Lane. “ << endl;

Hi there,

Lois Lane.

cout << “Hi there, “ << endl << endl;cout << “Lois Lane. “ << endl;

Hi there,

Lois Lane.

cout << “Hi there, “ << endl << endl << “Lois Lane. “ << endl; Hi there,

Lois Lane.

Page 50: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

PROCESO DE COMPILAREnter

Program

CompileProgram

Compile-timeErrors?

Run Program

Logic-errors?

Success!

Encontrar la causa de los errores, arreglarlos en el programa y volver a compilar.

YES

YES Volver al algoritmo y arreglar lo que esta mal y modificarlo en el editor.

Page 51: SINTAXIS EN C++ Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0.

LABORATORIO

Utilizando de referencia el documento hecho por el profesor Antonio Huertas, vamos a escribir y compilar el siguiente programa que ya esta escrito en Pseudocódigo.