fp_guionpracticas_9

Upload: korpaspirata

Post on 12-Jul-2015

679 views

Category:

Documents


0 download

TRANSCRIPT

Fundamentos de Programacin. Guin de Prcticas. Curso 2011/2012

Autor: Juan Carlos Cubero Para cualquier sugerencia o comentario sobre este guin de prcticas, por favor, enviad un e-mail a [email protected]

"Lo que tenemos que aprender a hacer, lo aprendemos hacindolo". Aristteles "In theory, there is no difference between theory and practice. But, in practice, there is". Jan L. A. van de Snepscheut "The gap between theory and practice is not as wide in theory as it is in practice". "Theory is when you know something, but it doesnt work. Practice is when something works, but you dont know why. Programmers combine theory and practice: Nothing works and they dont know why".

Guin de Prcticas. Fundamentos de Programacin

1

Acceso identicado

Acceso identicadoLos alumnos deben registrarse electrnicamente en dos sitios distintos: En la Universidad de Granada. Los alumnos deben registrarse electrnicamente en la UGR para poder entrar en las aulas de prcticas de la asignatura. Las instrucciones estn en:

http://www.ugr.es/informatica/alumnos/correo.htmSe necesita el DNI y el PIN obtenido con la matrcula. El registro electrnico tarda un da (incluso dos) en activarse. Por tanto, realizad el registro al menos tres das antes de la primera sesin de prcticas (que tendr lugar la segunda semana de clases) Una vez que se tenga cuenta de correo en la UGR, el alumno podr iniciar sesin en cualquiera de los ordenadores de la Escuela de Informtica. Para ello, tendr que introducir como usuario y contrasea, los mismos que se han elegido para la UGR. Automticamente, tendr acceso a un sitio de almacenamiento en los servidores de la Escuela. Esto se explica en la primera sesin de prcticas (pgina 22) En la Web del departamento de Ciencias de la Computacin e Inteligencia Articial

https://decsai.ugr.esLa mayor parte de los alumnos ya estn dados de alta en la web con los datos que hemos obtenido de la matrcula. En cualquier caso, el alumno debe comprobarlo durante la primera semana de clases, dando los siguientes pasos: Al entrar en el acceso identicado de la web del departamento, introducir como nombre de usuario y como contrasea el DNI sin la letra del nal (o el nmero de pasaporte). Si puede entrar con xito, acceda a sus datos personales para cambiar el password y subir una foto reciente. Introducid en los datos de contacto una direccin de e-mail que consulte habitualmente, ya que se enviar asiduamente informacin sobre la asignatura. No debe elegirse ninguna direccin de Hotmail ya que la UGR clasica como SPAM muchos correos de dicho servidor.

RegistroWebDECSAI.pdf incluido en http://decsai.ugr.es/jccubero/fp.zip Si no puede entrar, enve un e-mail a [email protected] con su nmero de DNI, Nombre y Apellidos.

Puede

encontrar

instrucciones

ms

detalladas

en

el

chero

Guin de Prcticas. Fundamentos de Programacin

2

Acceso identicado

Una vez tenga acceso a la web del departamento, podr entrar en la asignatura de Fundamentos de Programacin y elegir un grupo de prcticas. Tambin podr acceder al material de la asignatura. El material del primer tema tambin se encuentra en:

http://decsai.ugr.es/jccubero/fp.zipMUY IMPORTANTE: El alumno nunca deber dar a conocer a un tercero su nombre de usuario y contrasea, ya que es el responsable del mal uso que se pudiese realizar con su cuenta.

Guin de Prcticas. Fundamentos de Programacin

3

Sobre el guin de prcticas

