Lenguaje C
-
Upload
carmen-silva -
Category
Education
-
view
200 -
download
1
description
Transcript of Lenguaje C
2Grado en Ingeniería Informática
Grado en Ingeniería del Software Grado en Ingeniería de Computadores
Luis Hernández Yáñez
Facultad de InformáticaUniversidad Complutense
Fundamentos de la programación
Primeros pasos
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
ÍndiceUn ejemplo de programación 3El primer programa en C++ 18Las líneas de código del programa35Cálculos en los programas 42Variables 48Expresiones 54Lectura de datos desde el teclado64Resolución de problemas 79Algoritmo 84Programación 87Los datos de los programas 91Identificadores 93Tipos de datos 97Declaración de variables 106Constantes 111Operadores 115Más sobre expresiones 124
Instrucciones de asignación 132La biblioteca cmath 137Operaciones con caracteres 141Operadores relacionales 145Toma de decisiones (if) 148Bloques de código 151Bucles (while) 155Entrada/salida por consola 159
Luis
Her
nánd
ez Y
áñez
A programar se aprende programando
ProgramarActividad de escribir y probar programas.
ProgramaCódigo que indica a la computadora exactamente lo que tiene que hacer: secuencia de instrucciones.
La computadora sólo entiende un conjunto de instrucciones.
Lenguaje de programaciónDescribe cómo es el conjunto de instrucciones que se pueden usar en los programas.
Reglas sintácticas que el código debe respetar.
Página 3Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 4Fundamentos de la programación: Primeros pasos
Un ejemplo de programación
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
Una computadora de un cocheCoche que acepta programas que le indiquen cómo llegar.
Instrucciones que entiende:
<instrucción> ::= <inst> ;
<inst> ::= Start | Stop | <avanzar>
<avanzar> ::= Go <dirección> <num> Blocks
<dirección> ::= North | East | South | West
<num> ::= 1 | 2 | 3 | 4 | 5
Ejemplos:
Start;
Go North 3 Blocks;
Stop;
Página 5Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
Sintaxis del lenguaje de programación
Página 6Fundamentos de la programación: Primeros pasos
instrucción
Start
avanzar
avanzar direcciónGo Blocksnum
dirección
North
num
= Literales
East
South
West
Stop ;
1
2
3
4
5
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
El problema a resolverEstando el coche en la posición A,conseguir llegar al Cine Tívoli (B).
¿Cuáles son los pasos que hay que seguir para llegar al destino?
ArrancarIr un bloque al NorteIr dos bloques al EsteIr cinco bloques al NorteIr dos bloques al EsteParar
Página 7Fundamentos de la programación: Primeros pasos
B
A
N
Bloque:
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
El algoritmoSecuencia de pasos que hay que seguir para resolver el problema.
Página 8Fundamentos de la programación: Primeros pasos
1.- Arrancar
N
2.- Ir un bloque al Norte
3.- Ir dos bloques al Este
4.- Ir cinco bloques al Norte
5.- Ir dos bloques al Este
6.- Parar
Esos pasos sirven tanto para una persona como para una computadora.
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
El programaPara cada paso, una instrucción.
Escrita en el lenguaje de programación.
Start;Go North 1 Blocks;Go East 2 Blocks;Go North 5 Blocks;Go East 2 Blocks;Stop;
Página 9Fundamentos de la programación: Primeros pasos
B
A
N
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
El programaEscribimos el código del programaen un editor y lo guardamosen un documento programa.prg.
Página 10Fundamentos de la programación: Primeros pasos
Stat;Go North 1 BlocksGo East Blocks;Go Noth 5 Blocks;Go West 2 Blocks;Stop;
Copiamos el archivoen una llave USB y lo llevamos al coche.
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
La compilaciónIntroducimos la llave USB en el coche y pulsamos el botónde ejecutar el programa en programa.prg.
Se compila el programa (comprobación sintáctica):
Página 11Fundamentos de la programación: Primeros pasos
Stat;----^ Unknown word.Go North 1 Blocks-----------------^ ; missing.Go East Blocks;--------^ Number missing.Go Noth 5 Blocks;-------^ Unknown word.Go West 2 Blocks;Stop;There are errors. Impossible to run the program.
Erroresde sintaxis
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
DepuraciónEditamos el código para arreglar los errores de sintaxis.
Página 12Fundamentos de la programación: Primeros pasos
Stat;Go North 1 BlocksGo East Blocks;Go Noth 5 Blocks;Go West 2 Blocks;Stop;
Start;Go North 1 Blocks;Go East 3 Blocks;Go North 5 Blocks;Go West 2 Blocks;Stop;
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
La ejecuciónSe realiza lo que pidecada instrucción.
Página 13Fundamentos de la programación: Primeros pasos
B
N
Start;
Go North 1 Blocks;Go East 3 Blocks; !
Error de ejecución:
¡Una instrucción no se puede ejecutar!
¡No se puede seguir ejecutando el programa!
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
DepuraciónEditamos el código para arreglar el error de ejecución.
Página 14Fundamentos de la programación: Primeros pasos
Start;Go North 1 Blocks;Go East 3 Blocks;Go North 5 Blocks;Go West 2 Blocks;Stop;
Start;Go North 1 Blocks;Go East 2 Blocks;Go North 5 Blocks;Go West 2 Blocks;Stop;
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
La ejecuciónSe realiza lo que pidecada instrucción.
Página 15Fundamentos de la programación: Primeros pasos
B
N
Start;
Go North 1 Blocks;Go East 2 Blocks;
Errores lógicos:
El programa se ejecuta, pero no obtiene el resultado deseado.
Go North 5 Blocks;Go West 2 Blocks;Stop;
?
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
DepuraciónEditamos el código para arreglar el error lógico.
Página 16Fundamentos de la programación: Primeros pasos
Start;Go North 1 Blocks;Go East 2 Blocks;Go North 5 Blocks;Go West 2 Blocks;Stop;
Start;Go North 1 Blocks;Go East 2 Blocks;Go North 5 Blocks;Go East 2 Blocks;Stop;
Luis
Her
nánd
ez Y
áñez
Un ejemplo de programación
La ejecuciónSe realiza lo que pidecada instrucción.
Página 17Fundamentos de la programación: Primeros pasos
N
Start;
Go North 1 Blocks;Go East 2 Blocks;Go North 5 Blocks;Go East 2 Blocks;Stop;
¡Conseguido!
Luis
Her
nánd
ez Y
áñez
El lenguaje de programación C++
Muchas instruccionesInstrucciones para... Mostrar textos en la pantalla Leer datos del usuario Realizar cálculos Tomar decisiones Repetir operaciones Etcétera...
Página 18Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 19Fundamentos de la programación: Primeros pasos
El primer programa en C++
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
Hola Mundo!De vuelta en el programa que muestra un saludo en la pantalla:
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl; return 0;
}
Página 20Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
Hola Mundo!La única instrucción que produce algo tangible:
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl; return 0;
}
Página 21Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
coutVisualización en la pantalla:
Página 22Fundamentos de la programación: Primeros pasos
cout << "Hola Mundo!" << endl;
cout
_Hola Mundo!_
<< "Hola Mundo!"<< endl;
_
endl end line
character output stream
Luis
Her
nánd
ez Y
áñez
El dispositivo de salida
Pantalla en modo textoEn este primer curso, toda la salida se va a realizar en pantallas en modo texto. Las interfaces gráficas se verán en 2º curso.
Líneas de 80 caracteres. Se pueden mostrar textos en ellas.
Página 23Fundamentos de la programación: Primeros pasos
Aplicación con interfaz gráfica
Aplicación en modo texto
80 caracteres
Luis
Her
nánd
ez Y
áñez
El dispositivo de salida
Ventanas de consola o terminalSistema operativo: con interfaz gráfica de usuario (GUI).
Las aplicaciones en modo texto se ejecutan dentro de ventanas: Windows: ventanas de consola (Símbolo del sistema). Linux: ventanas de terminal.
Página 24Fundamentos de la programación: Primeros pasos
H o l a M u n d o !
Cursor parpadeante: Donde se colocará el siguiente carácter.
......
Luis
Her
nánd
ez Y
áñez
Visualización de información (datos)
El insertor <<<<Envía info a un dispositivo de salida.
Inserta textos en la pantalla de modo texto
La representación textual de los datos enviadosaparecerá en el dispositivo de salida, a partir de la posición del cursor.Si se llega al final de una línea se sigue al principio de la siguiente.
cout representa la ventana de consola/terminal.
Las operaciones de inserción se pueden encadenar:
cout << ... << ... << ...;
Se mostrarán todos los datos que haya a continuación de <<.
Las instrucciones terminan en ;.
Página 25Fundamentos de la programación: Primeros pasos
cout << ...;
Luis
Her
nánd
ez Y
áñez
Visualización de información (datos)
El insertor <<¿Qué podemos mostrar? Cadenas de caracteres literales.
Textos encerrados entre comillas dobles: "..."
cout << "Hola Mundo!";
Se muestran los caracteres dentro de las comillas. Números literales.
Con o sin decimales, con signo o no: 123, -37, 3.1416, ...
cout << "Pi = " << 3.1416;
Se muestran los caracteres que representan el número. endl
El cursor pasa al principio de la siguiente línea.
Página 26Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
El programa principalLa función main():
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl; return 0;
}
Las instrucciones están dentro de funciones.
main() es donde comienza la ejecución.
Página 27Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
El programa principalLa función main():
int main()
{
return 0;
}
Página 28Fundamentos de la programación: Primeros pasos
Tipo de la función (int = entero): Tipo de valor que devuelve.
Nombre de la función.
Cuerpo de la función (bloque de código).
return 0; Devuelve el resultado (0) de la función.
¡Es una función!
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
Documentando el códigoLos comentarios (se ignoran durante la compilación):
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl; return 0;
}
Hasta el final de la línea: // ...
De varias líneas: /* ... ... */
Página 29Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
La infraestructuraC++ nos proporciona mucho código para reutilizar:
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl; return 0;
}
Bibliotecas de funciones a nuestra disposición.
Al incluirlas podemos usar lo que contienen.
Página 30Fundamentos de la programación: Primeros pasos
Es una directiva: empieza por #
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
BibliotecasSe incluyen con la directiva #include:
#include <biblioteca>
#include <iostream>
Biblioteca iostream: utilidades de entrada/salida por consola.
Donde, por ejemplo, está declarado cout o se encuentra el código del insertor.
Cualquier programa que quiera mostrar en la pantalla (consola)o leer datos del usuario, debe incluir la biblioteca iostream.
Página 31Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
Espacios de nombresSi hay espacios de nombres en la biblioteca hay que elegir uno:
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl; return 0;
}
Siempre vamos a usar el espacio de nombres estándar (std).
Muchas bibliotecas no crean espacios de nombres.
Página 32Fundamentos de la programación: Primeros pasos
Es una instrucción: termina en ;
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
Compilación y enlace
Página 33
hola.cpp(código fuente)
Compilador hola.obj(código objeto)
Enlazador
hola.exe(ejecutable)
Código objeto dela biblioteca
iostream
A menudo el compilador y el enlazador están integrados.
Fundamentos de la programación: Primeros pasos
Hola Mundo!
Cargador
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
Elementos del programa
#include <iostream>
using namespace std;
int main()
{
cout << "Hola Mundo!" << endl;
return 0;
}
Página 34
Las instrucciones terminan en ;
Fundamentos de la programación: Primeros pasos
Directiva
Instrucción
Declaración
Instrucción
Instrucción
Biblioteca
Espacio de nombres
Palabras reservadasTipo
Datos literales
Cuerpo de la función
Cabecera de la función
Bloq
ue d
e có
digo Cadena de caracteres Constante
OperadorOperador
Variable
Número
Coloreado sintáctico:Directivas TiposPalabras reservadas generalesDatos literales Comentarios
Luis
Her
nánd
ez Y
áñez
El primer programa en C++
Uso de espacio en blancoLos elementos del lenguaje se pueden separar por uno o más espacios en blanco (espacios, tabuladores y saltos de línea).
El compilador los ignora. Deben usarse para mejorar la legibilidad.
También deben usarse comentarios para aclarar aspectos del código.
Página 35
#include <iostream>using namespace std;
int main(){ cout << "Hola Mundo!" << endl; return 0;}
#include <iostream> using namespace std;int main(){cout<<"Hola Mundo!"<<endl; return 0;}
¿Cuál se lee mejor?
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 36Fundamentos de la programación: Primeros pasos
Las líneas de código del programa
Luis
Her
nánd
ez Y
áñez
Programa mínimo
Programa con E/S por consolaUna plantilla para empezar:
#include <iostream>
using namespace std;
int main()
{
return 0;
}
Página 37Fundamentos de la programación: Primeros pasos
¡Tu código aquí!
Luis
Her
nánd
ez Y
áñez
El Quijote...
... recitado en la consolaMostrar los textos con cout <<:
#include <iostream>
using namespace std;
int main()
{
cout << "En un lugar de la Mancha," << endl;
cout << "de cuyo nombre no quiero acordarme," << endl;
cout << "no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, ..." << endl;
return 0;
}
Página 38Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Líneas de código
Introducción del código del programaTerminamos cada línea de código con un salto de línea (↲):
#include <iostream> ↲
using namespace std; ↲
↲
int main() ↲
{↲
cout << "En un lugar de la Mancha," << endl; ↲
cout << "de cuyo nombre no quiero acordarme," << endl; ↲
cout << "no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, ..." << endl; ↲
return 0; ↲
} ↲
Página 39Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Líneas de código
Introducción del código del programaNo hay que partir una cadena literal entre dos líneas:
cout << "no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, ..." << endl; ↲
Si se llega al final de la línea en el editor, se deja que continúe en la siguiente.
Sólo se pulsa Intro (↲) al terminar cada instrucción.
cout << "no ha mucho tiempo que vivía un hidalgo de los ↲
de lanza en astillero, ..." << endl; ↲
Errores:La cadena no termina (1ª línea); no se entiende de (2ª línea).
Página 40Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Edición y compilación del programa
Notepad++ y G++
Página 41Fundamentos de la programación: Primeros pasos
D:\FP\Tema2\quijote.cpp
Luis
Her
nánd
ez Y
áñez
Programar pensando en posibles cambios
Mantenimiento y reusabilidadEl código debe ser lo más legible posible. Usar espacio en blanco para separar elementos del código:
cout << "En un lugar de la Mancha," << endl;
mejor que
cout<<"En un lugar de la Mancha,"<<endl; Usar sangría (indentación) para el código de un bloque:
{ cout << "En un lugar de la Mancha," << endl; ... return 0;}
Cuanto más legible, más fácil de mantener y reutilizar.
¡El estilo importa!Página 42Fundamentos de la programación: Primeros pasos
Tab / 2 ó 3espacios
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 43Fundamentos de la programación: Primeros pasos
Cálculos en los programas
Luis
Her
nánd
ez Y
áñez
Cálculos en los programas
Operadores aritméticosEn los programas podemos realizar operaciones aritméticas.
Para cada operación utilizamos un símbolo concreto:
+ Suma- Resta* Multiplicación/ División
Los cuatro son operadores binarios:operando_izquierdo operador operando_derecho
Por ejemplo:3 + 4 Resultado: 72.56 – 3 Resultado: -0.44143 * 2 Resultado: 28645.45 / 3 Resultado: 15.15
Página 44Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Cálculos en los programas
Cómo escribir operandos numéricosLas cantidades pueden ser: Enteras: sin parte decimal Reales: con parte decimal
Cantidades enteras (sin decimales):Signo negativo (opcional) seguido de una secuencia de dígitos.3 143 -12 67321 -1234
Cantidades reales (con decimales):Signo negativo (opcional) seguido de una secuencia de dígitos, un punto decimal y otra secuencia de dígitos.3.1416 357.5 -1.333 2345.6789 -404.1
Página 45Fundamentos de la programación: Primeros pasos
Punto decimal (3.1415), NO coma decimal (3,1415)
Valores literales
No se usan puntos de millares
Luis
Her
nánd
ez Y
áñez
Cálculos en los programas
Ejemplo#include <iostream>
using namespace std;
int main()
{
cout << "133 + 1234 = " << 133 + 1234 << endl;
cout << "1234 - 111.5 = " << 1234 - 111.5 << endl;
cout << "34 * 59 = " << 34 * 59 << endl;
cout << "3.4 * 5.93 = " << 3.4 * 5.93 << endl;
cout << "500 / 3 = " << 500 / 3 << endl; // División entera
cout << "500.0 / 3 = " << 500.0 / 3 << endl; // División real
return 0;
}
Página 46Fundamentos de la programación: Primeros pasos
calculos.cpp
Luis
Her
nánd
ez Y
áñez
Cálculos en los programas#include <iostream>using namespace std;
int main(){ cout << "133 + 1234 = " << 133 + 1234 << endl; cout << "1234 - 111.5 = " << 1234 - 111.5 << endl; cout << "34 * 59 = " << 34 * 59 << endl; cout << "3.4 * 5.93 = " << 3.4 * 5.93 << endl; cout << "500 / 3 = " << 500 / 3 << endl; // División entera cout << "500.0 / 3 = " << 500.0 / 3 << endl; // División real
return 0;}
Página 47Fundamentos de la programación: Primeros pasos
División entera/real
Luis
Her
nánd
ez Y
áñez
Cálculos en los programas
¿División entera o división real?El operador división (/) hace una división entera (despreciando los decimales) si ambos operandos son enteros y hace una división real (con decimales) si alguno es real.500 / 3 Resultado: 166500.0 / 3 Resultado: 166.667500 / 3.0 Resultado: 166.667500.0 / 3.0 Resultado: 166.667
Hay que usar algún operando real siempre que se quiera que la división sea una división real.
Página 48Fundamentos de la programación: Primeros pasos
Comprueba siempre si la división que se va a realizar es la que quieres.
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 49Fundamentos de la programación: Primeros pasos
Variables
Luis
Her
nánd
ez Y
áñez
Variables
Datos que se mantienen en memoriaUna variable es un dato que se accede por medio de un nombre.
Un valor literal es un valor concreto que se escribe tal cual.
Una variable puede cambiar de valor siempre que se quiera.edad = 19; // edad es una variable y 19 es un literal
Las variables deben ser declaradas antes de poder utilizarlas.
Cuando se declaran se reserva espacio suficiente en memoriapara el dato que se quiere almacenar.
¿Qué tipo de dato queremos mantener? Un valor numérico sin decimales (entero): int Un valor numérico con decimales (real): double
Declaración: tipo nombre;
Página 50Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Variables
DeclaraciónAl declarar una variable establecemos el tipo de dato que puede contener y el nombre que usaremos para acceder a ese dato.int cantidad;double precio;
Para cada variable se reserva espaciosuficiente en memoria para el tipo de valor.
Unos tipos de datos requieren más bytes que otros.
LAS VARIABLES NO SE INICIALIZANNo se deben usar hasta que se les haya dado algún valor.
¿Dónde colocamos las declaraciones?
Siempre, antes del primer uso.Normalmente, al principio de la función.
Página 51Fundamentos de la programación: Primeros pasos
Memoria
cantidad ?
precio ?
...
Luis
Her
nánd
ez Y
áñez
Variables
Declaración#include <iostream>
using namespace std;
int main()
{
int cantidad;
double precio, total;
return 0;
}
Página 52Fundamentos de la programación: Primeros pasos
Memoria
cantidad ?
precio ?
total ?
...
Podemos declarar varias del mismo tiposeparando los nombres con comas.
Luis
Her
nánd
ez Y
áñez
Variables
Capacidad de las variables¿Qué valores podemos guardar en una variable int?
Cualquier entero entre -2.147.483.648 y 2.147.483.647.
Intervalo de valores del tipo int: -2147483648 .. 2147483647
¿Y en una variable double?
Números reales entre 2,23 x 10-308 y 1,79 x 10+308
y sus negativos -2,23 x 10-308 y -1,79 x 10+308
Intervalo de valores del tipo double:+/- 2.23e-308 .. 1.79e+308
Con los números reales podemos experimentar problemas de precisión.
Página 53Fundamentos de la programación: Primeros pasos
Notación científica en C++
Luis
Her
nánd
ez Y
áñez
Variables
Asignación de valores a las variables (operador =)Instrucciones de asignación:
variable = expresión;
Se evalúa la expresión y se asigna el resultado a la variable:
cantidad = 12;
precio = 39.95;
total = cantidad * precio; // Toma el valor 479.4
Piensa en el = como en :
cantidad 12
La variable recibe el valor 12.Ese valor se guarda en la memoria de la variable.
¡¡¡A la izquierda del = debe ir siempre una variable!!!
Página 54Fundamentos de la programación: Primeros pasos
Instrucción: termina en ;
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 55Fundamentos de la programación: Primeros pasos
Expresiones
Luis
Her
nánd
ez Y
áñez
Expresiones
ExpresionesSecuencias de operandos y operadores:
operando operador operando operador operando ...
Las expresiones se evalúan de izquierda a derecha.
Podemos usar paréntesis para forzar que se realicen unas operaciones antes que otras:
total = cantidad * precio * 1.18; // +18% de IVA
total = (cantidad1 + cantidad2) * precio;
(Suponiendo que se han declarado las variables cantidad1 y cantidad2.)
Con el nombre de una variable accedemos a su valor.
Unos operadores se evalúan antes que otros.
Página 56Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Expresiones
Precedencia de los operadorescantidad1 = 10;cantidad2 = 2;precio = 40.0;
* y / tienen mayor precedencia que + y - (se evalúan antes).
total = cantidad1 + cantidad2 * precio;
Se evalúa antes * que + 10 + 2 * 40,0 10 + 80,0 90,0
Los paréntesis fuerzan a que se evalúe su contenido primero:
total = (cantidad1 + cantidad2) * precio;
Se evalúa antes + que * (10 + 2) * 40,0 12 * 40,0 480,0
Hay que tener cuidado al escribir las expresiones, de forma que el cálculo sea exactamente el que se requiere.
Página 57Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Variables y expresiones
Ejemplo de uso de variables y expresiones#include <iostream>using namespace std;
int main(){ int cantidad; double precio, total; cantidad = 12; precio = 39.95; total = cantidad * precio; cout << cantidad << " x " << precio << " = " << total << endl;
return 0;}
Página 58Fundamentos de la programación: Primeros pasos
variables.cpp
Luis
Her
nánd
ez Y
áñez
Variables y expresiones
Ejemplo de uso de variables#include <iostream>using namespace std;
int main(){ int cantidad; double precio, total;
Página 59Fundamentos de la programación: Primeros pasos
Memoria
cantidad ?
precio ?
total ?
...
Luis
Her
nánd
ez Y
áñez
Variables y expresiones
Ejemplo de uso de variables#include <iostream>using namespace std;
int main(){ int cantidad; double precio, total; cantidad = 12;
Página 60Fundamentos de la programación: Primeros pasos
Memoria
cantidad 12
precio ?
total ?
...
Luis
Her
nánd
ez Y
áñez
Variables y expresiones
Ejemplo de uso de variables#include <iostream>using namespace std;
int main(){ int cantidad; double precio, total; cantidad = 12; precio = 39.95;
Página 61Fundamentos de la programación: Primeros pasos
Memoria
cantidad 12
precio 39.95
total ?
...
Luis
Her
nánd
ez Y
áñez
Variables y expresiones
Ejemplo de uso de variables#include <iostream>using namespace std;
int main(){ int cantidad; double precio, total; cantidad = 12; precio = 39.95; total = cantidad * precio;
Página 62Fundamentos de la programación: Primeros pasos
Memoria
cantidad 12
precio 39.95
total 479.4
...
Luis
Her
nánd
ez Y
áñez
Variables y expresiones
Ejemplo de uso de variables#include <iostream>using namespace std;
int main(){ int cantidad; double precio, total; cantidad = 12; precio = 39.95; total = cantidad * precio; cout << cantidad << " x " << precio << " = " << total << endl;
Página 63Fundamentos de la programación: Primeros pasos
Memoria
cantidad 12
precio 39.95
total 479.4
...
Luis
Her
nánd
ez Y
áñez
Variables y expresiones
Ejemplo de uso de variables#include <iostream>using namespace std;
int main(){ int cantidad; double precio, total; cantidad = 12; precio = 39.95; total = cantidad * precio; cout << cantidad << " x " << precio << " = " << total << endl;
return 0;}
Página 64Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 65Fundamentos de la programación: Primeros pasos
Lectura de datos desde el teclado
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
cinLectura de valores para las variables:
Página 66Fundamentos de la programación: Primeros pasos
cin >> cantidad;
cin
_
>> cantidad;
character input stream
Memoria
cantidad ?
...
_
12
1 2 ↲_1 _2
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>>>Lee datos de un dispositivo de entrada.
Transforma los caracteres introducidos por el usuario en datos
A medida que el usuario pulsa teclas, se muestra su carácter correspondiente en la pantalla, en la posición del cursor, avanzando éste a la siguiente posición.La entrada termina con la tecla Intro (el cursor para a la siguiente línea).
El operando derecho del extractor debe ser SIEMPRE una variable.
cin representa el teclado (declarada en la biblioteca iostream).
Las operaciones de extracción se pueden encadenar:
cin >> var1 >> var2 >> var3;
Se leerán los datos de todas esas variables.
Página 67Fundamentos de la programación: Primeros pasos
cin >> var;
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>¿Cómo se leen los distintos tipos de datos? Valores enteros (int):
Se leen dígitos hasta encontrar un carácter que no lo sea.
cin >> cantidad;
Si se teclean los siguientes caracteres:
12abc↲Se leen sólo los dos primeros caracteres, asignando el valor 12 a la variable cantidad, y el resto de los caracteres quedan pendientes para la siguiente operación de extracción.
Es recomendable leer cada dato en una línea:
12↲
La tecla Intro termina la entrada.
Página 68Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>¿Cómo se leen los distintos tipos de datos? Valores reales (double):
Se leen dígitos/punto hasta encontrar un carácter que no lo sea o no se pueda interpretar lo leído como un número real.
cin >> precio;
Si se teclean los siguientes caracteres:
39.95.5abc↲Se leen sólo los cinco primeros caracteres, asignando el valor 39,95 a la variable precio, y el resto de los caracteres quedan pendientes para la siguiente operación de extracción.
Es recomendable leer cada dato en una línea:
39.95↲
Página 69Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>¿Qué pasa si el usuario se equivoca?
La lectura no será correcta... y eso puede hacer que el programa no funcione como debe.
Una aplicación profesional dispondría de código de comprobación de las entradas por teclado, ayudando al usuario a corregir sus errores de tecleo.
En esta asignatura supondremos que los usuarios no se equivocan al teclear.
En ocasiones añadiremos código de comprobación sencillo.
Página 70Fundamentos de la programación: Primeros pasos
Para evitar errores, lee cada dato en una instrucción aparte.
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>¿Qué pasa si el usuario se equivoca?int cantidad;double precio, total;cout << "Introduce la cantidad: ";cin >> cantidad;cout << "Introduce el precio: ";cin >> precio;cout << "Cantidad: " << cantidad << endl;cout << "Precio: " << precio << endl;
Página 71Fundamentos de la programación: Primeros pasos
No se puede leer un entero 0 para cantidad y ErrorLa lectura del precio falla: precio no toma valor (basura)
La ejecución del programa sigue de forma anómala.
Indica al usuario qué es lo quese le pide que introduzca cada vez.
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>¿Qué pasa si el usuario se equivoca?int cantidad;double precio, total;cout << "Introduce la cantidad: ";cin >> cantidad;cout << "Introduce el precio: ";cin >> precio;cout << "Cantidad: " << cantidad << endl;cout << "Precio: " << precio << endl;
Página 72Fundamentos de la programación: Primeros pasos
Se leen dos dígitos 12 para cantidad No se puede leer un real 0 para precio y Error
La ejecución del programa sigue de forma anómala.
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>¿Qué pasa si el usuario se equivoca?int cantidad;double precio, total;cout << "Introduce la cantidad: ";cin >> cantidad;cout << "Introduce el precio: ";cin >> precio;cout << "Cantidad: " << cantidad << endl;cout << "Precio: " << precio << endl;
Página 73Fundamentos de la programación: Primeros pasos
Se leen dos dígitos 12 para cantidadSe lee .5 0,5 para precio y lo demás queda pendiente
Luis
Her
nánd
ez Y
áñez
Valores proporcionados por el usuario
El extractor >>¿Qué pasa si el usuario se equivoca?int cantidad;double precio, total;cout << "Introduce la cantidad: ";cin >> cantidad;cout << "Introduce el precio: ";cin >> precio;cout << "Cantidad: " << cantidad << endl;cout << "Precio: " << precio << endl;
Página 74Fundamentos de la programación: Primeros pasos
¡¡¡Lectura correcta!!!
Luis
Her
nánd
ez Y
áñez
Ejemplo
División de dos números:Pedir al usuario dos números y mostrarle el resultado de dividir el primero entre el segundo.
Análisis del problema y solución propuesta.-
1. Pedir el numerador
2. Pedir el denominador
3. Realizar la división, guardando el resultado
4. Mostrar el resultado
Página 75Fundamentos de la programación: Primeros pasos
Datos / cálculos
Variable denominador (double)
Variable resultado (double)
resultado = numerador / denominador
Análisis / Diseño
Variable numerador (double)
Luis
Her
nánd
ez Y
áñez
Procesamiento
Entrada SalidaDeclaracion
es
Un esquema general
Entrada-Proceso-SalidaMuchos programas se ajustan a un sencillo esquema:
Página 76Fundamentos de la programación: Primeros pasos
1. Leer numerador
2. Leer denominador
3. Calcular división en resultado
4. Mostrar resultado
Luis
Her
nánd
ez Y
áñez
Ejemplo
División de dos númerosPedir al usuario dos números y mostrarle el resultado de dividir el primero entre el segundo.
1. Leer numerador
2. Leer denominador
3. Calcular división en resultado
4. Mostrar resultado
Página 77Fundamentos de la programación: Primeros pasos
cin >> numerador;
cin >> denominador;
resultado = numerador / denominador;
cout << resultado;
Instrucciones
Luis
Her
nánd
ez Y
áñez Salida
Procesamiento
Entrada
Declaraciones
Ejemplo
División de dos númerosPedir al usuario dos números y mostrarle el resultado de dividir el primero entre el segundo.
#include <iostream>using namespace std;int main(){ double numerador, denominador, resultado; cout << "Numerador: "; cin >> numerador; cout << "Denominador: "; cin >> denominador; resultado = numerador / denominador; cout << "Resultado: " << resultado << endl;
return 0;}
Página 78Fundamentos de la programación: Primeros pasos
Implementación
Se puedendeclarar variasvariables de un mismo tiposeparándolascon comas.
division.cpp
Luis
Her
nánd
ez Y
áñez
Ejemplo
División de dos númerosPedir al usuario dos números y mostrarle el resultado de dividir el primero entre el segundo.
#include <iostream>
using namespace std;
int main()
{
double numerador, denominador, resultado;
cout << "Numerador: "; cin >> numerador;
cout << "Denominador: "; cin >> denominador;
resultado = numerador / denominador;
cout << "Resultado: " << resultado << endl;
return 0;
}
Página 79Fundamentos de la programación: Primeros pasos
_Numerador: _
Ejecución
129
_
Denominador: _2_Resultado: _64.5
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 80Fundamentos de la programación: Primeros pasos
Resolución de problemas
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Resolución de problemas
ProblemaDadas la base y la altura de un triángulo, calcular el área del triángulo.
El comportamiento deseado
Explicación detallada de lo que queremos que haga el programa:
Mostrar en la pantalla un texto que pida la base del triángulo. El usuario introducirá el valor con el teclado. Mostrar en la pantalla un texto que pida la altura del triángulo. El usuario introducirá el valor con el teclado. Se calculará el área del triángulo y se mostrará en la pantalla.
Comenzaremos identificando los objetos que maneja el programa,fijándonos en los sustantivos; nos indicarán los datos a manejar.
Luego nos fijaremos en las acciones (verbos);nos indicarán las operaciones a realizar.
Página 81
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Resolución de problemas
Datos que maneja el programa
Mostrar en la pantalla un texto que pida la base del triángulo. El usuario introducirá la base con el teclado. Mostrar en la pantalla un texto que pida la altura del triángulo. El usuario introducirá la altura con el teclado. Se calculará el área del triángulo y se mostrará en la pantalla.
El usuario no es un dato que maneje el programa: es quien maneja el programa. Por eso no lo tenemos en cuenta.— pantalla: ya sabemos que se corresponde con cout.— texto que pida la base del triángulo: una cadena de caracteres literal como
"Introduzca la base del triángulo: ".— base: un número variable que debe recoger el valor introducido por el
usuario. Ha de indicarse cuál es su tipo: por ejemplo, double.— teclado: ya sabemos que se corresponde con cin.
. . .— área del triángulo: otro número variable que debe recoger el resultado.
Ha de indicarse cuál es su tipo: por ejemplo, double.
Página 82
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Resolución de problemas
Datos que maneja el programa: tiposCada dato es de un determinado tipo, puede ser constante o variar, y si varía ha de tener un nombre (estándar o elegido por nosotros):
Página 83
Objeto Tipo ¿Varía? Nombre
Pantalla Variable cout
"Introduzca la base del triángulo: " Constante ninguno
Base del triángulo double Variable base
Teclado Variable cin
"Introduzca la altura del triángulo: " Constante ninguno
Altura del triángulo double Variable altura
Área del triángulo double Variable area
Se han obviado los tipos de los objetos del sistema y los literales.Los valores literales son constantes, no se pueden cambiar.Para que un dato pueda variar se necesita una variable con nombre.
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Resolución de problemas
Operaciones (acciones)
Mostrar en la pantalla un texto que pida la base del triángulo. El usuario introducirá la base con el teclado. Mostrar en la pantalla un texto que pida la altura del triángulo. El usuario introducirá la altura con el teclado. Se calculará el área del triángulo y se mostrará en la pantalla.
Las operaciones se realizan por medio de operadores:— mostrar en la pantalla: se envía algo a la pantalla con el insertor <<.cout << …
— introducir por el teclado: se lee algo del teclado con el extractor >>.cin >> …
— calcular el área del triángulo: área = base por altura entre dosarea = base * altura / 2
Página 84
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 85Fundamentos de la programación: Primeros pasos
Algoritmo
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Resolución de problemas
AlgoritmoSecuencia de acciones que ha de realizar el programa para conseguir resolver el problema:
1. Mostrar en la pantalla el texto que pida la base del triángulo.
2. Leer del teclado el valor para la base del triángulo.
3. Mostrar en la pantalla el texto que pida la altura del triángulo.
4. Leer del teclado el valor para la altura del triángulo.
5. Calcular el área del triángulo.
6. Mostrar el área del triángulo.
Página 86
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Resolución de problemas
El programa como transformador de entrada en salida
El estado inicial viene dado por los datos de entrada y el estado final por los datos de salida:
Página 87
ProgramaDatos
de entrada
Datosde salida
AlgoritmoEstadoinicial
Estadofinal
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 88Fundamentos de la programación: Primeros pasos
Programación
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Programación
El programa...
int main()
{
return 0;
}
Página 89
1. Mostrar en la pantalla el texto que pida la base del triángulo.
2. Leer del teclado el valor para la base del triángulo.
3. Mostrar en la pantalla el texto que pida la altura del triángulo.
4. Leer del teclado el valor para la altura del triángulo.
5. Calcular el área del triángulo.
6. Mostrar el área del triángulo.
Algoritmotraducidoa códigoen C++
Declaraciones
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Programación
El programa: implementación#include <iostream>using namespace std;
int main()
{
double base, altura, area; // 1. Declarar...
cout << "Introduzca la base del triángulo: "; // 2. Mostrar ...
cin >> base; // 3. Leer del...
cout << "Introduzca la altura del triángulo: "; // 4. Mostrar ...
cin >> altura; // 5. Leer del...
area = base * altura / 2; // 6. Calcular...
cout << "El área de un triángulo de base " << base << " y altura "
<< altura << " es: " << area << endl; // 7. Mostrar...
return 0;
}
Página 90
Las instrucciones terminan en ;
triangulo.cpp
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Programación
Ejecución
#include <iostream>using namespace std;
int main()
{
double base, altura, area;
cout << "Introduzca la base del triángulo: ";
cin >> base;
cout << "Introduzca la altura del triángulo: ";
cin >> altura;
area = base * altura / 2;
cout << "El área de un triángulo de base " << base << " y altura "
<< altura << " es: " << area << endl;
return 0;
}
Página 91
¿¿¿triβngulo???Problemas conlos juegos de
caracteres
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 92Fundamentos de la programación: Primeros pasos
Los datos de los programas
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Los datos de los programas
Variabilidad de los datos
Página 93
Datos
Constantes
Literales
Con nombre
Variables
"Introduzca la base del triángulo: "3.141592653589
base, altura, area
Pi = 3.141592653589
Identificadores
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 94Fundamentos de la programación: Primeros pasos
Identificadores
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Identificadores
Identificadores Distintos de las palabras reservadas del lenguaje
Las variables y las constantes con nombre tienen un identificador asociado que se usa para obtener su valor(o para modificar su valor, en el caso de las variables).— Un identificador es el nombre de un dato concreto.— Se debe usar nombres descriptivos (autoexplicativos).
Sintaxis de los identificadores:
Página 95
Al menos32 caracteressignificativos(longitud mínimapara diferenciardos nombres).
¡No se admiten ni eñes ni vocales acentuadas!
0..9, a..z, A..Z, _
No pueden repetirse identificadores en un mismo ámbito (bloque).
a..z, A..Z, _
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Identificadores
Palabras reservadas del lenguaje C++
asm auto bool break case catch char class
const const_cast continue default delete do
double dynamic_cast else enum explicit
extern false float for friend goto if
inline int long mutable namespace new
operator private protected public register
reinterpret_cast return short signed sizeof
static static_cast struct switch template
this throw true try typedef typeid typename
union unsigned using virtual void volatile
while
Página 96
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Identificadores
¿Qué identificadores son válidos y cuáles no?
balance interesAnual
_base_imponible años
EDAD12 salario_1_mes
__edad cálculoNómina
valor%100 AlgunValor
100caracteres valor?
_12_meses ____valor
Página 97
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 98Fundamentos de la programación: Primeros pasos
Tipos de datos
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
Tipos
Cada dato del programa es de un tipo concreto.
Cada tipo establece:
— El conjunto (intervalo) de valores válidos.Las variables del tipo tomarán uno de esos valores cada vez.
— El conjunto de operaciones que se pueden realizar sobre los valores del tipo. Los operadores que se pueden aplicar en las expresiones.
En las expresiones con datos de distintos tipos compatiblesse llevan a cabo transformaciones automáticas de tipos (promoción de tipo).
Para consultar los detalles técnicos de los tipos de datos,accede al Anexo de este Tema 2 que también se ha publicado.
Página 99
125'a'
true3.14159
"Hola"
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
Tipos de datos básicos— int: para números enteros (sin parte decimal).
1363, -12, 49— float: para números reales (con parte –punto– decimal).
12.45, -3.1932, 1.16E+02— double: para números reales; mayores intervalo y precisión.
(Usaremos habitualmente el tipo double para los números reales.)
— char: para caracteres.'a' , '{', '\t'
— bool: para valores lógicos (verdadero/falso, sí/no).true, false
— string: para cadenas de caracteres."Hola Mundo!"(Requiere incluir la biblioteca string con espacio de nombres std.)
— void: nada, ausencia de tipo, ausencia de dato (funciones).
Página 100
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
char CaracteresIntervalo de valores: Juego de caracteres (ASCII)
Literales:'a', '%', '\t'
Constantes de barra invertida (o secuencias de escape):Caracteres de control.
'\t' = tabulador, '\n' = salto de línea, …
Juego de caracteres:
Página 101
ASCII (códigos 32..127)
ISO-8859-1(ASCII extendido: códigos 128..255)
1 byte
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
bool Valores lógicosSólo dos valores posibles:— Verdadero (true)— Falso (false)
Literales:
true, false
En realidad, cualquier número distinto de 0 es equivalente a true y el número 0 es equivalente a false.
Página 102
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
string Cadenas de caracteres"Hola", "Introduce el numerador: ", "X142FG5TX?%A"
Son secuencias de caracteres.
Se asigna la memoria que se necesita para la secuencia concreta.Requieren incluir la biblioteca string con el espacio de nombres std:
#include <string>using namespace std;
Página 103
char" "
¡Ojo!Las comillas tipográficas (apertura/cierre) “…” te darán problemasal compilar. Asegúrate de utilizar comillas rectas: "…"
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
Recuerda: C++ distingue entre mayúsculas y minúsculas
int es la palabra reservada de C++ que permite declarar datos enteros.
Int, INT o inT no son palabras reservadas de C++.
true es la palabra reservada de C++ que representa el valor lógico verdadero.
True o TRUE no son palabras reservadas de C++.
Página 104
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
Ejemplo de tipos de datos
Página 105
tipos.cpp
#include <iostream>#include <string>using namespace std; // Un solo using... para las dos bibliotecas
int main(){ int entero = 3; // Podemos asignar (inicializar) al declarar double real = 2.153; char caracter = 'a'; bool cierto = true; string cadena = "Hola"; cout << "Entero: " << entero << endl; cout << "Real: " << real << endl; cout << "Caracter: " << caracter << endl; cout << "Booleano: " << cierto << endl; cout << "Cadena: " << cadena << endl;
return 0;}
¿Cuántos números hay en total en el programa?¿Y caracteres? ¿Y cadenas? ¿Y booleanos?
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Tipos de datos
Modificadores de tiposPermiten modificar el significado de los tipos base.— signed / unsigned : con signo (por defecto) / sin signo. — short / long : reduce/amplía el intervalo de valores posibles.
Página 106
Tipo Intervalo
int -2147483648 .. 2147483647
unsigned int 0 .. 4294967295
short int -32768 .. 32768
unsigned short int
0 .. 65535
long int -2147483648 .. 2147483647
unsigned long int 0 .. 4294967295
double +/- 2.23e-308 .. 1.79e+308
long double +/- 3.37E-4932 .. 1.18E+4932
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 107Fundamentos de la programación: Primeros pasos
Declaración de variables
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Variables
Declaración de variables[modificadores] tipo lista_de_variables;[ … ] indica que eso es opcional.
lista_de_variables
int i, j, l;
short int unidades;
unsigned short int monedas;
double balance, beneficio, perdida;
Página 108
Identificador
Programación con buen estilo:Utiliza identificadores descriptivos. Un espacio tras cada coma.Los nombres de las variables, en minúsculas.Si se compone de varias palabras, capitaliza cada inicial de las sucesivas palabras (balanceAnual, interesPorMes).
Termina en ;
,
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Variables
Datos y memoriaCuando se declara una variable se le reserva suficiente memoria.int inicio;
short int unidades;
double balance;
Al explicar la ejecuciónde los programasno distinguiremosentre los tamaños delas distintas variables.
Página 109
Memoria01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
. . .
inicio
unidades
balance
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Variables
Inicialización de variables¡En C++ las variables no toman automáticamente un valor inicial!
Al declarar una variable, ésta toma un valor desconocidoque no es válido y no debe ser utilizado.
¡Toda variable debe ser inicializada antes de ser accedida por primera vez!
¿Cómo se inicializa una variable?— Al declararla— Al leer su valor (cin >>)— Al asignarle un valor (instrucción de asignación)
Inicialización en la propia declaración, a continuación del identificador:
Página 110
El resultado de la expresióndebe ser un valor compatible.
Error común de programación:Acceder a variables no inicializadas.
Identificador Expresión… =
En particular, una expresión puede ser un literal
int i = 0, j, l = 26;
short int unidades = 100;
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Variables
Uso de las variablesObtención del valor de la variable: Aparición del nombre de la variable en una expresión.
cout << balance;
cout << interesPorMes * meses / 100;
Modificación del valor de la variable: Aparición del nombre de la variable a la izquierda
del operador de asignación (=).balance = 1214;
porcentaje = valor / 30;
Toda variable ha de haber sido previamente declarada en el ámbito del código (función) en el que se utiliza.
Página 111
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 112Fundamentos de la programación: Primeros pasos
Constantes
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Constantes
Declaración de constantes Modificador de acceso constDeclaramos variables inicializadas a las que no dejamos variar:
Página 113
Declaración de variable con inicializador
Programación con buen estilo:Pon en mayúscula la primera letra de una constante o todo su nombre.
Un nombre de constante no puede aparecer a la izquierda del = en una asignación,más allá de en su declaración.
const
const short int Meses = 12;
const double Pi = 3.141592,
RATIO = 2.179 * Pi;
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Constantes
¿Por qué utilizar constantes con nombre? Aumentan la legibilidad del código:
cambioPoblacion = (0.1758 - 0.1257) * poblacion; versuscambioPoblacion = (RatioNacimientos – RatioMuertes) * poblacion;
Facilitan la modificación del código:...double compra1 = bruto1 * 16 / 100;double compra2 = bruto2 * 16 / 100;double total = compra1 + compra2;cout << total << " (IVA: " << 16 << "%)" << endl;
...const int IVA = 16;double compra1 = bruto1 * IVA / 100;double compra2 = bruto2 * IVA / 100;double total = compra1 + compra2;cout << total << " (IVA: " << IVA << "%)" << endl;
Página 114
¿Cambio del IVA al 18%?
3 cambios
1 cambio
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Constantes
Ejemplo de uso de constantes
Página 115
constantes.cpp
#include <iostream>using namespace std;
int main(){ const double Pi = 3.141592; double radio = 12.2, circunferencia; circunferencia = 2 * Pi * radio; cout << "Circunferencia de un circulo de radio " << radio << ": " << circunferencia << endl;
const double Euler = 2.718281828459; // Número e cout << "Numero e al cuadrado: " << Euler * Euler << endl; const int IVA = 18; int cantidad = 12; double precio = 39.95, neto, porIVA, total; neto = cantidad * precio; porIVA = neto * IVA / 100; total = neto + porIVA; cout << "Total compra: " << total << endl;
return 0;}
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 116Fundamentos de la programación: Primeros pasos
Operadores
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores
Operaciones sobre valores de los tiposLas operaciones que se pueden realizar sobre valores de un determinado tipo vienen dadas por los operadores definidos para ese tipo de datos.
Tipos de datos numéricos (int, float y double, con sus variantes):— Asignación— Operadores aritméticos— Operadores relacionales
Tipo de datos bool:— Asignación— Operadores lógicos
Tipo de datos char:— Asignación, ++/--— Operadores relacionales
Página 117
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores aritméticos
Operadores para tipos de datos numéricos
Página 118
Operador Operandos Posición int float / double
- 1 (monario) Prefijo Cambio de signo
+ 2 (binario) Infijo Suma
- 2 (binario) Infijo Resta
* 2 (binario) Infijo Producto
/ 2 (binario) Infijo División
entera División real
% 2 (binario) Infijo Módulo No aplicable
++ 1 (monario)
Prefijo / postfijo Incremento
-- 1 (monario)
Prefijo / postfijo Decremento
Operadores binarios: Operando_izquierdo Operador Operando_derechoOperadores monarios:
Prefijo: Operador OperandoPostfijo: Operando Operador
a + b-a --a ++aa-- a++
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores aritméticos
Operadores monarios y operadores binariosOperadores monarios (o unarios)— El cambio de signo se puede aplicar a una variable, una constante
o una expresión entre paréntesis (en seguida hablamos de expresiones):
-saldo -RATIO -(3 * a – b)— Los operadores de incremento y decremento sólo se aplican a variables:
++interes --meses j++
Operadores binarios— Un operador binario se aplica entre un operando izquierdo y un operando
derecho. Los operandos pueden ser literales, constantes, variables o expresiones:
2 + 3 a * RATIO -a + b 3 * a++
(a % b) * (c / d)
Página 119
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores aritméticos
¿División entera o división real?Si ambos operandos son enteros, / hace un división entera:int i = 23, j = 2;
cout << i / j; // Muestra 11
Si alguno de los operandos es real, / hace una división real:int i = 23;
double j = 2;
cout << i / j; // Muestra 11.5
Página 120
/
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores aritméticos
Módulo (resto de la división entera)Ambos operandos han de ser enteros:int i = 23, j = 2;
cout << i % j; // Muestra 1
División entera:
No se obtienen decimales Queda un resto
Página 121
%
123 5
243
123 % 5
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores aritméticos
Operadores de incremento y decrementoSe incrementa/decrementa el operando numérico en una unidad.
Forma prefija: Se incrementa/decrementa antes de acceder.int i = 10, j;j = ++i; // Se incrementa antes de copiar el valor de i en jcout << i << " - " << j; // Muestra 11 - 11
Forma postfija: Se incrementa/decrementa después de acceder.int i = 10, j;j = i++; // Se incrementa después de copiar el valor de i en j
cout << i << " - " << j; // Muestra 11 – 10
Sólo se pueden aplicar sobre variables (modifican el operando).
Página 122
++/--
i=i+1;j=i;
j=i;i=i+1;
Programación con buen estilo:Es preferible NO utilizar los operadores ++ y – en expresiones con otros operandos/operadores.
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores aritméticos
Ejemplo de uso de operadores
Página 123
operadores.cpp
#include <iostream>using namespace std;
int main(){ int entero1 = 15, entero2 = 4; double real1 = 15.0, real2 = 4.0; cout << "Operaciones entre los numeros 15 y 4:" << endl; cout << "Division entera (/): " << entero1 / entero2 << endl; cout << "Resto de la division (%): " << entero1 % entero2 << endl; cout << "Division real (/): " << real1 / real2 << endl;(sigue)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operadores aritméticos
Ejemplo de uso de operadores
Página 124
cout << "Num = " << real1 << endl; real1 = -real1; cout << "Cambia de signo (-): " << real1 << endl; real1 = -real1; cout << "Vuelve a cambiar (-): " << real1 << endl; cout << "Se incrementa antes (++ prefijo): " << ++real1 << endl; cout << "Se muestra antes de incrementar (posfijo ++): " << real1++ << endl; cout << "Ya incrementado: " << real1 << endl;
return 0;}
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 125Fundamentos de la programación: Primeros pasos
Más sobre expresiones
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Más sobre expresiones
Evaluación de expresiones¿Cómo evaluamos una expresión como 3 + 5 * 2 / 2 – 1 ?
¿En qué orden se aplican los distintos operadores?¿De izquierda a derecha?
¿De derecha a izquierda?
¿Unos operadores antes que otros?
Resolución de ambigüedades:— Precedencia de los operadores (prioridad):
Unos operadores se han de evaluar antes que otros (mayor precedencia).— Asociatividad de los operadores (orden a igual prioridad):
Los operadores de igual prioridad se evalúan de izquierda a derechao de derecha a izquierda de acuerdo con su asociatividad.
Paréntesis: rompen la precedencia y asociatividadSiempre se evalúan en primer lugar las subexpresiones parentizadas.
Página 126
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Más sobre expresiones
Precedencia y asociatividad de los operadores
Página 127
Precedencia Operadores Asociatividad
Mayor prioridad ++ -- (postfijos) Izquierda a derecha
++ -- (prefijos) Derecha a izquierda
- (cambio de signo)
* / % Izquierda a derecha
Menor prioridad + - Izquierda a derecha
3 + 5 * 2 / 2 – 1
Misma precedencia:Izquierda antes.
Misma precedencia: Izquierda antes.
Mayorprecedencia
3 + 10 / 2 – 1
3 + 5 – 1 8 – 1 7
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Más sobre expresiones
Evaluación de expresionesSuponiendo que la variable entera acontiene en este momento el valor 3…
(3 + 5) * a++ + 12 / a++ – (a * 2)
Página 128
Programación con buen estilo:Evita usar los operadores ++ y -- en expresiones compuestas.
8 * a++ + 12 / a++ – (3 * 2)
8 * a++ + 12 / a++ – 6
8 * 3 + 12 / 3 – 6 a pasa a valer 524 + 4 – 6
28 – 6
22
Primero, los paréntesis...
Ahora, los ++ (mayor prioridad)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Más sobre expresiones
Una fórmula
#include <iostream>using namespace std;
int main()
{
double x, f;
cout << "Introduce el valor de X: ";
cin >> x;
f = 3 * x * x / 5 + 6 * x / 7 - 3;
cout << "f(x) = " << f << endl;
return 0;
}
Página 129
37
6
5
3)(
2
xx
xf
formula.cpp
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Más sobre expresiones
Abreviaturas aritméticasCuando una expresión tiene la forma:
variable = variable operador op_derecho;
Se puede abreviar como: variable operador= op_derecho;
Ejemplos:
a = a + 12; a += 12;
a = a * 3; a *= 3;
a = a - 5; a -= 5;
a = a / 37; a /= 37;
a = a % b; a %= b;
Página 130
Operadores (prioridad) Asociatividad
++ -- (postfijos)Llamadas a funciones
Izda. a dcha.
++ -- (prefijos) Dcha. a izda.
- (cambio de signo)
* / % Izda. a dcha.
+ - Izda. a dcha.
= += -= *= /= %= Dcha. a izda.
Igual precedencia que la asignación.
La misma
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Bit de signo0 = positivo1 = negativo
Más sobre expresiones
DesbordamientoSi una expresión produce un valor mayor del máximo permitido por el tipo correspondiente (o menor del mínimo), habrá desbordamiento.
¡El resultado no será válido!short int i = 32767; // Valor máximo para short int
cout << ++i; // Muestra -32768
Los valores short int se codifican en memoria (2 bytes) en Complemento a 2 (FC); al incrementar se pasa al valor mínimo.
Página 131
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1+
32767
-32768
+ 1
Debemos asegurarnos de utilizar tipos que contengan todo el conjunto de valores posibles para nuestros datos.
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Más sobre expresiones
Espaciado y paréntesis Se deben usar espacios en el código para facilitar la legibilidad.
f = 3*x*x/5+6*x/7-3;
f = 3 * x * x / 5 + 6 * x / 7 - 3;
Un espacio antes y después de cada operador binario.
Se pueden usar paréntesis, aunque resulten redundantes,para dejar patentes las prioridades de las operaciones.f = (3 * x * x) / 5 + (6 * x) / 7 - 3;
O si no se está seguro de la precedencia.
Los paréntesis no afectan a la velocidad del programa.
Página 132
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 133Fundamentos de la programación: Primeros pasos
Instrucciones de asignación
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Instrucciones de asignación
El operador =Operador para asignaciones:
El operando izquierdo debe sersiempre una variable, que recibe el valor resultante de evaluar la expresión.
int i, j = 2;
i = 23 + j * 5; // i toma el valor 33
Se evalúa de derecha a izquierda (asociatividad):
int a, b, c;
a = b = c = 5; // Las tres variables reciben el valor 5
Las instrucciones de asignación terminan en ;
Página 134
Variable Expresión
Operadores (prioridad)
Asociatividad
++ -- (postfijos) Izda. a dcha.
++ -- (prefijos) Dcha. a izda.
- (cambio de signo)
* / % Izda. a dcha.
+ - Izda. a dcha.
= Dcha. a izda.
Mínima precedencia
;=
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Instrucciones de asignación
El operador =El operando izquierdo ha de ser siempre una variable.
Posibles errores:
int a, b, c;
const int cte = 1;
Página 135
5 = a; // ERROR: un literal no puede recibir un valor
cte = 5; // ERROR: una constante no puede cambiar de valor
a + 23 = 5; // ERROR: no puede haber una expresión a la izda.
b = "abc"; // ERROR: un entero no puede guardar una cadena
c = 23 5; // ERROR: expresión no válida (falta operador)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Instrucciones de asignación
Variables, asignación y memoria
int i, j = 2; i = 23 + j * 5;
Página 136
Memoria01
02
03
04
05
06
07
08
09
10
. . .
i
j2
?
Memoria01
02
03
04
05
06
07
08
09
10
. . .
i
j2
3323 + 2 * 5
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Instrucciones de asignación
Ejemplo: Intercambio de valoresSe necesita una variable auxiliar.
double a = 3.45, b = 127.5, aux;
Página 137
a 3.45
b 127.5
aux ?
a 3.45
b 127.5
aux 3.45
a 127.5
b 127.5
aux 3.45
a 127.5
b 3.45
aux 3.45
aux = a;
a = b;
b = aux;
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 138Fundamentos de la programación: Primeros pasos
La biblioteca cmath
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
La biblioteca cmath
Funciones matemáticasLa biblioteca cmath contiene muchas funciones matemáticasque podemos utilizar en nuestras expresiones.
Para poder utilizarlas hay que incluir la biblioteca:#include <cmath>
Una llamada (erróneamente llamada a menudo invocación) de una función tiene esta forma:nombre(argumentos) Los argumentos irán separados por comas.
Por ejemplo, abs(a) Valor absoluto de a.Una llamada a función de biblioteca será un término más de una expresión.
f = 3 * pow(x, 2) / 5 + 2 * sqrt(x);
Página 139
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
La biblioteca cmath
Algunas funciones matemáticas de cmath
Página 140
abs(x) Valor absoluto de x
pow(x, y) x elevado a y
sqrt(x) Raíz cuadrada de x
ceil(x) Menor entero que es mayor o igual que x
floor(x) Mayor entero que es menor o igual que x
exp(x) ex
log(x) Ln x (logaritmo natural de x)
log10(x) Logaritmo en base 10 de x
sin(x) Seno de x
cos(x) Coseno de x
tan(x) Tangente de x
round(x) Redondeo al entero más próximo
trunc(x) Pérdida de la parte decimal (entero)
Las llamadas a funcionestienen la mayor prioridad.
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
La biblioteca cmath
Un ejemplo#include <iostream>using namespace std;#include <cmath>
int main(){ double x, y, f; cout << "Introduzca el valor de X: "; cin >> x; cout << "Introduzca el valor de Y: "; cin >> y; f = 2 * pow(x, 5) + sqrt(pow(x, 3) / pow(y, 2)) / abs(x * y) – cos(y); cout << "f(x, y) = " << f << endl; return 0;}
Página 141
)cos(2),(2
3
5 yyx
y
x
xyxf
Programación con buen estilo:Pon un espacio detrás de cada coma en las listas de argumentos.
funciones.cpp
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 142Fundamentos de la programación: Primeros pasos
Operaciones con caracteres
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operaciones con caracteres
Operadores para caracteresLos únicos operadores definidos para el tipo char son la asignación, incremento/decremento (código siguiente/anterior)y los operadores relacionales ().
Funciones para caracteres (biblioteca cctype)— isalnum(c) true si c es una letra o un dígito; si no,
false.— isalpha(c) true si c es una letra; si no, false.— isdigit(c) true si c es un dígito; si no, false.— islower(c) true si c es una letra minúscula; si no, false.— isupper(c) true si c es una letra mayúscula; si no, false.— toupper(c) devuelve la mayúscula de c.— tolower(c) devuelve la minúscula de c.
…
Página 143
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operaciones con caracteres
Un ejemplo#include <iostream>using namespace std;
int main(){ char caracter1 = 'A', caracter2 = '1', caracter3 = '&'; cout << "Caracter 1 (A).-" << endl; cout << "Alfanumerico? " << isalnum(caracter1) << endl; cout << "Alfabetico? " << isalpha(caracter1) << endl; cout << "Digito? " << isdigit(caracter1) << endl; cout << "Mayuscula? " << isupper(caracter1) << endl; caracter1 = tolower(caracter1); cout << "En minuscula: " << caracter1 << endl;
Página 144
caracteres.cpp
1 true / 0 false
(sigue)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Operaciones con caracteres
Un ejemplo cout << "Caracter 2 (1).-" << endl; cout << "Alfabetico? " << isalpha(caracter2) << endl; cout << "Digito? " << isdigit(caracter2) << endl; cout << "Caracter 3 (&).-" << endl; cout << "Alfanumerico? " << isalnum(caracter3) << endl; cout << "Alfabetico? " << isalpha(caracter3) << endl; cout << "Digito? " << isdigit(caracter3) << endl;
return 0;}
Página 145
1 true / 0 false
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 146Fundamentos de la programación: Primeros pasos
Operadores relacionales(condiciones simples)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Expresiones lógicas (booleanas)
Operadores relacionalesPermiten hacer comparaciones (condiciones):
Condición ::= Expresión Operador_relacional Expresión
Las expresiones deben arrojar resultados del mismo tipo (comparables).
El resultado es de tipo bool (true o false).
Página 147
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== igual que
!= distinto de
Operadores (prioridad) Asociatividad
++ -- (postfijos)Llamadas a funciones
Izda. a dcha.
++ -- (prefijos) Dcha. a izda.
- (cambio de signo)
* / % Izda. a dcha.
+ - Izda. a dcha.
< <= > >= Izda. a dcha.
== != Izda. a dcha.
= += -= *= /= %= Dcha. a izda.
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Expresiones lógicas (booleanas)
Operadores relacionalesbool resultado;
int a = 2, b = 3, c = 4;
resultado = a < 5; // 2 < 5 true
resultado = a * b + c >= 12; // 10 >= 12 false
resultado = a * (b + c) >= 12; // 14 >= 12 true
resultado = a != b; // 2 != 3 true
resultado = a * b > c + 5; // 6 > 9 false
resultado = a + b == c + 1; // 5 == 5 true
Los operadores aditivos y multiplicativos tienen mayor prioridad.
Página 148
Error común de programación:Confundir el operador de igualdad (==) con el operador de asignación (=).
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 149Fundamentos de la programación: Primeros pasos
Toma de decisiones (if)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Hacer esto... o hacer esto otro...
Página 150
SelecciónSi la condición es cierta, hacer esto... ; si no, hacer esto otro...
Bifurcación condicional:
InstrucciónT
true
InstrucciónF
false
if (condición) instrucciónT
else instrucciónF
Condición
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
La instrucción if
Selección
Página 151
#include <iostream>using namespace std;
int main(){ int op1 = 13, op2 = 4; int opcion; cout << "1 - Sumar" << endl; cout << "2 - Restar" << endl; cout << "Opcion: "; cin >> opcion; if (opcion == 1) cout << op1 + op2 << endl; else cout << op1 - op2 << endl;
return 0;}
seleccion.cpp
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 152Fundamentos de la programación: Primeros pasos
Bloques de código
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Bloques de código
Página 153
¿Hay que hacer más de un cosa?Si en alguna de las dos ramas del if es necesario poner varias instrucciones, se necesita crear un bloque de código:{ intrucción1 intrucción2 ... intrucciónN}
Por ejemplo:
Tab o
2 ó 3esp.
instrucción }{
Cada instrucción simple irá terminada en ;
int num, total = 0;cin >> num;if (num > 0) { cout << "Positivo"; total += num;}cout << endl;
Cada bloque creaun nuevo ámbitoen el que las declaracionesson locales.
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Bloques de código
Página 154
Posición de las llaves: cuestión de estiloif (num > 0) if (num > 0) {{ cout << "Positivo"; cout << "Positivo"; total += num; total += num; }} cout << endl;cout << endl;
No te dejes engañarif (num > 0) if (num > 0) cout << "Positivo"; cout << "Positivo"; total += num; total += num;
Aunque la sangría pueda dar a entender, a simple vista, que las dos instrucciones se ejecutan como destino del if, la segunda instrucción se ejecuta sea num mayor que cero o no: ¡en cualquier caso!
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Bloques de código
Página 155
Ejemplo#include <iostream>using namespace std;
int main(){ int op1 = 13, op2 = 4, resultado; int opcion; char operador; cout << "1 - Sumar" << endl; cout << "2 - Restar" << endl; cout << "Opcion: "; cin >> opcion; if (opcion == 1) { operador = '+'; resultado = op1 + op2; } else { operador = '-'; resultado = op1 - op2; } cout << op1 << operador << op2 << " = " << resultado << endl;
return 0;}
bloques.cpp
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 156Fundamentos de la programación: Primeros pasos
Bucles (while)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Repetir esto...
Página 157
IteraciónMientras que la condición sea cierta, repetir esto...
Repetición condicional:
while (condición) cuerpo
Condición
Cuerpo
true false
condición cuerpowhile ( )
Mientras la condición sea true se ejecuta el cuerpo.Si la condición es false al empezar, no se ejecuta el cuerpo ninguna vez.El cuerpo del bucle es una instrucción (simple o compuesta –bloque –).
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
La instrucción while
Iteración
Página 158
#include <iostream>using namespace std;
int main(){ int i = 1, n = 0, suma = 0; while (n <= 0) { // Sólo n positivo cout << "Cuantos numeros quieres sumar? "; cin >> n; } while (i <= n) { suma += i; i++; } cout << "Sumatorio de i (1 a " << n << ") = " << suma << endl;
return 0;}
serie.cpp
n
i
i1
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
false
La instrucción while
Iteración
Página 159
while (i <= n) { suma += i; i++;}
serie.cpp
n
i
i1
n 5
i 1
suma 0
suma += i;i++;
true
5
2
1
5
3
3
5
4
6
5
5
10
5
6
15i <= n
Luis
Her
nánd
ez Y
áñez
Fundamentos de la programación
Página 160Fundamentos de la programación: Primeros pasos
Entrada/salida por consola
Luis
Her
nánd
ez Y
áñez
1 6 = l a t o T7 3 5 . 3 5 1
Entrada/salida por consola (teclado/pantalla)
Flujos de textoC++ no tiene facilidades de E/S en el propio lenguaje.La E/S se realiza a través de flujos (streams).
Los flujos conectan la ejecución del programacon los dispositivos de entrada/salida.
Los flujos de texto son secuencias de caracteres.
Entrada por teclado:Se colocan los caracteres en el flujo de entrada cin (de tipo istream).
Salida por pantalla:Se colocan los caracteres en el flujo de salida cout (de tipo ostream).
Página 161Fundamentos de la programación: Primeros pasos
Programa
cin cout
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Entrada/salida por consola
Flujoscin y cout son objetos de datos definidos en la biblioteca iostream. La E/S se realiza por medio de sus operadores.
Operadores de entrada/salida:>> Extractor: Operador binario para expresiones de entrada de datos.
El operando izquierdo es un flujo de entrada (cin) y el operando derecho una variable. El resultado de la operación es el propio flujo de entrada.
<< Insertor: Operador binario para expresiones de salida de datos.El operando izquierdo es un flujo de salida (cout) y el operando derecho una expresión. El resultado de la operación es el propio flujo de salida.
La asociatividad de ambos operadores es de izquierda a derecha.
Página 162
Flujo de entrada Variable
Flujo de salida Expresión<<
>>
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Entrada por teclado
Expresiones de entrada
— char: Se saltan los espacios en blanco* y se asigna el carácter a la variable.— int: Se saltan los espacios en blanco* que haya. Se leen los dígitos seguidos
que haya y se transforma la secuencia de dígitos en un valor que se asigna.— float/double: Se saltan los espacios en blanco* que haya. Se leen los
dígitos seguidos que haya; si hay un punto se leen los dígitos que le sigan; se transforma la secuencia en un valor que se asigna.
— bool: Si lo leído es 1, la variable toma el valor true; con cualquier otra entrada toma el valor false. No se suelen leer este tipo de variables.
int i;char c;double d;cin >> c >> d >> i;cout << c << "|" << d << "|" << i;
Página 163
Variable
* Espacios en blanco: espacios, tabuladores o saltos de línea.
cin >>
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Entrada por teclado
Flujos de entrada
int i;char c;double d;cin >> c >> d >> i;
Página 164
z 1 2 3 . 4 5 6 5 Programa
Se lee el carácter 'z' y se asigna a la variable c; resultado: cin
Se leen los caracteres 123.45, se convierten al valor 123.45(válido para double) y se asigna a la variable d; resultado: cin
Se ignoran los espacios, se leen los caracteres 65, se convierten al valor 65 (válido para int) y se asigna a la variable i
cin
C++ siempre intentará leer los datos sin provocar errores de ejecución,pero si las secuencias de caracteres de la entrada no son correctas,los valores asignados a las variables serán impredecibles.
cin >> d >> i;
cin >> i;
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Entrada por teclado
Facilitar la entrada
Programas amigables con el usuario
Indicar al usuario para cada dato qué se espera que introduzca:int edad;char letra;double saldo;cout << "Introduce una letra: ";cin >> letra;cout << "Introduce el saldo: ";cin >> saldo;cout << "Introduce tu edad: ";cin >> edad;cout << letra << "|" << saldo << "|" << edad;
Tras escribir cada dato el usuario pulsará la tecla Intro.
Página 165
Buenos hábitos de programación:Ser amigable con el usuario
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Entrada por teclado
Ejecución de funciones con el operador punto (.)Las variables de algunos tipos (como istream u ostream) admiten que se llamen sobre ellas sus funciones con la notación del operador punto:
variable.función(argumentos)
Por ejemplo:
char c;cin.get(c);// Llama a la función get() sobre la variable cin
La función get() lee el siguiente carácter sin saltar espacios en blanco.Los caracteres de espacio en blanco también se asignan a la variable.
Página 166
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Entrada por teclado
Lectura de cadenas de caracteres (string)La lectura de cadenas de tipo string con cin >> termina cuando encuentra el primer espacio en blanco.
El resto de los caracteres tecleados quedan pendientes para la siguiente lectura. Si queremos descartarlos usamos cin.sync().
Página 167
¿Cómo leer varias palabras?
apellidos toma la cadena "Antonio"
string nombre, apellidos;cout << "Nombre: ";cin >> nombre;cout << "Apellidos: ";cin >> apellidos;cout << "Nombre completo: " << nombre << " " << apellidos << endl;
string nombre, apellidos;cout << "Nombre: ";cin >> nombre;cin.sync();cout << "Apellidos: ";cin >> apellidos;cout << "Nombre completo: " << nombre << " " << apellidos << endl;
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Entrada por teclado
Lectura de cadenas de caracteres (string)Para leer incluyendo espacios en blanco se usa la función getline():getline(cin, cadena)
Se guardan en la cadena todos los caracteres leídos hasta el final de la línea (Intro).
Página 168
string.cpp
¡Se leen bien los caracteres castellanos!
string nombre, apellidos;cout << "Nombre: ";getline(cin, nombre);cout << "Apellidos: ";getline(cin, apellidos);cout << "Nombre completo: " << nombre << " " << apellidos << endl;
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Salida por pantalla
Expresiones de salida
Se calcula el resultado de la expresión. Se convierte (si es necesario)a su representación en caracteres y se envían los caracteres al flujo de salida (pantalla).int meses = 7;
cout << "Total: " << 123.45 << endl << " Meses: " << meses;
Página 169
Expresión
Total: 123.45Meses: 7
La biblioteca iostreamdefine la constante endlcomo un salto de línea.
cout <<
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Salida por pantalla
Flujos de salida
int meses = 7;
cout << "Total: " << 123.45 << endl << " Meses: " << meses;
Página 170
T o t a l : 1 2 3 . 4 5 M e s e s : 7 Programa
cout
cout << 123.45 << endl << " Meses: " << meses;
cout << endl << " Meses: " << meses;
cout << " Meses: " << meses;
cout << meses;Total:123.45Meses:7
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Salida por pantalla
Datos y flujos de texto
No es lo mismo el valor double 123.45 que su representación textual,que es la secuencia de caracteres: '1' '2' '3' '.' '4' '5'
double d = 123.45;
cout << d;
Página 171
d 123.45
5 4 . 3 2 1
¡Un número real!
¡Un texto!(secuencia de caracteres)
123.45
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Salida por pantalla
Formato de la salidaLas bibliotecas iostream e iomanip tienen definidas constantesque permiten, cuando se envían a cout, establecer opciones de formato que afecten a la salida que se realice a continuación.
Página 172
Biblioteca Identificador Propósito
iostream
showpoint /noshowpoint
Mostrar o no el punto decimal para reales sin parte decimal (añadiendo 0 a la derecha).
fixed / scientific Notación de punto fijo / científica (reales).
boolalpha Valores bool como true / false.
left / right Ajustar a la izquierda/derecha.
iomanip setw(anchura)* Nº de caracteres (anchura) para el valor.
setprecision(p) Precisión: Nº de dígitos (antes y después del .).Con fixed o scientific, nº de decimales.
*setw() sólo afecta al siguiente dato que se escriba, mientras que los otros afectan a todos.
(Subrayadas las opciones predeterminadas.)
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Salida por pantalla
Formato de la salida (ejemplo)bool fin = false;
cout << fin << "->" << boolalpha << fin << endl;
double d = 123.45;
char c = 'x';
int i = 62;
cout << d << c << i << endl;
cout << "|" << setw(8) << d << "|" << endl;
cout << "|" << left << setw(8) << d << "|" << endl;
cout << "|" << setw(4) << c << "|" << endl;
cout << "|" << right << setw(5) << i << "|" << endl;
double e = 96;
cout << e << " - " << showpoint << e << endl;
cout << scientific << d << fixed << endl;
cout << setprecision(8) << d << endl;
Página 173
0->false
123.45x62
| 123.45|
|123.45 |
|x |
| 62|
96 - 96.0000
1.234500e+002
123.45000000
Se h
an a
ñadi
do s
alto
s de
líne
a ad
icio
nale
s.
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Referencias bibliográficas
Programming. Principles and Practice Using C++B. Stroustrup. Pearson Education, 2009
C++: An Introduction to Computing (2ª edición)J. Adams, S. Leestma, L. Nyhoff. Prentice Hall, 1998
El lenguaje de programación C++ (Edición especial)B. Stroustrup. Addison-Wesley, 2002
Página 174
Fundamentos de la programación: Primeros pasos
Luis
Her
nánd
ez Y
áñez
Acerca de Creative Commons
Licencia CC (Creative Commons)Este tipo de licencias ofrecen algunos derechos a terceras personas bajo ciertas condiciones.
Este documento tiene establecidas las siguientes:
Pulsa en la imagen de arriba a la derecha para saber más.
Página 175
Reconocimiento (Attribution): En cualquier explotación de la obra autorizada por la licenciahará falta reconocer la autoría.
No comercial (Non commercial): La explotación de la obra queda limitada a usos no comerciales.
Compartir igual (Share alike):La explotación autorizada incluye la creación de obras derivadas siempre que mantengan la misma licencia al ser divulgadas.