Práctica 1: Sistemas operativos, compilador de C/C++ y...

15
1 Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de docencia. Objetivos En la primera parte de esta práctica, se introduce al alumno en el manejo de los sistemas de explotación más extendidos: Windows, UNIX y MS-DOS. Los dos primeros (y sus variantes más modernas) dominan actualmente el mercado de las computadoras personales, mientras que el último, obsoleto y de poco uso, resulta interesante por formar parte de los primeros sistemas operativos que se implantaron. En cualquier caso el conjunto de instrucciones de MS-DOS sigue siendo válido en la ventana de comandos de todas las versiones de Windows, incluyendo Windows 10. Por otro lado, se introduce el compilador de lenguaje C que se usará a lo largo del curso y se mostrará como enviar los trabajos realizados a través del servidor de docencia para ser evaluados. Índice 1. Sistemas operativos Windows, DOS y UNIX 2. El compilador Dev C++. 3. El servidor de docencia 1. Sistemas operativos Windows, DOS y UNIX 1. El sistema operativo DOS Las siglas de este sistema operativo corresponden a los vocablos en inglés disk operating system (sistema operativo de disco). Fue creado originalmente para computadoras de la familia IBM PC, que utilizaban los procesadores Intel 8086 y 8088, de 16 bits, siendo el primer sistema operativo popular para esta plataforma. La versión mas aceptada fue el sistema operativo MS-DOS de Microsoft en el año 1982, el cual tuvo una gran aceptación en los ordenadores compatibles IBM PC (Intel). Con la imposición del sistema operativo Windows, MS-DOS ha quedado reducido a la existencia de un interprete de comandos, a través del Símbolo del sistema o ejecutado con el comando cmd.exe en el sistema Windows. 2. El sistema operativo UNIX El sistema operativo UNIX es a diferencia de MS-DOS, multitarea y multiusuario; desarrollado a finales de los años 60 por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson y Dennis Ritchie (está escrito en lenguaje C). En esta familia se pueden citar los sistemas Linux, Solaris, o BSD. 3. El sistema operativo WINDOWS Windows se lanza al mercado (1985) como una evolución del sistema operativo MS- DOS, ofreciendo una interfaz de usuario gráfica. Es quizás el sistema operativo más usado actualmente, aunque hay que destacar la tendencia hacia otros sistemas como LINUX o MAC OS.

Transcript of Práctica 1: Sistemas operativos, compilador de C/C++ y...

Page 1: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

1

Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de docencia.

Objetivos

En la primera parte de esta práctica, se introduce al alumno en el manejo de los sistemas

de explotación más extendidos: Windows, UNIX y MS-DOS. Los dos primeros (y sus variantes más modernas) dominan actualmente el mercado de las computadoras personales, mientras que el último, obsoleto y de poco uso, resulta interesante por formar parte de los primeros sistemas operativos que se implantaron. En cualquier caso el conjunto de instrucciones de MS-DOS sigue siendo válido en la ventana de comandos de todas las versiones de Windows, incluyendo Windows 10.

Por otro lado, se introduce el compilador de lenguaje C que se usará a lo largo del

curso y se mostrará como enviar los trabajos realizados a través del servidor de docencia para ser evaluados.

Índice

1. Sistemas operativos Windows, DOS y UNIX 2. El compilador Dev C++. 3. El servidor de docencia

1. Sistemas operativos Windows, DOS y UNIX

1. El sistema operativo DOS

Las siglas de este sistema operativo corresponden a los vocablos en inglés disk operating system (sistema operativo de disco). Fue creado originalmente para computadoras de la familia IBM PC, que utilizaban los procesadores Intel 8086 y 8088, de 16 bits, siendo el primer sistema operativo popular para esta plataforma.

La versión mas aceptada fue el sistema operativo MS-DOS de Microsoft en el año 1982, el cual tuvo una gran aceptación en los ordenadores compatibles IBM PC (Intel).

Con la imposición del sistema operativo Windows, MS-DOS ha quedado reducido a la existencia de un interprete de comandos, a través del Símbolo del sistema o ejecutado con el comando cmd.exe en el sistema Windows.