Sobre el guin de prcticasEste guin de prcticas contiene las actividades a realizar por el alumno, tanto de forma presencial (en las aulas de la Escuela de Informtica) como no presencial (individual y en grupo). Todas las actividades son obligatorias (incluidas las presenciales en las aulas de prcticas), excepto las marcadas como Actividades de Ampliacin. El guin est dividido en sesiones, que corresponden a cada semana lectiva. Las actividades no presenciales de una sesin deben realizarse antes de la correspondiente sesin de prcticas presencial. La primera sesin presencial de prcticas (pgina 21) tendr lugar durante la segunda semana de clases, por lo que el alumno deber realizar con anterioridad las actividades encargadas. Una actividad no presencial recurrente es la resolucin de problemas propuestos en las Relaciones de Problemas. stas constan de dos tipos de problemas: Bsicos: problemas que se resolvern a lo largo de la asignatura. Del conjunto de problemas bsicos, en el guin de prcticas se distinguir entre: 1. Obligatorios: Deben resolverse en la casa y el alumno deber defenderlos individualmente (a veces explicndolo a sus compaeros) en las sesiones de prcticas presenciales, durante la primera hora. La defensa ser individual y forma parte de la nota nal de la asignatura (10 % tal y como se explica en el apartado de evaluacin de la asignatura). En la segunda hora, el profesor explicar estos ejercicios a toda la clase. Tambin sacar a la pizarra a algn alumno para que explique alguno de los ejercicios. Los proyectos soluciones a los problemas debern ser subidos a la cuenta particular de cada alumno en el servidor de la ETS Informtica y Telecomunicaciones antes del inicio de la sesin de prcticas presencial en las aulas de la Escuela. Para ello, el alumno debe conectarse a turing.ugr.es usando cualquier programa cliente de ftp que incorpore el protocolo ssh, como por ejemplo winscp (http://winscp.net/). Previamente, el alumno debe tener activada su cuenta en la Universidad de Granada, tal y como se explica en la pgina 2. Hay que subir la carpeta completa del proyecto solucin incluyendo los cheros sln, vcxproj y cpp. Borrad el resto de cheros: para ello, puede usarse la macro _limpiar.bat que se encuentra en el material de la asignatura (chero zip indicado en la pgina 2 o a travs del acceso identicado en la web del departamento) Debe copiarse el chero _limpiar.bat junto con el chero limpiar.exe en el directorio del que cuelgan las carpetas de los proyectos soluciones, y ejecutad la macro _limpiar.bat, haciendo doble click sobre ella. Una vez ejecutada la macro, ya pueden subirse a turing las carpetas de los proyectos. En caso de tener algn problema con la conexin a turing, tambin pueden llevarse los proyectos en un pen-drive el mismo da de las prcticas.

Guin de Prcticas. Fundamentos de Programacin

4

Sobre el guin de prcticas

Nota: mientras el profesor corrige los ejercicios a un alumno en la primera hora, los alumnos desarrollarn las actividades presenciales de la correspondiente sesin. Cuando las hayan terminado, se pueden poner a trabajar en los problemas de la prxima sesin. 2. Opcionales: Se recomienda que se resuelvan en casa, pero el profesor no los preguntar en las sesiones de prcticas. En la segunda hora, el profesor explicar estos ejercicios a toda la clase. Ampliacin: problemas cuya solucin no se ver, pero que sirven para aanzar conocimientos. El alumno debera intentar resolver por su cuenta un alto porcentaje de stos. No hay que entregar al profesor la solucin de los ejercicios de las distintas sesiones, ya que, durante la segunda hora de prcticas, se proporcionar la solucin a los problemas bsicos y opcionales propuestos. Es muy importante que el alumno revise estas soluciones y las compare con las que l haba diseado. Las actividades marcadas como Seminario han de hacerse obligatoriamente y siempre sern expuestas por algn alumno elegido aleatoriamente. Para la realizacin de estas prcticas, se utilizar el entorno de programacin Microsoft Visual Studio. En la pgina 7 se encuentran las instrucciones para su instalacin en nuestra casa. En cualquier caso, el alumno puede instalar en su casa cualquier otro compilador, como por ejemplo Code::Blocks http://www.codeblocks.org/ Muy importante: La resolucin de los problemas y actividades puede hacerse en grupo, pero la defensa durante las sesiones presenciales es individual. Es muy importante que la asignatura se lleve al da para poder realizar los ejercicios propuestos en estos guiones.

Guin de Prcticas. Fundamentos de Programacin

5

Evaluacin de la asignatura

Evaluacin de la asignaturaLa nota nal en la asignatura se computa de la siguiente forma: En Febrero se realizar un examen escrito consistente en la resolucin de varios problemas de programacin relacionados con la materia impartida. La ponderacin de este bloque es del 60 %. La parte prctica se evala de la siguiente forma: Evaluacin continua: Durante las sesiones de prcticas, los alumnos debern defender ante la clase o ante el profesor, los problemas encargados para dicha sesin de prcticas. La ponderacin de esta parte es del 10 %. Exmenes de prcticas: A mediados de Noviembre y a principios de Enero se realizar un examen de prcticas. Cada uno de estos exmenes consistir en la resolucin de un ejercicio de programacin que se extraer de una lista de ejercicios que, previamente, se habr entregado a los estudiantes. Dichas listas de ejercicios se denominarn Listas de Problemas para el Examen Prctico, para diferenciarlas de las Relaciones de Problemas. Cada uno de los dos exmenes durar una hora y se realizar en las aulas de prcticas de la Escuela de Informtica. La ponderacin del primer examen es del 10 % y la del segundo del 20 % La realizacin de las prcticas puede realizarse en grupo, pero la defensa es siempre individual. En Septiembre se guarda la nota de la evaluacin continua y sigue valiendo el 10 % de la nota nal. No hay ningn examen de recuperacin de esta parte. Por otra parte, en Septiembre se realizarn dos exmenes consistentes en la resolucin de varios problemas de programacin relacionados con la materia impartida. Llammosle T y P a dichos exmenes. La ponderacin de ambos exmenes es 60 % para T y 30 % para P. Slo para aquellos alumnos que se presentaron a alguna de las partes (escrita/prcticas) en Febrero: El alumno puede elegir no presentarse a alguna de las parte T o P. En dicho caso, conservara la nota que hubiese obtenido en Febrero. Si no se presenta al examen T, la nota de T sera la que hubiese sacado en el examen escriTo de Febrero y si no se presenta a P, la nota sera la obtenida en las Prcticas de Febrero. Si un alumno se presenta a una de las partes (T o P), la nota obtenida en Febrero en dicha parte NO se conserva (es una nueva calicacin) por lo que la nota de dicha parte podra bajar.

Guin de Prcticas. Fundamentos de Programacin

6

Instalacin de Visual Studio en nuestra casa

Instalacin de Visual Studio en nuestra casaConseguir Visual Studio e instalarloConseguir Visual Studio Puede encontrarse informacin sobre la ltima versin de Visual Studio en:

http://msdn.microsoft.com/es-es/vstudio/default(en-us).aspx http://www.microsoft.com/spain/visualstudio/products/ 2010-editions/ultimateEl DVD con la instalacin de Visual Studio 2010 Ultimate puede adquirirse en la fotocopiadora de la Escuela por unos 3 euros aproximadamente. La licencia es legal para todo alumno del departamento de Ciencias de la Computacin e Inteligencia Articial, fruto del programa MSDN Academic Alliance entre Microsoft y el departamento. Para ms informacin sobre este programa:

http://www.microsoft.com/spanish/msdn/academico.mspxLa principal restriccin es que no se pueden desarrollar programas comerciales con esta licencia. Para ms informacin sobre las restricciones de la licencia:

http://msdn.microsoft.com/en-us/academic/bb250608.aspxLa versin Ultimate disponible para los alumnos contiene muchas ms herramientas de las que se necesitarn en la asignatura. Si se quiere, puede descargarse directamente desde Internet la versin Express de Visual Studio. Esta versin tambin contiene todas las herramientas y opciones necesarias en esta asignatura, y es la que se usar en las aulas de prcticas:

http://www.microsoft.com/express/Downloads/Para descargas de versiones anteriores, consultad:

http://msdn.microsoft.com/es-es/express/aa975050.aspxLos requisitos del sistema, para la instalacin de Visual Studio Express se encuentran en

http://www.microsoft.com/express/Support/y para Visual Studio 2010 en:

http://www.microsoft.com/spain/visualstudio/products/ 2010-editions/ultimateInstalar Visual Studio Si se usa el DVD de la fotocopiadora con Visual Studio 2010 Ultimate, se puede instalar la versin completa que incluye todos los lenguajes de Visual Studio como Visual Basic, C#, etc. Al introducir el DVD se lanzar automticamente el programa de instalacin. Selec-

Guin de Prcticas. Fundamentos de Programacin

7

Instalacin de Visual Studio en nuestra casa

cionamos Instalacin Personalizada. Por ahora, instalamos nicamente la parte correspondiente al lenguaje C++ (posteriormente, podemos instalar el resto de lenguajes) En el caso de que instalemos la versin Visual Studio C++ Express, no se instalarn el resto de lenguajes (que, obviamente, no son necesarios para esta asignatura)

ConguracinPreparar y acceder a la consola del sistema La consola de Windows (la ventana con fondo negro que aparece al ejecutar el comando cmd.exe, o bien la que sale al ejecutar un proyecto de consola de Visual Studio) no est preparada por defecto para mostrar adecuadamente caracteres latinos como los acentos. Por ejemplo, al ejecutar la sentencia de C++

cout Ejecutar -> cmdUna vez que se muestre la consola, hacemos click con la derecha y seleccionamos Predeterminados. Seleccionamos la fuente Lucida Console y aceptamos. 2. Debemos cargar la pgina de cdigos correspondiente al alfabeto latino. Para ello, tenemos dos alternativas: a) Si queremos que la consola siempre cargue la tabla de caracteres latinos, debemos modicar el registro de Windows. Lo abrimos desde

