Sunteți pe pagina 1din 24

MP 11 Fundamentos Programacin UF 02 Diseo Modular

MDULO 1 FUNDAMENTOS PROGRAMACIN EN C, C++.

OBJETIVOS.
En este mdulo se pretende hacer una presentacin del lenguaje C/C++ y al mismo tiempo introducir los conceptos elementales de un entorno para poder realizar aplicaciones C/C++ de consola. Todava no entraremos en la estructura y sintaxis del lenguaje, no obstante, conoceremos algunos elementos de C/C++ para comenzar a realizar los primeros programas. Concretamente, se revisarn los siguientes aspectos:
Elementos bsicos de un ordenador. Programas y lenguajes informticos. Generalidades sobre los lenguajes C/C++. El entorno de un Entorno Integrado de Desarrollo (EID) Introduccin a la sintaxis de C/C++. Las funciones de entrada y salida de C: printf() y scanf(). Los objetos de entrada y salida de C++: cout y cin. Expresiones.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 1

1.

PRCTICA 1: HOLA MUNDO.

El resultado de esta prctica ser slo una aplicacin que extrae por pantalla "HOLA MUNDO". sta es tradicionalmente la primera aplicacin que se hace en cualquier lenguaje de programacin. Es una aplicacin extremadamente sencilla y con ella aprendemos slo como comenzar a escribir cdigo y construir aplicaciones ejecutables.

1.1. DESARROLLO DE LA PRCTICA.


1) Iremos a Inicio Programa Dev C++. Aparecer una pantalla inicial donde hay varias opciones. Escogeremos la opcin Archivo Nuevo Cdigo Fuente.

2) Antes de introducir ninguna instruccin, daremos nombre al archivo para que no haya

equivocaciones, ya que siempre guardar el ltimo archivo sobre el anterior que mantenga su mismo nombre. Para ello, iremos a Archivo Guardar como. Entonces se abrir una ventana donde se nos solicitar el nombre del archivo (m1p01.c) y la ubicacin donde se guardar. Efectuamos estas modificaciones y clicamos en Guardar:

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 2

3) Ya podemos escribir el cdigo del programa en la ventana de texto. Escribiremos el

siguiente cdigo:
/*m1p01.c - Hola Mundo*/ #include <stdio.h> /*declaracin de funcin printf*/ int main () { printf ("HOLA MUNDO"); return 0; } 4) Para ejecutar el programa y ver cul es el resultado, en la parte superior del men

seleccionaremos: - Compila (mtodo abreviado tecla F9). En la parte inferior de la pantalla se visualiza la orden que se ha ejecutado Gcc -c "m1p01.c" -o "m1p01" Completado correctamente. - Monta (mtodo abreviado tecla F11). En la parte inferior de la pantalla se visualiza la orden que se ha ejecutado Gcc -c "m1p01.c" -o "m1p01" Completado correctamente. - Y por ltimo Ejecuta (mtodo abreviado tecla F3).
5) Se ha creado el archivo ejecutable m1p01 .. \Mdulo_1\m1p01. 6) Si todo ha ido bien, veremos una pantalla en la que se nos indica que el programa se

est ejecutando.

1.2. EXPLICACIN DEL PROGRAMA.


Ahora haremos una breve explicacin del programa "HOLA MUNDO":
/*m1p01.c - Hola Mundo*/ #include <stdio.h> /*declaracin de funcin printf*/ int main () { printf ("HOLA MUNDO"); return 0; }

Lo primero que podemos observar en el texto del cdigo son los colores: verde, rojo, azul y negro. En el texto entre dos marcas /* y */ se pone de color rojo, que es el color predeterminado para los comentarios. Pueden usarse otras formas de poner comentarios. La palabra #include con el color verde. Las palabras int y return se ponen automticamente de color azul, que es el dolor predeterminado para las palabras reservadas de C y de las directivas del preprocesador. El resto del cdigo es de color negro.
MP 11 UF 02 Fundamentos Programacin - Mdulo 1. Pgina 3

#include <stdio.h> indica al compilador que se utilizar alguna funcin, la declaracin de la cual se encuentra en el archivo de cabecera stdio.h. En este caso se trata de la funcin printf().

Todo programa C contiene siempre la funcin main(). Dentro de un programa C podemos escribir ms de una funcin, pero obligatoriamente debemos tener la funcin main() que es la que primero se ejecutar. La nica sentencia de este programa es una llamada a la funcin de la librera estndar de entrada y de salida: printf(). En este caso, la funcin slo tiene un argumento que es una cadena de caracteres cerrados entre dobles comillas. Esta cadena contiene caracteres para imprimir por pantalla y un cdigo de formato especial: \n. Este es un cdigo de nueva lnea y sirve para que, lo que se imprime en la pantalla despus, se haga en la siguiente lnea. Debemos recordar que toda sentencia acaba con el carcter ; (punto y coma). Las siglas GCC significan GNU Compiler Collection (Coleccin de Compiladores GNU). Como su nombre indica es una coleccin de compiladores de diferentes lenguajes: C, C++, Objective C, Chill, Ada, Fortran y Java. Este compilador se distribuye bajo licencia pblica (General Public License), lo que implica su libre distribucin. Existen versiones para prcticamente todos los SO. Viene incorporado en la mayora las distribuciones de GNU/Linux. La versin DOS de este compilador es el DJGPP y se puede descargar en su web oficial www.delorie.com/djgpp. El desarrollo de GCC utiliza un entorno abierto y soporta mltiples plataformas. De esta forma son miles de voluntarios de todo el mundial que participan en su desarrollo. El compilador GCC se puede descargar desde la pgina oficial del GCC: gcc.gnu.org.

