Está en la página 1de 43

1

Programacin en
C++: Fundamentos
Fundamentos de Programacin
Curso 2013-14

El ordenador
Un ordenador es un dispositivo electrnico que procesa datos y los
convierte en informacin til para el usuario, siguiendo un programa
de instrucciones
S
A
L
I
D
A

E
N
T
R
A
D
A

Datos
D
+
Instrucciones

P
R
O
C
E
S
O

Informacin
Util

Hardware del Ordenador

Procesador

Software del Ordenador

El software es un conjunto de instrucciones electrnicas que dicen al


ordenador la forma de realizar cierta tarea.

El conjunto de instrucciones se llama programa

Cuando un ordenador usa un programa se dice que ejecuta el


programa

Los dos tipos ms comunes de software son:


Software del sistema: Sistema operativo
Software de aplicacin: Hojas de clculo, bases de datos, etc.

Programacin de Ordenadores
Los programas se escriben siguiendo unas notaciones sistemticas
(reglas de lxico, de sintaxis) conocidas como lenguajes de
p g
programacin
Lenguajes mquina
Lenguajes ensambladores
Lenguajes de alto nivel

C++

PASCAL
Program Hola_mundo;
begin
writeln(Hola mundo);
end.

Lenguajes
g j de Programacin
g
Lenguajes mquina
Las instrucciones y los datos se especifican usando cadenas de ceros y
unos

El ordenador los entiende directamente


Suministran una atractiva velocidad de ejecucin y caractersticas de
memoria

La implementacin se prolonga debido a la complejidad del lenguaje y al


bajo nivel de abstraccin

El repertorio de instrucciones suele ser muy reducido


Los programas resultantes son difciles de leer
La
L prueba
b y ell mantenimiento
t i i t son complicados
li d
Cada procesador tiene un lenguaje mquina propio. No son trasportables

Lenguajes de Programacin
Lenguajes ensambladores
Permiten aumentar la comprensibilidad de los programas
Ensambladores: traducen los programas en lenguaje ensamblador
ap
programas
g
en lenguaje
g j mquina
q

Lenguajes de Programacin
Lenguajes de alto nivel
Proporcionan un repertorio de instrucciones amplio, potente y fcilmente

asimilable
Los programas son ms legibles y claros
Son fciles de aprender y mantener
Son transportables
FORTRAN, COBOL, C, C++, PASCAL, JAVA, C#, etc.

Lenguajes de Programacin
Traductores
Programas que transforman programas escritos en el lenguaje
de alto nivel en programas escritos en lenguaje mquina

Compiladores: traducen el programa inicial (programa fuente)


considerndolo globalmente, y generan un programa
ejecutable o binario como resultado de la traduccin

Intrpretes: van analizando, traduciendo y ejecutando una a


una las
l iinstrucciones
t
i
d
dell programa ffuente;
t no se analiza
li una
instruccin hasta que la anterior se haya ejecutado. Los
intrpretes no generan programa ejecutable

10

Metodologa de la Programacin
P
Pasos
en ell proceso de
d programacin
i
1.

2.

3.

4.

Anlisis del problema

Fuente y tipo de datos para la entrada

Interaccin de los datos y su transformacin

Destino y formato de salida

Diseo

ALGORITMO: combinacin de pasos precisos, definidos, y finitos que resuelven


un problema

Se utiliza el pseudocdigo para describir algoritmos

Codificacin (Implementacin)

Implementar el algoritmo usando un lenguaje de programacin

Muy importante: separar la etapa de diseo de la etapa de codificacin

Prueba

Probar la lgica
g
interna del p
programa
g
((verificacin))

Asegurar que el programa resuelve realmente el problema (validacin)

11

Metodologa de la Programacin
Diseo e Implementacin

Diseo

(Algoritmo)

Implementacin
(Programa en C++)
// Programa que lee dos nmeros por teclado

Para sumar dos nmeros:


1.

Mostar un mensaje para que se


introduzca el primer nmero

// y muestra por pantalla su suma


#include <iostream>
using namespace std;

2.

Leer el primer nmero

3.

Mostar un mensaje para que se


introduzca el segundo nmero

4.

Leer el segundo nmero

5.

Realizar la suma

cout << "Introducir primer dato: ";

6.

Mostrar el resultado p
por p
pantalla

cin >> variable1;

int main ()
{
double variable1, variable2, suma;

cout << "Introducir segundo dato: ";


cin >> variable2;

suma = variable1
i bl 1 + variable2;
i bl 2

Thinking like a programmer

cout << "La suma es: " << suma << endl;
}