Inicio->Ejecutar->regedit

Nos situamos en la clave

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ \Control\Nls\CodePage y cambiamos el valor que hubiese dentro de OEMCP y ACP por el de 1252. Esta es

Guin de Prcticas. Fundamentos de Programacin

8

Instalacin de Visual Studio en nuestra casa

la forma recomendada y la que se ha usado en las aulas de prcticas. Requiere reiniciar el ordenador. Muy Importante: Si se usa otra tabla (distinta a 1252), el sistema operativo podra incluso no arrancar. b) Si queremos hacerlo para una nica consola, basta ejecutar el comando

chcp 1252

sobre la consola. El problema es que cada vez que se abre una nueva consola (por ejemplo, como resultado de ejecutar un programa desde Visual C++) hay que realizar este cambio. En nuestro caso, pondramos (por ejemplo, al inicio del programa, justo despus de las declaraciones de las variables) lo siguiente:

system("chcp 1252");En cualquier caso, remarcamos que esta solucin no es necesaria si se adopta la primera, es decir, el cambio del registro de Windows. Conguracin del entorno Se recomienda que se usen las mismas opciones de conguracin del entorno que las establecidas en las aulas de prcticas. Para ello, deben darse los siguientes pasos. Dentro del chero

http://decsai.ugr.es/jccubero/fp.zip se encuentra la carpeta Visual Studio\Settings, y dentro el chero SettingsAulasPracticas_VS2010.vssettings.vssettingsCopiadlo localmente, preferiblemente dentro de la carpeta Abrid Visual Studio. Seleccionad

