You are on page 1of 10

PROGRAMACIÓN

Grado en Física
Facultad de Ciencias

Práctica 2

Práctica 2: El entorno de programación Code::Blocks (II)

Requisitos previos a la sesión de prácticas

El alumno deberá haber estudiado previamente la materia correspondiente al Tema 3:


Datos numéricos simples y haber leído atentamente este guión antes del comienzo de
la sesión.
Texto recomendado: Problemas de Programación, capítulo 1. Editorial técnica AVICAM.

1. Operaciones de edición

Conforme un programador se va habituando a manejar un entorno de


programación y va asimilando las posibilidades del mismo, se requiere menos
tiempo para la escritura del programa. Es conveniente estar familiarizado con
algunas rutinas muy utilizadas en la construcción de programas. Entre ellas,
destaca el manejo de bloques.

Un bloque (en este contexto) es una porción de texto contiguo del código fuente
de un programa. Veremos las operaciones básicas que se pueden realizar con
bloques.

1.1. Marcar un bloque

1. Situar el cursor del ratón al principio del texto dónde queremos que empiece
el bloque.

2. Pulsar el botón izquierdo del ratón y, manteniéndolo pulsado, arrastrar el


ratón hasta definir el trozo de texto que queramos que abarque el bloque.
Observaremos que el fondo del texto que se va marcando cambia de color.

3. Soltar el botón izquierdo del ratón.

4. Otra posibilidad, en vez de usar el ratón para seleccionar el bloque, es usar


los cursores (las teclas con flechitas) mientras se mantiene pulsada la tecla
Shift.

Al terminar de marcar el bloque, éste debe estar resaltado tal como se muestra en
la Figura 1.

1 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2

Figura 1. Selección de un bloque en el editor.

1.2. Copiar un bloque

1. Realizar el proceso de Marcar el bloque.

2. Pulsar el botón derecho del ratón y sobre el menú emergente elegir la


opción Copiar. También es posible hacer esto mismo mediante la
combinación de teclas (ctrl.-C). Esta operación almacena en el
portapapeles (una memoria temporal) el trozo de código que se ha
marcado.

1.3. Pegar un bloque

1. Realizar el proceso de Copiar el bloque.

2. Situar el cursor en la posición dónde se desea pegar el contenido del


portapapeles en el documento actual.

2 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2
3. Pulsar el botón derecho del ratón y elegir la opción Pegar del menú
emergente. También es posible hacer esto mismo mediante la combinación
de teclas (ctrl.-V).

Esta operación sitúa el contenido del portapapeles en una nueva ubicación dentro
del documento que es elegida por el usuario.

1.4. Cortar un bloque

1. Realizar el proceso de Marcar el bloque.

2. Pulsar el botón derecho del ratón y sobre el menú emergente elegir la


opción Cortar. También es posible hacer esto mismo mediante la
combinación de teclas (ctrl.-X).

Esta operación almacena en el portapapeles el trozo de código que se ha


eliminado del documento original. Por tanto, si a continuación realizamos la acción
de Pegar el efecto obtenido es el de Mover un bloque.

1.5. Eliminar un bloque

1. Realizar el proceso de Marcar el bloque.

2. Pulsar el botón derecho del ratón y sobre el menú emergente elegir la


opción Borrar. Pulsando la tecla Delete se realiza también la operación.

Esta operación elimina del documento original el bloque marcado. Hay que tener
cuidado porque ya no se podrá recuperar.

3 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2
2. La ventana de ejecución de nuestros programas

Todos los programas que estamos haciendo se ejecutan sobre una ventana tipo
MSDOS, la cual solo puede representar texto (caracteres, dígitos, símbolos,
espacios en blanco, ...).

Esta ventana se encuentra dividida en 25 filas de 80 columnas cada una, de


manera que en cada fila hay 80 celdas, todas del mismo tamaño. En cada celda
se puede mostrar un único carácter.

Así pues, cuando se usa cout para escribir un mensaje, este se mostrará donde
indique el cursor, y ocupará tantas celdas como sean necesarias. El cursor se va
adelantando automáticamente a la siguiente celda cada vez que se escribe un
carácter. Por ejemplo:

