Está en la página 1de 107

INF-510

MIS PRIMEROS
CDIGOS
EN C++
V4.0
SEPTIEMBRE 2009
FERREIRAS.
Ferreiras

MIS PRIMEROS CODIGO


S C++

DE INTERS PREVIO
La universidad no presta lo que la
naturaleza no da
Por el dinero del trabajo los dioses
lo venden todo
http://www.zator.com/Cpp/E1_4.htm

Ferreiras

MIS PRIMEROS CODIGO


S C++

EL OBJETIVO DEL APRENDIZAJE


DE UN LENGUAJE DE
PROGRAMACIN ES SER MAS
EFICAZ EN EL DISEO E
IMPLEMENTACIN DE NUEVOS
SISTEMAS Y EN EL MANTENIMIENTO
DE LOS VIEJOS;

Ferreiras

MIS PRIMEROS CODIGO


S C++

LA APRECIACIN DE LAS
TCNICAS DE DISEO Y
PROGRAMACIN ES MUCHO MAS
IMPORTANTE QUE EL TOTAL
ENTENDIMIENTO DE LOS DETALLES;
ESE ENTENDIMIENTO VIENE CON LA
PRACTICA Y EL TIEMPO.

Ferreiras

MIS PRIMEROS CODIGO


S C++

QU ES CONSTRUIR UNA
APLICACIN C++ ?
CONSTRUIR UNA APLICACIN
C++ ES TRANSFORMAR EL
ALGORITMO DE LA SOLUCIN DE
UN PROBLEMA EN UN
PROGRAMA EJECUTABLE;
Ferreiras

MIS PRIMEROS CODIGO


S C++

LO INDICADO ANTERIORMENTE
IMPLICA QUE YA USTED CUMPLE
CON EL PRERREQUISITO DE
SABER PASAR DEL PROBLEMA A LA
ESCRITURA DEL ALGORITMO DE LA
SOLUCIN EN PSEUDOCODIGO, SI
NO ES AS, VER TEMA 3 DE INF206.-;
Ferreiras

MIS PRIMEROS CODIGO


S C++

UN PROGRAMA EJECUTABLE ,
LLAMADO TAMBIN APLICACIN,
ES, SIMPLEMENTE, UN PROGRAMA
EN CDIGO DE UNA MQUINA
ESPECFICA (CPU) QUE PUEDE
SER EJECUTADO POR UN SISTEMA
OPERATIVO;

Ferreiras

MIS PRIMEROS CODIGO


S C++

PARA OBTENER UN PROGRAMA


EJECUTABLE:
1RO. : ESCRIBIR EL CDIGO FUENTE
USANDO UN EDITOR TEXTO ASCII STD
(NOTEPAD, NOTEPAD++, EDIT, vi, ...);
El cdigo fuente es un archivo de texto
ascii-std que contiene el conjunto de
instrucciones C++ que corresponden a la
secuencia de pasos del algoritmo de la
solucin del problema
Ferreiras

MIS PRIMEROS CODIGO


S C++

2do. : CONVERTIR EL CDIGO FUENTE


EN CDIGO EJECUTABLE USANDO UN
COMPILADOR Y UN ENLAZADOR.
El cdigo ejecutable es el conjunto de
instrucciones del cdigo fuente
transformado en cdigo mquina de un CPU
en especfico

Ferreiras

MIS PRIMEROS CODIGO


S C++

HERRAMIENTAS BSICAS
USADAS PARA CONSTRUIR
APLICACIONES C++
1) El compilador ( bcc32 5.5 / 5.6);
2) El enlazador ( ilink32.exe);
3) El bibliotecario (tlib.exe);

Ferreiras

MIS PRIMEROS CODIGO


S C++

10

El compilador, el enlazador y el
bibliotecario son herramientas de lnea de
comando, esto significa que son diseada
para ser corridas desde la consola DOS
(cmd.exe), el bash de unix-linux u otras
similares;

Ferreiras

MIS PRIMEROS CODIGO


S C++

11

El compilador recibe como entrada


el archivo fuente y produce como salida
un archivo objeto ( archivos .obj);

.cpp
archivo
fuente

Ferreiras

.obj
compilador
(bcc32)
MIS PRIMEROS CODIGO
S C++

archivo
objeto

12

El enlazador recibe como entrada


archivo(s) objeto(s) y produce como
salida un archivo ejecutable (.exe);

.obj
archivo
objeto

.exe
enlazador

archivo
ejecutable

(ilink32)
Ferreiras

MIS PRIMEROS CODIGO


S C++

13

DESCOMPILAR UN
EJECUTABLE C++ ?
NO SUEEN, NO HAY
FORMA DE USTED
OBTENER EL CDIGO
FUENTE C++ A PARTIR DE
UN EJECUTABLE CREADO
CON UN O UNOS ARCHIVOS
OBJETOS C++;
Ferreiras