Mis Documentos\Visual Studio 2010\Settings Herramientas -> Importar y exportar configuraciones -> Importar la configuracin de entorno seleccionada -> Siguiente

Si se quiere guardar las conguraciones actuales, elegid la primera opcin. Si no se ha trabajado anteriormente con Visual Studio, podemos elegir directamente la segunda opcin:

No, slo importar la nueva configuracin, reemplazando la configuracin actual -> Siguiente -> ExaminarSeleccionamos las opciones guardadas anteriormente en

Mis Documentos\Visual Studio 2010\Settings\ \SettingsAulasPracticas.vssettings9

Guin de Prcticas. Fundamentos de Programacin

Instalacin de Visual Studio en nuestra casa

y hacemos click en Siguiente. Aparecen algunas opciones marcadas con un smbolo de admiracin, indicando que no se van a importar (pues pueden contener informacin privada). Aceptamos y terminamos. Cosas a tener en cuenta: A partir de ahora, si realizamos algn cambio en el entorno o en las opciones de conguracin (Herramientas->Opciones), stas se guardan automticamente en el archivo

Mis Documentos\Visual Studio 2010\ \Settings\CurrentSettings.vssettings Es decir, el archivo SettingsAulasPracticas.vssettings no se modica con

los cambios que efectuemos en las opciones del entorno. Si queremos exportar nuestra conguracin para utilizarla en otro sitio, basta con seleccionar

Herramientas -> Importar y exportar configuraciones -> Exportar la configuracin de entorno seleccionaday seleccionad el nombre del chero conguracin. La plantilla _fp_2010 En el entorno Visual Studio de las aulas de prcticas, se ha incluido una plantilla con las opciones de conguracin de compilacin ms usuales as como un esqueleto del programa principal que incluye la cabecera que usaremos siempre en nuestros programas. Para instalar esta plantilla en nuestros ordenadores personales, descargad de Internet el chero

