Sunteți pe pagina 1din 10

FuncionesdeEntradaySalidaenC

ltimamodificacinporXavierBarSolel2015/09/2810:12
Comentarios(0)Adjuntos(2)HistorialInformacin
Contenidos
x
x
x
x
x

Objetivos
Introduccin
Entrada
Salida
EntradaySalidaenC
o Entrada
o Salida
Ejemplos
o Ejemplo1:entrada
o Ejemplo2:salida
o Ejemplo3:entradaysalida
Resumen

Objetivos
Losobjetivosdeestemdulosonlossiguientes

1. Entenderelconceptodeentradaysalida
2. Saberlosmtodosparaleerdatosdelaentrada
3. Saberlosmtodosparaescribirdatosalasalida

Introduccin
Losprogramasinformticosbsicamentesonmanipuladoresdeinformacin,yaseaunprogramadecontabilidad,unsistemadeinteligencia
artificialoelsistemaoperativodeunordenador.Portanto,losprogramasnecesitanpoderobtenerestainformacinparaprocesarlaypoderdar
salidaalosresultados.Sinotenemosentrada,losprogramasselimitaranahacersiemprelomismoconlosmismosdatos,ysinotenemos
salida,losresultadosdelprogramanuncasepodranusarparanada.
Cuandopensamosenentradadedatosnosreferimosacualquiertipodeentrada,puedenserlasteclasquesepulsanenunteclado,laposicindel
ratnopantallatctil,unficheroendisco,unadireccindeInternet,unlectordecdigosdebarras,unawebcamoelmicrfono.Delmismo
modo,cuandohablamosdesalidanospodemosreferiraunamplioabanicodeopciones,desdelapantalladelordenador,unarchivo,una
impresoraoelsistemadecontroldeunrobot.
Entretodosestosdispositivoshaydosquetienenunpapelespecialmenterelevante,eltecladoparalaentradadedatosylapantallaparalasalida
dedatos.Dehecho,sinosecambiaexplcitamente,laentradaestndar(ostdindelinglsstandardinput)eselteclado,ylasalidaestndar(o
stdoutdelinglsstandardoutput)eslapantalla.
Enestemduloveremoscmopodemoscomunicarnosconestosdispositivosparaleerinformacindesdeeltecladoymostrarlaenlapantalla.

Entrada
Loprimeroquehayquesaberesquecuandosepulsanteclasenunteclado,estasseconviertenensucdigoASCIIysealmacenancomo
caracteresenloquesellamaun"buffer",elcualcontienetodalasecuenciadecaracteresquehanescritoyqueningnprogramahaledotodava.

Losmtodosparaleerdatosirnleyendodeestebufferteniendoencuentaqutipodeinformacinintentamosleer.Hayquetenerencuentaque
elsaltodelneatambincuentacomounateclacualquiera,yserepresentahabitualmentecon'\n'.Estebufferesunaestructuraconocidacomo
FIFO(FirstinFirstOut),loquequieredecirqueloleeremosenordendellegada.Acontinuacinsemuestraunejemplodelcontenidodelbuffer
amedidaquesevanpulsandoteclasdelteclado:
Teclapulsada Contenidodelbuffer
1
'1'
3
'3''1'
2
'2''3''1'
Saltodelnea '\n''2''3''1'
a
'a''\n''2''3''1'
Saltodelnea '\n''a''\n''2''3''1'
Paraleerlainformacindeestebuffer,tenemosanuestradisposicinunconjuntodeinstruccionesenlenguajealgortmicosegneltipodedatos
quequeremosleer:
Instruccin
Descripcin
leerCaracter Leeuncarcterdelbuffer
leerEntero Leeunenterodelbuffer

leerReal
Leeunrealdelbuffer
Veamosculseraelresultadodeaplicarestasinstruccionesteniendoencuentaquecesunavariabledetipocarcter,iunavariabledetipo
enteroyrunadetiporeal:
BufferInicial
Instruccions
'\n''a''\n''2''3' c:=
'1'
llegirCaracter()
'\n''a''\n''2''3'
i:=llegirEnter()
'1'
'\n''a''\n''2''3'
r:=llegirReal()
'1'
c:=
'\n''a'
llegirCaracter()
'\n''a'
i:=llegirEnter()
'\n''a'
r:=llegirReal()

Bufferfinal
Resultat
'\n''a''\n''2'
lavariableccontieneelvalor49(valorASCIIdelcarcter1)
'3'
lavariableicontieneelvalor132.Dadoquelosenterospuedentenervariascifras,seleehasta
'\n''a'
elsaltodelneaounespacio
lavariablercontieneelvalor132,0.Dadoquelosrealespuedentenervariascifras,seleehasta
'\n''a'
elsaltodelneaounespacio
'\n'

lavariableccontieneelvalor97(valorASCIIdelcarctera)

ERROR.Nosepuedeinterpretarlaletraacomounentero
ERROR.Nosepuedeinterpretarlaletraacomounreal

Salida
Enelcasodelasalidapasaalgosimilar.Cuandonosotrosescribimosenlasalidaestndar,todalainformacinquedaguardadaenformade
caracteresenunbuffer,quesevaleyendoymostrandoenlapantalla.