MIS PRIMEROS CODIGO


S C++

14

El bibliotecario recibe como entrada


varios archivos objetos y produce una
librera esttica en un archivo .lib ( A ver
en el tema de funciones )
.obj

.obj

.obj

.obj

.lib

.obj
.obj
Ferreiras

.obj

bibliotecario
(tlib)

MIS PRIMEROS CODIGO


S C++

librera
esttica
15

El compilador incluye
opciones de lnea de comando
que invocan la accin propia del
compilador ( !compilar!) y el
enlazador, entre otras;

Ferreiras

MIS PRIMEROS CODIGO


S C++

16

Una lnea de comando es una


lnea de texto que se escribe en el
prompt de sistema operativo e incluye
el nombre del comando a ejecutar y
uno o ms argumentos:
> comando arg1 arg2 ... archivo
Por ejemplo:
> attrib +h config.sys
Ferreiras

MIS PRIMEROS CODIGO


S C++

17

En el compilador a usar, el bcc32 5.5,


algunas de las opciones antes indicadas
son (las que ms vamos a usar) c y l :
> bcc32 c nombre.cpp
> bcc32 l nombre.obj
Esto es una ele, en minscula,
de Link, NO ES UN UNO
Ferreiras

MIS PRIMEROS CODIGO


S C++

Para compilar el
archivo fuente .cpp y
generar el archivo
objeto .obj

Para enlazar el archivo


objeto .obj y generar el
archivo ejecutable .exe

18

C:\Borland\BCC55\Bin>bcc32

Todas las
opciones
podemos
verlas si
hacemos:

Ferreiras

Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland
Syntax is: BCC32 [ options ] file[s] * = default; -x- = turn switch x off
-3 * 80386 Instructions
-4
80486 Instructions
-5
Pentium Instructions
-6
Pentium Pro Instructions
-Ax Disable extensions
-B
Compile via assembly
-C
Allow nested comments -Dxxx Define macro
-Exxx Alternate Assembler name -Hxxx Use pre-compiled headers
-Ixxx Include files directory -K
Default char is unsigned
-Lxxx Libraries directory
-M
Generate link map
-N
Check stack overflow
-Ox Optimizations
-P
Force C++ compile
-R
Produce browser info
-RT * Generate RTTI
-S
Produce assembly output
-Txxx Set assembler option
-Uxxx Undefine macro
-Vx Virtual table control -X
Suppress autodep. output
-aN Align on N bytes
-b * Treat enums as integers
-c
Compile only
-d
Merge duplicate strings
-exxx Executable file name
-fxx Floating point options
-gN Stop after N warnings -iN Max. identifier length
-jN Stop after N errors
-k * Standard stack frame
-lx Set linker option
-nxxx Output file directory
-oxxx Object file name
-p
Pascal calls
-tWxxx Create Windows app
-u * Underscores on externs
-v
Source level debugging -wxxx Warning control
-xxxx Exception handling
-y
Produce line number info
-zxxx Set segment names

MIS PRIMEROS CODIGO


S C++

19

EL COMPILADOR A USAR
Nombre ?
Borland C++ 5.5 Command Line
Dnde obtenerlo ?
http://www.programacionenc.net/modules.php?name=Tutoriales&d_op=vertuto&lid=25

Cmo instalarlo ?
En el mismo link esta la explicacin.
En el CD entregado por el Prof. esta todo.
Ferreiras

MIS PRIMEROS CODIGO


S C++

20

POR QU LNEA DE
COMANDO?
POR ASPECTOS DIDCTICOS. EN
ESTA PARTE ESTAMOS
CONSTRUYENDO CONCEPTOS
ESENCIALES QUE SERN LA
INFRAESTRUCTURA DE LOS
CONOCIMIENTOS DE NUESTRO
PRODUCTO FINAL, UN PROFESIONAL
DE LA TIC.
Ferreiras

MIS PRIMEROS CODIGO


S C++

21

OTRAS HERRAMIENTAS PARA


CONSTRUIR APLICACIONES C++
PARA EL DESARROLLO DE
APLICACIONES C++ QUE NO SEAN
SIMPLE EJEMPLOS DE AULA, SINO QUE
ESTN CONSTITUIDAS POR MILES DE
LNEAS DE CDIGO FUENTE, CIENTOS
DE ARCHIVOS OBJETOS Y LIBRERAS
SE USAN IDEs Y SDKs DE C++;
Ferreiras

MIS PRIMEROS CODIGO


S C++

22

USO DE IDE / SDK