.vssettings en el que queremos guardar la

http://decsai.ugr.es/jccubero/fp.zip Dentro se encuentra la carpeta Visual Studio\PlantillaFP. Seguid las instrucciones que se encuentran en el chero Instrucciones.txt (simplemente habr que cambiaruna lnea de texto de un chero y copiar unos cheros). Para crear un proyecto nuevo en Visual Studio basado en esta plantilla, basta abrir Visual Studio y seleccionar:

Archivo -> Nuevo Proyecto -> Asistentes -> _fp_2010Seleccionamos una ubicacin y tecleamos un nombre para el proyecto.

Guin de Prcticas. Fundamentos de Programacin

10

Instalacin de Visual Studio en nuestra casa

Otros recursos Dentro del chero

http://decsai.ugr.es/jccubero/fp.zip se encuentra la carpeta Visual Studio\OtrosRecursos, con los siguientes cheros:

StepOver_VS_2010.reg. Es un chero que aade claves al registro de Windowspara que el depurador de Visual Studio no entre a depurar recursos usuales como cout. Para ejecutarlo, basta hacer doble click sobre l (como Administrador del Sistema)

_limpiar.bat y _limpiar.exe. El primero es una macro que llama al segundo programa. Ambos cheros deben estar en el directorio del cual cuelgan nuestras carpetas locales de proyectos de Visual Studio. La macro borra todos los cheros auxiliares como los ejecutables, los que contienen informacin de depuracin, etc. En nuestra casa ejecutaremos la macro cuando nos estemos quedando sin espacio en el disco duro y antes de subir a turing los proyectos soluciones de las distintas sesiones prcticas.

Guin de Prcticas. Fundamentos de Programacin

11

Tabla resumen de accesos directos usados en Visual Studio

Tabla resumen de accesos directos usados en Visual Studio

Ctr-F7 Alt-Ctr-F7 F5 F10 F11 Shift-F11 Shift-F5 Ctr-F5 Ctr-Barra espaciadora F1 F9 Ctr-F10 Ctr-K,Ctr-F Ctr-K,Ctr-D Ctr -

Compilar Generar ejecutable Ejecutar programa (con depuracin) Ejecucin paso a paso (sin entrar en las funciones) Ejecucin paso a paso (entrando en las funciones) Sale de la ejecucin paso a paso de la funcin Detiene ejecucin paso a paso Ejecutar programa (sin depuracin) Autocompleta el cdigo Ayuda Quita o pone un punto de interrupcin Ejecuta instrucciones hasta el cursor y empieza depuracin Aplica formato al texto seleccionado Aplica formato al documento Navega por el texto hacia atrs

Guin de Prcticas. Fundamentos de Programacin

12

RELACIN DE PROBLEMAS I. Introduccin a C++

RELACIN DE PROBLEMAS I. Introduccin a C++Problemas Bsicos1. Crear un programa que pida un valor de intensidad y resistencia e imprima el voltaje correspondiente, segn la Ley de Ohm: voltaje = intensidad * resistencia Finalidad: Ejemplo bsico de asignacin a una variable del resultado de una expresin. Dicultad Baja. 2. Un banco presenta la siguiente oferta. Si se deposita una cantidad de euros capital durante un ao a plazo jo, se dar un inters dado por la variable interes. Realizad un programa que lea una cantidad capital y un inters interes desde teclado y calcule en una variable total el dinero que se tendr al cabo de un ao, aplicando la frmula: 100 Es importante destacar que el compilador primero evaluar la expresin de la parte derecha de la anterior asignacin (usando el valor que tuviese la variable capital) y a continuacin ejecutar la asignacin, escribiendo el valor resultante de la expresin dentro de la variable total). A continuacin, el programa debe imprimir en pantalla el valor de la variable total. Tanto el capital como el inters sern valores reales. Supondremos que el usuario introduce el inters como un valor real entre 0 y 100, es decir, un inters del 5,4 % se introducir como 5.4. Tambin supondremos que lo introduce correctamente, es decir, que slo introducir valores entre 0 y 100. Supongamos que queremos modicar la variable original capital con el nuevo valor de total. Es posible hacerlo directamente en la expresin de arriba? Nota: El operador de divisin en C++ es / Finalidad: Resolver un problema real sencillo, usando varias sentencias. Dicultad Baja. 3. Queremos realizar un programa para intercambiar los contenidos de dos variables enteras. El programa leer desde teclado dos variables edad_Pedro y edad_Juan e intercambiar sus valores. A continuacin, mostrar en pantalla las variables ya modicadas. El siguiente cdigo no funciona correctamente.