12

Primeros Programas en C++ Comentarios. Los ignora el


M t
Mostrar
un mensaje
j por pantalla
t ll

compilador Pueden usarse:


compilador.
// comentario en una nica linea

// Primer programa en C++


// Escribe en pantalla un mensaje

/* Comentario en
varias lneas */

Directiva del
precompilador
il d

#include <iostream>
using
g namespace
p
std;
;

main incluye
entre llaves
las instrucciones
del programa

Todas las instrucciones


terminan con ;

int main()
{
cout << "Bienvenido a C++" << endl;
}
cout manda a pantalla
MENSAJE Y DATOS
Introduce un salto de
l
lnea
en la
l pantalla
t ll

Gua de Sintaxis ANSI/ISO estndar C++

Primeros Programas en C++


Sumar dos nmeros
// Programa que lee dos nmeros enteros por teclado
// y muestra por pantalla su suma
#include <iostream>
Declaracin de variables. Hay
using namespace std;
que especificar el nombre y tipo
int main(){
de todas las variables
int variable1;
int variable2;
int suma;
cout << "Introducir primer dato: ";
cin >> variable1;
cout << "Introducir segundo
g
dato: ";
cin >> variable2;
suma = variable1 + variable2;

cin capta valores para los datos


desde teclado

El valor de variable1 se suma al


valor de variable2 y el resultado
se asigna a suma

cout << "La suma es: " << suma << endl;
}

cout muestra por pantalla mensajes


y valores de DATOS

13

Primeros Programas en C++

14

Programa = Datos + Instrucciones


// Programa que lee dos nmeros enteros por teclado
// y muestra por pantalla su suma
#include <iostream>
using namespace std;
int main(){
VARIABLES,
S, CO
CONSTANTES,
S
S, LITERALES
S
int variable1;
int variable2;
int suma;
- Debemos declararlos: DAR NOMBRE y TIPO -

Datos

cout << "Introducir primer dato: ";


cin >> variable1;
cout << "Introducir segundo
g
dato: ";
cin >> variable2;
suma = variable1 + variable2;

Instrucciones
Manipulan los DATOS

cout << "La suma es: " << suma << endl;
}

- Inst. Entrada/Salida
- Inst.
Inst Asignacin (Expresiones)
- Inst. Control (if, for, while, )

Primeros Programas en C++


Entradas Proceso y Salidas
Entradas,
// Programa que lee dos nmeros enteros por
// t
teclado
l d y muestra
t
por pantalla
t ll su suma
#include <iostream>
using namespace std;
int main(){
i
int
variable1;
i bl 1
int variable2;
int suma;
// ENTRADAS
cout << "Introducir primer dato: ";
cin >> variable1;
cout << "Introducir segundo dato: ";
cin >> variable2;
// PROCESO
suma = variable1 + variable2;
// SALIDAS
cout << "La suma es: " << suma << endl;
}

Entradas
Proceso
S lid
Salida

15

Datos en un Programa C++


Variables

Conjunto de posiciones de memoria que tiene asociado un


nombre (identificador) y un contenido (valor)

El valor de una variable puede variar durante la ejecucin de un


programa

Las variables tienen que declararse antes de su uso:

tipo nombre_variable;
int
i
t var1;
1
int var2;
int suma;

o tambin:

int var1, var2, suma;

Nombres para las variables (identificadores)


Una serie de caracteres (letras, dgitos, y subrayado)
N
No pueden
d comenzar por un nmero,

nii contener
t
acentos,
t
tampoco espacios en blanco, la ee, las barras / y \
Sensibles a maysculas y minsculas

16

Datos en un Programa C++


Tipos de datos simples

17

18

Datos en un Programa C++


Dar valores a las variables
Lectura
cin >> variable;

entero1

45

entero1

45

entero2

72

entero1

45

entero2

72

suma

117

cin >> entero1;


(Asumir que se pulsa 45)

cin >> entero2;


((Asumir q
que se p
pulsa 72))

Asignacin
variable = expresin;
suma = entero1 + entero2;

Datos en un Programa C++


Dar valores a las variables
En la declaracin
int valor = 10;
double resultado = 0.38;
char caracter = a;
a ;
bool apto = false;

Cuidado:

Cuando se declara una