Un IDE ( Integrated Development
Environment ) es un software que
proporciona facilidades a los programadores
para el desarrollo de otros softwares.
Normalmente se compone de:
a) Editor para cdigo fuente;

d) Un linker;

b) Compilador;

e) Ayudas en lnea (hints);

c) Depurador;

f) ...

Ferreiras

MIS PRIMEROS CODIGO


S C++

23

EJEMPLOS DE IDEs PARA C++ SON:


a) Eclipse C/C++
Development Tooling - CDT
http://www.eclipse.org/cdt/
b) Bloodshed Dev-C++
http://www.bloodshed.net/devcpp.html
c) BVRDE
http://bvrde.sourceforge.net/
Ferreiras

MIS PRIMEROS CODIGO


S C++

24

d) Otros... eso es inmenso y gratis; (-_-)


POR ASPECTOS PURAMENTE
DIDCTICOS EN ESTE CURSO
TRABAJAREMOS EN LNEA DE
COMANDO, ESTO ES, SIN USAR
IDE. (\ _~)

Ferreiras

MIS PRIMEROS CODIGO


S C++

25

Un SDK (Software Development Kit)


es un conjunto de herramientas de
produccin de software que permite al
desarrollador crear aplicaciones para un
determinado entorno de aplicacin
( framework, plataforma (SO + CPU). En
muchos casos incluye el IDE para el
desarrollo;

Ferreiras

MIS PRIMEROS CODIGO


S C++

26

EJEMPLO DE SDK PARA C++ SON


a) Eclipse SDK
b) Qt
c) Visual Studio de MS
d) Valentina C++ SDK
e) C++ Builder

Ferreiras

MIS PRIMEROS CODIGO


S C++

27

POR ASPECTOS PURAMENTE


DIDCTICOS EN ESTE CURSO
TRABAJAREMOS EN LNEA DE
COMANDO, ESTO ES, SIN USAR
SDK. (\ _~)

Ferreiras

MIS PRIMEROS CODIGO


S C++

28

COMPILADOR C++
MULTIPLATAFORMA ?
CADA PLATAFORMA ( CPU + SO)
TIENE SU PROPIO CPU, EL CUAL
TIENE SU PROPIO LENGUAJE
(CONJUNTO DE INSTRUCCIONES) AL
QUE RESPONDE;

Ferreiras

MIS PRIMEROS CODIGO


S C++

29

Cdigo Fuente Portable Es la


solucin, esto es, EVITE
SOLUCIONES QUE SEAN
DEPENDIENTE DE
CARACTERSTICAS ESPECIFICAS
EN UNA PLATAFORMA; ESCRIBA
CDIGO C++ ESTANDARIZADO.

Ferreiras

MIS PRIMEROS CODIGO


S C++

30

LUEGO, COMPILE Y
ENLACE EN CADA
PLATAFORMA CON EL
COMPILADOR Y EL
ENLAZADOR APROPIADO. ES
TODO LO QUE SE REQUIERE.

Ferreiras

MIS PRIMEROS CODIGO


S C++

31

32-bit Vs. 64-bit


En C++ no hay problema con hacer
desarrollo de aplicaciones 64-bit usando
los compiladores 32-bit estandarizados.
Slo hay que cumplir con ciertas normas
simples. Tambin podemos usar uno ya
con la especificacin de 64-bit, por
ejemplo INTEL C++ ; (Ms detalles salen
del alcance de este curso; -:)

Ferreiras

MIS PRIMEROS CODIGO


S C++

32

PASOS REQUERIDOS1
PARA CONSTRUIR UNA
APLICACIN CON C++
1) CDIGO FUENTE
Son las instrucciones de C++ que
componen el programa. Se escribe con un
editor de texto ASCII-std, como notepad,
notepad++, edit, vi, ..., respetando las
reglas del lenguaje;
1

Ferreiras

: Usando el bcc32 5.5 en lnea de comando

MIS PRIMEROS CODIGO


S C++

33

2) GRABAR COMO ARCHIVO DE TEXTO


El cdigo fuente escrito se graba como
archivo de texto con la extensin .cpp en
el directorio bin de trabajo, que en este
curso ser:

C:\Borland\BCC55\bin>
Ferreiras

MIS PRIMEROS CODIGO


S C++

34

3) COMPILAR EL ARCHIVO nombre.cpp


El archivo nombre.cpp se compilar en
lnea de comando as:

C:\Borland\BCC55\bin>
bcc32 c nombre.cpp <ENTER>

Ferreiras

MIS PRIMEROS CODIGO


S C++

35

El proceso de compilacin deber


producir el archivo objeto nombre.obj, si no
hay errores de sintaxis ( violaciones a las
reglas del lenguaje); El archivo objeto es
una versin en lenguaje mquina del archivo
fuente nombre.cpp