total = capital + capital

interes

edad_Pedro = edad_Juan; edad_Juan = edad_Pedro;

Guin de Prcticas. Fundamentos de Programacin

13

RELACIN DE PROBLEMAS I. Introduccin a C++

Por qu no funciona? Buscad una solucin. Finalidad: Entender cmo funciona la asignacin entre variables. Dicultad Baja. 4. Cread un programa que nos pida la longitud del radio, calcule el rea del crculo y la longitud de la circunferencia correspondientes, y nos muestre los resultados en pantalla. Recordad que: long. circunf = 2r rea circ = r 2

Usad el literal 3.1416 a lo largo del cdigo, cuando se necesite multiplicar por . Una vez hecho el programa, cambiad las apariciones de 3.1416 por 3.14159, recompilad y ejecutad (La parte de compilacin y ejecucin se realizar cuando se vea en clase de prcticas el entorno de programacin). No hubiese sido mejor declarar un dato constante PI con un valor igual a 3.14159, y usar dicho dato donde fuese necesario? Hacedlo tal y como se explica en las transparencias de los apuntes de clase. Cambiad ahora el valor de la constante PI por el de 3.1415927, recompilad y ejecutad. Finalidad: Entender la importancia de las constantes. Dicultad Baja. 5. Realizar un programa que lea los coecientes reales y de una funcin gaussiana (ver denicin abajo). A continuacin el programa leer un valor de abscisa x y se imprimir el valor que toma la funcin en x 1 e gaussiana(x) = 21 2

x

2

El parmetro se conoce como esperanza o media y como desviacin tpica (mean y standard deviation en ingls). Para denir la funcin matemtica e usad la funcin exp de la biblioteca cmath. En la misma biblioteca est la funcin sqrt para calcular la raz cuadrada. Para elevar un nmero al cuadrado se puede usar la funcin pow, que se utiliza en la siguiente forma:

pow(base, exponente)En nuestro caso, el exponente es 2 y la base son correctos, usando el applet disponible en x . Comprobad que los resultados

http://www.danielsoper.com/statcalc/calc54.aspxo bien algunos de los ejemplos de la gura siguiente (observad que el valor de la desviacin est elevado al cuadrado):

Guin de Prcticas. Fundamentos de Programacin

14

RELACIN DE PROBLEMAS I. Introduccin a C++

Finalidad: Trabajar con expresiones numricas ms complejas. Dicultad Baja. 6. Las ganancias de un determinado producto se reparten entre el diseador y los tres fabricantes del mismo. Disear un programa que pida la ganancia total de la empresa (los ingresos realizados con la venta del producto) y diga cuanto cobran cada uno de ellos, sabiendo que el diseador cobra el doble que cada uno de los fabricantes. El dato de entrada ser la ganancia total a repartir. Utilizad el tipo double para todas las variables. Importante: No repetid clculos ya realizados. Finalidad: Entender la importancia de no repetir cmputos para evitar errores de programacin. Dicultad Baja. 7. Redactar un algoritmo para calcular la media aritmtica muestral y la desviacin estndar (o tpica) muestral de las alturas de tres personas. stos valores sern reales (de tipo double) X= 1 33

xi , =i=1

1 3

3

(xi X)2i=1

X representa la media aritmtica y la desviacin estndar. Para resolver este problema es necesario usar la funcin sqrt (raz cuadrada) que se encuentra en la biblioteca cmath. Finalidad: Trabajar con expresiones numricas y con variables para no repetir cmputos. Dicultad Baja. 8. Realizar un programa que declare las variables x, y y z, les asigne los valores 10, 20 y 30 e intercambien entre s sus valores de forma que el valor de x pasa a y, el de y pasa a z y el valor de z pasa a x (se pueden declarar variables auxiliares aunque se pide que se use el menor nmero posible). Finalidad: Mostrar la importancia en el orden de las asignaciones. Dicultad Media. 9. Leed desde teclado tres variables correspondientes a un nmero de horas, minutos y segundos, respectivamente. Disear un algoritmo que calcule las horas, minutos