Paraescribirlainformacinenestebufferparaqueseamostrada,tenemosanuestradisposicinunsiguiendodeinstruccionesenlenguaje
algortmicosegneltipodedatosquequeremosescribir:
Instruccin
Descripcin
escribeCaracter Escribeuncarcteralbuffer
escribeEntero Escribeunenteroalbuffer
escribeReal
Escribeunrealalbuffer

EntradaySalidaenC
ParapoderaccederalaentradaysalidaestndaresenC,necesitaremosutilizarunalibreraestndardeC.Laslibrerassonconjuntosde
funcionalidadesqueextiendenlasinstruccionesbsicasdellenguajeC,facilitandohacerciertastareas.Enestecasolalibrerasellamastdio
(standardinput/output),yparapoderutilizarlahabrque"importarla"anuestroprograma.Paraello,habrqueaadirlasiguientelneadecdigo
alprincipiodenuestroarchivo(sinpuntoycoma):

#include<stdio.h>
Unavezimportada,podemosutilizarsusfuncionalidadesdirectamente.Tantoenelcasodelaentradacomoeneldelasalida,sedeber
especificareltipoyformatodelosdatos.Paraello,sepasalacadenadeformatodelaentradaysalida,dondelasvariablesquesequierenleero
escribirseindicanconelsigno%yacontinuacinunaletraespecificandoeltipodevariable.Acontinuacinsemuestraunresumendelasms
habituales:
Tipodedato Especificativodetipo Ejemplodedatos
Carcter
c
'a'
Entero
d
34o32
Real
f
3.1415
String
s
"HelloWorld"
Veremosejemplosdeestascadenasdeformatoparalaentradaylasalidaacontinuacin.

Entrada
Elmtodogenricoparalaentradadedatoseselmtodoscanf,queesperaunacadenadeformatoindicandoqudebeleerdelbufferdeteclado
ylalistadevariablesdondeseguardarnlosvaloresledos.Todaslasvariablesdebenirprecedidasdelsmbolo&(quesignifica"direccinde",
yquelaveremosenelmdulodememoria).Enlasiguientetablatenislatraduccindelosmtodosenlenguajealgortmicoanteriores,
teniendoencuentaquecesunavariabledetipocarcter,idetipoenteroyrdetiporeal:
Mtodo TraduccinaC
leerCaracter scanf("%c",&c)
leerEnter scanf("%d",&i)
leerReal
scanf("%f",&r)
Adems,enelcasodeleeruncarctertenemoslainstruccingetcharquenospermitehacerlaasignacindirecta:

c=getchar()

Salida
Enelcasodelasalidaporpantalla,tenemoselmtodoprintf,elqueesperaunacadenadeformatoindicandoqutienequeescribirylalistade
variablesdedndeobtenerlainformacin.Enlasiguientetablatenislatraduccindelosmtodosenlenguajealgortmicoanteriores,teniendo
encuentaquecesunavariabledetipocarcter,idetipoenteroyrdetiporeal:
Mtodo
TraduccinaC
escribeCaracter printf("%c",c)
escribeEnter printf("%d",i)
escribeReal
printf("%f",r)
Adems,recordadquetenemosuncarcterespecialparaindicarelsaltodelnea('\n'),quelopodemosutilizarenelformatoparaindicarque
queremosquesehagaunsaltodelnea.Delocontrariotodoseescribirseguidoenlamismalnea.
Adicionalmente,podemosaadirmodificacionesacmoqueremosquesemuestrenlosdatos.Estosmodificadoresseponenentreelsmbolo%y
elespecificativodetipo:
%[modificadores][ancho][.precisin]especificativo
Acontinuacintenisunoscuantosejemplos.Podisencontrarmsinformacinaqu.
Formato Valorvariable Salida
"%0d"
3
3
"%03d" 003
"%f"
3.14
3.14000
"%2.1f" 3.14
3.1

Ejemplos
Ejemplo1:entrada
Enunciado
Defineunalgoritmoqueleadosenterosycalculesusuma.HazsutraduccinaC.
Solucin
algoritmosuma
var
a:entero
b:entero
s:entero
fvar
a:=leerEntero()
b:=leerEntero()
s:=a+b
falgoritmo
#include<stdio.h>
intmain(){
inta
intb
ints

scanf("%d",&a)
scanf("%d",&b)
s=a+b
return0
}

Ejemplo2:salida
Enunciado
EscribeunprogramaenCenquedadasdosvariablesa=2yb=2escribaporpantallaelmensaje:"Lasumadeaybes4"
Solucin
#include<stdio.h>
intmain(){
inta=2
intb=2
printf("Lasumadeaybes%d",a+b)
return0
}

Ejemplo3:entradaysalida

Enunciado
EscribeunprogramaenCenquesepidatresenterosysemuestreporpantallaelvalormediodelostres.
Solucin
#include<stdio.h>
intmain(){
inta
intb
intc
floatm
scanf("%d%d%d",&a,&b,&c)
m=(a+b+c)/3.0
printf("%f",m)
return0
}

Resumen
Enestemdulohemosvistolautilizacindelosmtodosscanfyprintfparaleeryescribirdatosalosdispositivosestndardeentradaysalida.
Tambinhemosvistoquesepuedemodificarelformatodelosdatos.

S-ar putea să vă placă și