Sei sulla pagina 1di 30

Programacin I

INDICE.
UNIDAD I: FUNDAMENTOS DEL LENGUAJE.

1.1 1.2 1.3 1.4 1.5 1.6 1.6.1 1.6.2 1.7 1.8 1.9 1.9.1 1.9.2 1.9.3

Introduccin al lenguaje y a su desarrollo de entorno. Comentarios. Variables y constantes. Objetos que permiten entrada y salida por consola. Operadores. Tipos de datos. Fundamentales. Definidos por el usuario. Palabras reservadas. Expresiones. Estructuras de control. Asignacin. Seleccin. Iterativo.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

FUNDAMENTOS DE LENGUAJE 1.1. INTRODUCCION AL LENGUAJE Y ASU ENTORNO DE DESARROLLO Desde los primitivos das del nacimiento de las computadoras, los programadores se han dedicado fundamentalmente a gestionar la complejidad de los programas. Cuando las computadoras se inventaron, la programacin se realizaba con instrucciones binarias de maquina, de modo que se cargaba en memoria a travs de un conjunto de interruptores o a travs de un teclado numrico. A medida que crecan los programas, se incrementaba su complejidad. Este problema comenz a resolverse con la aparicin de un traductor llamado ensamblador que convierte programas en ensamblador a cdigo maquina. Sin embargo, aunque el lenguaje ensamblador proporciona grandes facilidades, se necesitaba herramientas mas potentes que manipularan la creciente complejidad de los programas. Los lenguajes de alto nivel tales como FORTRAN, BASIC, PASCAL, C, C++ dieron un paso mas hacia la resolucin de la complejidad inherente al software. El nacimiento de la programacin estructurada soportada fundamentalmente por los lenguajes PASCAL Y C/C++. El uso de los lenguajes estructurados junto con las tcnicas estructuradas facilitaron considerablemente la escritura de programas y disminuyeron la complejidad inherente a los mismos. Sin embargo, cuando un proyecto alcanza un cierto tamao, su complejidad puede hacerlo incontrolable. Adems hoy en da el aumento de potencia de las caractersticas de hardware y software, tales como elevadas frecuencias de los procesadores, grandes capacidades de los discos duros, potencia de grficos, facilidades de conexin de redes, etc., incrementa la complejidad de los programas. A dems de todo lo anterior, los usuarios esperan interfaces grficos basados en ventanas acceso transparente a los datos almacenados en computadora mini o grande y, naturalmente, la capacidad de trabajo en red. Para enfrentarse a esta complejidad, los programadores de la dcada de los 90 utilizan la programacin orientada a objetos (POO).La POO es una nueva forma de organizar cdigo y datos que auguran un control creciente sobre la complejidad del proceso del desarrollo del software. Programacin orientada a objetos no es en realidad una nueva idea o algo reciente: sus conceptos fundamentales ya existan en lenguaje tales como simula 67, smalltalk. Las propiedades fundamentales de la POO son: Objetos Herencia Polimorfismo

Sin embargo, si es nuevo el inters de los programadores, por POO y por los lenguajes OO, es especialmente c++.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

EVOLUCION DE LA PROGRAMACION La POO es un importante conjunto de tcnicas que se pueden utilizar para hacer el desarrollo de programas mas eficiente mientras se mejora la fiabilidad de los programas resultantes. En esencia, POO es un nuevo medio de enfocar el trabajo de la programacin. Sin embargo, a fin de comprender lo que es la POO, es necesario comprender su raz. As pues, comencemos examinando la historia del proceso de programacin, analizando como evoluciono la POO y deduciendo, en consecuencia, por que es tan importante este concepto. PROGRAMACION LINEAL La programacin de computadoras es una joven disciplina. Las primeras computadoras se desarrollaron hace 40 aos. En estos 40 aos de la evolucin de la programacin a sido enorme y se ha dirigido hacia las necesidades del programador es decir se ha humanizado. Los primeros lenguajes de programacin se disearon para desarrollar programas que realizaban tareas relativamente simples. La mayora de estos programas eran cortos menos de 100 lneas de cdigo fuente. A medida que aumentaba la potencia de las computadoras, se requeran programas mas complejos. Los lenguajes de programacin primitivos eran inadecuados para esas tareas de programacin. Los lenguajes de programacin lineal no tenan facilidad para realizar el cdigo existente de programa. De hecho, se duplicaba segmento s de software cada ves ms a muchos programas. Los programas se ejecutaban en secuencias lgicas haciendo su lgica difcil de comprender. El control del programa era difcil y se producan continuos altos a lo largo del referido programa. Aun mas los leguajes lineales no tenan la capacidad de controlar la visibilidad de los elementos dato. Todo los datos eran globales por consiguiente podan ser modificados por cualquier parte del programa. No existan datos locales y por consecuencia cualquier ligera modificacin en un dato poda afectar a todo el programa. La evolucin de los lenguajes produjo la aparicin de los lenguajes estructurados (PASCAL, C/C++, ADA) as como una nueva estructura como es lo que llamamos procedimientos (subprograma, rutina, o subrutina). INTRODUCCION AL LENGUAJE C++ C++ es un lenguaje orientado a objetos derivado del C. En realidad un superconjunto de C que naci para aadirle cualidades y caractersticas de las que careca. El resultado es que, como su ancestro, sigue muy ligado al hardware subyacente, manteniendo una considerable potencia para programacin a bajo nivel, pero se la han aadido elementos que le permiten tambin un estilo de programacin con alto nivel de abstraccin. Respecto a su antecesor, se ha procurando mantener una exquisita compatibilidad hacia atrs por dos razones poder reutilizar la enorme cantidad
Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

