Compilador: Es un programa que traduce los programas fuentes escritos en lenguaje de alto nivel (C,
C++) al lenguaje maquina
Sentencia o instruccin: Es una orden que se le da a la computadora a travs de un programa, para que ejecute determinada accin. Programa: Conjunto de instrucciones que indican a la computadora las tareas o acciones a realizar. os arc!ivos (Programas) generados por C++ tienen la e"tensin *.CPP (de C #lus #lus), $ en el lenguaje C standard tienen la e"tensin *.C. #ero en am%os casos se trata de archivos de texto, tam%in llamados archivos fuente. Esta distincin es mu$ importante, pues determina cual de los dos compiladores se va a utilizar $a sea C++ o C standard. a utilizacin de nom%res incorrectos en los arc!ivos puede dar lugar a errores durante el proceso de compilacin. os programas escritos en C++ en lenguaje de alto nivel (&nstrucciones parecidas al lenguaje !umano espec'ficamente al idioma ingls) se llaman programas fuente, $ por la forma como se escri%en esas instrucciones se le conoce como cdigo fuente $ el programa traducido programa objeto o cdigo objeto. Compilacin es el proceso de traduccin de programa fuente a programa o%jeto Depuracin es el proceso de detectar $ corregir errores en los programas Tipos de errores Errores de sintaxis: (on aquellos que se producen cuando el programa viola la sinta"is, es decir, las reglas de gram)tica del lenguaje. *lgunos errores t'picos de sinta"is son: #oner punto $ coma despus del nom%re de la funcin main() Escritura incorrecta de pala%ras reservadas +misin de punto $ coma al final de una instruccin +mitir la do%le diagonal normal antes de un comentario +lvido de comillas al cerrar una cadena. Etc. os errores de sinta"is son los mas f)ciles de corregir, $a que son detectados $ aislados por el compilador. Errores lgicos: (on errores en la lgica del programador es decir en la forma incorrecta de estructurar las formulas $ c)lculos en el dise,o del algoritmo de solucin del pro%lema. En pala%ras m)s sencillas es un mal planteamiento de la solucin del pro%lema. os errores lgicos son m)s dif'ciles de detectar $ aislar, $a que no los detecta el compilador. El compilador no produce ning-n mensaje de error de sinta"is, $a que no se !a violado ninguna regla de sinta"is $ por lo tanto el compilador no detecta error $ el programa se compilar) $ ejecutar) %ien, aunque producir) resultados de valores incorrectos, $a que la frmula utilizada para calcular el resultado contiene un error lgico. En la forma ms general los datos se clasifican en dos tipos: .-meros Cadenas de caracteres #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 2 Cadena de caracteres (Cadenas): Es una secuencia de uno o m)s caracteres que pueden incluir n-meros, letras $ s'm%olos. Con los n-meros contenidos en las cadenas de caracteres no se pueden realizar operaciones aritmticas. !meros: (on todos los n-meros positivos $ negativos tanto n-meros enteros como n-meros reales, con este tipo de datos si se puede realizar operaciones aritmticas. (En lo su%siguiente se ver) la clasificacin de estos en C++) Constante: Es una zona de memoria de la computadora en la que se almacena un tipo de dato (n-meros o caracteres) $ cu$o contenido no cam%ia $ ni se puede cam%iar durante la ejecucin del programa. "aria#le: Es una zona o localidad en la memoria de la computadora en la que se va almacenar un valor de cierto tipo de dato (n!meros o cadenas) $ su contenido puede ir variando o modificando durante la ejecucin del programa. 3oda varia%le de%e tener un nom#re o tam%in llamado identificador que el programador proporciona $ tam%in de%e tener especificado el tipo de dato (n-meros o cadenas) que va contener o almacenar $ que tam%in es proporcionado por el programador 4na varia%le no puede almacenar al mismo tiempo $ en la misma seccin del programa am%os tipos de datos (numricos $ cadenas), solo uno de ellos. $dentificadores (nom#res): 3am%in conocidos como nom#res $ consisten en una secuencia de letras, d'gitos $ su%ra$ados (guiones %ajos) que se utilizan para nom%rar los distintos elementos que se utilizan en c++ tales como: .om%res de varia%le, nom%res de constantes, nom%res de funciones (su%programas) ela%oradas por el usuario, clases. %eglas para creacin de identificadores 2. El primer car)cter de%e ser una letra o un su%ra$ado (5uin %ajo) aunque comenzar por su%ra$ado se suele reservar para identificadores de funciones especiales del sistema. 6. 7nicamente se pueden utilizar en la formacin de identificadores letras del alfa%eto ingls ma$-sculas $ min-sculas (no se admiten ni la letras &' (' ni los acentos en vocales ' !' )' ' *' ni las diresis +), d)gitos del 8 al 9 $ guin #a,o. :. ;'gitos o su%ra$ados pueden seguir a la letra o su%ra$ado inicial. <. os espacios en #lanco no est)n permitidos. 4tilice el su%ra$ado para separar las pala%ras en un nom%re que consiste en varias pala%ras o utilice ma$-sculas para una o m)s de las pala%ras que conforman el nom%re (suponiendo que no e"iste ninguna separacin entre las pala%ras). #ero cuando sean varias pala%ras formando el identificador nunca se de%en separar por espacios en %lanco. =. .o se de%e utilizar como identificador ninguna pala#ra cla-e o tam%in llamada pala#ra reser-ada (las pala#ras reser-adas son nom%res preesta%lecidos de ciertas funciones o instrucciones que realizan una tarea espec'fica en C++) >. El nom%re de un identificador puede ser de cualquier tama,o pero solo son significativos los primeros :6 caracteres(es decir que para el nom%re solo se toman en cuenta los :6 primeros). ?. C++ es sensi%le a ma$-sculas $ min-sculas, es decir !ace distincin entre los identificadores escritos con ma$-sculas $ los escritos en min-sculas. #or ejemplo .rea es distinto de area, a-n cuando al parecer tengan el mismo nom%re, para C++ son distintas porque el nom%re del primer identificador empieza con ma$-scula $ el segundo identificador en min-scula. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 6 Pala#ras reser-adas (e llaman as' las pala%ras que en C++ tienen un significado concreto para los compiladores. .o se pueden por tanto usar esas pala%ras para poner nom%re a varia%les, constantes, funciones o clases definidas por el programador. a lista de pala%ras reservadas proceden tanto del C, como del C++ pala%ras procedentes del lenguaje C (afectan tam%in al C++) Pala#ras procedentes del lengua,e C (afectan tam#i*n al C++) auto dou%le int struct %rea@ else long sAitc! case enum register t$pedef c!ar e"tern return union const float s!ort unsigned continue for signed void default goto sizeof volatile do if static A!ile Pala#ras reser-adas propias slo del lengua,e C++ asm %ool catc! class constB cast delete d$namicBcast e"plicit false friend inline muta%le namespace neA operator private protected pu%lic reinterpretBcast staticBcast template t!is t!roA true tr$ t$peid t$pename using virtual c!arBt #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es : EST%/CT/%. 0EE%.1 DE / P%20%.3. E C++ Directi-as del procesador 4 #i#liotecas CincludeDstdio.!E CincludeDiostream.!E Declaracin de -aria#les glo#ales 4 funciones int %aseF float volumen, perimetro, areaF 5uncin principal main() main() G ;eclaracin de varia%les locales. &nstrucciones de la funcin principal. H 2tras funciones (su#programas) Iuncion2( . . . ) G . . . H Iuncion6( . . . ) G . . . H Iuncion.( . . . ) G . . . H #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es < D$%ECT$".S DE1 P%2CES.D2% 6 7$71$2TEC.S Directi-as del procesador: (on instrucciones al compilador antes de que se compile el programa principal. as dos directivas mas usuales son: 8include $ 8define9 3odas las directivas empiezan con el signo de numeral (C) a veces conocido como gato, que indica al compilador que lea las directivas antes de compilar la parte principal del programa. as directivas pueden definir macros, constantes, arc!ivos fuente adicionales, etc. #ero su uso m)s frecuente en C++ es la inclusin de arc!ivos de ca%ecera. .rc:i-os de ca#ecera: 3am%in son llamados #i#lioteca de funciones $ en otras ocasiones como li#rer)as. (on arc!ivos fuente con e"tensin *9: $ contienen cdigo de una coleccin de funciones (instrucciones previamente programadas $ listas para usarse en los programas) que realizan tareas especificas, como visualizar informacin en la pantalla, calcular la ra'z cuadrada de un n-mero, esta%lecer color a un te"to, etc. En otras pala%ras las li%rer'as contienen funciones que se van a utilizar dentro de los programas. #ara poder utilizar las funciones almacenadas dentro de las li%rer'as, un programa de%e utilizar la directiva 8include para insertar el arc!ivo de ca%ecera correspondiente. #or ejemplo, si un programa necesita utilizar la funcin po;(x'4) que sirve para elevar un n-mero x a la potencia 4, esta funcin se encuentra dentro de la li%rer'a mat:9:, as' que, para que el programa pueda usar esta funcin de%e contener la directiva: 8include<mat:9:= os signos de < $ = se utilizan para indicarle al compilador que el arc!ivo mat:9: es un arc!ivo de %i%lioteca. 3odas las li%rer'as que se inclu$an en el programa sus nom%res de%er)n ir entre estos dos signos de < $ =. *s' por ejemplo: 8include<mat:9:= 8include<stdio9:= 8include<iostream9:= 8include<string9:= Etc>9 #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es = DEC1.%.C$? DE ".%$.71ES 0127.1ES /na -aria#le antes de utili@arse de#e de ser declarada Declaracin de -aria#le: Es una sentencia por medio de la cual se crea una varia%le. En esa sentencia se de%e de especificar un nom#re para la varia%le $ el tipo de dato que va a almacenar. *l crear o declarar una varia%le se reserva un espacio de almacenamiento en memoria. a forma de declarar una varia%le tiene la siguiente sintaxis: TipoAdeAdatoABueA-aAaAalmacenar om#reAdeAlaA-aria#leC T$P2S DE D.T2S os tipos de datos, son el tipo de informacin que se puede almacenar en las varia%les declaradas T$P2 237%E T.3.(2 %.02 Caracter o cadena unsigned c!ar c!ar J %its J %its 8 a 6== K26J a 26? !meros enteros enum unsigned int s!ort int int unsigned long long 2> %its 2> %its 2> %its 2> %its :6 %its :6 %its K:6,?>J a :6,?>? 8 a >=,=:= K:6,?>J a :6,?>? K:6,?>J a :6,?>? 8 a <,69<,9>?,69= K6,2<?,<J:,><J a 6,2<?,<J:,><? !meros de punto flotante o reales float dou%le long dou%le :6 %its >< %its J8 %its :.< L (28 K:J ) a :.< L (28 :J ) 2.? L (28 K:8J ) a 2.? L (28 :8J ) :.< L (28 K<9:6 ) a 2.2 L (28 <9:6 ) E,emplos float #aseC float alturaC float area' per)metroC int /na -aria#le puede declararse en dos lugares dentro de un programa: *l principio de un arc!ivo o de un %loque de cdigo. En el punto de utilizacin. ;e acuerdo al alcance de una -aria#le se puede declarar de tipo glo#al o de tipo local (entindase por alcance de una -aria#le determinar la zona dentro del programa en la cual puede ser utilizada $ la zona dentro del mismo programa donde no puede utilizarse). "aria#les locales: (on aquellas definidas dentro de una funcin (su#programa) $ son visi%les o utiliza%les slo dentro de esa funcin espec'fica. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es > %eglas por las cuales se rigen las -aria#les locales: 2. 4na varia%le local declarada dentro de una funcin no puede ser modificada por ninguna sentencia que este fuera de la funcin. 6. ;os o m)s funciones pueden declarar varia%les locales e"actamente con el mismo nom%re, porque cada varia%le ser) distinta una de otra $ solo ser)n utilizadas en la funcin donde fueron declaradas. :. as varia%les locales de cada funcin no e"isten en memoria !asta que se ejecuta la funcin !asta entonces son creadas. o que permite el a!orro de memoria. M cuando se termina de ejecutar la funcin las varia%les locales dejan de e"istir, desaparecen li%erando la memoria. "aria#les glo#ales: (on varia%les que se declaran fuera de las funciones inclu$endo la funcin principal main(), $ por consiguiente esas varia%les podr)n ser usadas por cualquier funcin inclu$endo la principal. .ormalmente estas varia%les se declaran despus de las directivas de la inclusin de li%rer'as en la estructura general del programa. 3odas las varia%les locales desaparecen cuando termina su %loque o funcin (su%programa), una varia%le glo%al permanece !asta que se termina todo el programa. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es ? ET%.D.DS.1$D. * diferencia de otros lenguajes, C *.(& (E(3N.;*O) no dispone de sentencias de entrada/salida. En su lugar se utilizan funciones contenidas en la li%rer'a est)ndar $ que forman parte integrante del lenguaje. as funciones de entrada/salida (&nput/+utput) son un conjunto de funciones, incluidas con el compilador, que permiten a un programa reci%ir $ enviar datos. Es decir introducen flujos de datos est)ndar de entrada $ e"traen flujos de datos est)ndar de salida. os flujos son secuencias de caracteres organizadas en l'neas. #ara su utilizacin es necesario incluir, al comienzo del programa, el arc!ivo stdio.! en el que est) contenida esta instruccin: 8include <stdio9:= donde stdio proviene de standardKinputKoutput. S.1$D. 5/C$? printf() a funcin printf() imprime en el monitor el te"to, las constantes $/o varia%les que se indiquen. a forma general de esta funcin se puede estudiar viendo su prototipo: printf(EcadenaAdeAcontrolE' argF' tipo argG' 999) a funcin printf() imprime el te"to contenido en cadenaAdeAcontrolAdeAformato junto con el valor de los otros argumentos, de acuerdo con los formatos especificados a travs de los especificadores de conversin incluidos en cadena_de_control_de_formato. os puntos suspensivos (...) indican que puede !a%er un n-mero varia%le de argumentos. as siguientes sinta"is muestran algunas formas generales de cmo podr'a utilizarse la funcin: #ara imprimir un simple te"to como mensaje: printf(E7uenas tardes' #ien-enido a la programacin #sica en c++>99E)C #ara imprimir un mensaje $ el contenido de una varia%le: printf(EEl monto total de su compra es: HdE' -aria#le)C #ara imprimir varios mensajes $ varias varia%les: printf(EEl rea del rectngulo es: Hd 4 el per)metro es: HfE' area ' perimetro)C ;onde los caracteres Hd forman especificaciones de conversin, es decir indican al compilador que en esa posicin del te"to se va a imprimir o insertar el contenido de una varia%le que contiene datos numricos del tipo enteros, $ Hf &ndican al compilador que en esa posicin en el te"to se va a insertar el contenido de una varia%le que almacena datos numricos del tipo float (#unto flotante o con punto decimal). * la letras que siguen al s'm%olo de H (d'f'o'u'999) se le conoce como especificadores de conversin. os especificadores de conversin se de%en de utilizar en los programas de acuerdo al tipo de varia%le que se valla a imprimir. ;espus de que se cierran las comillas que encierran al mensaje junto con los especificadores, se de%en colocar los nom%res de las varia%les a imprimir en el orden como van apareciendo los especificadores de conversin dentro de la cadena de control, separadas por comas. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es J Considrese el ejemplo siguiente: int iF dou%le tiempoF float masaF printf(E%esultado !mero: Hd En el instante: Hlf 1a masa -ale: Hf E' i' tiempo' masa)C (e imprimen tres varia%les (i' tiempo $ masa) con los formatos (Hd, Hlf $ Hf ), correspondientes a los tipos (int, dou#le $ float), respectivamente. a cadena de control se imprime con el valor de cada varia%le intercalado en el lugar del formato correspondiente (especificadores de conversin). 3a%la de Caracteres de conversin para la funcin printf(). ENTEROS Especificador Descripcin Ejemplos d, i Despliega un entero decimal con signo printf(%d ,4!" 4 printf(%i ,4!" 4 printf(%d ,#4!" #4 printf(%$d ,%&'''!" %&''' printf(%ld ,&'''''''''!" &''''''''' printf(%o ,4!" ('( printf(%u ,4!" 4 printf(%u ,#4!" )'*+ printf(%, ,4!" +c( printf(%- ,4!" +.( o /uestra un entero octal sin signo u /uestra un entero decimal sin signo , , - /uestran un entero $e,adecimal no signado0 , /uestra los digitos '#1 2 las letras a#f0 - muestra los digitos '#1 2 las letras 3#40 $, l (letra! Se coloca antes de cual5uier especificador de con6ersin de enteros para indicar 5ue se muestra un entero s$ort, o 7ien long respeti6amente 89NTO 4:OT3NTE (DE.;/3:ES O RE3:ES! Especificador Descripcin Ejemplos e , E /uestra un 6alor en punto flotante en notacin e,ponencial printf(%e ,+&%4)(0*1!" +0&%4)*e<') printf(%e ,#+&%4)(0*1!" +0&%4)*e<') printf(%E ,+&%4)(0*1!" +0&%4)*e<') printf(%f ,+&%4)(0*1!" +0&%4)(0*1'''' printf(%g ,+&%4)(0*1!" +0&%4)(e<') printf(%= ,+&%4)(0*1!" +0&%4)(e<') f /uestra 6alores en punto flotante g , = Despliega un 6alor en punto flotante, 2a sea en forma de punto flotante f, o en la forma e,ponencial e, E : Se coloca antes de cual5uier especificador de con6ersin de punto flotante, para indicar 5ue est> mostrando un 6alor de punto flotante long dou7l? #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 9 .3R@.TER A .3DEN3S Especificador Descripcin Ejemplos c ;mprime el un car>cter c$ar caracterBC3C" c$ar cadenaD EBFEsto es una cadenaF" printf(%cF,caracter!" 3 printf(%sF,cadena!" Esto es una cadena ;mprime una cadena o importante es considerar que de%e !a%er correspondencia uno a uno (el 2P con el 2P, el 6P con el 6P, etc.) entre los formatos que aparecen en la cadenaAdeAcontrol $ los otros argumentos (constantes, varia%les o e"presiones). * continuacin se inclu$en algunos ejemplos de uso de la funcin printf(). El primer ejemplo contiene slo te"to, por lo que %asta con considerar la cadenaBdeBcontrol. printf(ECon cien ca&ones por #anda'In-iento en popa a toda -elaE)C El resultado ser): la cadenaBdeBcontrol se divide en dos l'neas con caracteres intro, por lo que en este ejemplo se usan secuencias de escape In. 3odos los caracteres que se encuentren despus de In se imprimir)n en un nuevo rengln, no importando si despus de In e"ista un espacio en %lanco o alg-n otro car)cter. El resultado de la instruccin prinf() anterior ser'a: Con cien ca&ones por #anda' -iento en popa a toda -ela E,emplo G printf(E7uenas tardes' In #ien-enido a la clase de c++'In:iciste una #uena eleccinE)C a salida ser'a: 7uenas tardes' #ien-enido a la clase de c++' :iciste una #uena eleccinE)C .ote que el segundo rengln se imprime con una especie de sangr'a, esto de%ido los espacios en %lanco que que se encuentran entre In $ la pala%ra #ien-enido9 2T.: *-n cuando la secuencia de escape In $ la pala%ra :iciste se encuentran juntas $ no e"iste espacio de separacin entre ellas, no afecta en nada a la instruccin printf() ni a la cadena de te"to. a funcin printf() tiene un valor de retorno de tipo int, que representa el n-mero de caracteres escritos en esa llamada. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 28 5/C$? cout<< (funcin exclusi-a de c++) a instruccin coutDD se utiliza para desplegar informacin en la pantalla. Esta funcin puede desplegar o visualizar en pantalla mensajes de te"to $ contenido de varia%les. (e de%e escri%ir la pala%ra cout en min-sculas o%ligatoriamente seguida de do%le signo de menor que (coutDD) $ a continuacin lo que se desea imprimir en pantalla. En las siguientes sinta"is se presentan las distintas maneras como se puede utilizar esta funcin: cout<<J3ensa,e de texto>99JC cout<<"aria#leC cout<<J3ensa,e>J<<"aria#leC cout<<J3ensa,e>J<<"aria#leF<<J3ensa,e G>9J<<"aria#leGC cout<<"aria#leF<<J3ensa,e>J<<-aria#leG<<J3ensa,e>J<<-aria#leK<<-arai#leC (i o%serva, a partir de la tercera sinta"is, notar) que si se desea imprimir mensajes de te"to $ varia%les al mismo tiempo, los 0ensajes de%er)n ir entre comillas $ se separan de las varia%les por do%le signo de menor que (DD), note tam%in que las varia%les no se colocan entre comillas. Ejemplos float *rea, 1ase, *lturaF 1aseQ=F *lturaQ6=F *reaQ1aseL*ltura/6F cout<<E7ien-enidos a la programacin en c++>99EC cout<<.reaC cout<<EEl rea del tringulo es: E<<.reaC cout<<E1a #ase es de: E<<7ase<<E1a altura es de: E<<.ltura<<E6 el rea: E<<.reaC cout<<7ase<<J es la #ase' J<<.ltura<<J de altura 4 el rea es de: J<<.reaC cout<<JEl areas es: J<<7ase+.lturaC En el -ltimo ejemplo, muestra como se pueden realizar operaciones aritmticas con la instruccin coutDD $ mostrar los resultado. #ero no se puede realizar operaciones de asignacin. cout<<ECon cien ca&ones por #anda'In-iento en popa a toda -elaEC El resultado ser): el mensaje se divide en dos l'neas con caracteres intro, por lo que en este ejemplo se usan secuencias de escape In. 3odos los caracteres que se encuentren despus de In se imprimir)n en un nuevo rengln, no importando si despus de In e"ista un espacio en %lanco o alg-n otro car)cter. El resultado de la instruccin coutDD anterior ser'a: Con cien ca&ones por #anda' -iento en popa a toda -ela cout<<E7uenas tardes' In #ien-enido a la clase de c++'In:iciste una #uena eleccinEC a salida ser'a: 7uenas tardes' #ien-enido a la clase de c++' :iciste una #uena eleccinE)C .ote que el segundo rengln se imprime con una especie de sangr'a, esto de%ido los espacios en %lanco que que se encuentran entre In $ la pala%ra #ien-enido9 2T.: *-n cuando la secuencia de escape In $ la pala%ra :iciste se encuentran juntas $ no e"iste espacio de separacin entre ellas, no afecta en nada a la instruccin cout<< ni a la cadena de te"to. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 22 ET%.D. 5/C$? scanf() a funcin scanf() es an)loga en muc!os aspectos a printf(), $ se utiliza para leer datos de la entrada est)ndar (que por defecto es el teclado). a forma general de esta funcin es la siguiente: scanf(EHxFHxG999E' LargF' LargG' 999)C donde xF' xG, ... son los caracteres de conversin, mostrados en la 3a%la de a%ajo, que representan los formatos con los que se espera encontrar los datos. En la funcin scanf() los argumentos que siguen a la cadenaBdeBcontrol de%en ser pasados por referencia, $a que la funcin los lee $ tiene que trasmitirlos al programa que la !a llamado. #ara ello, dic!os argumentos de%en estar constituidos por las direcciones de las varia%les en las que !a$ que depositar los datos, $ no por las propias varia%les. 4na e"cepcin son las cadenas de caracteres, cu$o nom%re es $a de por s' una direccin (un puntero), $ por tanto no de%e ir precedido por el operador (R) en la llamada. Caracteres de conversin para la funcin scanf(). carcter caracteres ledos argumento c cual5uier car>cter c$ar G d, i entero decimal con signo int G u entero decimal sin signo unsigned int o entero octal unsigned int ,, - entero $e,adecimal unsigned int e, E, f, g, = nHmero de punto flotante float s cadena de caracteres sin I I c$ar $, l para s$ort, long 2 dou7le : modificador para long dou7le #or ejemplo, para leer los valores de dos varia%les int $ dou%le $ de una cadena de caracteres, se utilizar'an la sentencia: int nC dou#le distanciaC c:ar nom#reMGNOC scanf(EHdHlfHsE' Ln' Ldistancia' nom#re)C en la que se esta%lece una correspondencia entre n $ Sd, entre distancia $ Slf, $ entre nom%re $ Ss. +%srvese que nom%re no va precedido por el operador (R). a lectura de cadenas de caracteres se detiene en cuanto se encuentra un espacio en %lanco, por lo que para leer una l'nea completa con varias pala%ras !a$ que utilizar otras tcnicas diferentes. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 26 En los formatos de la cadena de control de scanf() pueden introducirse corc!etes T...U, que se utilizan como sigue. a sentencia: scanf(EHM.7 InItOE' s)C DD se leen solo los caracteres indicados lee caracteres !asta que encuentra uno diferente de (V*V,V1V,V V,VWnV,VWtV). En otras pala%ras, se leen slo los caracteres que aparecen en el corc!ete. Cuando se encuentra un car)cter distinto de stos se detiene la lectura $ se devuelve el control al programa que llam a scanf(). (i los corc!etes contienen un car)cter (X), se leen todos los caracteres distintos de los caracteres que se encuentran dentro de los corc!etes a continuacin del (X). #or ejemplo, la sentencia: scanf(E HMPInOE' s)C lee todos los caracteres que encuentra !asta que llega al car)cter nueva l'nea VWnV. Esta sentencia puede utilizarse por tanto para leer l'neas completas, con %lancos incluidos. Oecurdese que con el formato Ss la lectura se detiene al llegar al primer delimitador (car)cter %lanco, ta%ulador o nueva l'nea). #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 2: 5/C$? cin== (funcin exclusi-a de c++) a instruccin cinEE se utiliza para insertar datos en las varia%les desde el teclado. (e de%e escri%ir la pala%ra cin en min-sculas o%ligatoriamente, seguida de do%le signo de ma$or que (cinEE) $ a continuacin el nom%re de la varia%le para la cual se introducir)n datos desde teclado. En las siguientes sinta"is se presentan las distintas maneras como se puede utilizar esta funcin: cin=="aria#leC cin=="aria#leF' -aria#leG' -aria#leC En la primera sinta"is (la mas recomendada) se utiliza para leer una sola varia%le. a segunda sinta"is se utiliza para leer dos o m)s varia%les con una sola instruccin. El trmino leer o lectura de una varia%le, es otra forma de decir que se est) solicitando con la funcin cinEEdatos que se de%en introducir por teclado $ que se almacenar)n en las varia%les especificadas. Ejemplos: int %ase, alturaF cout<<E$nserte la #ase del tringulo: EC cin==#aseC cout<<E$nserte la altura del tringulo: EC cin==alturaC cout<<J$nserte la #ase 4 altura del tringulo: QC cin==altura==alturaC .ormalmente la instruccin cinEE se utiliza despus de dar indicaciones al usuario mediante mensajes desplegados en pantalla, como se muestra en los ejemplos. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 2< DD Este programa calcula el n!mero de minutos Bue existe en una cantidad de segundos DD introducida desde el teclado' adems calcula el n!mero de segundos Bue so#ran de la DD cantidad Bue se introdu,o por teclado despu*s de :a#er calculado los minutos 8include<iostream9:= 8include<conio9:= int segundosC int minutosC -oid main() R clrscr()C cout<<E$nserte el n!mero de segundos: EC
cin==segundosC minutosSsegundosDTNC segundosSsegundosHTNC cout<<ESon exactamente: E<<minutos<<E 3inutos 4: E<<segundos<<E SegundosEC getc:()C U #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 2= D* Es el mismo programa anterior pero a:ora modificado para Bue calcule el numero de semanas' :oras' minutos 4 segundos Bue existen en una cantidad de segundos introducida desde el teclado' este programa reporta semanas' :oras 4 minutos enteros adems de los segundos Bue restan despu*s de calcular los datos anteriores9 *D 8include<iostream9:= 8include<conio9:= long int segundos' residuoC int minutosC int :orasC int dias'semanasC -oid main() R clrscr()C cout<<E$nsete el n!mero de segundos: EC cin==segundosC semanasSsegundosDTNVWNNC residuoSsegundosHTNVWNNC diasSresiduoDWTVNNC residuoSresiduoHWTVNNC :orasSresiduoDKTNNC residuoSresiduoHKTNNC minutosSresiduoDTNC segundosSresiduoHTNC gotox4(GN'FN)C cout<<semanas<<E:Semanas E<<dias<<E:Dias E<<:oras<<E:Xoras EC gotox4(GN'FG)C cout<<minutos<<E:3inutos E<<segundos<<E:SegundosE C getc:()C U #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 2> Comentarios introducidos en el programa En C los comentarios empiezan por los caracteres /L $ terminan con los caracteres L/. #ueden comprender varias l'neas $ estar distri%uidos de cualquier forma, pero todo aquello que est) entre el /L (inicio del comentario) $ el L/ (fin del comentario) es simplemente ignorado por el compilador. *lgunos ejemplos de formato de comentarios son los siguientes: /L Esto es un comentario simple. L/ /L Esto es un comentario m)s largo, distri%uido en varias l'neas. El te"to se suele alinear por la izquierda. L/ /LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL L Esto es un comentario de varias L L l'neas, encerrado en una caja para L L llamar la atencin. L LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL/ En C++ se admite el mismo tipo de comentarios que en C, pero adem)s se considera que son comentarios todo aquel te"to que est) desde dos %arras consecutivas (//) !asta el fin de la l'nea6. as dos %arras marcan el comienzo del comentario $ el fin de la l'nea, el final. (i se desea poner comentarios de varias l'neas, !a$ que colocar la do%le %arra al comienzo de cada l'nea. os ejemplos anteriores se podr'an escri%ir del siguiente modo: // Esto es un comentario simple. // Esto es un comentario m)s largo, // distri%uido en varias l'neas. El // te"to se suele indentar por la izquierda. //LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL // Esto es un comentario de varias L // l'neas, encerrado en una caja para L // llamar la atencin. L //LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL a ventaja de este nuevo mtodo es que no se pueden comentar inadvertidamente varias l'neas de un programa a%riendo un indicador de comentario que no se cierre en el lugar adecuado. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 2? $ST%/CC$2ES D$"E%S.S clrscr()C 1orra o limpia la pantalla en la cual se muestran los resultados que arrojan los programas dejando el cursor en la coordenada (2,2), es decir en la esquina superior izquierda de la pantalla. .ormalmente se utiliza al inicio de los programas, despus de la llave inicial de la funcin main, para %orrar los resultados previos de compilaciones de otros programas. #ara utilizarla se escri%e la instruccin con parntesis vac'o $ termina con punto $ coma: clrscr()C getc:()C 8include<conio9:= ee un car)cter desde teclado sin mostrarlo en pantalla $ sin esperar que se presiones la tecla enter para su ejecucin. Es decir detiene el flujo de ejecucin del programa para que se pueda leer un car)cter $ si es el caso as'gnaselo a una varia%le c!ar que pueda reci%ir ese car)cter que se tecle. En los ejemplos de este manual se utilizar) regularmente justo antes de finalizar los programas, para !acer una pausa en la ejecucin $ se puedan o%servar los resultados que los programas arrojan. #ara utilizarla se escri%e la instruccin con parntesis vac'o $ termina con punto $ coma: getc:()C gotox4(x'4)C 8include<conio9:= 0ueve o u%ica el cursor a una posicin especificada (coordenada) dentro de la pantalla de te"to actual, donde QxJ indica el n-mero de columna e Q4J la fila o rengln. .ormalmente en una pantalla de te"to en c++ tiene <9 filas $ J8 renglones. (e utiliza normalmente para u%icar en la pantalla en una coordenada especificada un mensaje o para leer una varia%le en una posicin dada en la pantalla. (e utiliza regularmente antes de las instrucciones scan(), printf(), coutDD, cinEE, gets, $ todas las funciones utilizadas par imprimir datos en pantalla o en las instrucciones para lectura de varia%le. *fecta solo a la instruccin que se encuentra despus de goto"$(",$)F Ejemplos gotox4(FG' Y)C coutDDY&nserte la %ase del tri)ngulo: YF gotox4(FG' Z)C printf(Y1uenas tardes, %ienvenido a la programacin %)sica en c++Z..Y)F a primera l'nea empieza a desplegarse en pantalla a partir de la columna 26 $ rengln = a primera l'nea empieza a desplegarse en pantalla a partir de la columna 26 $ rengln ? (i se !u%iera puesto la misma coordenada para las dos cadenas de te"to la segunda so%re escri%e a la primera. #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 2J gets(cadena)C 8include<stdio9:= Esta funcin le una cadena de caracteres desde teclado $ la almacena en una varia%le tipo c!ar. c!ar nom%reT:8UF gets(nom%re)F cinEEnom%reF a varia%le nom%re es declarada como tipo c!ar $ puede almacenar un m)"imo de :8 caracteres, la diferencia entre leer esa varia%le con cinEE o cout consiste en: (i la varia%le nom%re se lee con cin== solo se almacenara parte de la cadena que se quiera almacena pero !asta donde se detecte un espacio en %lanco, en otras pala%ra solo almacenar) caracteres consecutivos en la varia%le. (i la varia%le nom%re se lee con gets #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 29 EST%/CT/%.S DE C2T%21 Estas estructuras controlan la ejecucin de un programa, dependiendo del resultado de una condicin o una seleccin por parte del usuario. (entencia simple: Es una instruccin individual en C++, que puede ser una instruccin cinEE, coutDD, clrscr(), getc!(), etc. (entencia compuesta: Es un conjunto de sentencias simples encerradas entre llaves ( G H ), $ se ejecutan como una sola unidad. C2D$C$2.1 if Sintaxis F9 if(condicin) SentenciaAsimpleC G9 if(condicin) SentenciaAsimpleC else SentenciaAsimpleC K9 if(condicin) R SentenciaAsimpleFC SentenciaAsimpleGC SentenciaAsimpleKC SentenciaAsimpleC U V9 if(condicin) R SentenciaAsimpleFC SentenciaAsimpleGC SentenciaAsimpleKC SentenciaAsimpleC U else R SentenciaAsimpleFC SentenciaAsimpleGC SentenciaAsimpleKC SentenciaAsimpleC U a sentencia if funciona de la siguiente manera: Cuando se alcanza la sentencia if dentro de un programa, se eval-a la condicin entre parntesis que viene a continuacin de if (la cual siempre de%e arrojar como resultado un valor de verdad [erdadero o Ialso). #ara la sinta"is 4.+ se eval-a la condicin, si la condicin es verdadera se ejecuta SentenciaAsimpleC en caso contrario, si la condicin da como resultado falso no se ejecuta SentenciaAsimpleC #ara la sinta"is ;+( se eval-a la condicin, si la condicin es verdadera se ejecuta SentenciaAsimpleC en caso contrario, si la condicin da como resultado falso se ejecuta la SentenciaAsimpleC que est) despus de la pala%ra else9 #ara la sinta"is 3OE( se eval-a la condicin, si la condicin es verdadera se ejecuta se ejecuta la sentencia compuesta que sigue a la pala%ra if (la sentencia compuesta se identifica porque est) delimitada por dos llaves que encierran a un grupo de sentencias simples que se ejecutar)n en el caso cuando la condicin evaluada da como resultado verdadero) en caso contrario, si la condicin da como resultado falso no se ejecuta la sentencia compueta (R>U) #ara la sinta"is C4*3O+ se eval-a la condicin, si la condicin es verdadera se ejecuta se ejecuta la sentencia compuesta que sigue a la pala%ra if (la sentencia compuesta se identifica porque est) delimitada por dos llaves que encierran a un grupo de sentencias simples las cuales se ejecutar)n en el caso cuando la condicin al ser evaluada da verdadero) en caso contrario, si la condicin una vez evaluada da como resultado falso entonces se ejecutar) la sentencia compueta (R>U) que sigue a la pala%ra else9 #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 68 .ota 2: a llaves son o%ligatorias despus de if o else cuando se tengan que ejecutar dos o m)s instrucciones $a sea de lado de if o de lado de else. .ota 6: Cuando se trate de una sola instruccin que se tenga que ejecutar despus de if o despus de else dependiendo del resultado de la condicin, entonces la llaves son pocionales (se pueden poner o no) .ota :: o recomenda%le es colocar llaves despus de if $ despus de else aun cuando se trate de una sola instruccin, para delimitar la parte verdadera $ la parte falsa de la instruccin if. M as' evitar errores posi%les durante la compilacin del programa. .ota <: 4na instruccin if puede o no llevar parte else. Es decir una instruccin if puede ejecutar una instruccin (simple o compuesta) si la condicin da verdadera sin ser o%ligatoria la parte else. $5 .$D.D2 Cuando se dice anidado quiere decir que un if puede ir dentro de otro if $a sea en la seccin verdadera o seccin falsa. (inta"is if(condicin) R SentenciaAsimpleFC SentenciaAsimpleGC if(condicin) R (entenciaBsimple2F (entenciaBsimple6F (entenciaBsimple:F (entenciaBsimple.F U else R (entenciaBsimple2F (entenciaBsimple6F (entenciaBsimple:F (entenciaBsimple.F U
SentenciaAsimpleVC SentenciaAsimpleC U else R SentenciaAsimpleFC SentenciaAsimpleGC SentenciaAsimpleKC SentenciaAsimpleC U #rogramacin en C/C++, nivel %)sico 0. C. eonardo 1endi t o 0oral es 62