cout << “1”;

mostrará un 1 en el lugar que estuviese previamente cursor y éste se colocará en


la siguiente celda de la pantalla.

cout << “123.56”;

mostrará “123.56”, ocupando 6 celdas (los 5 dígitos y el punto) a partir de donde


estuviese el cursor, y éste quedará en la celda después del 6.

cout << “123.56” << endl;

mostrará “123.56”, ocupando 6 celdas a partir de donde estuviese el cursor, y


éste quedará al inicio de la siguiente fila.

Con ayuda de los manipuladores de flujo podemos formatear la salida de cout


para mostrar los datos de una manera más legible, por ejemplo, haciendo que al
mostrarlos en pantalla ocupen un número de celdas determinado, en vez de que
ocupen los estrictamente necesarios, podemos justificar o alinear los datos a un
lado u otro, decidir si queremos que los valores se muestren en notación científica
o en una base numérica determinada, etc.

El objetivo de los manipuladores de flujo es mostrar los valores o mensajes de


forma más clara y elegante. Para usar un manipulador de flujo, éste debe
aplicarse antes de escribir el texto o dato que queramos formatear, ya que el
efecto se apreciará sobre lo que escribamos después de haber fijado el
manipulador.

4 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2
3. Probando las operaciones de edición con un ejemplo práctico

Para probar las operaciones de edición de bloques que acabamos de mencionar,


partiremos de un ejemplo bastante sencillo: un programa que va a mostrar el
número π utilizando diferentes formatos de salida. Para ello vamos a experimentar
con diferentes manipuladores de flujo que pueden aplicarse a cout.

Los manipuladores de flujo son funciones diseñadas para combinarse con los
operadores de inserción en flujos “<<” (con las instrucciones de salida). Algunos
de estos operadores se han mencionado en las clases de teoría y hemos
practicado con ellos en prácticas, como por ejemplo:

cout << endl; // insertar nueva línea


cout << scientific; // utilizar notación científica

Además de esos, hay otros manipuladores adicionales que permiten indicar el


aspecto con que se mostrarán los datos cuando se escriban en la pantalla de
ejecución, por ejemplo:

dec Establece la base decimal para mostrar los valores


hex Establece la base hexadecimal para mostrar los valores
oct Establece la base octal para mostrar los valores
showbase Añade el prefijo de la base usada al mostrar los valores
fixed Establece la notación de punto fijo (con coma decimal)
scientific Establece la notación científica al mostrar el valor
left Justifica hacia la izquierda
right Justifica hacia la derecha
internal Justifica insertando caracteres en posiciones internas

Además de los anteriores, en la biblioteca “iomanip” hay algunos más:

setw() Establece la anchura mínima en celdas de pantalla del


siguiente dato a mostrar (sólo válido para justo el
siguiente).
setfill() Establece el carácter de relleno para los espacios
setprecision() Número de dígitos decimales a mostrar. El efecto es
distinto según la notación (por defecto, fija o científica).

5 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2

Puede consultar en mayor detalle la funcionalidad y uso de esos manipuladores en


la siguiente página web:

http://www.cplusplus.com/reference/iomanip/setprecision/

Antes de seguir leyendo el guión, copie el programa cuyo código fuente se


muestra en la Figura 1 en el editor, guárdelo en un fichero, compílelo y
compruebe que funciona correctamente. El programa simplemente muestra el
valor de -PI, con 3 cifras significativas, usando la notación establecida por defecto.

A continuación, vamos a modificar el programa para que también muestre el


valor del número:
– usando la notación fixed con 4 decimales
– usando la notación scientific con 6 decimales.

Habría, por tanto, que utilizar los manipuladores adecuados. Puesto que lo que
hay que añadir al programa de la Figura 1 es muy similar a lo ya escrito, lo más
rápido es copiar el bloque correspondiente y duplicarlo, haciendo a
continuación las modificaciones pertinentes sobre el bloque copiado, en vez
de escribirlo manualmente, ya que se trata de bloques muy similares, por lo que es
más rápido duplicarlo y hacer las modificaciones oportunas que escribirlo todo
desde cero.