variable, su valor es desconocido!
#include <iostream>
using namespace std;
int main()
{
int dato1=30, dato2, suma;
suma = dato1 + dato2; // CUIDADO: dato2 no est inicializada!!!
cout << "La suma: " << suma << endl;
}

19

20

Datos en un Programa C++


Ejercicios

Construir un programa que solicite las longitudes de la base y de


la altura de un triangulo y calcule su rea (SOLUCION).

Construir un programa que solicite el radio de una circunferencia y


calcule su rea (SOLUCION).

Construir un programa que solicite las longitudes de los lados de


un triangulo rectngulo y calcule su hipotenusa (SOLUCION).

Construir un programa que calcule las races de una ecuacin de


segundo grado (SOLUCION).

Construir un programa que lea una cantidad de dinero en euros y


muestre por pantalla su equivalente en pesetas (SOLUCION).

21

Datos en un Programa C++


Literales

E
Especificacin
ifi
i d
de un valor
l concreto de
d un tipo
i d
de d
dato
2
45.2
1e-5
c
"Hola"
true

Literal entero
Literal real
Literal real (notacin cientfica)
Literal carcter
Literal cadena de caracteres
Literal de tipo
p bool

Se llaman literales porque se escriben de forma literal en el


programa
cout << Introducir un valor positivo;
double resultado = 0.38;
z = 1 / 1.0e-50;
bool encontrado = false;

22

Datos en un Programa C++


C
Constantes
t t

Datos cuyo contenido no vara a lo largo de la ejecucin del


programa

const tipo nombre_constante = valor;


const double PI = 3.1415;
const int SALARIO_BASE = 1000;
const bool VERDAD = true;

Suelen usarse identificadores slo con maysculas para


diferenciarlos
d
e e c a os de las
as variables
a ab es

Ventajas de la declaracin de constantes:


Proporcionan
p
informacin
Imposibilidad de cambiarlo por error (PI)
Posibilidad de cambios futuros (SALARIO_BASE)

Ejercicio: Calcular el rea de una circunferencia usando constantes


(SOLUCION).

23

Datos en un Programa C++


Ejercicios

Suponga dos variables x e y que contienen dos valores.


Escribir las sentencias necesarias para hacer que los valores de
estas variables se intercambien (SOLUCION)

tmp

tmp

24

Expresiones
Expresin: Combinacin de DATOS, OPERADORES, FUNCIONES
y PARENTESIS que el compilador evala y, por tanto, tienen un VALOR
asociado.
IVA+(20+x)/5
10
(3*z-20)/5
sqrt(l1 l1+l2 l2)
sqrt(l1*l1+l2*l2)
resultado
PI

Se dice que una expresin devuelve un valor.

N iinteresan
Nos
t
d
dos ti
tipos especficos
fi
d
de expresiones:
i

Expresiones Aritmticas: devuelven un valor numrico.


Expresiones Booleanas: devuelven true o false.

25

Expresiones
Operadores aritmticos
Suma y resta (+ -)
Multiplicacin ( * )
Divisin ( / )
Divisin entera
7 / 51
Divisin real
7.0 / 5 1.4
7 / 5.0 1.4
7.0
7 0 / 5.0
5 0 1.4
14

Mdulo ( % )). Resto de la divisin entera


7 % 5 2

Slo se puede usar sobre enteros!

26

Expresiones
Ejercicios

Construir un programa que calcule la divisin real de dos valores


enteros.

// Programa que lee dos nmeros enteros por