Ferreiras

MIS PRIMEROS CODIGO


S C++

36

En la compilacin primero se ejecutarn


las directivas de pre-procesamiento
(aquellas que iniciaran con un smbolo #).
Estas directivas son procesados por un
subprograma, que forma parte del
compilador, llamado pre-procesador.

Ferreiras

MIS PRIMEROS CODIGO


S C++

37

4) ENLAZAR (link)
Para producir un programa que se pueda
correr ( ejecutable) en el computador hay
que enlazar el o los archivos nombre.obj :

C:\Borland\BCC55\bin>
bcc32 l nombre.obj <ENTER>
El ejecutable generado se llamar
nombre.exe

(En el tema compilacin por separado tendremos ms de un


archivo .obj para enlazar):

Ferreiras

MIS PRIMEROS CODIGO


S C++

38

El proceso de enlazado es realizado


por un subprograma en el compilador,
llamado linker; En nuestro caso, que
usamos bcc32, el linker es el ilink32.exe;
El enlazado podr ser esttico (en tiempo
de compilacin) o dinmico (en tiempo de
ejecucin); Si se quiere ampliar ms el
concepto de enlazado ver un enfoque en
http://www.zator.com/Cpp/E1_4_4.htm

Ferreiras

MIS PRIMEROS CODIGO


S C++

39

5) CARGAR Y EJECUTAR EL PROGRAMA


Para correr (ejecutar) el programa
nombre.exe:

C:\Borland\BCC55\bin>
nombre <ENTER>
PUEDE ESTAR EN CUALQUIER DIRECTORIO Y ES IGUAL:
nombre <ENTER>
Ferreiras

MIS PRIMEROS CODIGO


S C++

40

LA EJECUCIN INDICADA ES EN
LNEA DE COMANDO Y HEMOS
SUPUESTO QUE NO REQUIERE DE
ARGUMENTOS ADICIONALES LA
INSTRUCCIN DE EJECUCIN; MS
ADELANTE EXPLICAREMOS Y
VEREMOS LA EJECUCIN CON
ARGUMENTOS EN LNEA DE
COMANDO.

Ferreiras

MIS PRIMEROS CODIGO


S C++

41

PRODUCCIN DE UNA
APLICACIN C++
EL
PROBLEMA
SUGERENCIA: Repasar las PPTs
INF206_Tema_03 de INF-206.
Todas estn en el grupo.

Ferreiras

MIS PRIMEROS CODIGO


S C++

42

ANLISIS
Y
DOMINIO
DEL
PROBLEMA

Ferreiras

MIS PRIMEROS CODIGO


S C++

43

DECLARACIN
DEL
PROBLEMA
(NARRATIVA)

Ferreiras

MIS PRIMEROS CODIGO


S C++

44

ENFOQUE E-P-S
E
ENTRADA

P
PROCESO

S
SALIDA

SU OBJETIVO ES IDENTIFICAR LAS


ENTRADAS, LOS PROCESOS Y LAS SALIDAS.
Ferreiras

MIS PRIMEROS CODIGO


S C++

45

DISEO
DEL
ALGORITMO

Ferreiras

MIS PRIMEROS CODIGO


S C++

46

ESCRIBIR
EL
ALGORITMO
EN
PSEUDOCODIGO

Ferreiras

MIS PRIMEROS CODIGO


S C++

47

ESCRIBIR EL
PSEUDOCODIGO
DEL
ALGORITMO
EN CDIGO
FUENTE C++

Ferreiras

MIS PRIMEROS CODIGO


S C++

48

GRABAR COMO bas1.cpp

EN NOTEPAD:

ESCRBALO AS ENTRE
PAR DE COMILLAS
DOBLES

1) NOMBRE: bas1.cpp
2) Tipo: Documento de texto (*.txt)
3) Codificacin: ANSI

Ferreiras

MIS PRIMEROS CODIGO


S C++

49

COMPILAR EL
CDIGO
FUENTE

Ferreiras

MIS PRIMEROS CODIGO


S C++

50

SI NO HAY ERRORES DE SINTAXIS


EN EL CDIGO FUENTE:

Ferreiras

MIS PRIMEROS CODIGO


S C++

51

ESTE ARCHIVO, bas1.obj, SE


GENERAR SI NO HAY ERRORES.

Ferreiras

MIS PRIMEROS CODIGO


S C++

52

PROCESO DE ENLACE (link)


PARA PRODUCIR EL
EJECUTABLE

Ferreiras

MIS PRIMEROS CODIGO


S C++

53

SI EL PROCESO DE ENLACE (link)


FUE EXITOSO:

Ferreiras

MIS PRIMEROS CODIGO


S C++

54

VERIFICAMOS TODOS LOS