2. El sistema operativo UNIX

El sistema operativo UNIX es a diferencia de MS-DOS, multitarea y multiusuario; desarrollado a finales de los años 60 por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson y Dennis Ritchie (está escrito en lenguaje C). En esta familia se pueden citar los sistemas Linux, Solaris, o BSD.

3. El sistema operativo WINDOWS

Windows se lanza al mercado (1985) como una evolución del sistema operativo MS- DOS, ofreciendo una interfaz de usuario gráfica. Es quizás el sistema operativo más usado actualmente, aunque hay que destacar la tendencia hacia otros sistemas como LINUX o MAC OS.

Page 2: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

2

Con la ayuda del profesor, el alumno desarrollará las siguientes tareas en el entorno WINDOWS:

1. Manejo de las ventanas en Windows (abrir, cerrar, mover, cambiar tamaño, minimizar) 2. Manejo del explorador de Windows a través del icono Mi-PC 3. Conocer las unidades del sistema 4. Ver el árbol de directorios 5. Comprobar el contenido de carpetas 6. Creación de carpetas 7. Creación de archivos de texto con la libreta de notas, programa de Windows descrito

más adelante. El archivo creado se almacenará en la carpeta del alumno. 8. Manejo del explorador de Windows a través del icono Mi-PC 9. Borrar o cambiar el nombre a archivos creados por el alumno. 10. Borrar o cambiar la extensión de un archivo creado por el alumno. 11. Apertura de la ventana MS-DOS y utilización de comandos

A continuación se muestra una tabla con los comandos que se usan en los sistemas operativos MS-DOS y UNIX. El alumno debe probar los comandos siguientes y comprobar el resultado de ellos en el entorno WINDOWS. Para ejecutar los comandos en Windows se usará el acceso del símbolo del sistema y para los comandos UNIX, se abrirá una terminal con la aplicación Cygwin, que se muestra en el escritorio.

Descripción MS-DOS UNIX Limpiar pantalla Cls Cambiar de directorio cd cd

Listado de directorios y archivos dir Dir, ls

Mostrar los directorios en forma de árbol tree Mostrar la ubicación pwd pwd

Conocer los usuarios conectados who

Comandos sobre archivos Copiar un archivo Copy cp

Ver el contenido de un fichero de texto type more, vi

Comandos sobre directorios Crear un directorio md mkdir

Borrar un directorio rd rmdir

Renombrar carpetas ren mv

Page 3: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

3

2. El compilador Dev C++ Dev-C++ es un entorno integrado de desarrollo de programas en lenguaje C (y C++, una forma evolucionada de C) de libre distribución bajo licencia GNU (http://www.gnu.org/copyleft/gpl.html).

Este software integra en una única herramienta todo lo necesario para desarrollar programas en lenguaje C, incorporando como elementos más destacados, un preprocesador de lenguaje (Preprocessor), el compilador de lenguaje C/C++ (Compiler), y un montador de enlaces (Linker). Además de estos elementos básicos, la herramienta proporciona otras funcionalidades muy convenientes, como son una herramienta de depuración de código (Debugger), así como plantillas de código preformateado y librerías de funciones de fabricante.

El software Dev-C++ puede descargarse gratuitamente desde la página web del desarrollador

http://orwelldevcpp.blogspot.com.es/

Mantendremos este compilador por compatibilidad del código desarrollado en años anteriores. El compilador que se usará sin embargo preferentemente en las practicas será Visual C++ 2008, tal como se describe a continuación.

3. El compilador Microsoft Visual Studio Express 2008 Microsoft Visual Studio Express Edition es un programa de desarrollo en entorno de desarrollo integrado (IDE, por sus siglas en inglés) para sistemas operativos Windows desarrollado y distribuido por Microsoft Corporation. Soporta varios lenguajes de programación tales como Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic .NET, aunque nosotros nos centraremos en las capacidades como compilador de C. Es de carácter gratuito y puede descargarse de https://www.visualstudio.com/es-es/products/visual-studio-express-vs.aspx Breve guía de desarrollo de un programa básico en C El tipo de programas que aprenderemos a desarrollar en C en este curso es el conocido como aplicación de consola. En VS2008 una aplicación de consola se abre siguiendo los siguientes pasos: 1.- Abrir un nuevo proyecto en Archivo->Nuevo->Proyecto

2.- En la ventana que se abre seleccione Aplicación de Consola Win32

Page 4: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

4

3.- En la ventana de edición de código puede ahora introducir el código de su programa. Comencemos con un ejemplo simple que muestra la frase “HOLA MUNDO!” en la pantalla.

// pr.cpp: define el punto de entrada de la aplicación de consola. //

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[]) {

printf("HOLA MUNDO!"); return 0;

} 4.- Para generar el programa pulse en “Generar Solución” (o pulse F7)

