SINTAXIS EN C++ - PowerPoint PPT Presentation

sintaxis en c n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
SINTAXIS EN C++ PowerPoint Presentation
Download Presentation
SINTAXIS EN C++

play fullscreen
1 / 51
SINTAXIS EN C++
213 Views
Download Presentation
alaire
Download Presentation

SINTAXIS EN C++

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

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

  2. main function Square function Cube function LA ESTRUCTURA DE C++ • En C++ todos los sub-programas se llaman funciones (“functions”). • Un programa en C++ puede ser un conjunto de funciones. • Cada función realiza una tarea en particular con el objetivo de resolver un problema. • El ejemplo del lado tiene 3 funciones. La principal y dos auxiliares.

  3. main function Square function Cube function ESTRUCTURA (CONT.) 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.

  4. 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 ) { returnn * n; } int Cube( int n ) { returnn * n * n; }

  5. FUNCIÓN main Marca el comienzo de las intrucciones que se van a ejecuar. Encabezamiento. int main() { cout << "The square of 27 is " << Square(27) << endl; cout << "and the cube of 27 is " << Cube(27) << endl; return 0; } Primera instrucción del programa. Estas instrucciones se conocen como el cuerpo “body” del programa. Marca el final de las intrucciones que se van a ejecuar. El resultado que va a devolver este programa es: The square of 27 is 729 And the cube of 27 is 19683

  6. FUNCIONES AUXILIARES Este identifier establece que la función Square devuelve un resultado entero. int Square( intn ) { returnn * n; } int Cube( intn ) { returnn * n * n; } Ambas funciones son ejemplo de funciones llamadas “value-returning functions” El “identifier” return le permite a la función devolver un valor.

  7. VOCABULARIO • Función – Un sub-programa en C++. • Syntax – Reglas que indican como se escriben las instrucciones correctamente en un lenguaje de programación. • Semantics – Conjunto de reglas que determinan el significado de las instrucciones escritas en un lenguaje de programación. • Metalanguage – Un lenguaje que es usado para escribir las reglas de sintaxis para otros lenguajes. • Identifier – Un nombre asociado a una función o “data object” y se utiliza para hacer referencia a esa función o “data object”.

  8. Letter Letter _ _ … Digit 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. 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.

  9. 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 1 2 3 4 5 6 7 8 9 TEMPLATE NÚMERO Y LETRAS Por 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:

  10. int main() { statement . . . } TEMPLATE DE LA FUNCIÓN “main” 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; }

  11. Letter Letter _ _ … Digit IDENTIFIERS Los “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. • Ejemplos de “identifiers válidos • suma_de_cuadrados • J9 • ObtenerDatos • Contador • Bin3D4 Template del “identifier”

  12. IDENTIFIERS INVÁLIDOS

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

  14. QUIZZ # 1– RESPUESTAS

  15. DATA TYPE El “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.

  16. Char Data Type Los “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:

  17. String Data Type Los “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:

  18. DataType Identifier , Identifier . . .; Naming Elements: Declarations Los “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.

  19. EJEMPLO DE DECLARACIONES DE VARIABLES charletra, laInicial, ch; charletra; charlaInicial; charch; floatpayRate; //Pago por hora al empleado floathoras; // Horas trabajadas floatsalario; // Salario del empleado intcantidadEmpleados; // 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.

  20. CONSTANTES Todo 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 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

  21. EJEMPLO DE DECLARACIONES DE CONSTANTES El template para definir una constante es: const DataType Identifier = LiteralValue; Ejemplo de declaraciones de constantes: conststringESTRELLAS = “**********”; constcharBLANCO = ‘ ‘; conststringBOOK_TITLE = “Programming and Problem Solving with C++” conststringEL_MENSAJE = “café puya”

  22. QUIZZ # 2– ESCRIBA LA DECLARACIÓN

  23. QUIZZ # 2– RESPUESTAS

  24. VOCABULARIO (2) • Palabra reservada – Una palabra que tiene un significado especial en C++. No puede ser usado como una variable. • Data Type – Valores de datos en conjunto con unas operaciones para esos valores. • Variable - Localización en memoria a la cual se le hace referencia utilizando un “identifier” que contiene un valor y puede ser modificable. • Declaration – Comando que asocia un “identifier” con un “data object”, función o “data type”. • Constantes – Localización en memoria a la cual se le hace referencia utilizando un “identifier” que contiene un valor y NO puede ser modificable.

  25. ASIGNACIONES El 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;

  26. EJEMPLO DE ASIGNACIONES VÁLIDAS Utilizando las siguientes declaraciones: stringfirstName; stringmiddleName; stringlastName; stringtitle; charmiddleInitial; charletter; VÁLIDOS firstName = “Pablo”; middleName = firstName; middleName = “”; lastName = “Rivera”; title = “Ingeniero”; middleInitial = ‘ ‘; letter = middleInitial;

  27. EJEMPLO DE ASIGNACIONES INVÁLIDAS Utilizando las siguientes declaraciones: stringfirstName; stringmiddleName; stringlastName; stringtitle; charmiddleInitial; charletter; 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.

  28. QUIZZ # 3 – DETERMINE VALIDEZ

  29. QUIZZ # 3 – RESPUESTAS

  30. VOCABULARIO (3) • Literal value – Cualquier constante escrita en un progama. • Named constant (symbolic constant) – Definición similar a la de constante. • Assignment statement – Instrucción que almacena el valor de una expresión dentro de una variable. • Expression – Conjunto de “identifiers”, literales y operadores de los cuales se puede obtener un resultado. • Evaluate – Calcular un nuevo valor ejecutando un conjunto específico de operaciones con unos valores dados.

  31. 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: stringbookTitle; stringphrase1; stringphrase2; 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 ”

  32. STRING (EXAMPLE) De acuerdo a la siguiente definición: conststringWORD1 = “rogramming”; conststringWORD3 = “Solving”; conststringWORD5 = “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++”

  33. cout << Expression << Expression . . .; COUT Para 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: EJEMPLOS DE COUT Y DISPLAY DE PSEUDOCÓDIGO

  34. COUT (CONT.) Asuma que ch = ‘2’, firstName = “Marie” y lastName = “Curie”

  35. 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 there El “identifier” endl es particular de C++ y se le conoce como un manipulador.

  36. COMENTARIOS Podemos 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.

  37. Declaration . . . FunctionDefinition FunctionDefinition . . . Heading { Statement . . . } 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: Un “Function Definition” consiste del encabezamiento de la función y del cuerpo (“body). Su “Syntax Template” es:

  38. 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> usingnamespace std; conststringFIRST = "Herman"; // Person's first name conststringLAST = "Smith"; // Person's last name constcharMIDDLE = 'G'; // Person's middle initial int main() { stringfirstLast; // Name in first-last format stringlastFirst; // 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. Comentarios. Final de la función. Devuelve el valor 0 indicando que termino exitosamente. Se le conoce como el “exit status”.

  39. { Statement . . . } NullStatement Declaration AssignmentStatement OutputStatement Block Block, FunctionDefinition, Statement Statement BLOCK FunctionDefinition Heading Block 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 (;).

  40. “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> usingnamespace std; conststringFIRST = "Herman"; // Person's first name conststringLAST = "Smith"; // Person's last name constcharMIDDLE = 'G'; // Person's middle initial int main() { stringfirstLast; // Name in first-last format stringlastFirst; // 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; } Statements Function Definitions Statements BLOCK

  41. 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 { charch; stringstr; ch = ‘A’; cout << ch; Str = “Hello”; Cout << str; } { charch; ch = ‘A’; cout << ch; stringstr; Str = “Hello”; Cout << str; }

  42. Si compilamos el siguiente programa: //******************************************* // This program prints Happy Birthday //******************************************** int main() { cout << “Feliz cumpleaños” << endl; return 0; } EL PRE-PROCESADOR DE C++ 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>

  43. 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

  44. Source Program Preprocessor Expanded Source Program C++ compiler EL PRE-PROCESADOR DE C++ (3) 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”.

  45. NAMESPACES Aú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. }

  46. 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; }

  47. 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> usingnamespace std; int main() { cout << “Feliz cumpleaños” << endl; return 0; }

  48. CONCEPTOS ADICIONALES DE OUTPUT Manejo de líneas

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

  50. Enter Program Compile Program YES Compile-time Errors? Encontrar la causa de los errores, arreglarlos en el programa y volver a compilar. Run Program YES Volver al algoritmo y arreglar lo que esta mal y modificarlo en el editor. Logic-errors ? Success! PROCESO DE COMPILAR