Вы находитесь на странице: 1из 172

1

Clase 01
07/09 mayo 2014
1
Tipos de datos

declaraciones de variables y constantes

Expresiones y operadores

Asignacin e inicializacin

Entrada y salida de datos

Bibliografa / Fuentes
2
OBJETIVOS
OBJETIVO GENERAL
Conocer los principios fundamentales de
la programacin en C++.
OBJETIVOS ESPECFICOS
Conceptualizar e implementar un
programa.
Conocer e implementar los tipos de datos
de un lenguaje de programacin de alto
nivel.



3

I. Problem-Solving
a) Entender el problema (definirlo) y lo que
la solucin debe ser.
b) Crear una secuencia de pasos que
resuelvan el problema.
c) Verificar los pasos para asegurarse que la
solucin realmente resuelve el problema
LAS TRES FASES DE IMPLEMENTACIN
II. Implementation Phase
a) Concretar la solucin (programa). Convertir el
algoritmo a un lenguaje de programacin.
b) Probar el programa y corregir los errores si es
que tiene.
III. Maintenance Phase
a) Utilizar el programa en produccin.
b) Modificar el programa para que se atempere a
los nuevos requerimientos o para arreglar
errores de programacin.
LAS TRES FASES DE IMPLEMENTACIN (2)
PRODUCIN

EXE
DATA
SOURCE
REPORT
TEMP
PRUEBA

EXE
DATA
SOURCE
REPORT
TEMP
CONCEPTOS DE INSTALACIN Y EJECUCIN
DE PROGRAMAS EN UN SISTEMA
COMPUTARIZADO

1. Programming Planificar la ejecucin de una tarea o
evento.
2. Computer Un equipo (device) el cual puede
almacenar, obtener y procesar data.
3. Computer program Una secuencia de intrucciones
a ser ejecutadas por una computadora.
4. Computer programming El arte de planificar una
secuencia de pasos para que una computadora los
ejecute.
VOCABULARIO

C++
JAVA
ADA
COBOL
Algoritmo
(Pseudocdigo)
Un Algoritmo traducido a diferentes lenguajes

Fulanito
C++
Menganita
C++
Sutanito
C++
Minguita
C++
Algoritmo
(Pseudocdigo)
Un Algoritmo traducido por diferentes personas

1. Documentacin Texto escrito y comentarios que
hacen que el programa sea fcil para otros de
entender.
2. Informacin Cualquier conocimiento que puede ser
comunicado.
3. Data Factores crudo almacenados de tal forma que
la computadora puede acederlos.
Ejemplo:
Data = Horas Trabajadas (40) Rate (5.55)
Informacin = Sueldo Bruto = 40 x 5.55 = $ 222.00
VOCABULARIO (2)

VOCABULARIO (3)

1. Machine language Instrucciones codificadas en binario (ceros
y unos) que la puede utilizar directamente la computadora.
2. Assembly language Lenguaje de programacin de bajo nivel
(low level) que utiliza mnemnicos para representar cada una
de las intrucciones en machine language de una computadora
en particular.
3. Assembler Programa que traduce de assembly a machine
language.
Ejemplo:
Assembly Language Machine Language
ADD 100101
MOV 010011
VOCABULARIO (4)

1. Compiler Programa que valida primero un programa
de alto nivel (high level) y luego lo traduce a machine
code.
2. Interpretador Programa que traduce las intruciones de
un programa de alto nivel lnea por lnea.
3. Source program Un programa escrito en lenguaje de
alto nivel. Ejemplo: C++, COBOL, PASCAL, RPG
4. Object program La versin en machine language del
source program.

PLATAFORMAS
WINDOWS PC
Computadora
WINDOWS PC
Machine language
WINDOWS PC
Compilador de C++
UNIX WORKSTATION
Computadora
UNIX WORKSTATION
Machine language
UNIX WORKSTATION
Compilador de C++
MACINTOSH
Computadora
MACINTOSH
Machine language
MACINTOSH
Compilador de C++
Programa en C++
Los lenguajes de alto nivel permiten que un programa pueda
ejecutarse en diferentes plataformas.
COMPILACIN
Crear el
source program
Invocar el
compilador
Arreglar los
errores.
Errores
?
El compilador
crea el
object program
A
Y
N
COMPILACIN (CONT.)
El object program
se convierte a un
formato ejecutable.
(machine language)
Para poder ejecutarse,
el programa tiene
que cargarse (loading)
a memoria.
A
B
EJECUTAR
Datos de
Entrada
(input)
La computadora ejecuta
las instruciones que estn en
machinelanguage del
source program compilado.
Se obtienen los
resultados de la
corrida del
programa.
B
COMPILADOR VS INTERPRETADOR
COMPILAR
1. Valida que todas las
intrucciones estn escritas
correctamente.
2. Convierte el source
program a object
program.
3. La computadora puede
ejecutar ese object
program una vez se
prepare para correr en
memoria.
INTERPRETAR
1. Valida cada lnea por
separado.
2. Convierte esa lnea a
machine language y la
ejecuta.
3. Prosigue con la prxima
instruccin y repite los
pasos 1 y 2.
4. En caso de encontrar una
instruccin mal escrita. El
interpretador aborta.
COMPILADOR VS INTERPRETADOR
VENTAJAS
COMPILADOR
1. Se ejecuta mucho mas
rpido.
2. Te verifica la sintaxis de
todo el programa desde el
mismo principio.
INTERPRETADOR
1. Puede correr al momento
aunque existan errores, lo
cual permite al programador
depurar (debug) el
programa mas
eficientemente.
2. Comienza a ejecutarse con
mayor rapidez ya que no
tiene que esperar a validar
todas las intrucciones del
programa.
COMPILADOR
1. Si no estn todas las
instrucciones escritas
corretamente, no se podr
ejecutar.
2. El compilador esta atado a
la plataforma en la que
est generando el object
program.
INTERPRETADOR
1. Las instrucciones se ejecutan
en promedio mas lentas que
las del compilador.
2. La forma de comunicar al
programador los errores
podra no ser tan claros como
los mensajes que suele enviar
el compilador.
COMPILADOR VS INTERPRETADOR
DESVENTAJAS

JAVA LA EXCEPCIN
JAVA utiliza ambos conceptos del compilador y del interpretador.
Trabaja de la siguiente forma.
1. Un programa en JAVA es compilado, pero no en un
machine language de una computadora en particular,
sino en un cdigo intermedio llamado bytecode
2. Luego, en cualquier plataforma, debe haber un programa
llamado Java Virtual Machine (JVM) que interpreta ese
cdigo intermedio (bytecode) y lo traduce a
intrucciones que son exclusivas de esa plataforma (PC,
UNIX, MAC, etc.).
3. Esto permite que JAVA se pueda ejecutar en cualquier
plataforma sin la necesidad de recompilar el cdigo.
DIAGRAMA DE JAVA
Source program hecho en JAVA.
Compilador de JAVA.
El compilador genera un cdigo intermedio
llamado bytecode.
El JVM interpreta ese cdigo intermedio
y lo ejecuta.
HISTORIA DE C++
1. A finales de los 60 y principio de los 70, Dennis Ritchi creo el
lenguaje de programacin C en los laboratorios ATT&T Bell.
2. C combina capacidades de los lenguajes bajo nivel (low level)
con la facilidad de uso y portabilidad de los lenguajes de alto nivel
(high-level).
3. El 90 porciento del cdigo UNIX es en C y solo el 10 porciento es
lenguaje Asembly.
4. Su nombre surge de otro lenguaje de la poca llamado BCPL
(Basic Combined Programming Lamguage) al cual se le haca
referencia como B. Dennis tomo capacidades de ese lenguaje y
penso que era natural, que el nuevo lenguage creado se llamara
C.
HISTORIA DE C++ (CONT.)
5. En 1985 Bjarne inventa C++ el cual tiene las
capacidades de C combinado con otros conceptos
modernos.
6. El smbolo ++ significa incrementacin y por lo tanto
sugiere la idea de un lenguaje mejorado. Prefirieron
eso a llamar a este nuevo lenguaje D.
7. En 1988 se estandariza el C++ por una unin de dos
comites (ISO y ANSI). ISO = International Standard
Organization. ANSI = American National Standards
Institute.
LAS ESTRUCTURAS DE CONTROL
I. Secuencia