ARCHIVOS DE LA APLICACIN:

bas1.exe es el ejecutable y bas1.tds


es un temporal que se puede eliminar.
Ferreiras

MIS PRIMEROS CODIGO


S C++

55

PROBAMOS LA APLICACIN,
CORRIENDO EL ARCHIVO .exe :

<ENTER>

Ferreiras

MIS PRIMEROS CODIGO


S C++

56

VALIDAMOS LOS RESULTADO :

Ferreiras

MIS PRIMEROS CODIGO


S C++

57

POR OTRO LADO, SI HAY


ERRORES DE SINTAXIS EN EL
CDIGO FUENTE:

NUMERO DE LNEA EN EL CDIGO


FUENTE DONDE ESTA EL ERROR
Ferreiras

MIS PRIMEROS CODIGO


S C++

58

CICLO C - G - C:

C: CORRECCIN
G: GRABACIN

SALIR DE
ESTE CICLO
CUANDO YA
NO HAY
ERRORES DE
SINTAXIS

C: COMPILACIN

Ferreiras

MIS PRIMEROS CODIGO


S C++

59

EN RESUMEN
EDITOR
ASCII

DECLARACIN DEL
PROBLEMA

ALGORITMO

COMPILACION

>bcc32 c a.cpp

a.cpp

ENLAZADO

SI

ERRORES ?

NO

a.obj

DEL ARCHIVO .cpp


AL EJECUTABLE .exe
Ferreiras

MIS PRIMEROS CODIGO


S C++

>bcc32 -l a.obj

a.exe
60

1) ESCRIBIR CDIGO FUENTE EN EDITOR


ASCII-STD( NOTEPAD, NOTEPAD++, EDIT,...);
2) COMPILACIN CDIGO OBJETO;
3) ENLACE CDIGO EJECUTABLE;
4) CORRER EL EJECUTABLE;
5) VALIDAR LOS RESULTADOS DE LA
EJECUCIN;
Ferreiras

MIS PRIMEROS CODIGO


S C++

61

ESTRUCTURA GENERAL
DE UN PROGRAMA FUENTE C++
// DIRECTIVAS DE PREPROCESAMIENTO
#include <iostream>
#include <conio>
#include <math>
// ESPACIO DE NOMBRE ESTANDAR
using namespace std;
// DECLARACIONES GLOBALES
// DEFINICIONES DE FUNCIONES
Ferreiras

MIS PRIMEROS CODIGO


S C++

62

// FUNCION PRINCIPAL
int main(void){
// cuerpo de main
return 0;
}

Ferreiras

MIS PRIMEROS CODIGO


S C++

63

LNEAS DE SENTENCIAS, EL PUNTO Y COMA


Una instruccin C++ termina en punto y coma (;)
BLOQUES DE SENTENCIAS
Dos o ms lneas de sentencias encerradas entre llaves:
{
s1;
s2;
...
s_n;
}
Ferreiras

MIS PRIMEROS CODIGO


S C++

64

ALCANCE DE LAS VARIABLES


Hasta que punto son reconocidas
despus de ser declaradas:
DE BLOQUE
DE FUNCION
DE ARCHIVO
Ferreiras

MIS PRIMEROS CODIGO


S C++

65

OPERACIONES DE
ENTRADA / SALIDA
En C++ podemos hacer operaciones de
entrada (LEER) y salida (ESCRIBIR) desde y
hacia:
1) Dispositivos estndar de E/S (Teclado /
Pantalla);
2) Archivos en dispositivos de almacenamiento
masivo y permanente (Discos, ...);
3) Cadenas de caracteres;
Ferreiras

MIS PRIMEROS CODIGO


S C++

66

En esta parte del curso trabajaremos


con operaciones de E/S desde y hacia
los dispositivos estndar ( teclado /
pantalla):
ENTRADA

programa

Ferreiras

programa

SALIDA

MIS PRIMEROS CODIGO


S C++

67

SENTENCIA DE SALIDA
Permiten a nuestro algoritmo mostrar el
resultado del procesamiento de los datos.

ALGORITM
O

Ferreiras

RESULTADOS

MIS PRIMEROS CODIGO


S C++

68

SENTENCIA DE ENTRADA
Permiten a nuestro algoritmo interactuar
con el exterior capturando los datos a ser
procesados.
DATOS A
PROCESAR

Ferreiras

MIS PRIMEROS CODIGO


S C++

ALGORITMO

69

C++ gestiona las operaciones de


entrada / salida usando el concepto
de flujo (stream) de bytes:

DISPOSITIVO
DE ENTRADA

bytebytebytebytebytbytebyttebyte
PROGRAMA

DISPOSITIVO
DE SALIDA

bytebytebytebytebytbytebyttebyte

Ferreiras