El resultado de la compilación deberá mostrar un resultado del tipo:

*********** Generar: 1 Correctos, 0 incorrectos, 0 actualizados, 0 omitidos ************

5. Para ejecutar el código pulse en el menu Depurar, “Iniciar sin depurar” (o pulse Ctrl + F5).

Page 5: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

5

Posiblemente el mejor modo de aprender a programar es programando. Por este motivo lo proponemos que trate de resolver las cuestiones que a continuación se le plantean.

Para ayudarle en la realización de las cuestiones se le proporciona una parte de código para facilitarle el planteamiento de la solución.

Las prácticas se componen de varios ejercicios diferentes. Para cada ejercicio se le proporciona el molde de un programa que deberá completar con su código.

IMPORTANTE:

• Cada ejercicio se debe resolver utilizando únicamente las variables definidas en el molde que se proporciona

• Debe respetar la estructura que se le propone sin cambiar nombres de variables ni

omitir ninguna línea de código.

• Una vez finalizados los ejercicios deberá entregar la solución a través del servidor de

docencia tal como se explica al final de este enunciado.

Page 6: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

6

Cuestión 101

Realizar un programa que lea dos números enteros de teclado y escriba por pantalla la media de ambos.

// pr.cpp: define el punto de entrada de la aplicación de consola. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int res; int a,b; printf("Introduzca un numero entero \n"); scanf("%d",&a); /*Lectura de dato por teclado*/ printf("Introduzca un numero entero \n"); scanf("%d",&b); /*Lectura de dato por teclado*/ /************ ESCRIBA SU CÓDIGO AQUÍ ******************/ /******************************************************/ printf("\nLa media de los dos numeros introducidos es: %d\n",res); return 0; }

Cuestión 102 Realizar un programa que lea un número x de teclado y que devuelva por pantalla f(x), siendo f(x) la siguiente función matemática:

f(x) = 9*x, si x >= 0 f(x) = -x, si x < 0

Ejemplo:

f(4) = 36 f(-7) = 7

#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int res = 0; int x; printf("Introduzca un numero entero x\n"); scanf("%d",&x); /*Lectura de dato por teclado*/ /************ ESCRIBA SU CÓDIGO AQUÍ ******************/ /******************************************************/ printf("\nEl valor de f(x): %d\n",res); return 0; }

Page 7: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

7

3. El servidor de docencia Acceso al servidor de docencia para el envío de prácticas

Los resultados de todas las prácticas se entregarán usando el servidor de docencia Doctus. Doctus es un sistema para el almacenamiento y seguimiento automatizado del trabajo del alumno. Las prácticas se entregarán al final de cada clase de prácticas. Para el correcto funcionamiento de las siguientes páginas su navegador debe permitir cookies y la ejecución de javascript. El servidor de docencia se encuentra situado en la siguiente dirección

http://doctus.us.es

La página principal tiene el siguiente aspecto:

Y seleccionando la entrada como alumno:

Para entregar cada práctica el alumno debe identificarse en el sistema usando su DNI (sin la letra, sólo el número) y su clave. La guía de uso del servidor se encuentra colgada en la página web de la asignatura. Los alumnos con documento extranjero, debe incluirse la primera letra del documento (pero no la final).

Nota: Si algún alumno no puede identificarse por su DNI puede ser por dos causas:

a) Está introduciendo el DNI con letra b) No está matriculado todavía en la asignatura

En el segundo caso es necesario ponerse en contacto con el profesor de la asignatura.