II. Seleccin (IF)

III. Ciclo (LOOP)

IV. Sub-programa

V. CASE (no ilustrada)

VI. Evento (EVENT)
FORMAS DE TRABAJAR UN PROBLEMA
Sub-problema
fcil
Sub-sub-problema
fcil
Sub-sub-problema
fcil
Sub-problema
difcil
Sub-problema
fcil
Problema
complejo
Mtodo que se utilizar durante el curso.
LA ESTRUCTURA DE C++
main function
Square function
Cube function
1. En C++ todos los sub-
programas se llaman
funciones (functions).
2. Un programa en C++ puede
ser un conjunto de funciones.
3. Cada funcin realiza una tarea
en particular con el objetivo de
resolver un problema.
4. El ejemplo del lado tiene 3
funciones. La principal y dos
auxiliares.
ESTRUCTURA (CONT.)
main function
Square function
Cube function
Todo programa en C++ tiene una
funcin llamada main. La
ejecucin del programa siempre
comienza aqui. Se puede decir
que main es la funcin master
e invoca a las demas para poder
completar su tarea.
Square y Cube son las funciones
auxiliares que son invocadas por la
funcin main. Las tres funciones
son necesarias para poder
completar el problema.
LISTADO DEL PROGRAMA
EN C++
//******************************************************************
// Sample program
// This program computes the square and cube of 27
//******************************************************************
#include <iostream>
using namespace std;
int Square( int );
int Cube( int );
int main()
{
cout << "The square of 27 is " << Square(27) << endl;
cout << "and the cube of 27 is " << Cube(27) << endl;
return 0;
}
int Square( int n )
{
return n * n;
}
int Cube( int n )
{
return n * n * n;
}

FUNCIN main
int main()
{
cout << "The square of 27 is " << Square(27) << endl;
cout << "and the cube of 27 is " << Cube(27) << endl;
return 0;
}

Marca el comienzo de las intrucciones que se van
a ejecuar.
Marca el final de las intrucciones que se van a
ejecuar.
Estas instrucciones se conocen como el
cuerpo body del programa.
Primera instruccin del
programa.
El resultado que va a devolver este programa es:
The square of 27 is 729
And the cube of 27 is 19683
Encabezamie
nto.
FUNCIONES AUXILIARES
int Square( int n )
{
return n * n;
}
int Cube( int n )
{
return n * n * n;
}
Ambas funciones son
ejemplo de funciones
llamadas value-returning
functions
Este identifier establece que la funcin
Square devuelve un resultado entero.
El identifier return le
permite a la funcin
devolver un valor.
VOCABULARIO
1. Funcin Un sub-programa en C++.
2. Syntax Reglas que indican como se escriben las
instrucciones correctamente en un lenguaje de programacin.
3. Semantics Conjunto de reglas que determinan el significado
de las instrucciones escritas en un lenguaje de programacin.
4. Metalanguage Un lenguaje que es usado para escribir las
reglas de sintaxis para otros lenguajes.
5. Identifier Un nombre asociado a una funcin o data
object y se utiliza para hacer referencia a esa funcin o data
object.
METALANGUAGE
Syntax template
Existen muchas formas de hacer
anotaciones para especificar los
lenguages. Estas anotaciones, se
llaman metalanguage.
Utilizaremos el formato llamado
syntax template para indicar
formatos de instrucciones en el
programa.
Letter Letter
_ _
Digit
Ejemplo: El template
para un identifier es:
El rea sombreada significa que es
opcional. Los 3 puntos significan que se
puede repetir el smbolo que le precede.
TEMPLATE NMERO Y
LETRAS
Por lo tanto concluimos que un identifier puede comenzar con
una letra o un guin y puede seguir repitiendose ese patrn. Los
templates para letras y nmeros son:

A a J j S s
B b K k T t
C c L l U u
D d M m V v
E e N n W w
F f O o X x
G g P p Y y
H h Q q Z z
I I R r



0
1
2
3
4
5
6
7
8
9


TEMPLATE DE LA FUNCIN main
int main()
{
statement
.
.
.
}
La instruccin en gris significa
que es opcional y los tres
puntos, que se pueden incluir
mas instrucciones. El programa
mas corto en C++ sera.
int main()
{
return 0;
}
IDENTIFIERS
Los identifiers se utilizan en C++ para nombrar cosas tales como sub-
programas, variables, constantes, etc. Se compone de letras (A-Z, a-z) y de
dgitos (0-9) y el underscore (_). Sin embargo, debe empezar con una letra
o con el underscore. Los que comienzan con el underscore, tienen un
significado especial en algunos compiladores de C++, de modo que
siempre comenzaremos con letras.
Letter Letter
_ _
Digit
Template del identifier
Ejemplos de identifiers vlidos
1. suma_de_cuadrados
2. J9
3. ObtenerDatos
4. Contador
5. Bin3D4
IDENTIFIERS INVLIDOS
IDENTIFIER
INVLIDO
Explicacin
40Horas
No puede comenzar con nmeros.
Obtener Datos
No se permiten espacios en blanco.
box-22
El guin (hyphen) no es vlido.
costo_en_$
No se pueden utilizar smbolos
especiales como el signo de dolar.
int
La palabra int es una palabra
reservada en C++.
QUIZZ # 1 DETERMINE SI ES VLIDO O
INVLIDO24
IDENTIFIER VLIDO/INVLIDO (Razn)
say_what
eres_#_1
return
Buscar
pacoAmigoGrande
5Veces
habichuela Colora
dude
cuajito-con-guineo
Main
IDENTIFIER VLIDO/INVLIDO (Razn)
say_what Vlido
eres_#_1 Invlido Signo #
return Invlido Palabra reservada
Buscar Vlido
pacoAmigoGrande Vlido
5Veces Invlido Comienza con un nmero.
habichuela Colora Invlido Espacio en blanco.
dude Vlido
cuajito-con-guineo Invlido Uso del guin.
Main Vlido
QUIZZ # 1 RESPUESTAS
DATA TYPE
El Data type determina como los datos son representados en la
computadora y los tipos de procesamientos que la computadora
puede ejecutar en ellos. El propsito de las distintas representaciones,
es optimizar el uso de la memoria. Algunas de las representaciones de
datos en C++ son.
char short int long
Integral
float double long double
Floating
C++
data types
Simple
Char Data Type
Los Data type tipo char describen datos los cuales consisten de un solo
caracter. Pueden ser una letra, un dgito o un caracter especial. Se
utilizar el signo ( ) para representar los valores tipo char.

EJEMPLOS:

A a 8 2 ?
+ - $ *
String Data Type
Los Data type tipo String describen datos los cuales consisten de mas
de un caracter. Pueden ser letras, dgitos o caracteres especiales. Se
utilizar el signo ( ) para representar los valores tipo String.
EJEMPLOS:
C++ Programacin Petraca
la vaca
y Minga
Naming Elements:
Declarations
Los identifiers se utilizan entre otras cosas para ponerle nombre a las
constantes y a las variables. En otras palabras, un identifier puede
ser el nombre de una localizacin de memoria. Utilizamos
declaraciones para poder definir varibles y constantes.
Formato para declarar una variable.
DataType Identifier , Identifier . . .;
EJEMPLO DE DECLARACIONES DE
VARIABLES
char letra, laInicial, ch;