MIS PRIMEROS CODIGO


S C++

70

CONCEPTO DE FLUJO EN C++

ES
T
BY
E
OD
J
U
FL

DE
IA N
C
N NE S
E
R IO T E
E
F AC BY
S
N RM DE
A
TR NFO MA
I
R
O
F

Ferreiras

MIS PRIMEROS CODIGO


S C++

71

UN FLUJO ES UNA ABSTRACCIN


PARA REFERIRSE A CUALQUIER
FLUJO DE DATOS DESDE UNA
FUENTE (DISPOSITIVO DE ENTRADA)
HACIA UN CONSUMIDOR
(DISPOSITIVO DE SALIDA);

Ferreiras

MIS PRIMEROS CODIGO


S C++

72

El concepto de flujo de bytes Es una


abstraccin que permite que las
operaciones de E/S sean vistas por el
programador de manera similar e
independiente de los elementos de bajo
nivel del sistema operativo
( controladores, conexin con los
dispositivos de E/S,...);

Ferreiras

MIS PRIMEROS CODIGO


S C++

73

En el modelo de flujo la informacin se


mueve como secuencia de bytes annimos
que entran por el flujo de entrada y salen
por el flujo de salida;
La informacin es insertada en el
flujo de salida o extrada desde el flujo
de entrada;

Ferreiras

MIS PRIMEROS CODIGO


S C++

74

EXTRACCIN, OBTENER Y RECOGER


SON SINNIMOS CUANDO SE HABLA
DE ENTRADA DE BYTES DESDE UNA
FUENTE (DISPOSITIVO DE ENTRADA);

Ferreiras

MIS PRIMEROS CODIGO


S C++

75

INSERCIN, PONER Y
ALMACENAR SON SINNIMOS
CUANDO SE HABLA DE SALIDA DE
BYTES HACIA UN CONSUMIDOR
(DISPOSITIVO DE SALIDA);

Ferreiras

MIS PRIMEROS CODIGO


S C++

76

ENTRADA : UN FLUJO DESDE UN


DISPOSITIVO DE ENTRADA ( TECLADO,
DISCO, ESCNER, RED ) HACIA LA
MEMORIA PRINCIPAL;
SALIDA: UN FLUJO DESDE LA
MEMORIA PRINCIPAL A UN DISPOSITIVO
DE SALIDA ( IMPRESORA, PANTALLA,
RED, DISCO, MEMORIA FLASH);
Ferreiras

MIS PRIMEROS CODIGO


S C++

77

FLUJOS DE E/S ESTNDAR


# 0 stdin

TECLADO

PANTALLA

# 1 stdout

p
r
o
g
r
a
m
a

canales
TERMINAL DE TEXTO
Ferreiras

MIS PRIMEROS CODIGO


S C++

78

Los flujos estndar son canales


de entrada y salida preconectados
al programa y su entorno
(normalmente un Terminal de texto
compuesto por un teclado y una
pantalla ) cuando este inicia su
ejecucin.
Ferreiras

MIS PRIMEROS CODIGO


S C++

79

Los canales preconectados son tres


y son llamados:
# 0 standard input, stdin
# 1 standard output , stdout
# 2 standard error, stderr
En este curso trabajaremos, bsicamente,
con los flujos estandar stdin y stdout;

Ferreiras

MIS PRIMEROS CODIGO


S C++

80

RECURSOS C++ PARA


E/S ESTNDAR
PARA LAS OPERACIONES DE E/S
POR LOS DISPOSITIVOS
ESTNDAR, TECLADO Y PANTALLA,
C++ DISPONE DE LOS RECURSOS
cin >> , cout << Y endl; ENTRE
OTROS; TODOS ESTN EN LA
LIBRERA <iostream>;
Ferreiras

MIS PRIMEROS CODIGO


S C++

81

cout << PARA INSERTAR BYTES DE


INFORMACIN EN EL FLUJO DE SALIDA
USANDO EL OPERADOR DE INSERCIN <<
cin >> PARA EXTRAER BYTES DE
INFORMACIN DESDE UN FLUJO DE
ENTRADA HACIA UNA VARIABLE USANDO EL
OPERADOR DE EXTRACCIN >> ;
endl ES UN MANIPULADOR DE FLUJO QUE SE
USA CON cout <<; INSERTA UN CR/LF (UN
newline) Y VACA EL BUFFER DE SALIDA;
Ferreiras

MIS PRIMEROS CODIGO


S C++

82

cout <<
cout <<

expresin;

esta expresin es evaluada y su


resultado es, entonces,
insertado en el flujo estndar de
salida para se mostrado por el
dispositivo estndar de salida, la
pantalla.
Ferreiras

MIS PRIMEROS CODIGO


S C++

83