Entrega de la práctica a través del servidor

La entrega de la práctica 1 consiste en copiar el código, una vez se haya comprobado el correcto funcionamiento del programa, entre las dos líneas de comentarios (en rojo) en el cuadro de respuestas correspondiente. Cada apartado tiene un espacio asignado dónde copiar el código correspondiente. Solo hay que copiar el código que se encuentra entre las dos líneas de comentarios del molde proporcionado en el enunciado.

Es especialmente importante que siga estas instrucciones si quiere que la práctica sea evaluada apropiadamente.

Page 8: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

8

Al acceder como alumno a la plataforma se accede a la página de ejercicios activos:

Seleccionando el ejercicio activo, se accede a la página de entrega. En la parte inferior está la ventana de donde se debe copiar el código generado. Para concluir basta con dar al botón de envío.

Page 9: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

BREVE GUÍA PARA EL DESARROLLO DE UN PROGRAMA BÁSICO EN C CON MICROSOFT

VISUAL STUDIO 2010

El tipo de programas que aprenderemos a desarrollar en C en este curso es el conocido como

aplicación de consola. En VS2010 una aplicación de consola se abre siguiendo los siguientes

pasos:

1.- Abrir un nuevo proyecto en File -> New -> Project

2.- En la ventana que se abre seleccione Win32 Console Application

Page 10: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

3.- En la ventana de edición de código puede ahora introducir el código de su programa.

Comencemos con un ejemplo simple que muestra los 10 primeros números en la pantalla.

4.- Para generar el programa pulse en Debug -> Build Solution (o pulse F7)

El resultado de la compilación debiera mostrar un resultado del tipo:

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

6.- En algunas versiones de MVS2010 del Centro de Cálculo podría producirse el siguiente error

de compilación:

LINK: fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

Page 11: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

Si se obtuviera dicho error de compilación, habría que resolverlo modificando las propiedades

del Proyecto.

Modifique la propiedad Enable Incremental Linking a “NO”.

6.- Para ejecutar el código pulse en Debug -> Start Debugging (o pulse F5)

Page 12: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

7.- Es habitual que el programa se ejecute y luego se cierre la consola de Windows donde se

haya ejecutado, por lo que será complicado ver la salida por pantalla del programa. Para evitar

esto, es recomendable abrir una Consola de Windows y ejecutar el programa desde allí.

Abra la ventana de comandos de Windows, aplicación cmd.

Page 13: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

Diríjase a la carpeta donde se encuentre el ejecutable de su programa compilado (comando

cd). Por defecto los proyectos de MVS2010 se almacenan en la ruta

C:\Users\salas\Documents\Visual Studio 2010\Projects. Ejecute el programa escribiendo el

nombre del mismo y pulsando enter.

Page 14: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de

8.- Otra opción para que no se cierre la ventana de comandos tras la ejecución es utilizar la

opción Debug -> Start without Debugging (o pulse CTRL+F5). Por defecto esa opción no

aparece visible, pero puede hacerse seleccionando Tools -> Settings -> Expert Settings.

9.- Para depuración del programa es buena práctica introducir trazas o watch. Con ellos

podemos comprobar cómo evoluciona el valor de alguna expresión o variable a medida que

ejecutamos el programa paso a paso. Para ejecutar el programa paso a paso pulse F10. Cada

vez que se pulse F10 el programa ejecutará una instrucción. Abajo aparece la ventana Watch

donde pueden introducirse nombres de variables para mostrar su valor en tiempo de

ejecución.

10.- También podrían incluirse puntos de ruptura o breakpoints, para que el programa se

ejecute de manera continua hasta esa instrucción. Para ello, hay que seleccionar la instrucción,

pulsar el botón derecho del ratón y seleccionar Breakpoint -> Insert breakpoint. Pulsando F5

el programa sigue ejecutándose de manera continua hasta el siguiente breakpoint.

Page 15: Práctica 1: Sistemas operativos, compilador de C/C++ y ...doctus.us.es/sdocencia/storage/app/ejercicios/... · Práctica 1: Sistemas operativos, compilador de C/C++ y servidor de