char letra;
char laInicial;
char ch;


float payRate; //Pago por hora al empleado
float horas; // Horas trabajadas
float salario; // Salario del empleado
int cantidadEmpleados; // Cantidad de empleados
Se puede definir mas de una variable en
una sola declaracin del mismo tipo.
Se recomienda que se declaren las varibles
con una sola declaracin.
Separar las declaraciones permite documentarlas.
CONSTANTES
Todo caracter encerrado entre comillas sencillas () y strings
encerrados en doble comillas () son constantes. Las constantes son
valores que nunca cambian. Cuando usamos el valor de una constante
en un programa, la llamamos literal value. Tambin se le conoce
como named constant o symbolic constant.
EJEMPLOS
A @ UTP
Entre nmero * 123456789
Se pueden utilizar en un programa como un literal string o una
constante (named constant).
Literal string El Arte de Programar Computadoras en C++
Named constant BOOK_TITLE
EJEMPLO DE DECLARACIONES DE
CONSTANTES
const DataType Identifier = LiteralValue;
El template para definir una constante es:
Ejemplo de declaraciones de constantes:
const string ESTRELLAS = **********;
const char BLANCO = ;
const string BOOK_TITLE = El Arte de Programar Computadoras C++
const string EL_MENSAJE = garra crema
QUIZZ # 2 ESCRIBA LA DECLARACIN

DESCRIPCIN DECLARACIN
Variable entera llamada total.
Constante tipo float llamada PI con valor
3.14159.
Variable tipo char llamada inicial.
Variable tipo string llamada titulo.
Constante entera llamada
HORAS_SEMANA con valor = 40.
Constante tipo char llamada PORCIENTO
con valor = %.
Constante tipo string llamada CAFE con
valor = agua de piringa.
QUIZZ # 2 RESPUESTAS
DESCRIPCIN DECLARACIN
Variable entera llamada total.
int total;
Constante tipo float llamada PI con valor
3.14159.
const float PI = 3.14159;
Variable tipo char llamada inicial.
char inicial;
Variable tipo string llamada titulo.
string titulo;
Constante entera llamada
HORAS_SEMANA con valor = 40.
const int
HORAS_SEMANA = 40;
Constante tipo char llamada PORCIENTO
con valor = %.
const char PORCIENTO
= %;
Constante tipo string llamada CAFE con
valor = altomayo.
const string CAFE =
altomayo;
VOCABULARIO (2)
1. Palabra reservada Una palabra que tiene un significado especial
en C++. No puede ser usado como una variable.
2. Data Type Valores de datos en conjunto con unas operaciones
para esos valores.
3. Variable - Localizacin en memoria a la cual se le hace
referencia utilizando un identifier que contiene un valor y
puede ser modificable.
4. Declaration Comando que asocia un identifier con un data
object, funcin o data type.
5. Constantes Localizacin en memoria a la cual se le hace
referencia utilizando un identifier que contiene un valor y NO
puede ser modificable.
ASIGNACIONES
El valor de una variable puede ser definido o cambiado utilizando un
assignment statement el cual almacena el valor de una expresin.
Por ejemplo:
lastName = Chomsky;
Asigna el string Chomsky a la variable lastName. El template para
asignar valores es:
Variable = Expression;
EJEMPLO DE ASIGNACIONES VLIDAS
Utilizando las
siguientes
declaraciones:
string firstName;
string middleName;
string lastName;
string title;
char middleInitial;
char letter;
VLIDOS
firstName = Javier;
middleName = firstName;
middleName = ;
lastName = Cabrera;
title = Doctor;
middleInitial = ;
letter = middleInitial;
EJEMPLO DE ASIGNACIONES INVLIDAS
Utilizando las
siguientes
declaraciones:
string firstName;
string middleName;
string lastName;
string title;
char middleInitial;
char letter;
INVLIDOS
middleInitial = A.; No se puede guardar un
string una variable tipo char.
letter = firstName; No se puede guardar una
variable tipo string en otra variable tipo char.
firstName = Javier; La computadora piensa que
Javier es un identifier.
Javier = lastName; Al reves.
lastName = ; No esta asignando nada.
QUIZZ # 3 DETERMINE VALIDEZ
DECLARACIONES INSTRUCCIONES
VLIDO/INVLIDO
(Razn)
char letra;
string nombre;
float promedio;
int cuentaGota;
const float PI =
31.14159;
const string
MENSAJE = apego
al estUdio;
const int
TOTAL_PERSONAS
= 50;
letra = abc;
nombre = carlos;
cuentaGota =
cuentaGota + 1;
cuentaGota =
promedio + 50;
promedio = promedio
+ 1.0;
nombre = MENSAJE;
MENSAJE = fin;
QUIZZ # 3 RESPUESTAS
DECLARACIONES INSTRUCCIONES
VLIDO/INVLIDO
(Razn)
char letra;
string nombre;
float promedio;
int cuentaGota;
const float PI =
31.14159;
const string
MENSAJE = apego
al estUdio;
const int
TOTAL_PERSONAS
= 50;
letra = abc;
INVLIDO
nombre = carlos;
INVLIDO
cuentaGota =
cuentaGota + 1;
VLIDO
cuentaGota = promedio
+ 50;
INVLIDO
promedio = promedio +
1.0;
VLIDO
nombre = MENSAJE;
VLIDO
MENSAJE = fin;
INVLIDO
VOCABULARIO (3)
1. Literal value Cualquier constante escrita en un progama.
2. Named constant (symbolic constant) Definicin similar a la de
constante.
3. Assignment statement Instruccin que almacena el valor de una
expresin dentro de una variable.
4. Expression Conjunto de identifiers, literales y operadores de
los cuales se puede obtener un resultado.
5. Evaluate Calcular un nuevo valor ejecutando un conjunto
especfico de operaciones con unos valores dados.
STRING
String Expressions Aunque no se puede ejecutar aritmtica con los
strings, se puede ejecutar una operacin llamada concadenacin
(concatenation) la cual utiliza el smbolo de suma (+).
De acuerdo a la siguientes
declaraciones:
string bookTitle;
string phrase1;
string phrase2;
phrase1 = Casi siempre lo ;
phrase2 = facil no sirve ;
Las siguientes instrucciones:
bookTitle = phrase1 + phrase2;
bookTitle = phrase2 + phrase3;
Almacenan en la variable bookTitle
lo siguiente:
Casi siempre lo facil no sirve
facil no sirve Casi siempre lo
STRING (EXAMPLE)
De acuerdo a la siguiente definicin:
const string WORD1 = rogramming;
const string WORD3 = Solving;
const string WORD5 = C++;
Podriamos asignar la siguiente expresin a la variable bookTitle
bookTitle = P + WORD1 + and Problem + WORD3 + with + WORD5;
Para que contenga el siguiente string:
Programming and Problem Solving with C++
COUT
Para poder mostrar resultados en pantalla, utilizaremos en C++ el
comando cout en conjunto con el insertion operator (<<).
Ejemplo: la instruccin: cout << Hello; va a mostrar la palabra Hello
en el standard output device, usualmente el monitor. El template de
cout es:
cout << Expression << Expression . . .;
EJEMPLOS DE COUT Y DISPLAY DE PSEUDOCDIGO
cout << Hello;
DISPLAY Hello
cout << a << b; DISPLAY a + b
cout total: << cantDinero;
DISPLAY total: + cantDinero;
COUT (CONT.)
EJEMPLOS DE COUT
cout << ch;
2
cout << ch = << ch;
ch= 2
cout << firstName + + lastName;
MarieCurie
cout << firstName << lastName;
MarieCurie
cout << firstName << << lastName;
MarieCurie
cout << ERROR MESSAGE;
ERROR MESSAGE
cout << Error= << ch;
Error=2
Asuma que ch = 2, firstName = Marie y lastName = Curie
OTRAS CARACTERISTICAS IMPORTANTES DEL
COUT
Si queremos mostrar en pantalla la siguiente frase:
Juanito el cuco Trucupei
El cout quedara: cout << Juanito \el cuco\ Trucupei;
Para terminar una lnea, utilizamos el identifier endl.
Cout << Hi;
Cout << there;
Produce lo siguiente:
Hithere
Cout << Hi << endl;
Cout << there << endl;
Produce lo siguiente:
Hi
there
El identifier endl es particular de
C++ y se le conoce como un
manipulador.
COMENTARIOS
Podemos poner los comentarios en C++ de dos formas:
1. Se puede poner cualquier comentario entre los smbolos. /* */
Ejemplo:
/* Este programa calcula el sueldo neto de un empleado */
2. Comenzar el comentario con dos slashes. (la mas comn)
Ejemplo:
// Este programa calcula el sueldo neto de un empleado
La documentacin en un programa es bien importante. En las reglas
para programar en C++ se discute el formato de los programas que se
van a entregar en la clase incluyendo la documentacin.
CONSTRUCCIN DE UN PROGRAMA EN
C++
Ya hemos explorado lo que son identifiers, declaraciones, variables,
constantes, expresiones, statements, comentarios, etc. Ahora vamos a
ver como integrar esos elementos en un programa. Como vimos
anteriormente, un programa en C++ se compone de funciones y una de
ellas se tiene que llamar main. El syntax template de un programa en
C++ es:
Declaration
.
.
.
FunctionDefinition
FunctionDefinition
.
.
.

