practica 1
TRANSCRIPT
INFORMÁTICA
GRADO EN INGENIERÍA
TELEMÁTICA
PRÁCTICA 1
Curso 2015-2016
UNIVERSITAT DE VALÈNCIA
1
Práctica 1: Empezando a programar en C++
Objetivos
- Conocer el entorno de desarrollo de software DevC++.
- Describir la estructura general de sencillos programas en C++.
- Conocer las funciones de Entrada/Salida de C++.
- Aprender a utilizar apropiadamente los tipos de datos.
- Comprender el uso de la estructura secuencial.
- Comprender el uso de las estructuras alternativas (simple y doble) y su implementación en C++.
Conceptos Básicos
1. Tipos de datos simples en C++
Nombre del Tipo Memoria utilizada Rango Precisión bool 1 byte {true, false} No aplica
char 1 byte -128…127 No aplica
unsigned char 1 byte 0…255 No aplica
short 2 bytes -32768…32767 No aplica
int 4 bytes -2147483648…2147483647 No aplica
long 4 bytes -2147483648…2147483647 No aplica
unsigned short 2 bytes 0…65535 No aplica
unsigned int 4 bytes 0…4294967295 No aplica
unsigned long 4 bytes 0…4294967295 No aplica
float 4 bytes 10-38…1038 aprox. 7 dígitos
double 8 bytes 10-308…10308 aprox. 15 dígitos
long double 12 bytes 10-4932…104932 aprox. 19 dígitos
Ten en cuenta que los valores de rango de la tabla son orientativos. Pueden variar en función del
compilador y de la arquitectura del computador.
Enteros:
short, int, long, unsigned short, unsigned int, unsigned long
Uso: para almacenar datos que corresponden a números sin decimales.
Ejemplos: número de personas, veces que se repite alguna operación.
Atención: la división entera da como resultado un valor entero.
De tipo carácter:
char, unsigned char
Uso: para almacenar datos que corresponden a caracteres alfabéticos.
Ejemplos: letras y símbolos ortográficos.
Atención: aunque se usan para almacenar caracteres, en realidad lo que se guarda es un número
(el código ASCII) asociado al carácter, por lo que a todos los efectos es un tipo entero positivo.
INFORMÁTICA
GRADO EN INGENIERÍA
TELEMÁTICA
PRÁCTICA 1
Curso 2015-2016
UNIVERSITAT DE VALÈNCIA
2
Booleano:
bool
Uso: para almacenar datos lógicos (verdadero o falso).
Ejemplos: para almacenar el resultado de una comparación.
Atención: aunque sólo pueden tomar 2 valores (true o false) ocupan 1 byte entero. Cualquier valor
distinto de 0 es interpretado como true, y 0 es false.
Reales:
float
double
long double
Uso: para almacenar datos que corresponden a números con decimales
Ejemplos: longitudes, pesos, velocidades, etc.
Atención: la precisión en el computador no es infinita (y la memoria tampoco).
Operadores
Los operadores asociados a los tipos de datos simples se muestran en la tabla siguiente con su
orden de precedencia:
Tipo de Operador Orden de prioridad
Unarios
Multiplicativos
Aditivos
Relacionales
And
Or
!, -, + (signos)
*, /, %
+, -
>, <, >=, <=, ==, !=
&&
||
+
Nivel de
prioridad
Es necesario tener esa prioridad en cuenta a la hora de escribir expresiones. Si se desea cambiar
la precedencia y forzar operaciones en un determinado orden se deben utilizar paréntesis.
Recuerda que es necesario tener también en cuenta la asociatividad a izquierdas en el caso de
que tengamos dos operadores con igual prioridad.
Los operadores se definen de forma distinta para cada tipo de dato. Por ejemplo, la división de
dos enteros siempre será un entero.
Para evitar errores podemos recurrir a la conversión explicita de tipos o casting. Se realiza
poniendo delante del dato a cambiar el tipo al cual queremos convertirlo: float(9)
INFORMÁTICA
GRADO EN INGENIERÍA
TELEMÁTICA
PRÁCTICA 1
Curso 2015-2016
UNIVERSITAT DE VALÈNCIA
3
2. Introducción a las funciones de entrada y salida estándar en C++
Para realizar operaciones de entrada y salida necesitamos utilizar la biblioteca iostream, que
deberemos incluir en nuestro fichero mediante la sentencia #include <iostream>. Podremos
utilizar las instrucciones cin y cout, para leer información desde el teclado y mostrar información
en pantalla, respectivamente. Algunos ejemplos:
cin >> numAlumnos; Leemos un dato introducido por teclado y lo
guardamos en la variable numAlumnos.
cout << "He comprado dulces"; Muestra por pantalla la cadena entre comillas:
He comprado dulces
cout << "En clase hay " << numAlumnos
<< " estudiantes matriculados";
Muestra por pantalla las cadenas que están entre
comillas y el valor de la variable numAlumnos. Por
ejemplo, si su valor es 60, mostrará:
En clase hay 60 estudiantes matriculados
cout << "Hola" << endl << "Hola"; Realiza un salto de línea entre las dos cadenas:
Hola
Hola
3. Estructuras Alternativas Simple y Doble. Sentencias IF y sentencia IF_ELSE
Las estructuras de control selectivas permiten decidir qué ejecutar y qué no ejecutar en un
programa en función del valor que toma una expresión lógica. Por ejemplo: Realizar una división
sólo si el divisor es distinto de cero. En esta sesión sólo veremos la alternativa simple y la doble.
Alternativa simple: UN bloque de sentencias se ejecuta SI se cumple una condición (expresión
lógica).
Alternativa doble: DOS bloques de sentencias. Se ejecuta UNO u OTRO dependiendo de SI se
cumple o NO una condición (expresión lógica).
//Una alternativa
if (a != 0)
resultado = a / b;
//Dos alternativas
if (a >= 0)
cout << "numero no negativo";
else
cout << "numero negativo";
INFORMÁTICA
GRADO EN INGENIERÍA
TELEMÁTICA
PRÁCTICA 1
Curso 2015-2016
UNIVERSITAT DE VALÈNCIA
4
Ten en cuenta:
1. Uno de los errores más comunes en una sentencia if es utilizar operador de asignación '=' en
lugar de un operador de igualdad "==" a la hora de definir la condición.
2. En una sentencia if anidada cada else se corresponde con la instrucción if precedente más
cercana. Por ejemplo, en el segmento de programación siguiente:
if (a > 0)
if (b > 0)
c = a + b;
else
c = a * b * c;
d = a * b;
¿Cuál es la sentencia if asociada a else?
El sistema más fácil para evitar errores es el sangrado. Visualmente se puede observar que la
parte else se corresponde a la condición b > 0
if (a > 0)
if (b > 0)
c = a + b;
else
c = a * b * c;
d = a * b;
Una de las razones de utilizar la Guía de Estilo (ver pdf en Aula Virtual) es la claridad de los
programas y evitar errores innecesarios y pérdidas de tiempo.
3. Será necesario utilizar llaves para una sentencia if en caso de que haya más de una instrucción
en dicho bloque:
if (a > 0) {
b = b / a;
c = c – b;
}
4. Cuando se escribe la condición asociada a un if empleando varios operadores hay que tener en
cuenta que estos operadores se ejecutan según el siguiente orden:
1º Primero actúan aquellos que aparecen entre paréntesis, empezando por los paréntesis
más interiores.
2º Luego se evalúan según su orden de prioridad (ver Tabla 1)
3º Los operadores con el mismo nivel de prioridad se evalúan de izquierda a derecha
dependiendo de su asociatividad (a derechas o a izquierdas).
INFORMÁTICA
GRADO EN INGENIERÍA
TELEMÁTICA
PRÁCTICA 1
Curso 2015-2016
UNIVERSITAT DE VALÈNCIA
5
BLOQUE DE EJERCICIOS
Ejercicio 1 (mi primer programa). El programa ejer1.cpp calcula la superficie de un cubo. El
valor del lado (en metros) se introduce como dato de entrada. El programa calcula la superficie
(suma del área de seis caras del cuadrado) y se muestra un mensaje por pantalla. Modifica el
programa para que calcule también el volumen de un cubo y muestre el valor por pantalla. Por
ejemplo, ante la entrada lado igual a 3:
Valor de la superficie del cubo de lado 3 es 54 metros cuadrados
Valor del volumen del cubo de lado 3 es 27 metros cubicos
Ejercicio 2 (corrigiendo errores). Dado el siguiente código, complétalo añadiendo los includes
necesarios y la función main. Compílalo, ejecútalo y comenta lo que ocurre. Corrige los posibles
errores para obtener el resultado correcto.
/*completar */
….
float c1=0.1000000003;
float c2=0.1000000005;
if(c1==c2)
cout << "c1 y c2 son iguales" << endl;
else
cout << "c1 y c2 son distintos" << endl;
...
/*completar */
Ejercicio 3 (calculando polinomios). Realiza un programa que calcule el valor de un polinomio
de segundo grado de la forma Ax2+Bx+C. Como datos de entrada tendremos los coeficientes A, B
y C del polinomio y el valor de x. El programa debe mostrar un mensaje con el resultado de la
expresión. Por ejemplo, para la entrada A = 2, B = 3, C = 1 y x = 2, se mostrará el mensaje:
El valor del polinomio 2*x*x+3*x+1 es igual a 15.
Antes de empezar a programar realiza el diagrama de flujo (o pseudocodigo) del algoritmo.
INFORMÁTICA
GRADO EN INGENIERÍA
TELEMÁTICA
PRÁCTICA 1
Curso 2015-2016
UNIVERSITAT DE VALÈNCIA
6
Ejercicio 4 (uso de if anidados). Una tienda de comercio electrónico aplica un descuento a sus
clientes en relación a la importancia de la compra. He aquí la tabla de descuentos:
Gasto (euros) Descuento
< 100 10%
Mayor o igual a 100 y
menor que 200
15%
Mayor o igual a 200 25%
Implementa un programa que muestre el total a pagar (dato de salida) a partir del gasto realizado
por el cliente (dato de entrada). Realiza el diagrama de flujo previamente.
Ejercicio 5 (circunferencia) Realiza un programa que determine si un punto (x,y) se encuentra
en el interior de un círculo con centro en el punto (a,b) y radio r. Un punto cualquiera (x,y) se
encuentra dentro de un círculo si se cumple que:
(x-a)2 + (y-b)
2 < r
2
Indica quienes son los datos de entrada y de salida. Indica el pseudocódigo (no olvides la
cabecera) y dibuja el diagrama de flujo.
El mensaje de salida debe ser de la siguiente forma. Por ejemplo, en el caso de la circunferencia
de centro (1,1) y radio 2, y de que introduzcamos el punto (5,3), el mensaje sería:
El punto (5,3) no se encuentra dentro del círculo de centro (1,1) y
radio 2.