Guin de Prcticas. Fundamentos de Programacin

15

RELACIN DE PROBLEMAS I. Introduccin a C++

y segundos dentro de su rango correspondiente. Por ejemplo, dadas 10 horas, 119 minutos y 280 segundos, debera dar como resultado 12 horas, 3 minutos y 40 segundos. En el caso de que nos salgan ms de 24 horas, daremos tambin los das correspondientes (pero ya no pasamos a ver los meses, aos, etc) Como consejo, utilizad el operador / que cuando trabaja sobre datos enteros, representa la divisin entera. Para calcular el resto de la divisin entera, usad el operador %. Finalidad: Trabajar con expresiones numricas y con variables para no repetir cmputos. Dicultad Media. 10. Realizad el ejercicio del reparto de la ganancia de un producto, pero cambiando el tipo de dato de la ganancia total a int (el resto de variables siguen siendo double) Finalidad: Trabajar con expresiones numricas que involucren distintos tipos de datos. Dicultad Baja. 11. Realizad el ejercicio del clculo de la desviacin tpica, pero cambiando el tipo de dato de las variables xi a int. Nota: Para no tener problemas en la llamada a la funcin pow (en el caso de que se haya utilizado para implementar el cuadrado de las diferencias de los datos con la media), obligamos a que la base de la potencia sea un real multiplicando por 1.0, por lo que la llamada quedara en la forma pow(base*1.0, exponente) Finalidad: Trabajar con expresiones numricas que involucren distintos tipos de datos. Dicultad Baja. 12. Encontrar el valor de la variable resultado despus de la ejecucin de este cdigo

real1 = 4.0; real2 = 3.0; resultado = real1/real2 - real1*real2; cout > intensidad;

Cuando se llegue a ejecutar la sentencia

voltaje = intensidad * resistencia;el valor de intensidad ser basura. Si compilamos el programa con Ctr-F7 podemos apreciar que se genera una advertencia en la lista de errores, indicando que se

Guin de Prcticas. Fundamentos de Programacin

35

Conguracin del proyecto y gestin de errores est usando la variable intensidad sin haberle asignado previamente un valor. An as, podemos generar el chero .exe y ejecutarlo. Hacedlo, para comprobar el error que se obtiene en tiempo de ejecucin. 2. En una segunda fase, cuando ya hemos comprobado que el programa funciona correctamente, se procede a generar el chero ejecutable (.exe) eliminando la informacin de depuracin (entre otras cosas). Esto har que el ejecutable obtenido sea bastante ms pequeo. Para ello, hay que cambiar la conguracin antes de generar el ejecutable. Volvemos a entrar en

Configuracin de soluciones activas y seleccionamos Release. Podemos hacerlo directamente desde el botn disponible

en la esquina superior derecha de la barra de herramientas. Si generamos el programa bajo esta ltima conguracin, veremos que al ejecutarlo no se produce un error durante la ejecucin. Esto es debido, como ya hemos comentado, a que el compilador ya no pierde el tiempo comprobando estos posibles errores de programacin. Por contra, obtendremos un error lgico ya que la variable intensidad contiene basura y al multiplicarla por la variable resistencia el resultado ser basura. A lo largo de la asignatura, usaremos siempre la conguracin Debug, por lo que algunos errores de programacin, como el uso de variables no asignadas previamente, sern detectados por el compilador. Pero debemos tener claro que en en la conguracin Release, o bien en la compilacin realizada con otros compiladores distintos a Visual Studio, no se producir ningn error durante la ejecucin sino un lamentable error lgico. En el entorno Visual Studio de las aulas de prcticas, se ha incluido una plantilla con las opciones de conguracin de compilacin ms usuales (tanto para la conguracin Debug como Release) as como un esqueleto del programa principal que incluye la cabecera que usaremos siempre en nuestros programas. Para crear un programa nuevo basndonos en esta plantilla, basta hacer lo siguiente:

Archivo -> Nuevo Proyecto -> _fp_2010Seleccionamos una ubicacin (usualmente U:\FP) y tecleamos un nombre para el proyecto. A partir de esta sesin usaremos siempre la plantilla _fp_2010 para crear nuestros proyectos. Para instalar esta plantilla en nuestros ordenadores personales, seguid las instrucciones que se encuentran en la pgina 7