Un Function Definition consiste del
encabezamiento de la funcin y del cuerpo
(body). Su Syntax Template es:
Heading
{
Statement
.
.
.
}
EJEMPLO DE UN PROGRAMA EN C++ CON UNA SOLA
FUNCIN
//******************************************************************
// PrintName program
// This program prints a name in two different formats
//******************************************************************
#include <iostream>
#include <string>

using namespace std;

const string FIRST = Javier"; // Person's first name
const string LAST = Cabrera"; // Person's last name
const char MIDDLE = E'; // Person's middle initial

int main()
{
string firstLast; // Name in first-last format
string lastFirst; // Name in last-first format

firstLast = FIRST + " " + LAST;
cout << "Name in first-last format is " << firstLast << endl;

lastFirst = LAST + ", " + FIRST + ", ";
cout << "Name in last-first-initial format is ";
cout << lastFirst << MIDDLE << '.' << endl;

return 0;
}
La instruccin #include le indica al compilador que inserte en el
programa el contenido de los archivos llamados iostream y
string. El primer archivo contiene informacin que C++
necesita para mostrar valores (cout). El segundo contiene
informacin para manejo de cualquier string.
Definicin de
constantes.
Final de la funcin. Devuelve el valor 0 indicando que termino
exitosamente. Se le conoce como el exit status.
Comentari
os.
Block, FunctionDefinition, Statement
{
Statement
.
.
.
}
Heading
Block
NullStatement
Declaration
AssignmentStatement
OutputStatement
Block
BLOCK FunctionDefinition
Statement
El cuerpo de una
funcin es un
ejemplo de un
bloque (block), el
cual esta
delimitado por los
corchetes ({}).
Con eso en
mente, podemos
redefinir una
funcin con solo 2
palabras.
Heading y
Block.
El syntax template de un
statement de acuerdo a lo
que hemos discutido hasta
aqui, queda como el que se
muestra arriba. El
NullStatement es una linea
con solo el (;).
BLOCKS, FUNCTION DEFINITIONS Y STATEMENTS EN EL
PROGRAMA DE C++ QUE VIMOS ANTERIORMENTE
//******************************************************************
// PrintName program
// This program prints a name in two different formats
//******************************************************************
#include <iostream>
#include <string>

using namespace std;

const string FIRST = Javier"; // Person's first name
const string LAST = Cabrera"; // Person's last name
const char MIDDLE = E'; // Person's middle initial

int main()
{
string firstLast; // Name in first-last format
string lastFirst; // Name in last-first format

firstLast = FIRST + " " + LAST;
cout << "Name in first-last format is " << firstLast << endl;

lastFirst = LAST + ", " + FIRST + ", ";
cout << "Name in last-first-initial format is ";
cout << lastFirst << MIDDLE << '.' << endl;

return 0;
}
Function
Definitions
BLOCK
Statements
Statements
COMENTARIO ADICIONAL SOBRE
LOS BLOQUES (BLOCKS)
Como indica el syntax template, dentro de un bloque yo puedo poner
instrucciones de asignacin. Esto significa que se pueden poner en
cualquier orden. Sin embargo se recomienda que se pongan las
asignaciones primero y las demas instrucciones despues. Ejemplo:
DESORGANIZADO ORGANIZADO
{
char ch;
ch = A;
cout << ch;
string str;
Str = Hello;
Cout << str;
}
{
char ch;
string str;

ch = A;
cout << ch;
Str = Hello;
Cout << str;
}
EL PRE-PROCESADOR DE C++
Si compilamos el siguiente programa:

//*******************************************
// This program prints Happy Birthday
//********************************************
int main()
{
cout << Feliz cumpleaos << endl;
return 0;
}
El compilador reconoce los identifiers int y main, pero no reconoce
cout y endl. Esto es debido a que no se ha incluido la librera
iostream. Si en el programa se va a trabajar con string, tambin faltaria
la librera string. Estos problemas se arreglan incluyendo la instruccin:
#include <iostream>
EL PRE-PROCESADOR DE C++ (2)
//*******************************************
// This program prints Happy Birthday
//********************************************
#include <iostream>
int main()
{
cout << Feliz cumpleaos << endl;
return 0;
}
La lnea #include no es manejado por el compilador, sino por el pre-
procesador. Las lneas que comienzan con el # no se considera una
instruccin del lenguaje, sino una directiva del pre-procesador. El pre-
procesador es un programa que actua como un filtro durante la fase de
compilacin
EL PRE-PROCESADOR DE C++ (3)
Source
Program
Expanded
Source Program
C++ compiler
Preprocessor
El pre-procesador expande una directiva al
insertar fsicamente el contenido del archivo de la
directiva dentro del source program. (diagrama)

Los archivos que aparecen en el #include se
conocen como header file y contienen
constantes, variables, datatypes y declaraciones
de funciones necesarios para el programa.
Los brackets (< >) son requeridos e indica que
busque el archivo en el standard include
directory que es donde estan todos los header
files.
NAMESPACES
An incluyendo la directiva, el programa no corre. El compilador
todava no reconoce los identifers cout y endl. Esto se debe a que el
header file iostream y todos los headers filesdeclaran sus identifiers
para que estn en un namespace llamado std;
Ejemplo:
namespace std
{
Declaraciones de variables, data types, etc.
}

NAMESPACES (2)
Los programadores tiene dos opciones para aceder a los
identifiers que estn dentro de un namespace, las dos formas
son:
I. Usar un qualified name para el identifier> Consiste de nombre
:: operador. De esta forma el programa quedara asi:
//*************************************
// This program prints Happy Birthday
//*************************************
#include <iostream>
int main()
{
std::cout << Feliz cumpleaos << std::endl;
return 0;
}
NAMESPACES (3)
II. La otra forma es usar un statement con una directiva
llamada using. De esta forma no hay que cualificar cada
directiva, sino definirla solo al principio.
using namespace std:

//*************************************
// This program prints Happy Birthday
//*************************************
#include <iostream>
using namespace std;
int main()
{
cout << Feliz cumpleaos << endl;
return 0;
}
CONCEPTOS ADICIONALES DE OUTPUT
Manejo de lneas
STATEMENTS OUTPUT PRODUCED
cout << Hi there, ;
cout << Lois Lane. << endl;
cout << Have you seen ;
cout << Clark Kent? << endl;
Hi there, Lois Lane.
Have you seen Clark Kent?
cout << Hi there, << endl;
cout << Lois Lane. << endl;
cout << Have you seen << endl;
cout << Clark Kent? << endl;
Hi there,
Lois Lane.
Have you seen
Clark Kent?

cout << Hi there, << endl;
cout << Lois Lane. ;
cout << Have you seen << endl;
cout << Clark Kent? << endl;

Hi there,
Lois Lane. Have you seen
Clark Kent?

CONCEPTOS ADICIONALES DE OUTPUT (2)
3 FORMAS DE DECIR LO MISMO
STATEMENTS
OUTPUT
PRODUCED
cout << Hi there, << endl;
cout << endl;
cout << Lois Lane. << endl;
Hi there,

Lois Lane.

cout << Hi there, << endl << endl;
cout << Lois Lane. << endl;

Hi there,

Lois Lane.

cout << Hi there, << endl << endl << Lois Lane. << endl;

Hi there,

Lois Lane.

PROCESO DE COMPILAR
Enter
Program
Compile
Program
Compile-time
Errors?
Run
Program
Logic-errors
?
Success!
Encontrar la causa
de los errores,
arreglarlos en el
programa y volver
a compilar.
YES
YES
Volver al algoritmo y
arreglar lo que esta
mal y modificarlo en
el editor.
75
C++ Data Types
structured
array struct union class
address
pointer reference
simple
integral enum
char short int long bool
floating
float double long double
76
C++ Simple Data Types
simple types
integral floating
char short int long bool enum float double long double
unsigned
77
Standard Data Types in C++
Integral Types
Representan nmeros enteros incluyendo
negativos
Se declaran como int, short, o long

Floating Types
representan nmeros reales con el punto decimal
Se declaran como float, o double

Character Type
representan un solo caracter
se declaran como char
78
Ejemplos de Datos en C++
valores tipo int
4578 -4578 0

valores tipo float
95.274 95. .265
9521E-3 -95E-1 95.213E2

valores tipo char
B d 4 ? *

79
Tamaos de Enteros
Los tipos de datos char, short, int y long
representan diferentes tamaos en la
computadora.
El tamao vara de acerdo a la arquitectura de
la computadora.
Una representacin grfica nos puede dar una
mejor idea.
Tipo char
Tipo short
Tipo int
Tipo long
80
Informacin adicional sobre int
En algunas plataformas de computadoras, el tamao int y
long son equivalentes.
int es el tamao ms comnmente usado.
En algunas computadoras de uso personal, el rango int va
de -32,768 a +32,768.
En otras, el rango es de -2,147,483,648 a + 2,147,483,648.
Si se trata de calcular un valor tipo int mayor del rango que
permite la computadora, ocurre un overflow.
Algunas computadoras envian mensajes de error ante esta
situacin, otras no.
Importante, al definir una constante, no se puede comenzar
con cero porque la computadora asumir que en un
nmero octal.
81
Notacin Cientfica
2.7E4 significa 2.7 x 10
4
=
2.7000 =

27000.0

2.7E-4 significa 2.7 x 10
- 4
=
0002.7 =

0.00027
82
INFORMACIN ADICIONAL SOBRE
VALORES TIPO FLOATING POINT
Tienen una parte entera y una parte fraccional con un
punto entre medio de ambas. Se puede descartar
una de las partes, pero no ambas.

EJEMPLOS 18.4 500. .8 -127.358

En ocasiones el valor podra llevar un exponente
como en notacin cientfica. El nmero que va
despues de la letra E no lleva punto decimal.

EJEMPLOS 1.84E1 5E2 8E-1 -.127358E3

83
Declaraciones tipo int y float
Al igual que con las declaraciones tipo char
y string, tambin podemos definir
constantes y variables tipo int y float.
EJEMPLOS
CONSTANTES
const float PI = 3.14159;
const float E = 2.71828;
const int MAX_SCORE = 100;
const int MIN_SCORE = -100;
const char LETTER = W;
const string NAME = Eliza;
VARIABLES
int studentCount;
int sumOfScores;
float average;
char grade;
string stuName;

84
EJEMPLO DE DECLARACIONES Y EXPRESIONES
Dadas las siguientes declaraciones:

int num;
int alpha;
float rate;
char ch;

Las siguientes asignaciones son correctas:

alpha = 2856;
rate = 0.36;
ch = B;
num = alpha;
85
El operador de divisin
El resultado de la divisin depende del tipo de sus
operandos.
Si uno o ambos operandos tienen un data type
que sea floating point, el resultado es flotante, de
lo contrario, el resultado es entero.
Ejemplos
11 / 4 el resultado es: 2
11.0 / 4.0 el resultado es: 2.75
11 / 4.0 el resultado es: 2.75
86
LA FUNCIN main DEVUELVE UN VALOR TIPO int AL SISTEMA OPERATIVO
//***************************************************************************
// FreezeBoil program
// This program computes the midpoint between
// the freezing and boiling points of water
//***************************************************************************
#include < iostream >

using namespace std;

const float FREEZE_PT = 32.0 ; // Freezing point of water
const float BOIL_PT = 212.0 ; // Boiling point of water

int main ( )
{
float avgTemp ; // Holds the result of averaging
// FREEZE_PT and BOIL_PT
cout << Water freezes at << FREEZE_PT << endl ;
cout << and boils at << BOIL_PT << degrees. << endl ;

avgTemp = FREEZE_PT + BOIL_PT ;
avgTemp = avgTemp / 2.0 ;

cout << Halfway between is ;
cout << avgTemp << degrees. << endl ;

return 0 ;
}

87
Modulus Operator
El operador mdulo (modulus operator) %
solo se puede usar con operandos que son
enteros y el resultado siempre es de tipo
entero.
Su reultado es el residuo de una divisin
entera.
EJEMPLO
11 % 4 has value 3 because
)
4 11
R = ?
88
Ms sobre Operadores de C++
8
int age;


age = 8;


age = age + 1;


age
9
age
Tenemos 3 formas de incrementar
el valor de una variable.
Primera
Forma
89
PREFIX FORM
Operator de Incrementacin
8
int age;


age = 8;


++age;

age
9
age
Segunda
Forma
++Variable;
Syntax
Template
90
POSTFIX FORM
Operator de Incrementacin
8
int age;


age = 8;


age++;

age
9
age
Tercera
Forma
Variable++ ;
Syntax
Template
91
Decrement Operator
100
int dogs;

dogs = 100;

dogs--;

--dogs;

dogs = dogs - 1;


dogs
99
dogs
Tambin tenemos tres formas de
decrementar el valor de una
variable
Variable -- ;
--Variable;
Syntax
Template
92
Cal forma utilizar?
Cuando el operador de incrementar o
decrementar se usa stand alone en un
statement (solo sumar o restar), se puede
usar cualquiera de las dos formas (Prefix
o Postfix).
dogs-- ; --dogs ;
Usar cualquiera
93
PERO...
Cuando se va a incrementar o decrementar
en un statement con otros operadores,
podra traer diferentes resultados.
Usando el compilador de C++, copiar y pegar
el programa que se muestra a continuacin y
ver los resultados que produce.
MINI-LABORATORIO
94
Programa para el mini-laboratorio
#include <iostream>
#include <string>
using namespace std;