Tras duplicar el bloque acuérdese de incluir las instrucciones cout << fixed o
cout << scientific correspondientes, y de modificar los mensajes que se
muestran al usuario, así como los valores de setprecision().

Tras realizar estas operaciones el programa debe quedar tal como se muestra en
la Figura 2.

6 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2

Figura 2. Código fuente del programa de ejemplo modificado.

7 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2
Ejercicios de laboratorio (5 puntos)

Como ejercicios de laboratorio, debe realizar tres tareas:

L.1 Test inicial sobre los contenidos del guión y conceptos relacionados

L.2 Modificar el programa de la Figura 2 añadiendo el manipulador


setfill('.') y comprobar su efecto al mostrar los valores. Probar
también los manipuladores left, right e internal usando la notación
científica y con 3 cifras decimales de precisión.

L.3 Realizar un programa que lea un valor entero desde el teclado y


muestre su valor en pantalla usando la base decimal, la base octal y la
base hexadecimal. Utilice también el manipulador showbase en cada
uno de los casos indicados para poder comprobar el efecto de este
manipulador.

L.4 Realizar un programa que lea 5 valores reales desde el teclado y los
muestre de forma similar a como se muestra en la Figura 3 (en forma de
tabla, perfectamente alineados en una columna, fíjese bien que la coma
decimal debe aparecer en la misma vertical).

Tras haber comprobado el funcionamiento correcto de sus programas, avise al


profesor para que los evalúe, y suba los códigos fuente de ambos programas
a SWAD mediante “Archivos→Trabajos”.

Figura 3. Programa ejercicio de laboratorio 3.


8 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2
Ejercicios propuestos (5 puntos)

Estos otros ejercicios deberá realizarlos en casa y serán calificados a través de la


memoria que entregará al profesor, tal y como se indicó en las páginas iniciales
del Guión 1 (Normas generales de realización y entrega). Estos dos ejercicios,
junto a los propuestos en el Guión 1 se deben incluir en la memoria de prácticas.

Recuerde que para la confección ha de usarse la plantilla disponible para tal fin en
la zona de documentos de la plataforma SWAD.

Ejercicio propuesto P.1

Realizar un programa para calcular el logaritmo de un número en cualquier base


(por ejemplo, el logaritmo de 10 en base 3). El programa pedirá al usuario que
introduzca el número y la base del logaritmo, y el programa mostrará el resultado.
Utilice los manipuladores de flujo para mostrar el resultado de una forma legible y
compacta.

Ejercicio propuesto P.2

Realizar un programa que calcule las funciones trigonométricas del ángulo doble,
usando tanto la aplicación directa de cada función (primera columna de la Tabla I),
como la expresión alternativa (segunda columna de la Tabla I).

El usuario deberá introducir el valor del ángulo y el programa mostrará los 6


valores obtenidos según las expresiones mostradas en la Tabla I, formateados
emulando una tabla para que los resultados sean óptimamente legibles.

Forma directa Forma alternativa

sin(2 a ) 2 sin (a )cos(a )

cos(2 a ) 2
cos (a)−sin (a )
2

tan(2 a ) 2 tan (a )
1−tan 2 (a )
Tabla I. Expresiones para cálculo.

9 de 10
PROGRAMACIÓN
Grado en Física
Facultad de Ciencias

Práctica 2
Responda a las siguientes cuestiones:

¿Cuál es la utilidad del manipulador setw()?

¿Cómo afecta setprecision() a la hora de mostrar los datos según el


formato de representación que use (por defecto, fixed, scientific)?

Recuerde que, para cada uno de los ejercicios propuestos, debe incluir en la
memoria:

1. Enunciado del ejercicio.


2. Código fuente del programa desarrollado.
3. Elección de un banco de pruebas (una tabla de resultados que muestre los
valores de entrada probados y los valores obtenidos como resultado en
distintas ejecuciones del programa).
4. Capturas de pantalla del programa en ejecución.
5. Respuesta de las cuestiones (si las hubiera).

Así mismo, recuerde subir el código fuente de todos los programas realizados
a la plataforma SWAD (en la sección de Archivos->Trabajos), tanto los de
laboratorio como los propuestos.

10 de 10

You might also like