// teclado y muestra por pantalla su
// d
division
s o real
ea (
(Ver.
e . 1)
)
#include <iostream>
using namespace std;
int main(){
int dato1;
int dato2;
double division;

// Programa que lee dos nmeros enteros por teclado


// y muestra por pantalla su division real (Ver. 2)
#include <iostream>
using namespace std;
int main(){
int dato1;
int dato2;
double division;
cout << "Introducir primer dato: ";
cin >> dato1;

cout << "Introducir primer dato: ";


cin >> dato1;

cout << "Introducir segundo dato: ";


cin >> dato2;

cout << "Introducir segundo dato: ";


cin >> dato2;

if (dato2 != 0) //Instruccion de Seleccion if-else


{
division = (1.0*dato1) / dato2;
cout << "La division es: " << division << endl;
}
else
cout << "Error: Division por cero" << endl;

division = (1.0*dato1) / dato2;


cout<<"La division es: "<<division<<endl;
}

27

Expresiones
Funciones matemticas predefinidas

Llevan a cabo clculos matemticos y devuelven un valor


Hay que incluir: #include <cmath>

La forma para invocarlos es:

NombreFun(argumento1, argumento2, )

Ejemplo
cout << sqrt(900.0);
sqrt devuelve la raiz cuadrada. La anterior instruccin
escribir 30.0

Los argumentos pueden ser:


Literales: sqrt(4)
Variables: sqrt(x)
Expresiones: sqrt(sqrt(x)) sqrt(36*x)

28

Expresiones
F
Funciones
i
matemticas
t ti
ms
comunes
M e th o d
ceil( x

cos(

exp(

fabs(

floor(
fmod(
log(

x,

log10(

pow(

x,

sin(

Fig
g . 3 .2

)
)
)

)
y

x
x

a b s o lu te v a lu e o f x

tan(

trig o n o m e tric c o s in e o f x
(x in ra d ia n s )
e x p o n e n tia l fu n c tio n e x
)

sqrt(

D e sc rip t io n
ro u n d s x to th e s m a lle s t in te g e r
n o t le s s th a n x

ro u n d s x to th e la rg e s t in te g e r
n o t g re a te r th a n x
re m a in d e r o f x /y a s a flo a tin g p o in t n u m b e r
n a tu ra l lo g a rith m o f x (b a s e e )
lo g a rith m o f x (b a s e 1 0 )

x ra is e d to p o w e r y (x y )
trig o n o m e tric s in e o f x
(x in ra d ia n s )
sq u a re ro o t o f x

trig o n o m e tric ta n g e n t o f x
(x in ra d ia n s )
M a t h lib ra ryy f u n c t io n s.

Ex a m p le
c e i l ( 9 . 2 ) is 1 0 . 0
c e i l ( - 9 . 8 ) is - 9 . 0
c o s ( 0 . 0 ) is 1 . 0
e x p ( 1 . 0 ) is 2 . 7 1 8 2 8
e x p ( 2 . 0 ) is 7 . 3 8 9 0 6
f a b s ( 5 . 1 ) is 5 . 1
f a b s ( 0 . 0 ) is 0 . 0
f a b s ( - 8 . 7 6 ) is 8 . 7 6
f l o o r ( 9 . 2 ) is 9 . 0
f l o o r ( - 9 . 8 ) is - 1 0 . 0
f m o d ( 1 3 . 6 5 7 , 2 . 3 3 3 ) is 1 . 9 9 2
l o g ( 2 . 7 1 8 2 8 2 ) is 1 . 0
l o g ( 7 . 3 8 9 0 5 6 ) is 2 . 0
l o g 1 0 ( 1 0 . 0 ) is 1 . 0
l o g 1 0 ( 1 0 0 . 0 ) is 2 . 0
p o w ( 2 , 7 ) is 1 2 8
p o w ( 9 , . 5 ) is 3
s i n ( 0 . 0 ) is 0
s q r t ( 9 0 0 . 0 ) is 3 0 . 0
s q r t ( 9 . 0 ) is 3 . 0
t a n ( 0 . 0 ) is 0

29

Expresiones
Reglas de precedencia

Determinan el orden con el que se


evaluan los operadores:
1. Los parntesis
2. - (unario)

3. *

4. +

A igual precedencia, se evaluan


de izquierda a derecha

Y = (a * b) + c
Y = a * b + c ?

o
Y = a * (b + c)

30

Expresiones
O
Operadores
d
relacionales
l i
l
Operadores para la comparacin de DATOS

El resultado es de tipo bool (true, false)

4 < 5 true

4 > 5 false

4 == 5 false
Sta nd a rd a lgeb ra ic
eq ua lity op era tor or
rela tiona l op era tor

C++ eq ua lity
or rela tiona l
op era tor

Exa mp le
of C++
c ond ition

Mea ning of
C++ c ond ition

>

>

x > y

x is greater than y

<

<

x < y

x is less than y

>=

x >= y

x is greater than or equal to y

<=

x <= y

x is less than or equal to y

==

x == y

x is equal to y

!=

x != y

x is not equal to y

Relational operators

Equality operators

31

Expresiones
Expresiones Booleanas
Las expresiones Booleanas devuelven true false

Se forman
S
f
uniendo
i d expresiones relacionales (y
( d
datos
t
Booleanos) con operadores lgicos.
1. AND (&&)
2. OR (||)
3. NOT (!)

(x>=1 && x<=10) x[1, 10]

32

Expresiones
Operadores Lgicos

Se definen usando tablas de verdad:


a

a && b

a || b

false

false

false

false

false

false

false

true

false

false

true

true

true

false

false

true

false

true

true

true

true

true

true

true

!a

false

true

true

false

33

Y en el siguiente
g
tema
Instruccin condicional (if-else)
D i i
Decision
Making
M ki
// Programa que lee dos nmeros enteros y muestra
// por pantalla el mayor
#include <iostream>
using namespace std;
int main()
{
int dato1, dato2, mayor;

Instruccin condicional
if-else

cout << "Introducir primer dato: ";


cin >> dato1;
cout << "Introducir
Introducir segundo dato: ";
;
cin >> dato2;
if (dato1 > dato2)
mayor = dato1;
else
mayor = dato2;
cout << El mayor es: " << mayor << endl;
}

Odd or Even

Operaciones de Entrada y Salida

34

Entradas

Las entradas se controlan a travs de cin (#include<iostream>)

Su sintaxis ms elemental es:

cin
i >> variable;
i bl

Espera
p
aq
que el usuario introduzca un valor entero desde el teclado
y, cuando se pulsa la tecla Intro, lo almacena en la variable

Automticamente se imprime el valor de la variable y adems un


retorno de carro en la pantalla

Las entradas de datos deben etiquetarse usando cout:


cout << "Introducir un numero: ";
cin >> x;

35

Operaciones de Entrada y Salida


Salidas
Las salidas se controlan a travs de cout

(#include<iostream>)

Su sintaxis ms elemental es:

cout << "Mensaje" << expresin1 << ....


El compilador detecta el tipo de dato de las expresiones y las
imprime de forma adecuada
Dentro de los mensajes pueden aparecer secuencias de
escape que permiten dar un formato ms estilizado a la salida
cout << "Hola, mundo\n";
cout << "Hola, mundo" << endl;

36

Operaciones
p
de entrada y salida
Secuencias de escape

37

Operaciones de entrada y salida


Ejemplos

38

Ms sobre Expresiones
C
Compatibilidad
tibilid d de
d tipos
ti
En general, hay que asignar a las variables
valores de su mismo tipo

Es peligroso asignar valores de tipo double a variables de tipo


int
int int
int_variable;
variable;
int_variable = 2.00;

int_variable tendr 2, y no 2.00

Generalmente, los valores enteros pueden almacenarse en


p double
variables de tipo
double double_variable;
double_variable = 2;

double_variable contendr 2.0

39

Ms sobre Tipos
p de Datos
Tipos de datos ms complejos
Tipos Simples (int, double,
char bool).
char,
bool)
Tipos Compuestos:
Estructuras
Clases
Vectores
String

40

Errores frecuentes
No inicializar las variables
Usar datos enteros cuando se desea realizar una divisin real
Cadenas de desigualdades (x<z<y)
Olvidar
Ol id iincluir
l i iostream
i t
en un programa que usa cin
i cout
t
Omitir el punto y coma al final de una instruccin
Usar el mdulo (%) sobre datos no enteros
Dejar espacios en blanco entre los operadores relacionales
= =

! =

< =

> =

Confundir el operador de igualdad (==) con el de asignacin =


Partir los identificadores insertando espacios en blanco
ma in
main

cantidad total

cantidad_total cantidadTotal

41

Errores frecuentes
Usar los smbolos ** y ^ p
para representar
p
una operacin
p
de
exponencial
z = x^y;
Colocar un punto y coma despus de la condicin de un
if (n % 2 == 0);
cout << n << es PAR << endl;

if

42

Consejos
j Prcticos
Escribir programa simples, claros y legibles (SOLUCION 1)
(SOLUCION 2)

Leer los manuales de la versin de C++ que se utilice


Comenzar los programas con un comentario que describa su
propsito
Colocar un espacio despus de cada coma (,)
int var1, var2, suma;

Asignar nombres significativos a las variables (no ms de 31


caracteres, para garantizar la portabilidad)
Sangrar las instrucciones asociadas a un if-else

43

Consejos
j Prcticos
Colocar una lnea en blanco entre la declaracin de las
variables y las instrucciones
Colocar espacios en cada lado de un operador binario
resultado = var1 + var2;

No incluir ms de una instruccin por lnea


Una instruccin muy larga debe separarse en distintas lneas.
La divisin debe hacerse en un punto con sentido (un operador,
una coma,
coma etc
etc.))
Terminar cada programa con \n o endl

También podría gustarte