endl
cout <<

expresin << endl;

esta expresin es evaluada y su resultado


es, entonces, insertado en el flujo
estndar de salida y almacenado en el
buffer para ser mostrado su contenido en
el dispositivo estndar de salida (la
pantalla) con una newline al final.
Ferreiras

MIS PRIMEROS CODIGO


S C++

84

SALIDA

<<

cout

byte1byte2byte3byte

OPERADOR
DE INSERCIN
EN EL FLUJO
ESTNDAR DE
SALIDA

# 1 stdout

DE RAM AL MONITOR
Ferreiras

MIS PRIMEROS CODIGO


S C++

85

# include <iostream>
using namespace std;
int main(void){
cout << endl << endl << "!! Aqui estamos !! "
<< endl << endl << "En C++ con Ferreiras"
<< endl << endl << "Tema: C++ Basico"
<< "\n\n VAMOS A TRABAJAR 24/7 !!";
cout << endl << endl;
return 0;
}

Ferreiras

MIS PRIMEROS CODIGO


S C++

86

/*
int64bits
Compilador: bcc32 5.5
C++ / Ferreiras / Tipos fundamentales de datos en C++
Tipo __int64
__int64 support both signed and unsigned data type. If it is signed
then it can hold (2^63) - 1 at max. For unsigned it can hold
(2^64) - 1:
* signed [ -( 2^(64-1) ), ( +(2^(64-1))-1 ) ]
-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807
* unsigned [ 0, (+(2^64)- 1) ]
18446744073709551615 [ Er diablo, cuantos numeros !! ]
*/
Ferreiras

MIS PRIMEROS CODIGO


S C++

87

#include <iostream>
using namespace std;
int main(void){
unsigned __int64 entero_grande(18446744073709551615);
cout << endl << entero_grande << endl;
return 0;
}
/*
C:\Borland\BCC55\Bin>int64bits
18446744073709551615
*/

Ferreiras

MIS PRIMEROS CODIGO


S C++

88

!! Aqui estamos !!
En C++ con Ferreiras
Tema: C++ Basico
VAMOS A TRABAJAR 24/7 !!

Ferreiras

MIS PRIMEROS CODIGO


S C++

89

cin >>
cin >> variable;
La ejecucin del programa se detiene a esperar una entrada
suplida por el teclado ignorando los whispaces que sean pulsados
antes (barra espaciadora, tecla enter, tab);
En esta variable es que se captura la informacin, por lo tanto,
el tipo debe ser correspondiente con el tipo de dato a capturar.
Al terminar la captura (extraccin) cin agrega un newline en
el flujo estndar de entrada;
La extraccin es hasta el primer espacio en blanco;

Ferreiras

MIS PRIMEROS CODIGO


S C++

90

ENTRADA

# 0 stdin

cin

byte1byte2byte3byte

DEL TECLADO A RAM

Ferreiras

MIS PRIMEROS CODIGO


S C++

>>

OPERADOR DE
EXTRACCIN DEL FLUJO
ESTNDAR DE ENTRADA

91

/*
bas1a.cpp
Compilador: bcc32 5.5
C++/ Ferreiras/ Flujos estandar de E-S /
uso de cout << y de cin >>
*/

Ferreiras

MIS PRIMEROS CODIGO


S C++

92

# include <iostream>
# include <string>
using namespace std;
int main(void){
string nombre, apellido, completo;
cout << "\n\nENTRADA Y SALIDA ESTANDAR EN C++";
cout << "\n\nENTRE SU NOMBRE [UNA SOLA PALABRA]: ";
cin >> nombre;
cout << "\nENTRE SU APELLIDO [UNA SOLA PALABRA]: ";
cin >> apellido;
cout << "\n\n VERIFICACION DE LA CAPTURA";
cout << "\n\n NOMBRE: " << nombre;
cout << "\n\nAPELLIDO: " << apellido << endl;
Ferreiras

MIS PRIMEROS CODIGO


S C++

93

// Uso incorrecto de los tipos de datos


// (a) Considerando
float b(1.23), h(2.34);
cout << "\n AREA T como 1/2*b*h = " << 1/2*b*h
<< "\n\nAREA T como 1.0/2.0*b*h = " << 1.0/2.0*b*h << endl;
return 0;
}

Ferreiras

MIS PRIMEROS CODIGO


S C++

94

C:\Borland\BCC55\Bin>bas1a
ENTRADA Y SALIDA ESTANDAR EN C++
ENTRE SU NOMBRE [UNA SOLA PALABRA]: Fresdebindo
ENTRE SU APELLIDO [UNA SOLA PALABRA]: Leupocito
VERIFICACION DE LA CAPTURA
NOMBRE: Fresdebindo
APELLIDO: Leupocito
AREA T como 1/2*b*h = 0
AREA T como 1.0/2.0*b*h = 1.4391
Ferreiras