1.2.1. Opciones ms comunes del Compilador GCC.


-c -o -l -v -L -Wall -g Slo compila. Crea los ficheros objetos pero no ejecutables. Nombre del ejecutable. Para enlazar bibliotecas. Muestra los pasos de compilacin. Aade path a las rutas de bsqueda. Activa muchos mensajes de aviso (warning). til para nuevos usuarios. Genera informacin para el depurador.

1.2.2. Extensiones ms comunes de ficheros.


.c -cc -h -s -i -o Fichero fuente de C. Fichero fuente de C++. Fichero cabecera de C/C++ (slo til para los #include). Fichero fuente en ensamblador. Fichero despus de pasar por el procesador. Fichero objeto.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 4

2.

PRCTICA 2: UNA CONVERSACIN EN C.

El objetivo de esta prctica es hacer servir las funciones de entrada y salida de C: printf() y scanf(). Tambin se comenzar con el uso de variables.

2.1. DESARROLLO DE LA PRCTICA.


Crearemos un nuevo archivo C denominado m1p02.c y escribir en la ventana de edicin el siguiente cdigo:
//m1p02.c - Una conversacin en C #include <stdio.h> //printf y scanf void LimpiaBuffer() { while(getchar() != '\n') } int main(){ char nombre[30]; int edad; printf("Por favor, escribir vuestro nombre\n"); scanf("%s",nombre); printf("Ahora puede escribir vuestra edad\n"); LimpiaBuffer (); scanf("%d",edad); printf("Muy bien %s",usted tiene %d aos\n" ,nombre, edad); return 0; }

Para compilar y montar el programa presionaremos la tecla F11 o bien seleccionamos la opcin Compilar del men principal. En la ventana inferior de la pantalla el compilador nos mostrar los errores que ha encontrado o en caso contrario pondr: gcc m1p02.c -o m1p02 completado correctamente Si hay errores, marcar la lnea y el error. Habr que corregirlos y volver a realizar el anterior proceso.

2.2. EXPLICACIN DEL PROGRAMA.


En primer lugar se puede observar que en esta prctica se ha utilizado otro tipo de comentarios: //m1p02.c - Una conversacin en C Cuando se ponen los smbolos //, todo lo que hay a continuacin y hasta el final de la lnea es ignorado por el compilador. La segunda lnea: #include <stdio.h> //printf y scanf informa al compilador que aade las definiciones de las funciones que se encuentran en el archivo de cabecera stdio.h. En este caso, esta lnea es necesaria ya que utilizaremos las funciones printf() y scanf(). El comentario explica esta circunstancia. La tercera lnea: void LimpiaBuffer() { while(getchar() != '\n') } esta funcin evitar que el programa se salte la instruccin scanf("%d",edad);. Con la lnea: int main() { comienza la funcin principal, que en este caso, devuelve un cero.
MP 11 UF 02 Fundamentos Programacin - Mdulo 1. Pgina 5

Se declaran dos variables:


char nombre[30]; int edad ;

una variable preparada para guardar una cadena de caracteres de hasta 30 caracteres, denominado nombre, y una variable entera denominada edad. En C es obligatorio declarar todas las variables antes de usarlas. Esta declaracin sirve para que se reserve la memoria necesaria para su almacenamiento. En la siguiente parte del cdigo:
printf("Por favor, escribir vuestro nombre\n"); scanf("%s",nombre); printf("Ahora puede escribir vuestra edad\n"); LimpiaBuffer (); scanf("%d",%edad);

la primera lnea hace que se imprima en la pantalla el texto del argumento de printf() y hace que el cursor vaya a la lnea siguiente. En este momento, la ejecucin del programa se detiene esperando que el usuario introduzca una cadena de caracteres. La funcin scanf() se encarga de leer el contenido de la cadena introducida por teclado y se almacena en la variable nombre. %s es el cdigo de tipo correspondiente a las cadenas de caracteres. El hecho que el nmero no es exactamente una variable sino una cadena de caracteres (un vector o array de caracteres) no debe ponerse & delante del nombre en la funcin scanf(). Normalmente, el segundo argumento y siguientes de esta funcin es el nombre de una variable precedida por el carcter &. Despus de imprimir el texto del argumento de printf() de la tercera lnea, el programa llama a la funcin LimpiaBuffer() para limpiar el buffer del teclado y permitir la ejecucin de la siguiente instruccin. En la quinta sentencia se vuelve a detener y scanf() espera que se introduzca un entero con el teclado. Este entero ser almacenado en la variable entera edad. En este caso, s es obligatorio poner & delante del nmero de variable edad. La lnea:
printf("Muy bien %s",usted tiene %d aos\n" ,nombre, edad);

ilustra el uso de printf() con ms de un argumento. Debemos fijarnos que en el primer argumento hay dos cdigos de tipos, uno del tipo de cadena de caracteres (%s) y otro del tipo nmero entero (%d). Los dos argumentos que siguen al primero corresponden exactamente a dos variables del tipo de los cdigos antes mencionados. En la funcin printf() no debe ponerse & delante del nombre de las variables. Al ejecutar el programa se puede observar que los caracteres especiales, como las vocales acentuadas, se imprimen bien en la pantalla.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 6

2.3. CAPTURA DE LA EJECUCIN DEL PROGRAMA.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 7

3.

PRCTICA 3: SISTEMAS DE NUMERACIN.


En C y C++ se utilizan bsicamente cuatro tipos de sistemas de numeracin: El sistema binario (base 2). Es el que utilizan los ordenadores y consta de dos nicos smbolos: el cero (0) y el uno (1). El sistema octal (base 8). Este sistema utiliza 8 dgitos: 0, 1, 2, 3, 4, 5, 6 y 7. El sistema decimal (base 10). Es el utilizado por el ser humano y consta de 10 dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. El sistema hexadecimal (base 16). Consta de 16 dgitos: 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.

3.1. DESARROLLO DE LA PRCTICA.


Abriremos un nuevo archivo denominado m1p03.c. En este caso escribiremos en la ventana el siguiente cdigo:
//m1p03.c - Nmeros en diferentes bases #include <stdio.h> #include <string.h> int convertir(char *numero, int base); int DeCaracterANumero(char d); int main() { printf(" '331' en octal a decimal es: %d\n,convertir("331", 8)); printf(" 'D9' en hexadecimal a decimal es: %d\n,convertir("D9", 16)); printf(" '10110' en binario a decimal es: %d\n,convertir("10110", 2)); return 0 ; } int convertir(char *nmero, int base) { Int Multiplicador = 1, Digitn, Valor = 0; Digitn =strlen(numero)-1; while(Digitn >=0) { Valor += DeCaracterANumero(numero[Digitn])*Multiplicador; Multiplicador *= base; Digitn--; } return Valor; } int DeCaracterANumero(char d) { if(d >= '0' && d <= '9') return d-'0'; if(d >= 'a' && d <= 'f') return 10+d-'a'; if(d >= 'A' && d <= 'F') return 10+d-'A'; return -1; // este carcter no es vlido }

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 8

3.2. EXPLICACIN DEL PROGRAMA.


Como podemos comprobar hay conceptos que no hemos visto. Slo hemos de editar el programa, compilarlo, ejecutarlo y veremos cmo: '331' en octal corresponde al 217 en decimal; 'D9' en hexadecimal corresponde al 217 en decimal; '10110' en binario corresponde al 217 en decimal.

3.3. CAPTURA DE LA EJECUCIN DEL PROGRAMA.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 9

4.

PRCTICA 4: UNA CONVERSACIN EN C++.

En la prctica 2 hemos utilizado dos de las funciones de entrada y salida ms importantes de: printf() y scanf(). C++, como superconjunto de C, incluye tambin estas funciones, pero incorpora otros elementos que pueden ser ms cmodos en muchos casos, se trata de los objetos cout (pone datos en la salida estndar -pantalla-) y cin (toma datos de la entrada estndar teclado-). Las declaraciones de estos objetos se encuentran en el archivo de cabecera: iostream.h:

4.1. DESARROLLO DE LA PRCTICA.


Abriremos un nuevo archivo pero en este caso seleccionaremos como tipo de fichero C++ Source file. Le pondremos como nombre m1p04 y comprobaremos como el programa coloca automticamente la extensin .cc. Escribiremos en la ventana de texto el siguiente cdigo:
//m1p04.c - Una conversacin en C++ #include <iostream> using namespace std; int main(){ char nombre[30]; int edad; cout <<"Por favor, escribir vuestro nombre\n"; cin >> nombre; cout <<"Ahora puede escribir vuestra edad\n"; cin >> edad; cout <<"Muy bien ", <<nombre<<" usted tiene"; <<edad<<" aos" <<endl; return 0; }

Presionaremos la tecla F11 (Compilar) y F3 para ejecutar. Veremos como ahora se compila con g++: g++"m1p04.cc" -o "m1p04

4.2. EXPLICACIN DEL PROGRAMA.


Para imprimir en pantalla se utiliza el objeto cout. Este objeto ya no es exactamente una funcin, pero aunque no se puede explicar en detalle qu es, es fcil explicar cmo funciona. Las instrucciones "#include <iostream>" y "using namespace std; " son necesarias para que las declaraciones que permiten el acceso a "cout" y "cin" estn en una librera externa. Se puede imaginar que cout es la pantalla y que el operador <<, denominado operador de insercin, enva informacin al objeto cout (pantalla). La eficacia de esta forma de enviar datos por pantalla es que no hace falta indicar qu tipo de datos enviamos. Para enviar una cadena se escribe:
cout <<"Ahora puede escribir vuestra edad\n";

y para enviar una variable numrica se escribe: cout << edad

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 10

Por tanto, no se utilizan codigos de tipos como hacamos en las funciones de C printf() y scanf(). Para imprimir diferentes tipos de datos slo hace falta utilizar el operador << ms de una vez:
cout <<"Muy bien ", << nombre <<" usted tiene"; << edad <<" aos" <<endl;

El manipulador endl inserta un carcter de nueva lnea, tal como haca "\n", y adems vaca el buffer. Lo mismo pasa con el objeto cin. Este representa la entrada estndar (el teclado) y va asociado con el operador de extraccin: >>. La sentencia: cin >> nombre; lee del teclado una cadena de caracteres (sin espacios) y la almacena en la variable nombre. Y la sentencia cin >> edad; lee del teclado un nmero entero y lo almacena en la variable edad. Para poder leer cadenas de caracteres con espacios (por espacios Jos Antonio) se debe utilizar la siguiente funcin asociada al objeto cin: cin.getline(nombre, 30, '\n'); Esta sentencia hace que se lean hasta 30 caracteres o hasta que presionemos INTRO. Entender el funcionamiento de estos objetos no es necesario para poder usarlos. No es el objetivo de este cuso entrar en la programacin orientada a objetos y, por este motivo, no entraremos en ms detalles.

4.3. CAPTURA DE LA EJECUCIN DEL PROGRAMA.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 11

5.

PRCTICA 5: CONVERSIN DE MILLAS A KM.


En esta prctica aprenderemos a borrar la pantalla y a utilizar las primeras expresiones.

5.1. DESARROLLO DE LA PRCTICA.


Crearemos un nuevo archivo denominado m1p05.c del tipo C Source file. Escribiremos en la ventana de texto el siguiente cdigo:
//m1p05.c - Conversin de Millas a Km #include <stdio.h> //printf y scanf #include <stdlib.h> //system() int main(){ float Millas; float Kms; system("clear"); //borra la pantalla printf("Por favor, introduzca el nmero de millas\n"); scanf("%f",&Millas); Kms=1.609*Millas; //realiza el clculo y lo asigna a Kms Printf("%f Millas equivale a &f Kms\n", Millas, Kms; return 0; }

Presionaremos la tecla F11 (Montar) y F3 para comprobar su funcionamiento.

5.2. EXPLICACIN DEL PROGRAMA.


En primer lugar, se borra la pantalla. Esto se consigue con la sentencia:
system("clear");

Esta sentencia sirve para llamar al comando del SO "clear" (clear screen) y borrar la pantalla. Para poder utilizar esta funcin se debe llamar al archivo cabecera: stdlib.h. En este caso utilizaremos dos variables reales del tipo float, denominados Millas y Kms, que se deben declarar: float Millas;
float Kms;

Para poder escribir o leer datos de este tipo, la cadena de control de las funciones printf() y scan() utiliza el cdigo de control %f. La variable Millas es leda y asignada directamente con la funcin scanf(). Debemos recordar que se debe poner el carcter & delante del nombre de la variable. La variable Kms se calcula y se asigna con la siguiente sentencia de asignacin:
Kms=1.609*Millas; //realiza el clculo y lo asigna a Kms

En C, el smbolo = se utiliza para asignar el valor de la expresin de la derecha en la variable de la izquierda. En este caso, la expresin es el resultado de multiplicar (*) el contenido de la variable Millas por el nmero 1.609 (el punto entre el 1 y el 6 representa el punto decimal. No se utilizan separadores de millares en las constantes numricas).

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 12

5.3. CAPTURA DE LA EJECUCIN DEL PROGRAMA.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 13

6.

PRCTICA 6: TABLAS MATEMTICAS.

En esta prctica aprenderemos a utilizar el cdigo de formato de tabulacin horizontal y a escribir nmeros decimales con formato. Adems, conoceremos el nombre de algunas funciones matemticas comunes y su utilizacin.

6.1. DESARROLLO DE LA PRCTICA.


Crearemos un nuevo archivo denominado m1p06.c del tipo C Source file. Escribiremos en la ventana de texto el siguiente cdigo:
//m1p06.c - Tablas matemticas #include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ double x; printf("Funciones matemticas\n"); printf("Introduzca el valor inicial de x: "); scanf("%lf",&x); system("clear"); printf("Funciones matemticas\n\n"); printf("x\tx^2\tx^3\tsqrt(x)\tx^(-1)\tln(x)\tlog(x)\texp(x)\n"); printf("_____________________________________________\n\n"); printf("%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2f\t%.2f\n" ,x,x*x,x*x*x,sqrt(x),1/x,log(x),log10(x),exp(x)); return 0 ; }

Si intentamos compilar y ejecutar este programa veremos cmo nos da errores. Estos se producen al utilizar las funciones matemticas que se encuentran en la librera <math.h>. Es necesario especificar una opcin al compilar para que cargue este archivo. Para hacerlo escogeremos la opcin Parmetros Pedidos y surgir otra ventana, la cual nos permitir personalizar las rdenes del editor y del lenguaje. Iremos a Montar un fichero y aadiremos -lm a continuacin de gcc. Montaremos el programa (F11) y acto seguido lo ejecutaremos (F3). En la pantalla inferior veremos que se ha ejecutado gcc con la opcin -lm:
Se est montando fichero: m1p06.c gcc -lm "m1p06.c" -o "m1p06" completado correctamente Tiempo total: 0 segundos

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 14

6.2. EXPLICACIN DEL PROGRAMA.


Podemos introducir cualquier nmero con o sin decimales. El valor de este nmero ser almacenado en la variable x, que es del tipo double. En el mdulo siguiente trataremos con ms detalle los tipos de variable. En estos momentos es suficiente decir que el tipo double es el tipo con ms precisin para los nmeros con decimales. Una vez introducido el nmero y la tecla INTRO, se borra la pantalla (con system("clear")) y se mostrara de la siguiente forma:

Esto se ha conseguido con las siguientes lneas de cdigo:


printf("Funciones matemticas\n\n"); printf("x\tx^2\tx^3\tsqrt(x)\tx^(-1)\tln(x)\tlog(x)\texp(x)\n"); printf("_____________________________________________\n\n"); printf("%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2f\t%.2f\n" ,x,x*x,x*x*x,sqrt(x),1/x,log(x),log10(x),exp(x));

La primera lnea vuelve a imprimir el ttulo despus de haber borrado la pantalla con la lnea anterior. A continuacin est la funcin printf() con un solo argumento, este argumento es una cadena de caracteres con cdigos de escape. El cdigo \t corresponde al tabulador horizontal. Normalmente la pantalla de salida tiene 80 caracteres por lnea. Podemos imaginarnos esta pantalla dividida en 10 columnas de 8 caracteres cada una. El tabulador hace que se pase desde una columna al inicio de la siguiente. Para que la salida quede bien, debemos asegurarnos que lo que queremos tabular no ocupe ms de 8 caracteres. La tercera lnea es otra llamada a la funcin printf() con un solo argumento para imprimir una lnea. Por ltimo, la ltima funcin printf() tiene 9 argumentos: la cadena de control y las 8 expresiones que queremos imprimir, estas expresiones son: x x*x x*x*x sqrt(x) log(x) log10(x) exp(x) el valor de la misma variable el cuadrado el cubo (en C no es correcto poner x^2 ni n^3) raz cuadrado el logaritmo neperiano el algoritmo decimal el exponencial (el resultado de elevar el nmero e a x)

Todas estas expresiones son del tipo double. Para imprimir un valor double con la funcin printf() se utiliza el cdigo de formato %lf (long float). Este cdigo permite un modificador para indicar cuantos decimales se imprimirn. En este caso, %.2lf hace que se impriman dos decimales.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 15

Estos caracteres se ven como dos, pero representan un nico carcter. El grupo de cdigos que se encuentran en la izquierda de la tabla se utilizaban para mover el cursor en los terminales. El terminal poda ser la pantalla o la impresora. Es por esto que nos encontramos cosas como una nueva lnea, retorno de carro, etc. Si tenemos la necesidad de mostrar en el monitor el carcter \, debemos poner el cdigo \\. Lo mismo sucede con los caracteres ,', y ". El cdigo octal y hexadecimal nos permite introducir directamente el cdigo numrico en octal o en hexadecimal.

6.3. CAPTURA DE LA EJECUCIN DEL PROGRAMA.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 16

7.

RESUMEN TERICO.

7.1. ELEMENTOS BSICOS DE UN ORDENADOR.


Un ordenador es un sistema capaz de almacenar y procesar con mucha rapidez una gran cantidad de informacin. Una de las partes ms importantes de un ordenador es la memoria. La memoria de un ordenador est constituida por un gran nmero de unidades elementales denominadas bits. Para facilitar el acceso a estos elementos, los bits se agrupan en grupos de ocho, denominados bytes u octetos. La memoria suele medirse en KB (Kilobytes - 1024bytes), MB (Megabytes - 1024KB) y GB (Gigabytes - 1014MB). La CPU (Central Processing Unit) o Unidad Central de Proceso, accede a la memoria por palabras (words) constituidas por 2, 4 u 8 bytes (16bits, 32bits o 64bits). Los PC habituales -desde el procesador 386- tienen arquitectura de 32bits (4bytes). Este dato es importante a la hora de escribir un programa. La memoria de un ordenador se utiliza para almacenar diversos tipos de informacin: datos y programas. Dentro de los programas se puede distinguir entre aplicaciones y el propio SO. ste ltimo es un conjunto de programas encargados de la gestin interna del ordenador y la comunicacin con los diferentes perifricos.

7.2. LOS PROGRAMAS Y LOS LENGUAJES INFORMTICOS.


Un programa est constituido bsicamente por un conjunto de instrucciones que se ejecutan secuencialmente, una detrs de otra (debe mencionarse, no obstante, la existencia de programas paralelos, es decir, que se pueden ejecutar simultneamente en ms de un procesador). Las instrucciones que entiende un procesador estn constituidas por 1 (unos) y 0 (ceros). A esto se le denomina lenguaje mquina o binario. Desde los primeros aos en los que existen los ordenadores se desarrollaron lenguajes de alto nivel, ms cercanos al lenguaje natural. A lo largo de toda la historia de los ordenadores, han existido muchos lenguajes de programacin de alto nivel. Estos han experimentado una diversificacin y una evolucin (lo mismo que ha sucedido con las lenguas naturales). Cada lenguaje dispone de una sintaxis o conjunto de reglas para construir las diferentes instrucciones. Los lenguajes de alto nivel son ms o menos comprensibles por el usuario pero no por el procesador, el cual debe traducirlos a su propio lenguaje mquina. Esta es la labor que se puede hacer con un intrprete (como tradicionalmente hace el BASIC) o con un programa especial denominado compilador. Este ltimo traduce el programa al lenguaje propio de la mquina y suele hacerlo en dos partes: compilado y enlazado (linkado). La primera parte, o compilado, crea un fichero objeto en un lenguaje prximo al ordenador. La segunda parte, realiza el proceso de montaje del programa con unas libreras necesarias para crear el programa ejecutable. Estas dos partes pueden hacerse en de una sola vez o bien por separado. Una de las ventajas ms importante de los lenguajes de alto nivel es la portabilidad, donde un programa desarrollado en un PC podr, en principio, ser ejecutado en otra plataforma (Mac, UNIX, etc.). Unos lenguajes aseguran ms que otros esta caracterstica. C es uno de los destacados respecto a la portabilidad. De todas formas, por cuestiones comerciales y tcnicas, la portabilidad nunca es nunca al 100%.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 17

7.3. LOS LENGUAJES C Y C++.


7.3.1. EL LENGUAJE C.

La invencin del lenguaje C se adjudica a Dennis Ritchie a mediados de los aos 70, en los laboratorios Bell de la AT&T. Fue posteriormente estandarizado por un comit del ANSI (American National Standard Institute), para poder garantizar la contabilidad de las diferentes implementaciones, dando lugar al estndar ANSI C. De hecho, C no es exactamente un lenguaje de alto nivel, es ms bien un lenguaje de nivel medio, ya que combina elementos de un lenguaje de alto nivel, como el COBOL o el PASCAL, con elementos propios del lenguaje ensamblador, que es un lenguaje muy cercano al lenguaje mquina. Esta caracterstica hace de C una herramienta adecuada para la programacin, tanto a nivel de sistema como a nivel de aplicaciones. Un aspecto a destacar de C es que contiene slo un nmero muy reducido de palabras clave (32 en ANSI C). Son estas:

Como comparacin se puede decir que el BASIC del IBM PC tiene 159 palabras clave. El lenguaje C est constituido por tres elementos: El compilador. El preprocesador. La librera estndar. El compilador es el elemento ms caracterstico del lenguaje C. Su misin es la de traducir a lenguaje mquina el programa C contenido en uno o ms archivos fuente. El compilador es capaz de detectar algunos errores durante el proceso de compilacin, enviando al usuario los correspondientes mensajes de error. El preprocesador es un componente caracterstico de C que no existen en otros lenguajes de programacin. El preprocesador acta sobre el programa fuente antes que comience la compilacin. Fundamentalmente puede hacer dos cosas: llamar libreras y definir constantes simblicas. Con el objetivo de mantener el lenguaje lo ms sencillo posible, muchas sentencias incorporadas a otros lenguajes no tienen contrapartida en C. Por ejemplo, en C no hay sentencias de entrada y salida de datos. Esta y otras operaciones importantes se realizan mediante funciones pre-programadas que vienen incorporadas al compilador o se pueden conseguir de otra forma. Estas funciones estn agrupadas en un conjunto de libreras que forman la denominada librera estndar. Las declaraciones y definiciones de estas funciones estn en archivos cabecera con extensin .h que se deben incorporar desde el preprocesador con la directiva #include, como ya veremos. El cdigo de cualquier programa escrito en C se almacena en uno o ms archivos en el disco del ordenador. Estos archivos que contienen el cdigo fuente deben acabar con la extensin .c. Esto es as para que el compilador pueda reconocer que es cdigo C.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 18

7.3.2.

EL LENGUAJE C++.

El lenguaje C++ fue desarrollado en la dcada de los 80 a partir del estndar ANSI C y su caracterstica principal es la incorporacin de las clases y la programacin orientada a objetos (POO). De hecho, C++ se puede utilizar de dos formas diferentes: Como un lenguaje estructurado, prcticamente compatible con C, con unas pocas modificaciones y algunas mejoras. Como un lenguaje orientado a objetos que representa un cambio cualitativo en la forma de entender un programa. Para poder informar al compilador que el cdigo que estamos compilando est en C++ los archivos fuente deben utilizar la extensin .cc en lugar de .c. En este curso de introduccin al C/C++ slo desarrollaremos la primera forma de utilizar C++, pero se indicar si una sentencia o funcin es propia de C++ o bien es compatible con el estndar ANSI C.

7.3.3.

LOS ENTORNOS INTEGRADOS DE DESARROLLO.

Dentro del mundo del cdigo abierto hay otros EID para desarrollar programario y que nos permiten escribir aplicaciones C/C++ para consola. Para Linux los ms conocidos son: Emacs (Editor MACroS). Es un editor de 1975 muy popular entre los programadores, debido a que es un editor de texto extensible, personalizable, auto-documentado y de tiempo real. Se ejecuta en muchos SO. Dese sus incios ha habido muchas implementaciones de Emacs. Se ejecuta tanto en terminales como en entornos grficos. Vim (Vi IMproved). Es un entorno de programacin basado en editor de texto vi de UNIX y est presente en todos los sistemas. Su utilizacin no es muy intuitiva y queda restringida en modo texto en las ventanas de la consola, aunque existen versiones para las XWindows, lo cual limita su uso generalizado. KDevelop. Es un EID del ao 1998 para los sistemas Linux y otros sistemas UNIX publicados bajo licencia GPL y es totalmente grfico. Soporta multitud de lenguajes de programacin como C, C++, Java, Ada, SQL, Phyton, Perl y Pascal. Emacs, Vim y KDevelop, pero no entraremos a detallar su funcionamiento. Para Microsoft Windows entre otros EID tenemos: Dev C++. Es un completo EID para los lenguajes de programacin C y C++, para poder desarrollar aplicaciones de consola o grficas, estas ltimas con las libreras grficas wxWindows especialmente diseadas para este entorno. Dev C++ est basado enMingw puerto de GCC y GDB. En realidad no es un compilador, se trata ms bien de un entorno que incluye uneditor de proyectos, un editor de textos, un compilador, un enlazador y un depurador. El compilador que se suministra con Dev C++ es Mingw y pertenece a otro proyecto. Visual-MinGW (Minimalist GNU for Windows). MingGW o MinGW32, es una implementacin de los compiladores GCC par la plataforma Win32. Es un compilador a utilizar acompaado de algn EID, como por ejemplo Dev C++.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 19

7.4. INTRODUCCIN A LA SINTAXIS DE C.


Antes de comenzar un estudio detallado de todos los elementos de C, se debe tener una idea bsica de los elementos de un programa escrito en C: 1 - Todo programa C contiene siempre la funcin main(). Es en esta funcin donde comienza el programa. La definicin de la funcin main() se encuentra entre los smbolos { y }. stos son los smbolos que delimitan un bloque de sentencias. Toda funcin C, incluyendo la funcin main(), puede devolver o retornar un valor. El tipo de valor de retorno se debe poner delante del nombre de la funcin en su definicin. Si no se pone ningn tipo se sobreentiende el tipo por defecto que es int. Si queremos que no retorne ningn valor debemos poner tipo void. 2 - Un programa debe declarar todas las variables que haga servir. Esto quiere decir, indicar al principio del programa, o bien al principio de un bloque, de qu tipo es la variable y su nombre. En este punto se debe indicar que en C++ no hace falta que las declaraciones de variables se hagan al inicio, no obstante, esta caracterstica slo es til si utilizamos programas muy largos e interesa que la declaracin est cerca del lugar donde se utiliza la variable. Si los programas son muy largos, es recomendable que las declaraciones se hagan todas juntas al comienzo de cada funcin. 3 - Toda sentencia C, incluyendo las declaraciones de variables, acaban en ; (punto y coma). 4 - Para utilizar una funcin pre-definida, por ejemplo, una funcin de la librera estndar, el programa debe contener una directiva #include con un archivo cabecera donde se encuentre la definicin de esta funcin. Se deben conocer los archivos cabeceras que son necesarios para cada funcin en particular. 5 - Es aconsejable poner comentarios. stos son necesarios para documentar el cdigo, aunque son ignorados por el compilador. Principalmente hay dos formas de poner comentarios: o Los comentarios tradicionales de C, que es todo el texto que va entre los smbolos /* y */. o Los comentarios tradicionales de C++, que es todo el texto que va despus de los smbolos // y hasta el final de la lnea.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 20

8.

ANEXO.

8.1. CDIGOS DE FORMATO MS HABITUALES EN LA FUNCIN SCANF().

8.2. CDIGOS DE FORMATO PARA LA FUNCIN PRINTF().

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 21

9.

EJERCICIOS.

De forma excepcional, en este mdulo deberemos proporcionar tanto el cdigo fuente como el archivo ejecutable. A partir del mdulo 2, slo deberemos proporcionar el cdigo fuente de los ejercicios realizados.

1) printf() y scanf().
Como variacin de la prctica 2 de este mdulo, haremos un programa que nos solicite por pantalla el nombre de un municipio, un carcter y su cdigo postal. El programa deber escribir despus el nombre del municipio, el carcter y a continuacin el cdigo postal. La salida deber ser como esta:
Introduzca el nombre de un municipio y un carcter: Vilanova / Introduzca su cdigo postal: 08800 Los datos introducidos son: Vilanova / 08800

En este ejercicio debemos recoger un carcter. El cdigo de tipo %c lo utilizaremos para recoger uno. Consulta la tablas para obtener una breve descripcin de los diferentes cdigos de formato a utilizar por las funciones printf() y scanf(). Denominaremos al programa m1e1.cc dentro de la carpeta Mdulo_1.

2) cout y cin.
Haremos el mismo programa del ejercicio anterior haciendo uso de cout y cin de C++. Se debe tener en cuenta que el programa debe permitir la introduccin de nombres compuestos como Vilanova i La Geltr, por tanto, se debe tener en cuenta lo tratado en la prctica 4 de este mdulo. En primer lugar, se solicitar el nombre del municipio; en segundo lugar, el cdigo postal; y, finalmente, el carcter: Denominaremos al programa m1e2.cc dentro de la carpeta Mdulo_1.