int main()
{
int a, b, c;
b = 3;
c = 4;
cout << "El valor de b es " << b << endl;
cout << "El valor de c es " << c << endl << endl;

cout << "El valor de (a = b + c) es " << (a = b + c) << endl;
cout << "El valor de a es " << a << endl << endl;

cout << "El valor de (a *= b) es " << (a *= b) << endl;
cout << "El valor de a es " << a << endl << endl;


95
Programa para el mini-laboratorio (2)

a = 5;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl;
cout << "El valor de (a *= b++) es " << (a *= b++) << endl;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl << endl;

a = 5;
b = 3;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl;
cout << "El valor de (a *= ++b) es " << (a *= ++b) << endl;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl << endl;


96
Programa para el mini-laboratorio (3)
a = 5;
b = 3;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl;
cout << "El valor de (a = ++b) es " << (a = ++b) << endl;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl << endl;

a = 5;
b = 3;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl;
cout << "El valor de (a = b++) es " << (a = b++) << endl;
cout << "El valor de a es " << a << endl;
cout << "El valor de b es " << b << endl << endl;

return 0;
}

97
Qu es una expresin en C++?
Una expresin es un arreglo vlido de
variables, constantes, y operadores.

En C++ cada expresin puede ser
evaluada para calcular un valor de un
tipo de dato en particular.

El valor de la expresin:
9.3 * 4.5 es 41.85
98
Los operadores pueden ser:
binary involucra 2 operandos 2 + 3

unary involucra 1 operando - 3

ternary involucra 3 operandos despues
99
Algunos Operadores de C++
Precedence Operator Description
Higher ( ) Function call
+ Positive
- Negative
* Multiplication
/ Division
% Modulus (remainder)
+ Addition
- Subtraction
Lower = Assignment
100
Precedencia
La precedencia ms alta determina
cual operador se va a aplicar primero
a una expresin que tienes varios
operadores.
101
Asociatividad
Asociatividad de izquierda a derecha
significa que en una expresin con dos
operadores del mismo nivel, el operador de
la izquierda se aplica primero.

En C++ los operadores binarios (binary )
* , / , % , + , - estn todos asociados a
la izquierda.

