cc1 clase 5
-
Upload
marco-antonio-alpaca-ch -
Category
Documents
-
view
18 -
download
0
description
Transcript of cc1 clase 5
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.1
CIENCIAS DE LACOMPUTACIN I
Flujo de entrada/salida en C++Utilizando Code::Blocks
Lic. Nilton Alan Garca HilaresUniversidad Mayor de San Marcos
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.2
Contenido
Introduccin
printfImprimir enterosImprimir nmeros de punto flotanteImprimir cadenas y caracteresOtros
scanfEspecificadores de conversinSecuencia de rastreoOtros
C++ como un C mejoradonamespace stdcout y cinConcatenacin de operadores >
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.3
Introduccin
Una parte importante en la solucin de cualquier problema esla presentacin de los resultados. Para eso veremos lascaractersticas de formato de las funciones scanf y printf.Estn funciones as como gets, puts, getchar y putchar seencuentran en la librera stdio. Ya se han visto algunascaractersticas de las funciones scanf y printf en clasesanteriores. En esta clase se resumirn dichas caractersticasadems de mostrar nuevas.
Como incluir librerias?
Mediante sentencias del tipo:#include
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.4
Salida con formato usando printfUtilizando printf se consigue un formato de salida preciso. Cadallamada a printf contiene una cadena de control de formato, quedescribe el formato de la salida. La cadena de formato consiste deespecificadores de conversin, banderas, anchos de campo,precisiones y caracteres literales junto con el signo ( %). La funcinprintf puede llevar a cabo las siguientes capacidades de formato:
1 Redondear valores de punto flotante, a un numero indicado dedecimales.
2 Alinear una columna de nmeros decimales, con puntosdecimales apareciendo uno por encima de otro.
3 Salidas justificadas a la derecha o a la izquierda.4 Insertar caracteres literales en posiciones precisas en una lnea
de salida.5 Representacin en formato exponencial de nmeros de punto
flotante.6 Representacin en formato octal y hexadecimal de enteros sin
signo.7 Despliegue de todo tipo de datos con anchos de campo de
tamao fijo y precisiones.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.5
Salida con formato usando printf
La funcin printf tiene el siguiente formato
Formato
printf(Cadena de control de formato,Argumentos)
Cadena de control de formato, describe el formato desalida y Argumentos, estos son opcionales, corresponden acada especificacin de conversin existente en la cadena decontrol de formato, cada especificacin de conversin deformato empieza por un %. En la cadena de control de formatopueden existir varias especificaciones de conversin deformato y por cada una de ellas debe haber un argumento. Elcual lleva el valor de dicha especificacin.
Error comn
Olvidar encerrar entre comillas ()una cadena de control deformato.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.6
Imprimir enteros
Un entero es un numero completo, ya sea 123 o 69, que nocontiene punto decimal. Los valores enteros se puedenimprimir en varios formatos, para los cuales tenemos lossiguientes especificadores de conversin (EC).
EC Descripcind, i Despliega un entero con signo.o, u Despliega un entero sin signo.x, X Muestra un entero hexadecimal sin signo
h Se coloca antes de un EC de enteros paraindicar que se muestra un entero short.
l Se coloca antes de un EC de enteros paraindicar que se muestra un entero long.
Ejemplo
Elabore un programa para mostrar nmeros enteros utilizandotodos los formatos anteriores
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.7
Imprimir nmeros de punto flotanteUn valor en punto flotante, contiene un punto decimal como en66.6 o 1.23. Los valores en punto flotante se pueden imprimiren varios formatos, para los cuales tenemos los siguientesespecificadores de conversin (EC).
EC Descripcinf Muestra un valor en punto flotante.
e, E Muestra un valor en punto flotante ennotacin exponencial.g, G Despliega un valor en punto flotante (f o e/E).
L Se coloca antes de un EC de punto flotante paraindicar que se muestra un valor long double.
Nota
La notacin exponencial es el equivalente en computadora dela notacin cientfica utilizada en matemticas. Poe ejemplo
Valor Notacin exponencial Notacin cientfica314.1592 3.141592102 3.141592E+02
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.8
Imprimir cadenas y caracteres
EC Descripcinc Se utiliza para imprimir un argumento char.
s Se utiliza para imprimir caracteres hasta queencuentre un carcter de terminacin NULL(\0).
Errores Comunes
1 Utilizar %c para imprimir el primer carcter de una cadena.2 Utilizar %s para imprimir un argumento char, el EC %s
espera una cadena por lo que esto causar un error entiempo de ejecucin conocido como violacin de acceso.
3 utilizar comillas sencillas () alrededor de cadenas decaracteres. Las cadenas de caracteres deben estarencerradas entre comillas dobles ().
4 Utilizar comillas dobles para encerrar una constante decarcter. Esto de hecho genera una cadena formada pordos caracteres, el primero el valor de la constante y elsegundo el carcter de terminacin NULL. Una constantede carcter va encerrado entre comillas simples ()
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.9
Otros especificadores de conversin
Los tres especificadores de conversin restantes son
EC Descripcinp Muestra el valor de un apuntador.n Almacena el numero de caracteres ya extrados.
% Argumento correspondiente. La funcin printf utilizael enunciado % % para imprimir el carcter %.
Nota
El EC p despliega la direccin del apuntador en forma depuesta en marcha definida. En muchos sistemas se utiliza lanotacin hexadecimal en vez de la notacin decimal.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.10
Imprimir con anchos de campo y precisionesEl tamao exacto de un campo en el cual se imprimen datos seespecifica por el ancho de campo. Un entero que representa elancho de campo es insertado en la especificacin deconversion entre el signo por ciento ( %) y el EC.
Error comn
No proporcionar un ancho de campo lo suficientementeextenso para manejar un valor a imprimirse. Esto puededesplazar otros datos produciendo salidas confusas.
La precision tiene significados distintos para los diferentestipos de datos. Para utilizar la precision coloque un punto (.)seguido por un entero que representa la precision, entre elsigno por ciento ( %) y el EC.
Nota
Se puede combinar el ancho de campo y la precision,colocando el ancho de campo seguido del punto decimal,seguido de la precision entre el signo % y el EC.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.11
Imprimir literales y secuencias de escape
Hay algunos literales que son utilizados como parte de laestructura del lenguaje, por lo que requieren un comando paraser utilizados como parte literal de una cadena de caracteres.
Comando Descripcin\ Salida del carcter de una sola comilla ().\ Salida del carcter de comillas dobles ().\\ Salida del carcter diagonal invertida (\).\b Mueve el cursor una posicin hacia atrsen la lnea actual.\n Mueve el cursor al inicio de la lnea siguiente.\t Mueve el cursor a la siguiente posicin enel tabulador horizontal.\r Mueve el cursor al inicio de la lnea actual.\v Mueve el cursor a la siguiente posicin enel tabulador vertical.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.12
Formato de entrada utilizando scanf
Cada enunciado scanf contiene una cadena de control deformato que describe el formato de los datos que seintroducen. La cadena de control de formato est formada deespecificaciones de conversin y caracteres literales. Lafuncin scanf tiene las siguientes capacidades de formato deentrada:
Entrada de todo tipo de datos.Entrada de caracteres especficos.Omitir caracteres especficos.
Formato
scanf(Cadena de control de formato, Argumentos)
Cadena de control de formato describe los formatos deentrada y Argumentos son apuntadores a variables donde sealmacenan las entradas.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.13
Especificadores de conversin
EC DescripcinEnteros
d Lee un entero decimal, opcionalmente con signo.
i Lee un entero decimal, octal o hexadecimal,opcionalmente con signo.o Lee un entero octal sin signo.u Lee un entero decimal sin signo.
x/X Lee un entero hexadecimal sin signo.
h/L Se coloca antes de cualquier EC entero paraindicar que es un entero short/long respectivamente.Punto flotante
e/E f/F g/E Lee un valor en punto flotante.
l/L Se coloca delante de cualquier EC de punto flotantepara indicar que es un valor double/long double.Caracteres y cadenas
c Lee un carcters Lee una cadena
[Rastreo] Rastrea una cadena buscando un conjunto decaracteres almacenados en un arreglo.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.14
Secuencia de rastreo
Se puede ingresar un conjunto de caracteres utilizando un Rastreo,un Rastreo es un conjunto de caracteres encerrados entre corchetes([]) y presididos por un signo por ciento en la cadena de control deformato.
Formato
char Cadena[20];scanf( % [Rastreo],Cadena)
Un rastreo limita el flujo de entrada a los caracteres contenidos en elRastreo. Cada vez que se encuentre un carcter, se almacena en elargumento correspondiente y deja de introducir caracteres cuando seencuentra algn carcter no contenido en el Rastreo.
Si el primer carcter introducido no coincide con alguno contenido enel Rastreo solo se almacena el carcter NULL en el argumento.
El Rastreo tambin se puede utilizar para buscar caracteres que noestn contenidos en el Rastreo, utilizando un Rastreo invertido. Parahacer un Rastreo invertido coloque un acento circunflejo () en loscorchetes antes del Rastreo.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.15
Ancho de campo
En la funcion scanf se puede especificar el ancho de campopara leer un nmero especifico de caracteres a partir de unflujo de entrada.
Ejemplo
Escriba en orden inverso los dgitos de un nmero de 4 dgitos.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.16
Omisin de caracteresa menudo es necesario hacer una omisin de caracteres en elflujo de entrada.
Ejemplo
Una fecha puede ser introducida mediante alguno de lossiguientes formatos
24 12 201128\07\2011
De los cuales es importante almacenar los nmeros y losseparadores pueden ser descartados.
A fin de eliminar caracteres innecesarios, inclyalos en lacadena de control de formato de scanf.
Ejemplo
Para el caso de las fechasscanf( %d- %d- %d,&D,&M,&A);scanf( %d\\%d\\%d,&D,&M,&A);
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.17
Ejemplo
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.18
Suspensin de asignacin
La funcin scanf proporciona un carcter de suspensin deasignacin (*). El carcter de suspensin le permite a scanfleer cualquier tipo de datos a partir de la entrada y descartarlossin asignarlos a una variable. El carcter de suspensin secoloca entre el signo de porcentaje ( %) y un EC.
Ejemplo
En el ejemplo de las fechas tambin se pudo utilizar espaciosen blanco como separadores. Para evitar una declaracin paracada tipo de separadores utilizados se puede utilizar unasuspensin de asignacin de datos tipo char como muestra elsiguiente cdigo.
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.19
Cdigo en C++
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.20
namespace std
Las libreras estndar de C/C++ (# include )definen funciones, estructuras, tipos, etc. utilizando nombresespecficos para cada uno de los objetos que definen; esposible utilizar alguno de dichos nombres en alguna denuestras propias funciones, estructuras, tipos, etc. lo cualprovocara errores difciles de detectar y/o corregir.
La solucin establecida en C++ son los namespace o espaciode nombres, los cuales se utilizan para delimitar el mbito delos nombres utilizados.
Ejemplo
namespace Newton{int y=1;}Newton::y;
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.21
namespace std
C++ han puesto todos los nombres estndar en el namespacestd. Por ejemplo para utilizar la entrada/salida estndar de C++se debe incluir el archivo de cabecera iostream que contienelos macros cout y cin.
Ejemplo
# include using namespace stdint main(){cout
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.22
namespace std
El uso de namespace permite que se use una libreraestndar, sin ningn problema; esto tiene ms importancia sinos damos cuenta de que para evitar nombres repetidos NOhay que memorizar los cientos de nombres usados por laslibreras estndar de C++. Las libreras asociadas alnamespace std son incluidas mediante #include yno #include .
Aqu estn algunos nombres de las libreras viejas (de C/C++no estndar) y las nuevas (de C++ estndar, que usannamespace std)
Libreras antiguas Libreras standard#include #include #include #include #include #include #include #include
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.23
cout y cin
C++ ofrece una alternativa a las llamadas de funcin printf yscanf para manejar la entrada y salida de los tipos de datosestndar. Por ejemplo consideremos las siguientes sentencias
Ejemplo
printf(Ingrese un numero);scanf( %d,&N);printf(\n El numero es : ,N);
A continuacin realizaremos las mismas accin pero con losmacros cout y cin definidos en la librera estndar iostream.
Ejemplo
coutN;cout
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.24
Concatenacin de operadores > y endl
los operadores > se pueden utilizar de formaconcatenada, es decir en la misma sentencia.
Formato
cout> Variable n;
As mismo en la librera iostream se encuentra el manipuladorendl el cual es equivalente al carcter de interrupcin \n seutiliza seguido de un operador de insercin de flujo (
-
Flujo deentrada/salida en
C++
Nilton A. GarciaHilares
Introduccin
printfImprimir enteros
Imprimir nmeros de puntoflotante
Imprimir cadenas ycaracteres
Otros
scanfEspecificadores deconversin
Secuencia de rastreo
Otros
C++ como un Cmejoradonamespace std
cout y cin
Concatenacin deoperadores>
2.25
Cdigo en C++
IntroduccinprintfImprimir enterosImprimir nmeros de punto flotanteImprimir cadenas y caracteresOtros
scanfEspecificadores de conversinSecuencia de rastreoOtros
C++ como un C mejoradonamespace stdcout y cinConcatenacin de operadores