You are on page 1of 48

Fundamentos de programacin

Tema 1. Programacin en C++: Fundamentos


Gabriel Navarro
(email: gnavarro@ugr.es)
2
Objetivos del tema
Conocer el concepto de algoritmo, programa y
lenguaje de programacin
Conocer el concepto de compilador y enlaador
Conocer los tipos de datos b!sicos en C++
Conocer las operaciones b!sicas en C++
Conocer los conceptos de tipo de dato, e"presin y
literal
Comenar a escribir programas sencillos en C++
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
3
#l es$uema de un computador
%n computador est! &ormado por:
'ard(are
)o&t(are
Peri&*ricos
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
4
Programas de ordenador
%n programa de ordenador es un so&t(are $ue
implementa un algoritmo.
+e&inicin de algoritmo:
#jemplo: ,eceta de macarrones con tomate.
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
%n algoritmo es un conjunto finito de pasos
ordenados y bien definidos, $ue tiene unos datos
de entrada y $ue, si se llevan a cabo con &idelidad,
dar!n el resultado $ue se esperaba de ellos.
5
#jemplo: ,eceta de macarrones con tomate
ENTRADA: macarrones, sal, aceite, tomate frito, agua
1. Hervir el agua
2. Mezclar agua hirviendo con sal y aceite
3. Aadir macarrones
4. Mientras (macarrones no estn !landos"
es#erar
$. %scurrir agua
&. Mezclar macarrones con tomate frito
SALIDA' macarrones con tomate
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
6
#jemplo: programa para sumar dos n-meros
1. .ostrar un mensaje para $ue el usuario proporcione
el primer n-mero
/. 0eer el n-mero y guardarlo en memoria
1. .ostrar un mensaje para $ue el usuario proporcione
el segundo n-mero
2. 0eer el n-mero y guardarlo en memoria
3. Calcular la suma de ambos n-meros
4. .ostrar un mensaje al usuario con el resultado calculado
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Cdigo del programa en lenguaje natural:
7
0enguajes de programacin
1. Bajo nivel: Permite acceder directamente a
caracter5sticas 6ard(are 7ensamblador8
2. ivel medio: Contiene macroinstrucciones $ue
&acilitan la programacin, aun$ue se permite
acceso directo al 6ard(are 7C8
!. "lto nivel: )lo contienen macroinstrucciones
79da, :isual ;asic, <ava8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Tambi*n se clasi&ican seg-n su modo de
ejecucin: compilados 7C=C++8 o interpretados
7<ava, .at6ematica8.
8
Cmo se 6ace un programa de ordenador
1. )e dise>a y se escribe en uno o m!s &ic6eros
7cdigo &uente8
/. )e traduce al lenguaje de la m!$uina, generando
&ic6eros objeto 7compilacin8
1. )e &unden los &ic6eros y el cargador del programa
en el &ic6ero ejecutable 7enlaado8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
9
#jemplo de programa 76olamundo.cpp8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
10
#jemplo de programa 76olamundo.cpp8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Comentario de varias l5neas: =? ... ?=
@nclusin de bibliotecas:
Ainclude BbibliotecaC

Ainclude DbibliotecaE
@nclusin de espacio de
nombres est!ndar
Comentario 6asta &inal de l5nea: == ...
@nicio y &in de programa:
int main78 F
return GH
I
11
Comentarios de programa
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
=? 0os comentarios sirven para aclarar $ue 6ace el
codigo de un programa.
%n comentario JO FO,.9 P9,T# +#0 P,OK,9.9.
%n comentario solo sirve para poner notas y
aclarar lo $ue 6ace el programa, para $ue otro
programador pueda leerlo mejor
?=
=?
#sto es un comentario de varias lineas. Comiena
con un =? y siempre termina
cuando se encuentre el primer LasteriscoMbarraE. 9s5: ?=
## #sto es un comentario de una unica linea, con ==
12
Cmo se 6ace un programa de ordenador
1. )e obtienen los datos de entrada
/. )e procesan para obtener el resultado 7datos de
salida8
1. )e devuelven los datos de salida
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
%n dato es una representacin de la propiedad de un
objeto, $ue puede ser utiliado en la realiacin de
c!lculos o toma de decisiones.
+atos num*ricos 71, 1.128, caracteres 7NaN, NON8, cadenas de
caracteres 7D6olaE, DcomienoE8, booleanos 7true, false8
13
#jemplo de programa 7sumanumeros.cpp8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
14
:ariables y Constantes
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
#n C++, los datos pueden ser variables o
constantes.
+eben tener un tipo de dato asociado:
int: n-meros enteros 7M123, G, 13OOP8
&loat=double: n-meros reales 71.1PO, MP.3, G.GG18
c6ar: caracteres simples 7NaN, NON, NQN, N.N8
bool: verdadero=&also 7true, &alse8
c6ar RS: cadenas de caracteres 7D'olaE, D!rbolE8
15
:ariables y Constantes
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
#n C++, los datos pueden ser variables o
constantes.
+eben tener un tipo de dato asociado:
int: n-meros enteros 7M123, G, 13OOP8
&loat=double: n-meros reales 71.1PO, MP.3, G.GG18
c6ar: caracteres simples 7NaN, NON, NQN, N.N8
bool: verdadero=&also 7true, &alse8
c6ar RS: cadenas de caracteres 7D'olaE, D!rbolE8
literales
16
:ariables y Constantes
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
:ariable: %na o varias celdas de memoria con un
nombre asociado 7identi&icador8, $ue contienen un
valor $ue puede variar durante la ejecucin del
programa.
$eclaracin de variables: tipo identif (, identif, ...);
int edadQ 1/H
double peso, estaturaQ 1.PO, tamanioH
c6ar letraTdniQ NjNH
bool se"oQ trueH
c6ar apellidosR1/1SQE0peE, nombreRPGSH
17
:ariables y Constantes
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Constante: %na o varias celdas de memoria con un
nombre asociado 7identi&icador8, $ue contienen un
valor $ue JO puede variar durante la ejecucin del
programa.
$eclaracin de constantes:
const tipo identif=valor (, identif=valor, ...);
const double piQ 1.12H
const double @:9QG.1OH
const int .a"imoT9lumnosQ 13H
const c6ar talla.ediaQ N.NH
18
:ariables y Constantes: #jemplo. C!lculo
del precio+@:9 7iva.cpp8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Constante global
19
:ariables y Constantes: @denti&icadores
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Jormas de construccin de identi&icadores:
+ebe ser un conjunto de letras, d5gitos y caracteres T
Jo debe comenar por un d5gito
Jo debe coincidir con el nombre de una palabra
reservada de C++
Jo deben e"istir dos identi&icadores iguales de&inidos
en el mismo !mbito
Jo puede tener el caracter >
%jemplos de identificadores:
#dad, peso, edad, tallaTmedia, Talla.edia, apellido1, apellido/
20
Operadores: Operador de asignacin &
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
)irve para asignar un valor a una variable o
constante:
@denti&icador Q BoperacinCH
%jemplos:
#dadQ /UH
pesoQ O/.1MP.3H
letraTdniQ N6NH
'ombreQ trueH
,esultadoQ 1+2?1/H
JombreQ DPepeEH
#l operador de asignacin
no es v!lido para cadenas
de caracteres salvo en la
inicialiacin
)iempre acaba
en ' ... ajam...
21
Operadores: Operadores aritm*ticos
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
)irven para 6acer operaciones aritm*ticas:
a + b
a V b
a ? b
a = b
a W b
%jemplos:
@mporteQ /G.3 + G.1O?/G.3H
@mporteQ n9rticulos ? @mporteH
+escuentoQ n9rticulos ? 7@mporte M 1./8H
%nosies@mparQ /G W /H
9devolverQ MP.3H
,esultadoQ 71+/8?2H
#l operador ( slo es
v!lido cuando a y b
son n-meros enteros
X+e $u* tipo de dato
es el resultado de
una operacinY
22
Operadores: Precedencia de Operadores
aritm*ticos
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
0as operaciones aritm*ticas se resuelven en el
siguiente orden:
1. 0as operaciones entre par*ntesis
/. #l operador de cambio de signo )
!. .ultiplicaciones, divisiones y mdulos * # (
+. )umas y restas + )
9nte igual precedencia, se resuelve de i$uierda
a derec6a:
72+1?P8W1W/?3 MC vale 3
a+b=c JO #) 0O .@).O Z%# 7a+b8=c
23
Operadores: #ntrada y salida de datos
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
0a entrada se realia con el operador ,,:
cin es la entrada est!ndar 7teclado del PC8
Origen de datos ,, variableH
0a salida se realia con el operador --:
+estino de datos -- variableH
cout es la salida est!ndar 7consola del PC8
cerr es la salida de errores 7consola del PC8
24
#jemplo de programa 7sumanumeros.cpp8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
25
0lamadas a &unciones
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Funcin: )ubprograma $ue, con las entradas
adecuadas, devuelve el valor deseado para el $ue
la &uncin &ue dise>ada.
%jemplos:
double raiCuadrada/Q s$rt7/8H
double elevadoaQ po(7raiCuadrada/, 18H
int redondeoQ &loor71.28H
.mportante: )aber el n-mero de entradas y su tipo.
)aber el tipo del valor $ue devuelve.
26
0lamadas a &unciones: ;ibliotecas
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
0as &unciones se almacenan en bibliotecas.
%jemplos:
;iblioteca Bcmat6C: s$rt, po(, ceil, &loor, cos, sin,
tan, e"p, log, log1G, abs, &abs
;iblioteca BctypeC: isalnum, isalp6a, isdigit,
islo(er, isupper, tolo(er, toupper
Toda &uncin se identi&ica con su prototipo 7tipo de
salida, identi&icador, tipo de cada entrada8:
double s$rt7double8
27
0lamadas a &unciones: ;ibliotecas
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
#jemplos de prototipos de &unciones:
double s$rt7double8
double po(7double, double8
int abs7int8
double &abs7double8
c6ar isalnum7c6ar8
c6ar tolo(er7c6ar8
double log1G7double8
"Q 1.PH yQ 3.1H
Q po(7"+P,y8H
[Q 7s$rt7"8+s$rt77y+1GG8=/?188 = 71+"8H
#jemplos de uso:
28
;ibliotecas de uso com-n
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
9parte de iostream, C++ incluye numerosas bibliotecas,
con subprogramas de uso muy com-n. 9lgunas son:
cmat6. Contiene la de&inicin de algunas constantes
matem!ticas y subprogramas de uso general.
ctype. Contiene subprogramas para gestin de
caracteres.
cstdlib. Trans&ormacin de tipos num*ricos a cadenas de
caracteres y viceversa, generacin de n-meros al aar,
etc.
ctime. Kestin de &ormatos de 6ora y &unciones de
tiempo.
cstring. Contiene subprogramas para gestin de
cadenas de caracteres.
29
Programa de ejemplo
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
%jercicio: 'acer un programa $ue pida al usuario la
longitud de dos catetos de un tri!ngulo rect!ngulo y
$ue calcule la 6ipotenusa.
Pasos a seguir:
+ise>o: XCmo se calcula la 6ipotenusaY
XCu!ntos datos constantes y variables
necesitamos, y de $u* tipoY
XZu* bibliotecas necesitamos y cmo se
incluyenY
Pasos: #ntrada de datos, procesamiento, salida
de datos
\Jo olvidar poner comentarios]
30
Programa de ejemplo: :ariables au"iliares.
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
%jercicio: 'acer un programa $ue pida por teclado
dos valores reales y los guarde en dos variables
di&erentes. )eguidamente, el programa deber!
intercambiar el contenido de estas variables y
mostrar su nuevo valor por pantalla.
31
.!s sobre operadores:
.odi&icacin=asignacin
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
#n C++, tambi*n est!n disponibles los operadores
+Q, MQ, ?Q, =Q, WQ, ++, MM, $ue modi&ican el valor de
una variable:
int :Q 1H
:+Q 1H
:MQ PH
:?Q /H
:=Q 1H
:++H
:MMH
++:H
MM:H
int :Q 1H
:Q :+1H
:Q :MPH
:Q :?/H
:Q :=1H
:Q :+1H
:Q :M1H
:Q :+1H
:Q :M1H
#$uivale a:
X+i&erencia
entre :++ y
++:Y
32
.!s sobre operadores:
.odi&icacin=asignacin 7opmodi&icacion.cpp8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
33
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
.!s sobre operadores:
.odi&icacin=asignacin 7opmodi&icacion.cpp8
34
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
.!s sobre operadores:
.odi&icacin=asignacin 7opmasmas.cpp8
35
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
.!s sobre operadores:
.odi&icacin=asignacin 7opmasmas.cpp8
36
.!s sobre cin
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
cin puede utiliarse para obtener varios valores
consecutivos por teclado, separados por espacios o
por saltos de l5nea:
Ainclude BiostreamC
using namespace stdH
int main78 F
int dato1, dato/, sumaH
cout BB D +ime dos n-meros: DH
cin CC dato1 CC dato/H
sumaQ dato1+dato/H
cout BB D0a suma es D BB sumaH
I
37
.!s sobre cout
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Con cout ocurre algo similar:
Ainclude BiostreamC
using namespace stdH
int main78 F
cout BB D +ime dos n-meros: DH
cout BB D+imeE BB E D BB Ddos D BB Dn-meros: DH
cout BB D+imeEH
cout BB D dos DH
cout BB Dn-meros: DH
I
Todas son e$uivalentes
38
.!s sobre cout: Caracteres especiales
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
'ay caracteres $ue no tienen representacin
gr!&ica:
^n )alto a la siguiente l5nea
^r ,etorno de carro 7al comieno de la misma
l5nea8
^t Tabulador
^^ #l caracter ^
^G Fin de cadena 7se estudiar! en temas
posteriores8
^L #l caracter ^L
^_ #l caracter _
39
.!s sobre cout: Caracteres especiales
7carespecial.cpp8
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Ainclude BiostreamC
using namespace stdH
int main78 F
cout BB L)alto de linea^ny tab^tulador. ^GJo se imprimeLH
cout BB L #jemplo ^E con comillas ^N y con barra ^^LH
cout BB L^n^nTambien se puede usar endlL BB endl BB Len lugar de ^^n.^nEH
cout BB DvesYLH
return GH
I
40
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
.!s sobre cout: Caracteres especiales
7carespecial.cpp8
41
.!s sobre cout: \Cuidado con las comillas]
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
coutBBD1?EBBE"EH no es lo mismo $ue coutBBD1?EBB "H
Ainclude BiostreamC
using namespace stdH
int main78 F
int ", yH
cout BB L+ime un numero entero: LH
cinCC"H
yQ 1?"H
cout BB L1?LBB"BBL vale LBB y BB endlH
return GH
I
42
.!s sobre cout: Flujo de errores cerr
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
Ainclude BiostreamC
using namespace stdH
int main78 F
cerr BB L)alto de linea^ny tab^tulador. ^GJo se imprimeLH
cerr BB L #jemplo ^E con comillas ^N y con barra ^^LH
cerr BB L^n^nTambien se puede usar endlL BB endl BB Len lugar de ^^n.^nEH
cerr BB DvesYLH
return GH
I
Para enviar mensajes al dispositivo de salida de
errores, podemos usar cerr igual $ue cout
#l &lujo de errores est!ndar
desemboca usualmente en la
pantalla del PC
43
#l tipo bool: Comparaciones
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
a QQ 1 devuelve true 718 si a vale 1, y false 7G8 en caso contrario
a ]Q 1 devuelve true 718 si a JO vale 1, y false 7G8 en caso contrario
a B 1 devuelve true 718 si a es menor $ue 1, y false 7G8 en caso contrario
a BQ 1 devuelve true 718 si a es menor o igual $ue 1, y false 7G8 en caso
contrario
a C 1 devuelve true 718 si a es mayor $ue 1, y false 7G8 en caso contrario
a CQ 1 devuelve true 718 si a es mayor o igual $ue 1, y false 7G8 en caso
contrario
0os datos de un programa se pueden comparar
entre s5: && /& - , -& ,&
44
#l tipo bool: Operaciones booleanas
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
0os datos de un programa se pueden comparar
entre s5: a 00 b 1"$2 a 33 b 1452 /a 14T2
a b a 00 b a 33 b
&alse &alse &alse &alse
&alse true &alse true
true &alse &alse true
true true true true
a /a
true &alse
&alse true
45
#l tipo bool: Operaciones booleanas
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
#jemplos de operaciones booleanas:
true 00 true 00 false 33 /false da valor booleano true
/true 33 false da valor booleano &alse
true 00 1true 33 false2 da valor booleano true
true 00 1/true 33 false2 da valor booleano &alse
true 00 1/true 33 false2 33 false da valor booleano &alse
1!-62 00 16#! , 22 devuelve valor &alse
17b7-7a72 33 11+,2.82 devuelve valor true
/1!-62 devuelve valor &alse
119++-&1:2 33 19#! && 222 00 11/&22 devuelve valor true
/1119++-&1:2 33 19#! && 222 00 11/&222 devuelve valor &alse
46
Operadores: Precedencia
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
0a precedencia de todos los operadores estudiados
es:
1. 78 , R S, v++, vMM
/. ] , Mv , ++v , ``v
1. ? , = ,W 7operadores aritm*ticos8
2. + , M 7operadores aritm*ticos8
3. BB , CC
4. B , BQ , C , CQ
P. QQ , ]Q
O. aa
U. bb
1G. 1/ Q , ?Q , +Q , =Q , MQ
XZu* valor devolver!
72?1=/+PW38 + 1 B 3P?1+2
Y
47
;ibliogra&5a recomendada
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
9ntonio Karrido, Fundamentos de Programacin en
C++, +elta Publicaciones, /GG4. P!ginas 1M21.
+eitel a +eitel. C++: Cmo Programar. )e"ta
edicin, Prentice 'allMPearson, /GGO
calter )avitc6. ,esolucin de problemas con C++,
Pearson, /GG4.
48
+nde estudiar este tema
Fundamentos de Programacin. Tema 1: Programacin en C++. Fundamentos.
9ntonio Karrido, Fundamentos de Programacin en
C++, +elta Publicaciones, /GG4.
P!ginas 11M21, /2PM/4/, 141M1PP, 1OOM1UG.
+eitel a +eitel. C++: Cmo Programar. )e"ta
edicin, Prentice 'allMPearson, /GGO
P!ginas 1M1U, P1P, PPO

You might also like