de cdigo C existente, y facilitar una transicin lo ms fluida posible a los programadores de C clsico, de forma que pudieran pasar sus programas a C++ e ir modificndolos (hacindolos ms "++") de forma gradual. De hecho, los primeros compiladores C++ lo que hacan en realidad era traducir (preprocesar) a C y compilar despus (las consecuencias se dejan sentir todava en el lenguaje. Por lo general puede compilarse un programa C bajo C++, pero no a la inversa si el programa utiliza alguna de las caractersticas especiales de C++. Algunas situaciones requieren especial cuidado. Por ejemplo, si se declara una funcin dos veces con diferente tipo de argumentos, el compilador C invoca un error de "Nombre duplicado", mientras que en C++ quizs sea interpretado como una sobrecarga de la primera funcin (que sea o no legal depende de otras circunstancias). Como se ha sealado, C++ no es un lenguaje orientado a objetos puro (en el sentido en que puede serlo Java por ejemplo), adems no naci como un ejercicio acadmico de diseo. Se trata simplemente del sucesor de un lenguaje de programacin hecho por programadores (de alto nivel) para programadores, lo que se traduce en un diseo pragmtico al que se le han ido aadiendo todos los elementos que la prctica aconsejaba como necesarios, con independencia de su belleza o purismo conceptual ("Perfection, in some language theoretical sense, is not an aim of C++. Utility is" . Estos condicionantes tienen su cara y su cruz; en ocasiones son motivo de ciertos "reproches" por parte de sus detractores, en otras, estas caractersticas son precisamente una cualidad. De hecho, en el diseo de la Librera Estndar C++ se ha usado ampliamente esta dualidad (ser mezcla de un lenguaje tradicional con elementos de POO), lo que ha permitido un modelo muy avanzado de programacin extraordinariamente flexible. Aunque C++ introduce nuevas palabras clave y operadores para manejo de clases, algunas de sus extensiones tienen aplicacin fuera del contexto de programacin con objetos (fuera del mbito de las clases), de hecho, muchos aspectos de C++ que pueden ser usados independientemente de las clases. Del C se ha dicho: "Por naturaleza, el lenguaje C es permisivo e intenta hacer algo razonable con lo que se haya escrito. Aunque normalmente esto es una virtud, tambin puede hacer que ciertos errores sean difciles de descubrir"Respecto al C++ podramos decir otro tanto, pero hemos de reconocer que su sistema de deteccin de errores es mucho ms robusto que el de C, por lo que algunos errores de este sern rpidamente detectados. Desde luego, C++ es un lenguaje de programacin extremadamente largo y complejo; cuando nos adentramos en l parece no acabar nunca. Justo cuando aprendemos un significado descubrimos que una mano negra ha aadido otras dos o tres acepciones para la misma palabra. Tambin descubrimos que prcticamente no hay una regla sin su correspondiente excepcin. Cuando aprendemos que algo no se puede hacer, hay siempre algn truco escondido para hacerlo, y cuando nos dicen que es un lenguaje fuertemente tipado ("Strong type checking"), resulta completamente falso. A pesar de todo, ha experimentado un extraordinario xito desde su creacin. De hecho, muchos sistemas operativos compiladores e intrpretes han sido escritos en C++ (el propio Windows y Java). Una de las razones de su xito es ser un lenguaje de propsito general que se adapta a mltiples situaciones. Para comprobar el xito e importancia de los desarrollos realizados en C++
Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

puede darse una vuelta por la pgina que mantiene el Dr. Stroustrup al respecto: Tanto sus fervientes defensores como sus acrrimos detractores han hecho correr ros de tinta ensalzando sus cualidades o subrayando sus miserias, aunque todo el mundo parece estar de acuerdo en que es largo y complejo. Ha servido de justificacin para el diseo de otros lenguajes que intentan eliminar sus inconvenientes al tiempo que mantener sus virtudes (C++ y Java por ejemplo), y una de sus ltimas incorporaciones, las plantillas, ha sido origen de un nuevo paradigma de programacin (metaprogramacin). En mi opinin, cualquier lenguaje de propsito general que como C++, permita tocar ambos mundos, la programacin de bajo nivel y altos niveles de abstraccin, resultar siempre e inevitablemente complejo. Ocurre lo mismo con los lenguajes naturales que son tambin extraordinariamente complejos (esto lo saben bien los gramticos). Cualquier comunicacin entre humanos presupone una ingente cantidad de conocimientos y suposiciones previas entre los interlocutores. A pesar de lo cual, la comunicacin exacta y sin ambigedades entre dos personas no resulta fcil. 1.2. COMENTARIOS Comentarios son anotaciones en el programa; son para uso exclusivo del programador y eliminados del cdigo fuente en la fase de preprocesado, antes del anlisis sintctico. Aparte de las consideraciones estrictamente formales que se indican en esta seccin, no debemos perder de vista que los comentarios, aunque voluntarios (no es obligatorio escribirlos), representan una ayuda inestimable durante la construccin del programa, siendo imprescindibles para el programador original, o los que le sucedan en las tareas de mantenimiento, cuando es necesario habrselas con el cdigo un tiempo despus de que fue escrito. Adems de clarificar ideas los comentarios son tambin un valioso instrumento de depuracin, pues permiten eliminar provisionalmente secciones enteras de cdigo. En C++ coexisten dos formas de comentarios: El de C clsico y el de C++. Ambos son soportados por C++Builder, que tiene adems una extensin particular sobre el estndar ANSI, los comentarios anidados (este ltimo tipo solo debe usarse si la compatibilidad no es importante). Tambin deben tenerse en cuenta las observaciones que siguen sobre el uso de separadores (whitespaces) y delimitadores en los comentarios para evitar otros problemas de compatibilidad. Comentarios C: Un comentario C es cualquier secue ncia de caracteres contenida entre los delimitadores /* ... */. La totalidad de la secuencia, incluyendo los delimitadores /* y */ son sustituidos por un simple espacio despus de la expansin de macros (algunas implementaciones de C pueden eliminar los comentarios sin reemplazarlos por espacios).

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Ejemplo: int x = 2; /* esto es un comentario que ser eliminado o sustituido por un simple espacio despus en la frase de preprocesado. Como puede verse, el comentario puede ocupar varias lneas de texto en el cdigo fuente. Se recomienda utilizarlos con profusin, a veces todas las explicaciones son pocas, ya que el C++ es un lenguaje bastante crptico en algunas ocasiones, sobre todo algunas sentencias muy "elegantes" y comprimidas, pero ininteligibles en una primera lectura */ Ejemplo; la expresin: int /* declaracin */ i /* contador */; es analizada sintcticamente como estos tres tokens: Pegado de cadenas Algunos compiladores C clsicos utilizan el smbolo /**/ para el pegado (concatenado) de tokens, pero el nuevo Estndar ANSI recomienda que esto se haga con ##. El pegado de tokens es una tcnica que utiliza las habilidades de preprocesador para construir nombres nuevos utilizando macros Por ejemplo: #define VAR(i,j) (i/**/j) // Incorrecto #define VAR(i,j) (i##j) //Correcto #define VAR(i,j) (i ## j) // Correcto Despus de estas macros, las expresiones que siguen son transformadas por el preprocesador como se indica: int VAR(opcin uno) (); int opcin uno int VAR(opcin dos) (); int opcin dos int VAR(opcin tres) (); int opcin tres COMENTARIOS EN C++ C++ admite comentarios de una sola lnea utilizando dos barras inclinadas ( // ) como seal de comienzo. El comentario empieza en este punto (incluyendo las seales de comienzo) y contina hasta el prximo carcter de nueva lnea. class X { // esto es un comentario ... }; int i ;

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

COMENTARIOS ANIDADOS El estndar ANSI C no permite la existencia de comentarios anidados [1]. Por ejemplo, no podemos utilizar el comentario: /* int /* declaracin */ i /* contador */; */ porque el mbito del primer /* termina en el primer */, por lo que se obtiene: i; */ lo que producira un error de sintaxis. DELIMITADORES Y ESPACIOS En casos raros, algunos espacios antes de /*, //, y despus de */ (aunque no sean sintcticamente imprescindibles), deben ponerse para evitar posibles problemas de portabilidad. Por ejemplo, en este cdigo C++: int i = j//* divide por k*/k; +m; es analizado sintcticamente como int i = j +m; no como: int i = j/k; +m; que sera lo esperado segn las reglas de C. La forma que sigue (ms legible) evitara este problema. int i = j/ /* divide by k*/ k; +m;

1.3. VARIABLES Y CONSTANTES En programacin una variable es un elemento que tomar diferentes valores al ejecutarse un programa. Para poder manejar estos elementos dentro del programa es necesario que tengan un nombre o identificador y un tipo que nos servir para reflexionar su valor o poder examinar su contenido o borrar para cundo sea necesario. El valor de una variable, a diferencia de las constantes, puede cambiar a lo largo de la ejecucin de un programa. Toda variable pertenece a un tipo de dato concreto. En la declaracin de variables se debe indicar el tipo al que pertenece. As te ndremos variables numrico, carcter, cadena y lgicas. Enteros: estos pueden ser positivos y negativos, incluyendo el nmero cero (0). Ejemplo: Void main (); { int a, b, c. Reales o flotantes: estos tambin pueden ser positivos y negativos, incluyendo el nmero cero (0).
Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Ejemplo: Void main (); Double a, b, c. Carcter: es un conjunto finito y ordenado de caracteres que la computadora reconoce. Estos se clasifican en: Alfabticos: (A, B, C,..Z) (a, b, c,.z). Numricos: (1, 2, 3,9, 0). Especiales: (+, -,*, /, A, ., ? , <, >, $...,). Cadena (string): Es una sucesin de caracteres que se encuentran delimitados por una comilla ( postrofe) o dobles comillas segn el tipo del a lenguaje de programacin. Ejemplo: tecnolgico Salina Cruz Lgicos: Se conocen comnmente volanos o lgicos consiste en objetos que tienen uno de dos valores: verdadero (true) y falso (false). Este tipo se utiliza para representar alternativa (si/no) a determinadas condiciones. Por otro lado, distinguimos partes fundamentales en la vida de una variable: Declaracin. Iniciacin. Utilizacin.

Declaracin de variables: Cada variable de un programa, debe declararse antes de ser utilizada. La declaracin consiste en anunciar el nombre de la variable y asociarle un tipo. El tipo determina los valores que puede tomar la variable as como las operaciones que con ella pueden realizarse. Una variable declarada fuera de todo bloque es, por efecto, global y es accesible en el resto el archivo fuente en el que se est declarada. Por el contrario de una variable declarada dentro del bloque, es por efecto local y es accesible solamente dentro de este. Ejemplo: int suma, incremento; Char car, lnea [80]; Una variable puede ser inicializada cuando se declara, Ejemplo: Char car = \ 0;// car igual al carcte r nulo

int c =1; La sintaxis correspondiente a la declaracin de una variable es la siguiente:

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

[Clase] tipo indefit [, indefit] Clase: representa una de las 4 clases siguiente: auto, register, static, o extern. La clase de una variable determina si esta tiene carcter global (static o extern) o local (auto o register). Tipo: determina el tipo de la variable (Char, int, flota, double). Identific: indica el nombre de la variable. Iniciacin de variables: este no es ms que dar un valor inicial a una variable. As como lo primero que se hace con una variable es declarar, lo siguiente tiene que ser iniciada. Este se hace para evitar posibles errores en tiempo de ejecucin, pues es la variable tiene un valor determinado despus de declarar. Existen 2 maneras de otorgar valores iniciales a las variables: Mediante una sola sentencia de asignacin. Mediante una de los procedimientos de entradas de los datos (read o readln). Un ejemplo que rene los dos casos. Begin i: = 1 readln (n); While i <n do begin (* cuerpo de bucle*) i: = + 1 end end. utilizacin de variables: Una vez declarada e iniciada una variable, es el momento de utilizarla. Este es lo que presenta un mayor abanico d posibilidades. A continuacin tiene una de las cualidades. . incrementa un valor i: = i +1 . controlar un bucle: tro: i = 1 tro 10 do do 00. Checar una condicin: it i < 10then 00 .Participar en una expression: n: = (max min) div i. El nombre de la variable o identificador se debe escribir de acuerdo a las reglas siguientes: v siempre debe de comenzar con una letra. v Puede ser una combinacin de letras y nmeros. v No se permiten smbolos especiales (puntos, comas, espacios en blanco, etc.), a excepcin del Pascal que permite la inclusin del subrayado (_). El nmero de caracteres permitido para los identificadores vara de acuerdo a los lenguajes de programacin utilizados. Los tipos de variables pueden ser numricos o alfanumricos, volanos o lgicos. De a cuerdo al lenguaje utilizado, se declaran en forma diferente como se puede ver en la siguiente tabla.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

VARIABLE Enteras Reales Caracteres (alfanumricos) Boolleanas

PASCAL VAR A, B, C: integer VAR P, Q, R,: real; VAR A, B: CHAR NOMBRE: STRING VAR SALTO, FINAL: BOOLEA

C++ Int a, b, c; Flota P, q, r; Char a, b, nombre [45];

Todo nmero diferente de cero es verdadero en caso contrario es falso.

Los datos que se asignen a cada variable deben ser del tipo correspondiente ya que se asigna un valor numrico a una variable de cadena de caracteres, o una cadena de caracteres a una variable numrica ocurrir un error. Sin embargo es posible asignar un valor real a un entero o viceversa, esto se puede hacer porque la computadora hace la conversin de un tipo a otro en forma automtica. CONSTANTES Una constante es una cantidad que durante la ejecucin de un programa su valor no cambia. Para trabajar con las constantes es necesario escribir su valor, dependiendo de los lenguajes de programacin las constantes tambin pueden ser de varios tipos: enteras, reales, de cadena de caracteres y booleanas. Las constantes enteras son los nmeros positivos o negativos incluido el cero (0), escritos sin punto decimal, ni comas ni espacios en blanco. Ejemplos: 1235

-23

234567

Las constantes reales son nmeros positivos o negativos incluido el cero, pero con punto decimal. Ejemplos: 16.78 -0.345 6.0 536.21 23.451 Los reales o flotantes se pueden escribir tambin en notacin de punto fijo y punto flotante. Ejemplo: Punto fijo 1.414141 0.000000025 -23.453 Punto flotante 0.141414E01 1.125E-07 23453e02

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

La sintaxis para asignar las constantes es la siguiente: PASCAL Const pi=3.1416; g=9.81; plg=2.54; a=6; imss=0.10; isr=0.08; C++ #define pi 3.1416 #define g 9.81 #define plg 2.54 #define a 6 #define imss 0.10 #define isr 0.08

Constante de caracteres o alfanumricas. Pueden ser de un solo carcter o una serie (cadena) de ellos, los caracteres pueden ser letras maysculas o minsculas, nmeros y otros smbolos especiales, o una combinacin de todos ellos. Dependiendo del lenguaje se escriben encerrados entre comillas o entre apstrofos. Ejemplos. Pascal Hola mundo 55667 *******abril******* Basic ABC junio 17 P En C++ las constantes de tipo carcter pueden ser las siguientes a, z y las constantes de cadena son una secuencia de caracteres encerrados entre doble comilla por ejemplo: hola como estas mundo instituto tecnolgico del istmo Las constantes booleanas nicamente pueden tener dos valores verdadero (true) y falso (false), por lo tanto podemos decir que todo valor diferente de cero es verdadero en caso contrario es falso. 1.4. OBJETOS QUE PERMITEN LA ENTRADA Y SALIDA POR CONSOLA Las operaciones de entrada y salida se realizan en C++, al igual que en C, mediante flujos (streams) o secuencia de datos. Los flujos estndares son cout (flujo de salida) y en cin (flujo de entrada). El flujo de salida fluye normalmente a la pantalla ----- aunque puede ser diseccionado a otros dispositivos de salida ----- y el flujo de entrada representa datos que proceden del teclado (a menos que haya sido redireccionado). SALIDA El flujo de salida se representa por el identificador cout, que es realidad un objeto. El operador << se denomina operador de insercin o de << poner en >>. Dirige el contenido de la variante situada a su derecha al objeto situado a su izquierda. El equivalente en C de cout es la funcin printf.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Por ejemplo: Void main() { printf(este es tan solo un programa de prueba\n); } y tiene su equivalente en C++ #include<iostream.h> void main() { cout<<este es tan solo un programa de prueba\n); } El archivo de inclusin (cabecera9 <ioestream.h> contiene las facilidades estndares de entrada y salida de datos en C++. El nombre de este archivo puede va riar segn sea el compilador utilizado. El operador << escribe el argumento que le procede. Supongamos que se desea visualizar una variable entera en la pantalla. En C se utilizara la funcin printf junto con una cadena de formato que describe los parmetros a utilizar en printf. Ejemplo Printf (%d,precio); En C++, los dispositivos de salida no requieren la cadena de formato. El siguiente programa visualiza la cantidad de 12300. #include<iostream.h> Viod main() { Int precio = 12300; Cout<<precio } Pero si queremos la salida con formato en C++ seria de la siguiente forma: #include<iostream.h> Viod main() { Int precio = 12300; Cout<< el precio = <<precio<<\n; } ENTRADA.- La funcin scanf requiere caracteres de formato y operadores de direccionamiento;; y cin no los requiere. Al igual scanf, cin lee el flujo de informacin de entrada hasta que se encuentre el espacio en blanco en cuyo momento se detiene la entrada. Observe que se puede controlar una nueva lnea como un carcter `\n o bien una cadena <<\>>; El operador cin en C++, es una funcin de entrada de informacin o de datos que tambin trabaja con cadenas mas no es recomendable.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

El siguiente programa muestra la diferencia entre scanf() y el cin: #include<iostream.h> #include<studio.h> Viod main() { int x; Flota y; Scanf(%,&y); Printf(x=%d\t y= %f\n,.x,y); Cin>>x>>y; Cout << x=<<x<<\t<<y=<<y<<\n; } 1.5. OPERADORES Los operadores son smbolos que indican los clculos que se deben de realizar sobre una, dos o mas variables o constantes dentro de una expresin. En C++ existen los mismos operadores que en C; a ellos se les han aadido otros operadores propios de C++ la siguiente tabla contiene los operadores de C++ compatibles con C.

OPERADOR () [] . -> ~ -++ & * (tipo) Sixeof * / % + << >> <

FUNCION Llamada A de una funcin Subndice de un Array Punto. Acceso a un miembro de una estructura o unin Flecha. Apunta a un miembro de una estructura o unin Operacin Lgica NOT Complemento a uno Menos Unitario Decrementar en uno Incrementar a uno Obtener una direccin de memoria Obtener la direccin (contenido de) Conversin forzada de tipo (moldes) Obtiene el tamao de una variable o constante Multiplicacin Divisin Modulo (resto de la divisin) Suma Resta Desplazamiento a la izquierda a nivel de bit Desplazamiento a la derecha a nivel de bit Menor que

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

> <= >= == = & ^ l && ll ? =

Mayor que Menor o igual que Mayor o igual que Igual que Diferente que o no igual Operacin lgica de manipulacin de bits: AND Operacin lgica de manipulacin de bits: XOR Operacin lgica de manipulacin de bits: OR Operacin lgica AND Operacin lgica OR Condicional: evaluar dos expresiones Valor de asignacin Separador de variables, constantes y expresiones dentro de funciones, estructuras de control, entradas, salidas, etc. OPERADORES DERIVADOS

C++ contiene un conjunto de operadores derivados de los operadores fundamentales: Operadores derivados de C++ OPERADOR *= /* %= -= += <<= >>= &= ^= = OPERACIN EQUIVALENTE Expresin 1 = expresin 1* expresin 2 Expresin 1 = expresin 1/ expresin 2 Expresin 1 = expresin 1% expresin 2 Expresin 1 = expresin 1 - expresin 2 Expresin 1 = expresin 1 + expresin 2 Expresin 1 = expresin 1<< expresin 2 Expresin 1 = expresin 1>> expresin 2 Expresin 1 = expresin 1& expresin 2 Expresin 1 = expresin 1 ^ expresin 2 Expresin 1 = expresin 1 expresin 2

As por ejemplo, en lugar de escribir l = + 10; se puede escribir += 10; A= a + b; a+=b; l = * j; *=j; l = 3 * l; *=3;

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

OPERADORES SPECIALES DE C++ C++ aade a las listas de operaciones anteriores los siguientes: :: .* Resolucin de mbito (o alcance) Indireccin (eliminacin de referencia directa) un puntero a un miembro de una clase ->* Indireccin (eliminacin de referencia directa) un puntero a un miembro de una clase new Asigna (inicializa) almacenamiento dinmico delete Libera almacenamiento asignado por new

Tambin en C++ existe un orden de prioridad y asociatividad de de operadores el cual es el siguiente. NIVEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 OPERADORES ( ) [ ] - > :: , - + - ++ -- & * sizeof new delete (tipo) .* ->-* */ % +<< >> < <= > >= = = = & ^ l && ll ?: (expresin condicional) =*=-=*=/=%= < <=> >= &=l= , (operador coma) ASOCIATIVIDAD Izquierda derecha Derecha izquierda Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Izquierda derecha Derecha izquierda Derecha - izquierda Izquierda derecha

OPERADORES LOGICOS Estos operadores nos permitirn efectuar operaciones lgicas o booleanas. Las operaciones lgicas bsicas AND (Y) en C++ (&&), OR (O) en C++ (ll) y NOT (NO) en C++ (!=) se muestran en lo que se conoce como tablas de verdad.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Numero 0 1 2 3

p 0 0 1 1

q 0 1 0 1

P&&q 0 0 0 1 Operador AND

Pllq 0 1 1 1 Operador OR

!= p 1 1 0 0 Operador NOT

Donde F es el valor lgico falso (o cero) y V es el verdadero (o uno). De la tabla de verdad de AND se observa que a operacin AND ser verdadera nicamente cuando ambos operando u expresiones A y B sea verdaderos; en cualquier otro caso ser falsa. La operacin OR siempre ser falsa si ambos operadores A y B son falsos en los dems casos ser verdadera. Estas tablas de verdad son nicamente para dos operandos o condiciones. Pero se pueden obtener tablas para ms de dos condiciones aplicando las reglas bsicas de las tablas para ms de dos condiciones aplicando las reglas bsicas de las tablas anteriores. El operador NOT niega el valor de las condiciones de manera que si A es verdadera NOT A es falso y si A es falso Not A es verdadero. Nota: ya sabemos que tanto en las variables como en las constantes lo booleano en verdadera cuando su valor sea diferente de cero en caso contrario es falso.

OPERADORES Los operadores permiten enfocar la bsqueda vinculando trminos de bsqueda y definiendo la relacin entre ellos. La biblioteca-e reconoce los siguientes tipos de operadores.

Operadores booleanos Operadores de posicin Operadores relacionales

Algunos operadores tienen preferencia sobre otros al buscar en e catlogo; ver preferencia de los operadores para ms informacin. Adems, la biblioteca-e no permitir buscar generadores cuando se encuentran al principio o final de una expresin de bsqueda y no estn encerrados entre comillas.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Operadores booleanos Los operadores booleanos (AND, NOT, OR, XOR) localizan registros que contienen los trminos coincidentes en uno de los campos especificados o en todos los campos especificados. Utilizar operadores booleanos para conectar palabras o frases entre ms de un campo de texto, o utilizar operadores booleanos para conectar palabras o frases dentro de un campo de texto.

Utilizar el operador AND para localizar registros que contengan todos los trminos de bsqueda especificados. Por ejemplo, si se busca por "perros AND gatos", la biblioteca-e localiza registros que contengan todos los trminos especificados. Utilizar el operador OR para localizar registros que contengan cualquiera o todos los trminos especificados. Por ejemplo, si se busca por "perros OR gatos", la biblioteca-e localiza registros que contengan el primer trmino o el segundo. Utilizar el operador NOT para localizar registros que contengan el primer trmino de bsqueda pero no el segundo. Por ejemplo, si se busca por "perros NOT gatos", la biblioteca-e localiza registros que contienen el primer trmino pero no el segundo. Utilizar el operador XOR (o exclusivo) para localizar registros que contengan cualquiera de los trminos especificados pero no todos los trminos especificados. Por ejemplo, si se busca por "perros XOR gatos", la biblioteca-e localiza registros que contienen cualquiera de los trminos especificados pero no todos los trminos especificados.

Operadores de posicin Los operadores de posicin (SAME, WITH, NEAR, ADJ) localizan registros en los que los trminos estn en proximidad dentro de mismo registro bibliogrfico. Los operadores posicinales se pueden utilizar para conectar palabras o frases dentro de un campo de bsqueda pero no entre campos de bsqueda.

Utilizar el operador SAME para localizar registros en los que el campo del registro bibliogrfico contiene todos los trminos especificados. Todos los trminos de bsqueda se encuentran dentro del mismo campo, aunque no necesariamente en la misma frase. Por ejemplo, si se busca por "Chicago SAME historia", slo se recuperarn aquellos registros que contengan tanto "Chicago" como "historia" dentro del mismo campo. Utilizar el operador WITH para localizar registros en los que un campo contiene una frase con todos los trminos especificados. Por ejemplo, si se busca por "Chicago WITH historia", slo se recuperarn aquellos registros que contengan tanto "Chicago" como "historia" dentro de la misma frase. Utilizar el operador NEAR para localizar registros en los que un campo contiene todos los trminos de bsqueda juntos; sin embargo, el orden de los trminos no tiene que coincidir con el orden en que se hayan

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

introducido. Por ejemplo, si se busca por "Chicago NEAR historia", slo se recuperarn aquellos registros que contengan "Chicago" e "historia" juntos en el mismo campo. "Chicago" o "historia" pueden aparecer los primeros en el campo.

Utili zar el operador ADJ para localizar registros en los que un campo contiene todos los trminos de bsqueda juntos y en el orden en que se hayan introducido Por ejemplo, si se busca por "Chicago ADJ historia", slo se recuperarn aquellos registros que contengan "Chicago" e "historia" juntos en el mismo campo y con "Chicago" recuperado en primera posicin.

Adems se pueden aadir varios operadores de posicin NEAR y ADJ para limitar o ampliar la proximidad entre palabras. Por ejemplo, "DE ADJ1 AQUI ADJ3 ETERNIDAD" muestra cmo buscar el ttulo "De aqu a la eternidad." ADJ3 significa que las palabras pueden encontrarse dentro de dos palabras buscables, pero que deben estar en el orden en que se introdujeron.

Operadores relacionales Los operadores relacionales (<, >, =, <>, <=, >=) permiten buscar expresiones numricas. Utilizar los operadores relacionales encerrando un campo entre llaves {}, y tecleando un operador relacional y un nmero. Operador < > = <> <= >= Definicin menor que mayor que igual a diferente de menor que o igual a mayor que o igual a

Por ejemplo, si se teclea "{DATE} < 991022", Unicorn busca registros cuyo campo de Fecha contiene valores menores que.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Preferencia de operadores Cuando la expresin de bsqueda consiste en una combinacin de trminos, se puede definir el orden en que se buscan estos trminos. Si dos operadores estn en el mismo nivel en la lista, la biblioteca-e busca primero el trmino a la izquierda, despus hacia la derecha. Ver la siguiente lista para ms informacin sobre la preferencia de operadores, con el principal al principio. = <> < <= > >= NEAR, ADJ WITH SAME AND, NOT XOR, OR Los operadores son los encargados de expresar las relaciones que mantienen entre s los trminos que definen (ms adecuado sera decir que pueden definir) las necesidades informativas del usuario. Pueden distinguirse diferentes tipos de operadores (SALTON y MCGILL, 1983), que se analizan a continuacin. Operadores lgicos (o booleanos) Los operadores lgicos, llamados booleanos en honor a George Boole, precursor de la lgica simblica y del lgebra de conjuntos, son los ms utilizados en numerosos sistemas. El principio que rige la utilizacin de este tipo de operadores es que las relaciones entre conceptos pueden expresarse como relaciones entre conjuntos. Las ecuaciones de bsqueda pueden transformarse en ecuaciones matemticas, que ejecutan operaciones sobre los conjuntos, lo que da como resultado otro conjunto. Los tres operadores bsicos son el operador suma/unin (generalmente identificado como O/OR), el operador producto/interseccin (identificado como Y/AND), y el operador resta/negacin (identificado como NO/NOT). A su vez estos operadores pueden combinarse entre si, generando operaciones ms complejas, como el O exclusivo (elimina la interseccin), etc. No deben obviarse los problemas que plantean los operadores booleanos, independientemente de su potencia. En primer lugar, siempre se plantean en trminos de absoluto (presente/ausente), sin consideran el peso especfico del trmino en el contexto. En segundo lugar, exigen un alto valor de precisin en los trminos utilizados. Por ltimo requieren claridad en la composicin de las expresiones a buscar. Los tres operadores booleano bsicos. .

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Operadores posicinales. La utilizacin de operadores posicinales pretende superar algunas de la limitaciones que ofrecen los operadores booleanos. Toman como punto de partida la consideracin del valor del trmino dentro del contexto, es decir, que la posicin de ese trmino en relacin con otros, o dentro del propio registro, es significativa para valorar su pertinencia a los objetivos buscados. Los operadores posicinales pueden dividirse en dos tipos: . Posicinales absolutos. Son aquellos que permiten buscar un trmino en un lugar dado del documento o registro. Por regla general, son operadores de campo, es decir, permiten al usuario fijar en que campo o campos presentes en la estructura de base de datos debe aparecer el trmino buscado. La presencia del trmino en un campo dado (por ejemplo, en el campo ttulo), puede ser una garanta de la adecuacin del documento a los objetivos, en la mayor parte de las situaciones. Posicinales relativos. Tambin llamados de proximidad, se trata de operadores que permiten establecer la posicin de un trmi no respecto a otro dado. Se considera que la cercana entre los dos trminos puede reflejar una ntima relacin entre los conceptos reflejados por los mismos. Estos operadores permiten definir el nivel de proximidad entre los trminos (mismo campo, lnea, frase, nmero de trminos significativos que los separa...). Operadores de comparacin. Especifican el rango de bsqueda, fijando unos lmites para la misma. Estos lmites pueden ser tanto numricos como alfabticos, correspondiendo los operadores a formas del tipo "mayor que", "menor o igual que". Se utilizan principalmente en documentos que pueden contener datos numricos. Operadores de truncamiento . Pueden darse situaciones en las cuales sea necesario utilizar no un trmino simple, sino tambin sus derivados, fijados por prefijacin o sufijacin, mnimas variantes lxicas, etc. Para facilitar la bsqueda de este tipo se han introducido operadores de truncamiento, a los que tambin se llama mscaras. Se trata de operadores (normalmente smbolos como *, $), cuya presencia puede sustituir a un carcter o a un conjunto de caracteres, situados a la izquierda, dentro o a la derecha del trmino en cuestin. En los actuales sistemas de recuperacin de informacin es posible encontrar todos estos tipos de operadores, que pueden combinarse entre s, permitiendo crear ecuaciones complejas que reflejan con bastante precisin los conceptos y sus relaciones. La combinacin de los operadores debe respetar un conjunto de reglas, bsicas en todos los sistemas, que establecen las prioridades y formas de ejecucin de ecuaciones complejas, cuando stas combinan ms de dos conceptos. En primer lugar, los sistemas tienden a resolver, a ejecutar en primer lugar, aquellas expresiones que se relacionan utilizando el operador
Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

ms restrictivo o prioritario. Por ejemplo, un operador posicional absoluto posee un nivel de restriccin (una prioridad) mayor que un operador booleano, lo que significa que el sistema ejecutar antes la expresin cuyo operador es el posicional absoluto, combinando posteriormente el resultado con el operador booleano y su trmino relacionado. Sin embargo, pueden darse expresiones en las cuales sea necesario variar estas prioridades, y ordenar al sistema que ejecute en primer lugar expresiones con operadores de menor nivel de restriccin, relacionando luego su resultado con trminos a travs de operadores ms restrictivos. Para estas situaciones, se utilizan parntesis, los cuales engloban a las expresiones que deben ejecutarse en primer lugar, independientemente de las prioridades fijadas por el sistema. La utilizacin de expresiones entre parntesis hace posible, por ejemplo, que el resultado de una expresin con un operador booleano pueda ser combinada con un operador posicional absoluto. Adems, los parntesis pueden anidarse, resolvindose las ecuaciones planteadas desde dentro hacia fuera, de la misma forma que las igualdades y polinomios matemticos. 1.6 Tipos de datos Aunque las cuestiones de clasificacin suelen ser un tanto artificiosas, dependiendo de la caracterstica distintiva que se aplique, los tipos de datos C++ pueden clasificarse como sigue:

Tipos bsicos Tambin llamados fundamentales, primitivos y escalares. No tienen "descomposicin", estn predefinidos en el lenguaje. Su lgebra, es decir, las operaciones que les son permitidas, tambin estn preconstruidas en el lenguaje, que dispone as mismo de constructores y destructores por defecto para ellos [3]. Su clasificacin es la siguiente: Asimilables a enteros o Carcter (char) o Entero (int) o Booleano (bool) o Enumeraciones (enum) o Punteros (no tienen una palabra clave especfica, sino un smbolo *, -calificador de tipo-)

Fraccionarios (float, double) Ausencia de dato (void)

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Tipos extendidos: Son "adaptaciones" de detalle sobre los tipos bsicos para mejor adaptarse a necesidades especficas. Largo (long) Corto (short) Con signo (signed) Sin signo (unsigned)

Los enteros y fraccionarios (en todas sus variaciones long, signed, etc) se conocen colectivamente como tipos numricos. Tipos compuesto Aparte de los anteriores, C++ soporta tipos compuestos (tambin denominados tipos-clase). Son compuestos o agregados de tipos bsicos, por esta razn se les denomina tambin tipos agregados o abstractos ADTs ("Abstract data types"). El "material" de que estn compuestos son los tipos bsicos, bien en estado "puro" o en sus diversas "adaptaciones". El proceso es recursivo, de forma que un tipo complejo puede contener miembros que son a su vez tipos complejos y as sucesivamente. Desde el punto de vista semntico la gramtica C++ establece como tipos compuestos ("Compound types") los siguientes: Matrices de objetos de cualquier tipo. Funciones, que aceptan parmetros de ciertos tipos y devuelven void u objetos (o referencias a objetos) de cierto tipo. Punteros a-void; punteros a-objetos, o punteros a-funcin (incluyendo miembros estticos de clases) de un tipo determinado. Punteros a miembros no-estticos de clases (que sealan miembros de un tipo determinado dentro de objetos de una clase determinada. Referencias a objetos o funciones de un tipo determinado. Clases. Uniones. Enumeraciones. En la POO los tipos definidos por el usuario, reciben el nombre genrico de clases, entidades abstractas cuyos miembros son aglomerados de variables de distintos tipos (propiedades) y las funciones (mtodos) que las manejan, inicializan y destruyen. Esta capacidad de crear nuevos tipos de datos de cualquier nivel de complejidad y sus operaciones, es precisamente una de las caractersticas de la POO y se considera uno de los mayores avances en la tecnologa de los lenguajes de computacin. Nota: Existen dos mecanismos para generar este proceso recursivo (crear nuevos tipos complejos a partir de otros): la composicin y la herencia; ambos son analizados en detalle al tratar de las clases.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Aunque desde el punto de vista de su Rvalue los punteros son asimilables a enteros (alojan direcciones de memoria), la gramtica del lenguaje los distingue segn el tipo de objeto al que apuntan, por lo que puede considerarse que constituyen un tipo con mltiples subtipos: Punteros-a-int; punteros-a-char; punteros-a-void; punteros-a-clase; punteros-a-funcin, Etc. Virtualmente existen tantas clases de punteros como tipos de objetos puedan ser sealados. Tipos incompletos Existen ocasiones en las que el lenguaje permite la declaracin incompleta de tipos; entidades de las que el compilador no tiene por el momento toda la informacin que sera necesaria para una utilizacin normal, pero que a ciertos efectos puede ser suficiente. Son los llamados tipos incompletos. Su principal caracterstica es que tanto su tamao como el patrn de bits correspondiente son desconocidos para el compilador. Tipos calificados Los tipos bsicos y complejos descritos anteriormente se denominan conjuntamente tipos no-calificados. La razn de esta denominacin es que, en C++ existen ciertos especificadores (denominados calificadores) que al ser aplicados a un tipo, produce un tipo nuevo (tipo calificado) con propiedades y reglas de operacin distintas del primitivo, pero con una representacin interna exactamente igual a la del tipo no-calificado. Estos cualificadores son las palabras-clave const, volatile y const volatile . Podemos suponer que la aplicacin de estos calificadores supone la existencia de una especie de universo paralelo, en el que para cada tipo no-calificado puede existir la correspondiente versin const, volatile, o const volatile . Aunque la descripcin de cada uno de estas palabras-clave se realiza en el apartado correspondiente, tienen ciertas caractersticas de actuacin comunes: Un tipo complejo (por ejemplo una estructura) no se considera un tipo cualificado porque algunos de sus miembros lo sean. La calificacin de un tipo complejo implica que todas sus propiedades tienen la misma calificacin salvo que sean estticas o tengan un calificador especfico. Un calificador aplicado a una matriz no altera el tipo de la matriz en s misma, sino al tipo de sus miembros. Recordar que C++ dispone de un sistema que permite obtener el tipo de una entidad en tiempo de ejecucin (mecanismo RTTI). Sin embargo, este mecanismo no permite obtener la "calificacin" en su caso, del objeto. Para ciertas cuestiones la transformacin de un tipo calificado en no calificado, y viceversa, es realizada automticamente por el compilador en lo que se denominan conversiones triviales.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

1.7. PALABRAS RESERVADAS. Las palabras reservadas son aquellas que son utilizadas en programacin por cualquiera de estos compiladores y que no podrn ser utilizadas como identificadores. Las palabras reservadas o claves no deben utilizarse como identificadores, debido a su significado estricto en c++; tampoco se deben definir. Palabras reservadas de c++. Asm Auto Break Case unsigned catch Char Class Const continue default delete do double else enum extern float for friend new operator private goto public register return short signed sizeof static protected switch template this throw try typedef union struct virtual void volatile while

if inline int long

Palabras reservadas de turbo/Borland c++.

Ams Auto Break Case Catch _cdec1 cdec1 char class const continue _cs default delete do _double

_ds else enum _es _export extern _far far float for friend goto huge if inline int

interrup _loadds long _near near new operator pascal pascal private protected public register return _saveregs _seg

short signed sizeof _ss static struct switch template this typedet union unsigned virtual void volatile while

Palabras reservadas de Microsoft visual c/c++1.5/2.0 _asm auto based break case _cdec1 char else anum _except _export extern _far _fastcall int _interrupt _leave _loadds long maked _near signed sizeof static _stcall struct switch thread

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

const continue _declspec default dilexport dllimportr do double

_finally float for _fortran goto _huge if _inline

_pascal register return _saveregs _self _segment _segname short

_try typedef union unsigned void volatile while

Nuevas palabras reservadas de ANSI C++.

Bool cons_cast dynamic_cast

false mutable namespace

reinterpret_cast static_cast true

typeid using wchar_t

Palabra reservadas y su significado . Palabra reservada Abrir Abs() Aleatorio() Algoritmo Arctan Archivo_d Archivo_i Archivo_s Array Borrar Cad() Cadena Car() Carcter Clave_p Clave_s Codigo() Conjunto Const Cos() Crear() Cuadrado() De Decremento Desde Devolver Div ent()
Apuntes del: Ing. Jorge Eloy Toledo Coronel

significado open abs random program atm definicion de archivos directos definicion de indexados definicion de archivos secuenciales array delete str string chr char clave primaria de archivos indexados clave secundaria de archivos indexado asc set const cos inicializa un archivo sqr of decremento para bucles desde for retarn div int

Programacin I

entero entonces eqv es escribir falso fda

integer then eqv is write false eof 1.8. EXPRESIONES

Los operadores, las constantes y las variables son los constituyentes de las expresiones. Una expresin en C es cualquier combinacin Vlida de esos elementos. Como la mayora de las expresiones tienden a seguir las reglas generales del lgebra, a menudo se dan por sabidas. Sin embargo, existen unos pocos aspectos de las expresiones relativos especficamente al lenguaje C. Conversiones de tipos en las expresiones:

Cuando en una expresin se mezclan constantes y variables de distintos tipos, se convierten a un tipo nico. El compilador de C convierte todos los operandos al tipo de mayor operando. Esto se hace operacin a operacin, tal como se describen las siguientes reglas de conversin de tipos:

1. Cualquier char y short int es converitdo a int. Cualquier float es convertido a double.

2. Para todos los pares de operandos, si uno de los operandos es long double, el otro operando se convierte a long double.

Si no, si un operando es double, entonces el otro se convierte a double. Si no, si un operando es long, entonces el otro se convierte a long. Si no, si un operando es unsigned, entonces el otro se convierte a unsigned. Moldes.

Es posible forzar a que una expresin sea de un tipo determinado utilizando una construccin denominada molde. La forma general de un molde es: (tipo) expresin por ejemplo: int x=5; float y; y = (float) x/2; En este ejemplo se divide a x entre dos devolviendo un valor de tipo float.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Espaciado y parntesis. Para dar mayor legibilidad, se pueden aadir tabulaciones y espacios a discrecin en una expresin de Turbo C. Por ejemplo: x=10/y~(127/x); x = 10 / y ~(127/x); Esto hace que sea ms comprencible para el programador.

1.8. EXPRESIONES Una expresin aritmtica representa un clculo a realizar con valores. Para ello se combinan operandos y operadores. Si no se utilizan parntesis, el orden en que se realizan las operaciones es el siguiente: 1 Operadores multiplicativos: *, /, DIV, y MOD 2 Operadores aditivos: + y 3 Operadores relacionales: <, >, <=, >=, ==, != 4 OperaSi aparece ms de un operador del mismo nivel, las operaciones se realizan de izquierda a derecha. 4*30+5 334 + 6 == 4 *5 -5*10 > 3 ((5+10)*4)+5 En caso de duda, es mejor utilizar los parntesis.dores lgicos: Y, O, NO

9.-ESTRUCTURAS DE CONTROL 9.1.- ESTRUCTURA DE ASIGNACION 9.2.- ESTRUCTURA DE SELECCION Las sentencias de seleccin tambin se les conocen como sentencia condicional, entre las que se incluyen if y switch. Muchas sentencias de C y C++ se basan en una prueba condicional que determina una accin que se ha de llevar acabo. Una expresin condicional y tiene como resultado un valor cierto o falso. En C o en C++ cualquier valor distinto de cero es verdadero, incluyendo nmeros negativos. El 0 es el nico valor falso.

SELECCIN SIMPLE:
Pseudo cdigo Inicio Accin Si (condicin) entonces Accin Apuntes del: Ing. Jorge Eloy Toledo Coronel {

Sintaxis

if (condicin){ accin

Programacin I Accin Accin Accin x Accin Fin si Fin accin accin accin x } }

Si al evaluar la expresin, esta es verdadera se ejecutan las sentencias del bloque (un bloque empieza con { y termina }), en caso contrario se ejecutan las sentencias a continuacin del bloque la clusula else se puede aadir a la sentencia if cuando la expresin es falsa y se desean ejecutar sentencias distintas.

SELECCIN MULTIPLE:

Pseudo cdigo Inicio Accin Si (condicin) entonces Accin {

Sintaxis

if (condicin){ accin

Accin Accin Accin x Si no Accin Fin si Fin

accin accin accin x } else { accin accin } }

Otra sentencia de control de seleccin es la estructura switch (condicin) que permite evaluar una expresin y tomar diversas acciones en funcin del resultado de la expresin. Pseudo cdigo Inicio Accin Segn (condicin) En caso 1 accin En caso 2 accin En caso a accin { accin switch (condicin) { case 1: accin Break; case 2: accin Break; case a: accion Break; default: Sintaxis

Otros
Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Accin Fin segn Fin

accion } }

Las siguientes reglas se aplican en el eso de la sente ncia switch (). Expresin entera. Puede ser una constante, una variable, una llamada a una funcin o una expresin. La sentencia switch () no funcionara con datos de tipo flotante. El valor despus de cada etiqueta case debe ser una constante entera o de tipo carcter, como 3 o b o bien una expresin que se evalu a una constante como a + 32. Se necesita utilizar una sentencia Irak; despus de cada conjunto de sentencias ejecutables. Las sentencias break hace que la ejecucin del programa se reanude despus del final de la sentencia switch actual. Si no se utiliza las sentencias break; la ejecucin del programa se reanudara en las siguientes etiquetas case. El conjunto de sentencias Case no necesita ser encerrada entre llaves. Si ninguno de los valores de constante_1, constante_2, etc. Coincide con el valor de expresin_entera, se ejecutaran las sentencias que viven a continuacin de las sentencias opcional default. 9.3.-ESTRUCTURA DE ITERACION Entre las sentencias de iteracin se incluyen for while y do while. Cualquier sentencia de iteracin tiene tres partes importantes que son: inicializacin, condicin e incremento, aunque casa sentencia de iteracin debe usarse preferentemente segn la situacin en la mayora de los casos se puede adaptar cualquiera de las tres a cualquier situacin. For Cuando se desea ejecutar una sentencia simple o compuesta, repetitivamente un numero de veces conocido, la construccin adecuada es la sentencia for. Sintaxis: For (var=vinicial; var<vfinal; var++) { Accin Accin } Cuando se encuentra la instruccin for se ejecuta primero la expresin de inicializacin, no volvindose a ejecutarse ms. Generalmente esta instruccin realizara la inicializacin de la variable de control del ciclo. Tras esto se prueba la condicin. Siempre que la condicin se evalu como verdadera la instruccin o instrucciones dentro del ciclo son ejecutadas. Despus de entrar en el ciclo y ejecutar todas las instrucciones dentro de este se ejecuta la expresin incremento. Sin embargo si la condicin toma el valor falso, las instrucciones dentro del ciclo son ignoradas y la ejecucin continua con la instruccin final del ciclo.

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programacin I

Cuando se necesitan ejecutar varias instrucciones dentro del ciclo se hacen necesarias definir el bloque con llaves {}. While La sentencia while es el ciclo de verificacin preeliminar, esto significa que la condicin es evaluada antes de entrar a ejecutar las instrucciones dentro del cuerpo del ciclo. Debido a esto se pueden ejecutar de cero a muchas veces. Sintaxis: While (condicin) { instruccin_1 instruccin_2 }

La inicializacin de un ciclo while por lo regular se realiza antes de ella el incremento dentro del bloque. Do while Difiere tanto del for como del while en que es un ciclo de verificacin posterior, es decir, al ciclo se entra al menos una vez, y la condicin del ciclo se prueba al cabo de la primera vez, es mejor utilizarlos en aquellas aplicaciones en las que se requiere entrar al ciclo. Sintaxis: { Do { Instruccin_1 Instruccin_2 } While (condicin); }

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Potrebbero piacerti anche