Guin de Prcticas. Fundamentos de Programacin

36

Conguracin del proyecto y gestin de errores

Ejercicio. Cread un proyecto nuevo llamado Prueba_Tipos. Declarad variables de tipo int, double, float, double, char y bool. Provocad errores de compilacin y lgicos al mezclar distintos tipos de datos en una misma expresin. Por ejemplo: Asignad a un dato un literal fuera de rango, Forzad un error en ejecucin al dividir un entero por cero, Provocar errores lgicos de desbordamiento con un nico tipo de dato, Provocar errores lgicos de desbordamiento mezclando distintos tipos de dato en una misma expresin, Ejercicio. Copiad a la unidad local la carpeta I_Pitagoras. Cargad el proyecto y cambiad la suma dentro de sqrt por una resta. Ejecutad introduciendo los lados 2 y 3. Como el resultado es la raz cuadrada de un nmero negativo, el ordenador no puede hacer los clculos y muestra -1.#IND. Tal y como se vio en clase de teora, este es el valor de Indeterminacin, representable en los datos de coma otante (double1 es un tipo de dato en coma otante). En este caso se ha producido un error lgico, pero en otro lenguaje de programacin que no utilizase una representacin de reales en coma otante, podra haberse producido un error fatal durante la ejecucin, terminndose de forma brusca el programa. Si sobra tiempo, realizad cualquiera de los ejercicios de ampliacin de la Relacin de Problemas I de la pgina 19

1

El valor de indeterminacin no puede representarse en un tipo entero

Guin de Prcticas. Fundamentos de Programacin

37

RELACIN DE PROBLEMAS II. Estructuras de Control

RELACIN DE PROBLEMAS II. Estructuras de ControlProblemas Bsicos1. Ampliad el ejercicio 7 de la relacin de problemas I, para que, una vez calculada la media y la desviacin, el programa imprima por cada uno de los valores introducidos previamente, si est por encima o por debajo de la media. Por ejemplo:

33 es menor que su media 48 es mayor o igual que su media .....Nota. Los valores introducidos son enteros, pero la media y la desviacin son reales. Finalidad: Plantear un ejemplo bsico con varias estructuras condicionales independientes. Dicultad Baja. 2. Cread un programa que incluya una variable edad en la que guardamos la edad de una persona (como una variable entera) y otra variable ingresos, en la que almacenamos sus ingresos (como un real). Subid sus ingresos en un 5% si es un jubilado con unos ingresos inferiores a 300 euros e imprimid el resultado por pantalla. En caso contrario imprimid el mensaje "No es aplicable la subida". En ambos casos imprimid los ingresos resultantes. Finalidad: Plantear una estructura condicional doble con una expresin lgica compuesta. Dicultad Baja. 3. Realizar un programa en C++ que lea dos valores enteros desde teclado y diga si cualquiera de ellos divide o no (de forma entera) al otro. En este problema no hace falta decir quin divide a quin. Supondremos que los valores ledos desde teclado son ambos distintos de cero y se pueden mezclar cmputos con entradas y salidas. Finalidad: Plantear una estructura condicional doble con una expresin lgica compuesta. Dicultad Baja. 4. Vamos a modicar el ejercicio 3 de la siguiente forma. Queremos leer dos valores enteros desde teclado y, en el caso de que uno cualquiera de ellos divida al otro, el programa nos debe decir quin divide a quin. a) En primer lugar, resolved el ejercicio mezclando entradas, cmputos y salidas de resultados b) En segundo lugar, se pide resolver el ejercicio sin mezclar C/E,S. Para ello, se ofrecen varias alternativas. Cual sera la mejor? Escoged una e implementar la solucin.

Guin de Prcticas. Fundamentos de Programacin

38

RELACIN DE PROBLEMAS II. Estructuras de Control Utilizar un variable de tipo string de la forma siguiente:

I)

Nota. Para poder usar el operador de comparacin == entre dos string, hay que incluir la biblioteca string. Si se opta por esta alternativa, el suspenso est garantizado. Por qu? II ) Utilizar dos variables lgicas de la forma siguiente:

string quien_divide; ............. if (a%b==0) quien_divide = "b divide a a" ; ............. if (quien_divide == "b divide a a") cout