You are on page 1of 107

INF-510

MIS PRIMEROS CDIGOS EN C++


V4.0 SEPTIEMBRE 2009 FERREIRAS.
Ferreiras MIS PRIMEROS CODIGOS C++ 1

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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++ 5

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 CODIGOS C++ 6

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 CODIGOS 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 CODIGOS C++ 8

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 CODIGOS 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 CODIGOS 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 CODIGOS C++

11

El compilador recibe como entrada el archivo fuente y produce como salida un archivo objeto ( archivos .obj);

.cpp
archivo fuente

.obj
compilador (bcc32)
MIS PRIMEROS CODIGOS C++

archivo objeto

Ferreiras

12

El enlazador recibe como entrada archivo(s) objeto(s) y produce como salida un archivo ejecutable (.exe);

.obj
archivo objeto

.exe
enlazador (ilink32)
archivo ejecutable

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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

.obj

bibliotecario (tlib)
MIS PRIMEROS CODIGOS C++

librera esttica
15

Ferreiras

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

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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:

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

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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; b) Compilador;

d) Un linker;
e) Ayudas en lnea (hints); f) ...

c) Depurador;
Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++

27

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

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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:

Usando el bcc32 5.5 en lnea de comando


33

Ferreiras

MIS PRIMEROS CODIGOS C++

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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++

42

ANLISIS Y DOMINIO DEL PROBLEMA

Ferreiras

MIS PRIMEROS CODIGOS C++

43

DECLARACIN DEL PROBLEMA (NARRATIVA)

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS C++ 45

DISEO DEL ALGORITMO

Ferreiras

MIS PRIMEROS CODIGOS C++

46

ESCRIBIR EL ALGORITMO EN PSEUDOCODIGO

Ferreiras

MIS PRIMEROS CODIGOS C++

47

ESCRIBIR EL PSEUDOCODIGO DEL ALGORITMO EN CDIGO FUENTE C++

Ferreiras

MIS PRIMEROS CODIGOS C++

48

GRABAR COMO bas1.cpp


ESCRBALO AS ENTRE PAR DE COMILLAS DOBLES

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

Ferreiras

MIS PRIMEROS CODIGOS C++

49

COMPILAR EL CDIGO FUENTE

Ferreiras

MIS PRIMEROS CODIGOS C++

50

SI NO HAY ERRORES DE SINTAXIS EN EL CDIGO FUENTE:

Ferreiras

MIS PRIMEROS CODIGOS C++

51

ESTE ARCHIVO, bas1.obj, SE GENERAR SI NO HAY ERRORES.

Ferreiras

MIS PRIMEROS CODIGOS C++

52

PROCESO DE ENLACE (link) PARA PRODUCIR EL EJECUTABLE

Ferreiras

MIS PRIMEROS CODIGOS C++

53

SI EL PROCESO DE ENLACE (link) FUE EXITOSO:

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS C++ 55

PROBAMOS LA APLICACIN, CORRIENDO EL ARCHIVO .exe :

<ENTER>

Ferreiras

MIS PRIMEROS CODIGOS C++

56

VALIDAMOS LOS RESULTADO :

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS C++ 58

CICLO C - G - C:

C: CORRECCIN
G: GRABACIN C: COMPILACIN

SALIR DE ESTE CICLO CUANDO YA NO HAY ERRORES DE SINTAXIS

Ferreiras

MIS PRIMEROS CODIGOS C++

59

EN RESUMEN
EDITOR ASCII

ALGORITMO
>bcc32 c a.cpp

DECLARACIN DEL PROBLEMA

a.cpp

COMPILACION

ENLAZADO

SI

ERRORES ?

NO

a.obj

>bcc32 -l a.obj

DEL ARCHIVO .cpp AL EJECUTABLE .exe


Ferreiras MIS PRIMEROS CODIGOS C++

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 CODIGOS 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 CODIGOS C++ 62

// FUNCION PRINCIPAL int main(void){ // cuerpo de main

return 0;
}

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS C++ 64

ALCANCE DE LAS VARIABLES Hasta que punto son reconocidas despus de ser declaradas: DE BLOQUE

DE FUNCION
DE ARCHIVO
Ferreiras MIS PRIMEROS CODIGOS 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 CODIGOS C++ 66

En esta parte del curso trabajaremos con operaciones de E/S desde y hacia los dispositivos estndar ( teclado / pantalla):
ENTRADA programa

programa

SALIDA

Ferreiras

MIS PRIMEROS CODIGOS C++

67

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

ALGORITM O

RESULTADOS

Ferreiras

MIS PRIMEROS CODIGOS C++

68

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

DATOS A PROCESAR

ALGORITMO

Ferreiras

MIS PRIMEROS CODIGOS C++

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 CODIGOS C++

70

CONCEPTO DE FLUJO EN C++

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++

74

EXTRACCIN, OBTENER Y RECOGER SON SINNIMOS CUANDO SE HABLA DE ENTRADA DE BYTES DESDE UNA FUENTE (DISPOSITIVO DE ENTRADA);

Ferreiras

MIS PRIMEROS CODIGOS C++

75

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

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS C++ 77

FLUJOS DE E/S ESTNDAR


TECLADO

# 0 stdin
p r o g r a m a

PANTALLA

# 1 stdout
canales

TERMINAL DE TEXTO
Ferreiras MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++ 84

SALIDA
byte1byte2byte3byte

cout

<<
OPERADOR DE INSERCIN EN EL FLUJO ESTNDAR DE SALIDA

# 1 stdout

DE RAM AL MONITOR
Ferreiras MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++

88

!! Aqui estamos !!
En C++ con Ferreiras

Tema: C++ Basico


VAMOS A TRABAJAR 24/7 !!

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS C++

90

ENTRADA

# 0 stdin

cin

byte1byte2byte3byte

>>

DEL TECLADO A RAM

OPERADOR DE EXTRACCIN DEL FLUJO ESTNDAR DE ENTRADA

Ferreiras

MIS PRIMEROS CODIGOS C++

91

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

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++

100

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

Ferreiras

MIS PRIMEROS CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS 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 CODIGOS C++

106

GRACIAS !!

Ferreiras

MIS PRIMEROS CODIGOS C++

107

You might also like