3) Resistencias en paralelo.
Haremos un programa que calcule la resistencia equivalente de un sistema de dos resistencias conectadas en paralelo. Esta resistencia equivalente puede calcularse mediante la frmula:

El programa debe solicitar los datos R1 y R2, que sern almacenados en variables del tipo double y retornar el valor de RE, tambin del tipo double. Para poder leer las variables del tipo double se utiliza el cdigo de tipo %If. Se debe tener en cuenta, para poder evaluar la expresin de antes, la jerarqua de las operaciones y, por lo tanto, una sentencia de asignacin como: RE=R1xR2/R1+R2;, no es correcta. La sentencia correcta sera: RE=(R1xR2)/(R1+R2); Denominaremos al programa m1e3.cc dentro de la carpeta Mdulo_1.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 22

4) Conversin de escalas de temperatura.


Basndonos en la prctica 5, haremos un programa que pueda realizar la conversin de temperatura de F a C; es decir, un programa que nos solicite un nmero de F y debe retornar el valor equivalente en C. Para poder realizar este programa se debe tener en cuenta que: C = (F - 32) / 1.8 donde F es la temperatura en grados Fahrenheit y C la temperatura en grados centgrados. Las variables de este programa sern del tipo double. Denominaremos al programa m1e4.cc dentro de la carpeta Mdulo_1.