Ejemplo: 9 - 5 - 1 significa ( 9 - 5 ) - 1
4 - 1
3
102
7 * 10 - 5 % 3 * 4 + 9
(7 * 10) - 5 % 3 * 4 + 9
70 - 5 % 3 * 4 + 9
70 - (5 % 3) * 4 + 9
70 - 2 * 4 + 9
70 - ( 2 * 4 ) + 9
70 - 8 + 9
( 70 - 8 ) + 9
62 + 9
71
Evaluar la expresin
103
Parentesis
Los parentesis se pueden usar para
cambiar el orden usual de la expresin.
Lo que esta dentro del ( ) se evalua
primero.
Evaluar: (7 * (10 - 5) % 3) * 4 + 9
( 7 * 5 % 3 ) * 4 + 9
( 35 % 3 ) * 4 + 9
2 * 4 + 9
8 + 9
17
104
Mini-Laboratorio Programa que calcula millaje
/* This program computes miles per gallon given four amounts
for gallons used, and starting and ending mileage.
Constants: The gallon amounts for four fillups.
The starting mileage.
The ending mileage.
Output (screen) The calculated miles per gallon.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

#include <iostream>

using namespace std;
const float AMT1 = 11.7 ; // Number of gallons for fillup 1
const float AMT2 = 14.3 ; // Number of gallons for fillup 2
const float AMT3 = 12.2 ; // Number of gallons for fillup 3
const float AMT4 = 8.5 ; // Number of gallons for fillup 4
const float START_MILES = 67308.0 ; // Starting mileage
const float END_MILES = 68750.5 ; // Ending mileage

int main( )
{
float mpg ; // Computed miles per gallon

mpg = (END_MILES - START_MILES) / (AMT1 + AMT2 + AMT3 + AMT4) ;
cout << For the gallon amounts << endl ;
cout << AMT1 << << AMT2 << << AMT3 << << AMT4 << endl ;
cout << and a starting mileage of << START_MILES << endl ;
cout << and an ending mileage of << END_MILES << endl ;
cout << the mileage per gallon is << mpg << endl ;

return 0;
}


105
Variable = Expression

Primero, la expression a la derecha es
evaluada.
Luego, el valor que se obtiene, se almacena en
la localizacin de memoria de la variable que
esta a la izquierda de la ecuacin.
NOTA: Un automatic type coercion ocurre despus de
la evaluacin pero antes de que el valor se almacene si
los tipos de datos son diferentes de la expresin y la
variable.
Ms sobre asignacin
106
?What value is stored?
float a;
float b;

a = 8.5;
b = 9.37;
a = b;
a
b
a
b
8.5
9.37
?
?
107
Qu se almacena?
?
float someFloat;



someFloat

someFloat = 12; // causes implicit type conversion
someFloat
12.0
108
Qu se almacena?
?
int someInt;



someInt

someInt = 4.8; // causes implicit type conversion
someInt
4
109
Otros ejemplos de conversin
de Data Types
int(4.8) se convierte en 4

float(5) se convierte en 5.0

float(7/4) se convierte en 1.0

float(7) / float(4) se convierte en 1.75
110
Ejemplos de Expresiones
int age;
EXAMPLE VALUE
age = 8 8
- age - 8
5 + 8 13
5 / 8 0
6.0 / 5.0 1.2
float ( 4 / 8 ) 0.0
float ( 4 ) / 8 0.5
cout << How old are you? cout
cin >> age cin
cout << age cout
111
Qu valores se almacenan?
float loCost;
float hiCost;

loCost = 12.342;
hiCost = 12.348;

loCost = float (int (loCost * 100.0 + 0.5) ) / 100.0;

hiCost = float (int (hiCost * 100.0 + 0.5) ) / 100.0;
112
Resultado redondeado a dos
lugares decimales
12.34
hiCost
12.35




loCost


113
Conceptos de funciones en matemtica
f ( x ) = 5 x - 3



Cuando x = 1, f ( x ) = 2 es el valor que devuelve.
Cuando x = 4, f ( x ) = 17 es el valor que devuelve.
El valor que devuelve se determina por la definicin
de la funcin y por los valores de los parmetros.
Name of function
Parameter of function

Function definition
114
Funciones
Todo programa en C++ necesita tener una
funcin llamada main

La ejecucin del programa siempre
comienza con la funcin main

Las dems funciones son sub-programas
y para ejecutarse, necesitan ser invocadas
115
Llamadas de Funciones (Function Calls)
Una funcin invoca a otra al usar su
nombre en adicin a los parntesis y la
lista de argumentos.
La funcin que invoca, tranfiere control
temporero a la funcin invocada.
116
Qu es un bloque (Block)?
{


0 or ms statements aqui

}
117
Cada funcin tiene 2 partes
int main ( ) heading
{
body block
return 0;
}
118
Programa ms corto de C++


int main ( )
{

return 0;

}
type of returned value
name of function
119
Qu es un encabezamiento
(heading)?


int main ( )

type of returned value
name of function
says no parameters
120
Ms sobre Funciones
No se considera buena practica para el
body block de la funcin main que
sea demasiado largo
EL invocar funciones se utiliza para
realizar tareas (distribuir)
Si el Data Type que devuelve no es
void, la funcin devuelve un valor al
bloque que lo invoc.
121
Dnde estn las funciones?
Localizadas en una librera

O

escritas por programadores
122
HEADER FILE FUNCTION EXAMPLE VALUE
OF CALL

fabs(x) fabs(-6.4) 6.4
<cmath> pow(x,y) pow(2.0,3.0) 8.0
<cmath> sqrt(x) sqrt(100.0) 10.0
<iomanip> setprecision(n) setprecision(3)
<cmath> log(x) log(2.0) .693147
sqrt(x) sqrt(2.0) 1.41421
<cstdlib> abs(i) abs(-6) 6
123
Escriba una Expresin en C++
La raz cuadrada de b
2
- 4ac

sqrt ( b * b - 4.0 * a * c )

La raz cuadrada del promedio de myAge
y yourAge

sqrt ( ( myAge + yourAge ) / 2 )
124
Programa con varias Functions
main function
Square function
Cube function
125
Programa con tres funciones
#include <iostream>

int Square( int ); // declares these functions
int Cube( int );
using namespace std ;

int main( )
{
cout << The square of 27 is
<< Square(27) << endl; // function call

cout << The cube of 27 is
<< Cube(27) << endl; // function call

return 0;
}
126
Resto del Programa

int Square( int n ) // header and body here
{
return n * n;
}


int Cube( int n ) // header and body here
{
return n * n * n;
}
127
Function Call

Un function call temporeramente transfiere
control a la funcin invocada (su cdigo)

Cuando el cdigo de la funcin ejecutada ha
completado de ejecutarse, el control se tranfiere
de nuevo al bloque que lo invoc.

128
FunctionName = ( Argument List )


La lista de argumentos es una forma para las
funciones de comunicarse entre ellas y pasar
informacin.
La lista de argumentos puede contener 0, 1, o ms
parmetros separados por comas, dependiendo
de la funcin.
Syntaxis del Function Call
129
Una funcin void puede escribirse
como si fuera una instruccin sola
#include <iostream>

void DisplayMessage ( int n ) ; // declares
function

int main( )
{
DisplayMessage( 15 ) ; //function call

cout << Good Bye << endl ;

return 0 ;
}
130
Una funcin void no
devuelve un valor
// header and body
here

void DisplayMessage ( int n )
{
cout << Me ha gUstado la matematica
por << n << years << endl ;
}


Dos tipos de funciones
Siempre
devuelve un solo
valor al que lo
invoca y se llama
dentro de una
expresin.
Nunca devuelve
un valor al que lo
invoca y se
define como un
statement
separado.
Value-Returning Void
131
132
<iostream> es un header file
Para una librera que define 3 objetos

un objeto istream llamado cin (keyboard)

un objeto object llamado cout (screen)

un objeto object llamado cerr (screen)
133
C++ No tiene instrucciones de I/O
En cambio, una librera provee eso. Tanto
para entrada como para salida.
Keyboard Screen
executing
program
istream ostream
134
Manipuladores
Los manipuladores se utilizan nicamente en
instrucciones de input-output
endl, fixed, showpoint, setw, and setprecision
son manipuladores que pueden ser usados
para controlar formatos de salida (output)

endl se utiliza para terminar de poner
informacin en la lnea corriente y moverse a la
prxima lnea.
135
El Operador de Insertar ( << )
El operador de insertar << utiliza 2
operandos

El operando de la izquierda es una
expresin stream como por ejemplo
cout

El operando de la derecha es una expresin
o un string o un manipulador.
136
Output Statements

SYNTAX (revised)
cout << ExpressionOrManipulator
<< ExpressionOrManipulator . . . ;
137
Output Statements
SYNTAX



Estos ejemplos muestran el mismo output.


cout << The answer is ;
cout << 3 * 4 ;

cout << The answer is << 3 * 4 ;
cout << Expression << Expression . . . ;
138
Uso de los Manipuladores
Fixed y Showpoint
use el siguiente statement para
especificar que se utilize formato
decimal incluyendo el punto.

cout << fixed << showpoint ;

139
setprecision(n)
requiere #include <iomanip> y aparece en
una expresin utilizando el operador de
insertar (<<)

Si se especifico fixed, el argumento n
determina el nmero de lugares decimales
que se van a mostrar
Esos parametros permanecen hasta que se
utilize de nuevo el setprecision
140
Laboratorio Compilar y correr el siguiente programa
#include <iomanip> // for setw( ) and setprecision( )
#include <iostream>

using namespace std;

int main ( )
{
float myNumber = 123.4587 ;

cout << fixed << showpoint ; // use decimal format
// print decimal points

cout << Number is << setprecision ( 3 )
<< myNumber << endl ;

return 0 ;
}
141
OUTPUT
Number is 123.459
El valor se redondea si es necesrio para ser
mostrado con 3 lugares despues del punto decimal
142
El Manipulador setw

set width nos permite controlar cuantos
caracteres va a ocupar el prximo data item
cuando se muestre en pantalla.

setw es solo para formatear nmeros y strings,
no es para datos tipo char
143
setw(n)
requiere #include <iomanip> y aparecen en una
expresin usando el operador de insertar (<<)

el argumento n se llama fieldwidth specification,
y determinael nmero de posiciones de
caracteres en el que se van a mostrar justificado a
la derecha un nmero o string (no tipo char). El
nmero de posiciones se expande si n es muy
pequeo.

set width afecta solamente el prximo item que
se muestre en pantalla, y es til para alinear
columnas para reporte o para mostrarlas en
pantalla
144
Laboratorio Compilar y correr el siguiente programa
#include <iomanip> // for setw( )
#include <iostream>
#include <string>

using namespace std;

int main ( )
{
int myNumber = 123 ;
int yourNumber = 5 ;

cout << setw ( 10 ) << Mine
<< setw ( 10 ) << Yours << endl;
<< setw ( 10 ) << myNumber
<< setw ( 10 ) << yourNumber << endl ;

return 0 ;
}
145
OUTPUT
12345678901234567890
Mine Yours
123 5
se muestran right-justified y se ubican
dentro de un total de 10 posiciones
position
146
Laboratorio Compilar y correr el siguiente programa
#include <iomanip> // for setw( ) and setprecision( )
#include <iostream>

using namespace std;

int main ( )
{
float myNumber = 123.4 ;
float yourNumber = 3.14159 ;

cout << fixed << showpoint ; // use decimal format
// print decimal points

cout << Numbers are: << setprecision ( 4 ) << endl
<< setw ( 10 ) << myNumber << endl
<< setw ( 10 ) << yourNumber << endl ;

return 0 ;
}
147
OUTPUT
Numbers are:
123.4000
3.1416
se muestran right-justified y rounded
si es necesrio y se ubican en un total de
10 posicions with 4 lugares decimales
12345678901234567890

148
float x = 312.0 ;
float y = 4.827 ;

cout << fixed << showpoint ; OUTPUT

cout << setprecision ( 2 )
<< setw ( 10 ) << x << endl 3 1 2.00
<< setw ( 10 ) << y << endl ; 4.83

cout << setprecision ( 1 )
<< setw ( 10 ) << x << endl 3 1 2.0
<< setw ( 10 ) << y << endl ; 4.8

cout << setprecision ( 5 )
<< setw ( 7 ) << x << endl 3 1 2.00000
<< setw ( 7 ) << y << endl ; 4.82700
Ms Ejemplos
x 312.0 y
4.827
148
149
HEADER MANIPULATOR ARGUMENT EFFECT
FILE TYPE .

<iostream> showpoint none displays
decimal point
<iostream> fixed none suppresses
scientific notation
<iomanip> setprecision(n) int sets precision
to n digits
<iomanip> setw(n) int sets fieldwidth
to n positions
<iostream> endl none terminates
output line
150
La funcin length

La funcin length devuelve un entero
(no signo) que representa el nmero
de caracteres que tiene el string
La funcin size devuelve el mismo
valor que la funcin length
Se tiene que utilizar el punto (dot
notation) en la llamada para las
funciones length o size
151
Ejemplos de la funcin length
string firstName;
string fullName;

firstName = Alexander;
cout << firstName.length() << endl;
// imprime 9
fullName = firstName + Marin;
cout << fullName.length() << endl;
// imprime 15

152
Declaracin de variable que
almacene el resultado de length
string firstName;
String::size_type len;

firstName = Alexander;
len = firstName.length();

Para no adivinar el tipo de
declaracin segn el
compilador que aplique
(unsigned int o unsigned long),
se puede definir de esta forma.
La definicin size_type est
escondida dentro de la definicin
string (include)
153
La funcin find
La funcin find devuelve un entero (sin
signo) que representa la posicin inicial de
la primera ocurrencia de un substring
dentro de un string.
El argumento del substring puede ser un
string constant, un string
expression, o un valor char
Si el substring no se encontro, la funcin
find devuelve el valor especial
string::npos (not a position within
the string)
154
Ejemplos del uso find
str1.find(the)
str1.find(str2)
str1.find(str2 + abc)

string phrase;
String::size_type position;

phrase = The dog and the cat;
position = phrase.find(the); // devuelve 12
position = phrase.find(rat); // devuelve string::npos

string theString;
theString = Abracadabra;
cout << theString.find(a); // Qu valor devuelve?

155
Mas ejemplos del find
Asumiendo las siguientes definiciones:
string str1;
string str2;
str1 = Programming and Problem Solving;
str2 = gram;
Indique que valores devuelven los siguientes Function Calls
Function Call Valor
str1.find(and)
str1.find(Programming)
str2.find(and)
str1.find(Pro)
str1.find(ro + str2)
str1.find(Pr + str2)
str1.find( )
156
Respuestas
Function Call Valor
str1.find(and) 12
str1.find(Programming) 0
str2.find(and) string::npos
str1.find(Pro) 0
str1.find(ro + str2) 1
str1.find(Pr + str2) string::npos
str1.find( ) 11
157
La funcin substr
La funcin substr devuelve un substring de un
string

El primer argumento es un entero (no signo) que
especifica la posicin inicial dentro del string

El segundo argumento es un entero (no signo) que
especifica el largo deseado del substring

Las posiciones de los caracteres dentro del string se
enumeran comenzando en la posicin cero (0) no en la
uno (1).
158
Ejemplos de la funcin substr
Asumiendo la siguiente definicin:
myString = Programming and Problem Solving;
Indique que valores devuelven los siguientes Function Calls
Function Call Valor
myString.substr(0,7)
myString.substr(7,8)
myString.substr(10,0)
myString.substr(24,40)
myString.substr(40,24)
159
Respuestas substr
Function Call Valor
myString.substr(0,7) Program
myString.substr(7,8) ming and
myString.substr(10,0)
myString.substr(24,40) Solving
myString.substr(40,24) Ninguno. Debe dar
error en la ejecucin.
160
Mini-laboratorio, compile este programa
#include <iostream>
#include <string> // for functions length, find, substr

using namespace std;

int main ( )
{
string stateName = Mississippi;

cout << stateName.length( ) << endl;

cout << stateName.find(is) << endl;

cout << stateName.substr( 0, 4 ) << endl;

cout << stateName.substr( 4, 2 ) << endl;

cout << stateName.substr( 9, 5 ) << endl;

return 0 ;
}
161
Coteje los resultados con los comentarios
#include <iostream>
#include <string> // for functions length, find, substr

using namespace std;

int main ( )
{
string stateName = Mississippi ;

cout << stateName.length( ) << endl; // value 11

cout << stateName.find(is) << endl; // value 1

cout << stateName.substr( 0, 4 ) << endl; // value Miss

cout << stateName.substr( 4, 2 ) << endl; // value is

cout << stateName.substr( 9, 5 ) << endl; // value pi

return 0 ;
}
162
Caso para estudiar Map Measurement

You want a program to determine
walking distances between 4 sights in the
city. Your city map legend says one inch
on the map equals 1/4 mile in the city.
You use the measured distances
between 4 sights on the map.
Display the walking distances (rounded
to the nearest tenth) between each of the
4 sights.

163
Caso para estudiar Map Measurement
Desarrolle un programa para determinar
las distancias a pie entre 4 lugares
atractivos de la Capital de la Primavera.
Su leyenda del mapa de la ciudad, dice
un centmetro en el mapa equivale a 1/4
de milla de la ciudad. Utilice las
distancias medidas entre 4 lugares en el
mapa. Muestre las distancias a pie
(redondeando a la dcima) entre cada
uno de los 4 lugares de inters.

164
Vocabulario
Unary operator Un operador que solo tiene un
operando.
Binary operator Un operador que tiene dos operandos.
Type coercion Conversin implcita (automtica) de un
valor de un tipo de dato a otro.
Type casting Conversin explcita de un valor de un tipo
de dato a otro.
Mixed type expression Expresin que contiene
operandos de diferentes tipos de datos (data types),
tambin se le llama mixed mode expression.
Function Call (funtion invocation) Mecanismo que
transfiere control a una funcin.
Argument list Un mecanisco por el cual las funciones se
pueden comunicar entre si.
165
// ***************************************************
// Walk program
// This program computes the mileage (rounded to nearest
// tenth of mile) for each of 4 distances, given map
// measurements on map with scale of 1 in = 0.25 mile
// ***************************************************

#include <iostream> // for cout, endl
#include <iomanip> // For setprecision

using namespace std;

float RoundToNearestTenth( float ); // declare function

const float SCALE = 0.25; // Map scale (mi. per inch)
Problema resuelto - C++
166
C++ Continuacin (2)

const float DISTANCE1 = 1.5; // First map distance
const float DISTANCE2 = 2.3; // Second map distance
const float DISTANCE3 = 5.9; // Third map distance
const float DISTANCE4 = 4.0; // Fourth map distance


int main( )
{
float totMiles; // Total of rounded miles
float miles; // One rounded mileage

cout << fixed << showpoint // Set output format
<< setprecision(1);

totMiles = 0.0; // Initialize total miles


167

// Compute miles for each distance on map


miles = RoundToNearestTenth( DISTANCE1 * SCALE );

cout << DISTANCE1 << inches on map is
<< miles << miles in city. << endl;

totMiles = totMiles + miles;


miles = RoundToNearestTenth( DISTANCE2 * SCALE );

cout << DISTANCE2 << inches on map is
<< miles << miles in city. << endl;

totMiles = totMiles + miles;


168

// Compute miles for other distances on map


miles = RoundToNearestTenth( DISTANCE3 * SCALE );

cout << DISTANCE3 << inches on map is
<< miles << miles in city. << endl;

totMiles = totMiles + miles;


miles = RoundToNearestTenth( DISTANCE4 * SCALE );

cout << DISTANCE4 << inches on map is
<< miles << miles in city. << endl;

totMiles = totMiles + miles;


169


cout << endl << Total walking mileage is
<< totMiles << miles. << endl;

return 0 ; // Successful completion
}

// ***************************************************

float RoundToNearestTenth ( /* in */ float floatValue)

// Function returns floatValue rounded to nearest tenth.

{
return float(int(floatValue * 10.0 + 0.5)) / 10.0;
}
170
ASIGNACIN
Hacer los ejercicios del
que se encuentran en
el aula virtual.
Fuentes
Programming and Problem Solving with c++, 5ta
edicion Nell Dale
Deitel & Deitel (de silabo)
Schildt (de silabo)
171
172
Gracias!
Dr(c) Mg. Javier Cabrera Daz
c00301@grupoutp.edu.pe