MIS PRIMEROS CODIGO


S C++

95

cout << y cin >> Estn atados uno con el otro.


Esto significa que cuando se combinan en una operacin
de E/S, el flujo estndar de salida cout es vaciado
antes de que se ejecute el flujo estndar de entrada cin
y viceversa, incluso cuando endl no este usado en el
cout. Esto es mostrado en estas sentencias del
ejemplo anterior:
cout << "\n\nENTRADA Y SALIDA ESTANDAR EN C++";
cout << "\n\nENTRE SU NOMBRE [UNA SOLA PALABRA]: ";
cin >> nombre;
cout << "\nENTRE SU APELLIDO [UNA SOLA PALABRA]: ";

Los dos primeros cout son ejecutados completamente antes de que cin se
ejecute; Por igual, el cin se ejecuta completamente antes del siguiente
cout. ;

Ferreiras

MIS PRIMEROS CODIGO


S C++

96

LECTURA SIMULTANEA
EN MAS DE UNA VARIABLE
//...
string nombre; long matricula; double pago;
// En vez de hacer esto:
cin >> nombre;
cin >> matricula;
cin >> pago;
// C++ permite combinar en un solo cin la
// captura simultanea de las tres variables:
cin >> nombre >> matricula >> pago;
//...
Ferreiras

MIS PRIMEROS CODIGO


S C++

97

USO DE
getline(cin, str, [delim] )
getline(cin, str, [delim]);
nos permite capturar un flujo de
entrada estndar incluyendo los
espacios en blanco;
[...] Significa opcional.
Ferreiras

MIS PRIMEROS CODIGO


S C++

98

cin Es el recurso para leer desde el


flujo estndar de entrada;
str Es una variable tipo string; Esto
implica que se requiere usar la librera
<string>, propia de C++;

Ferreiras

MIS PRIMEROS CODIGO


S C++

99

delim Es un carcter ascii-std


cualquiera que es usado para indicarle a
cn hasta donde leer en el flujo de entrada
estndar; Si no se indica entonces el
delimitador por defecto es el newline (\n);
[...] Significa opcional.
La extraccin se efecta hasta encontrar
el delimitador, el cual no es almacenado en
la variable;

Ferreiras

MIS PRIMEROS CODIGO


S C++

100

/*
bas1b.cpp
Compilador: bcc32 5.5
C++/ Ferreiras/ Flujos estandar de E-S /
uso de getline( cin, str, [delim] )
*/

Ferreiras

MIS PRIMEROS CODIGO


S C++

101

# include <iostream>
# include <string>
using namespace std;
int main(void){
string completo;
cout << "\n\nENTRADA Y SALIDA ESTANDAR EN C++" << endl;
cout << "\nENTRE SU NOMBRE Y APELLIDO COMPLETOS:\n ";
getline(cin, completo);
cout << "\n\n VERIFICACION DE LA CAPTURA" << endl;
cout << "\nCOMPLETO: " << completo << endl;
return 0;
}

Ferreiras

MIS PRIMEROS CODIGO


S C++

102

/*
C:\Borland\BCC55\Bin>bas1b
ENTRADA Y SALIDA ESTANDAR EN C++
ENTRE SU NOMBRE Y APELLIDO COMPLETOS:
Fresdebindo Leupocito Colgadero Sanchez
VERIFICACION DE LA CAPTURA
COMPLETO: Fresdebindo Leupocito Colgadero Sanchez
*/

Ferreiras

MIS PRIMEROS CODIGO


S C++

103

USO COMBINADO DE
getline y cin
En el uso combinado de getline y
cin hay que tener en cuenta que si
usamos primero el cin, entonces
getline pasar como una voladora de
FENATRANO y no leer nada. Ver en el
ejemplo bas4.cpp la solucin de eso.

Ferreiras

MIS PRIMEROS CODIGO


S C++

104

<sstream>
PROVEE LOS RECURSOS PARA
OPERACIONES DE E/S BASADAS EN
CADENAS:
ESCRIBIR HACIA UNA CADENA;
LEER DESDE UNA CADENA.
A VER MS ADELANTE.
Ferreiras

MIS PRIMEROS CODIGO


S C++

105

<fstream>
PROPORCIONA RECURSOS PARA LA
EJECUCIN DE OPERACIONES DE
FLUJOS E/S SOBRE ARCHIVOS EN
DISCOS.
A SER DISCUTIDO EN OTRO TEMA

Ferreiras

MIS PRIMEROS CODIGO


S C++

106

GRACIAS !!

Ferreiras

MIS PRIMEROS CODIGO


S C++

107

También podría gustarte