5) Tasa Anual Equivalente (TAE).


TAE representa el porcentaje real que se aplicar por una operacin de prstamo o imposicin a plazo. Para el clculo (en caso de un prstamo) se deben tener en cuenta todos los gastos derivados, pero para simplificar slo contabilizaremos el fraccionamiento de pagos.

Si la TAE es i (expresada en tanto por uno) con un fraccionamiento de pagos n, puede calcularse con la frmula: TAE = (1 + i/n)n - 1 Realizaremos un programa que permite introducir los datos y calcule y presente por pantalla la TAE correspondiente. Para elevar un nmero a un otro nmero se utiliza la funcin pow(). Esta funcin acepta dos parmetros del tipo double, la base y el exponente, y retorna la potencia, tambin del tipo double. Para utilizar la funcin pow() se debe incluir el archivo de cabecera math.h, lo cual se hace con la directiva: #include <math.h> Denominaremos al programa m1e5.cc dentro de la carpeta Mdulo_1.

6) printf() y scanf().
En este ejercicio debemos escribir un programa para solicitar al usuario que introduzca tres nmeros reales y muestre en la pantalla su media aritmtica. La sentencia scanf("%f%f%f",&a,&b,&c); nos permite introducir los tres valores en la misma lnea. Debemos poner un espacio en blanco entre valor y valor. La ejecucin del programa debera ser ms o menos como esto:
Introduzca 3 valores reales 2.5 3.7 6.3 La media aritmtica de 2.500000 3.700000 6.300000 es 4.166667

Denominaremos al programa m1e6.cc dentro de la carpeta Mdulo_1.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 23

9.1. PROBLEMAS COMPLEMENTARIOS.


7) La ecuacin de segundo grado.
En este ejercicio se solicita una primera versin de un programa que mejoraremos en otro mdulo. Se trata de resolver una ecuacin de segundo grado del tipo:
ax2 + bx + c = 0

De momento no haremos ninguna comprobacin que las soluciones sean reales, por tanto, se debe tener en cuenta que esta versin del programa fallar si los coeficientes hacen que la ecuacin no tenga soluciones reales. El programa debe solicitar los tres coeficientes a, b y c. Estos coeficientes sern del tipo double y se deben declarar de la siguiente forma:
void main(){ double a,b,c; //coeficientes double disc; //discriminante de la ecuacin double x1,x2; //soluciones de la ecuacin ...

Para leer los datos se puede utilizar una funcin scanf() para cada coeficiente:
printf("\n introducir el coeficiente a:"); scanf("%lf",&a); printf("\n introducir el coeficiente b :"); scanf("%lf",&b); printf("\n introducir el coeficiente b :"); scanf("%lf",&c);

O bien un nica funcin scanf() que lea los tres coeficientes a la vez:
printf("\n introducir los coeficientes a, b i c\n"); scanf("%lf %lf %lf", &a,&b,&c);

Para poder leer y escribir variables del tipo double el cdigo de tipo que se utiliza es %If. La frmula para resolver ecuaciones de segundo grado es:

Para poder hacer la raz cuadrada se utiliza la funcin sqrt(). Para utilizarla es necesario incluir al principio del cdigo el archivo de cabecera math.h: #include <math.h> Es ms fcil de entender el programa si utilizamos variables para los clculos parciales, por ejemplo: disc=b*b-4*a*c;
x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a);

Denominaremos al programa m1e7.cc dentro de la carpeta Mdulo_1.

MP 11 UF 02 Fundamentos Programacin - Mdulo 1.

Pgina 24

S-ar putea să vă placă și