Clase 1 - Introduccion A Programación (Temas 1, 2 y 3)
Clase 1 - Introduccion A Programación (Temas 1, 2 y 3)
Clase 1 - Introduccion A Programación (Temas 1, 2 y 3)
1
Unidad I: INTRODUCCION E HISTORIA DE LA PROGRAMACION
OUÉ ES UN PROGRAMA
LENGUAJES DE PROGRAMACION
2
tarea que debe realizar el procesador de la computadora. Por ejemplo: El código MOV
le requiere a la PC que mueva alguna información desde una posición de memoria a
otra. Para traducir un programa escrito en ensamblador a lenguaje máquina (código
binario) se utiliza un programa llamado ensamblador que ejecutamos mediante la
propia computadora. Este programa tomará como datos nuestro programa escrito en
lenguaje ensamblador y dará como resultado el mismo programa pero escrito en
lenguaje máquina, lenguaje que entiende el computadora.
Hoy en día son más utilizados los lenguajes orientados al problema o lenguajes
de alto nivel. Estos lenguajes utilizan una terminología fácilmente comprensible que se
aproxima más al lenguaje humano.
Por ejemplo:
“ printf("hola"); “
Otras características del C es que posee muy pocas palabras clave (32, donde
27 fueron definidas en la versión original y cinco añadidas por el comité del ANSI,
enum, const, signed, void y volatile). Todas las palabras clave de C están en
3
minúsculas (C distingue entre las mayúsculas y minúsculas). En la siguiente tabla se
muestran las 32 palabras clave:
Para que el programa pueda ser ejecutado se debe compilar y enlazar (linkar)
con todas aquellas funciones de la biblioteca que se necesiten.
4
Estos procesos son realizados por un programa llamado compilador. El
compilador en las máquinas Alpha del C. P. D. es el DEC OSF/1 Versión 4.0. Para
compilar y enlazar un programa con este compilador basta con hacer cc
nombre_del_programa.c para crear, si no hay errores, un ejecutable (a.out). Existen
múltiples opciones en el compilador que se pueden comprobar con el comando de
ayuda de los sistemas operativos.
Los ejemplos del curso siguen la sintaxis aceptada por el estándar ANSI, con lo
que son portables con cualquier otro compilador que lo lleve implementado.
COMPILADORES
INTERPRETES
5
TEMA 2 – HISTORIA DEL LENGUAJE C
Programación estructurada.
Economía en las expresiones.
Abundancia en operadores y tipos de datos.
Codificación en alto y bajo nivel simultáneamente.
Reemplaza ventajosamente la programación en ensamblador.
Utilización natural de las funciones primitivas del sistema.
No está orientado a ningún área en especial.
Producción de código objeto altamente optimizado.
Facilidad de aprendizaje.
Los tipos básicos de datos eran char (carácter), int (entero), float (reales en
simple precisión) y double (reales en doble precisión). Posteriormente se añadieron los
tipos short (enteros de longitud < longitud de un int), long (enteros de longitud >
longitud de un int), unsigned (enteros sin signo) y enumeraciones. Los tipos
estructurados básicos de C son las estructuras, las uniones y los arrays. Estos
permiten la definición y declaración de tipos derivados de mayor complejidad.
Hay toda una serie de operaciones que pueden hacerse con el lenguaje C, que
realmente no están incluidas en el compilador propiamente dicho, sino que las realiza
\n preprocesador justo antes de la compilación. Las dos más importantes son #define
(directriz de sustitución simbólica o de definición) e #include (directriz de inclusión en
el fichero fuente).
6
Finalmente, C, que ha sido pensado para ser altamente transportable y para
programar lo improgramable, igual que otros lenguajes tiene sus inconvenientes.
Carece de instrucciones de entrada/salida, de instrucciones para manejo de cadenas
de caracteres, entre otras, con lo que este trabajo queda para la biblioteca de
funciones, con la consiguiente pérdida de transportabilidad.
Lenguaje C++
C++ es, por lo tanto, un lenguaje híbrido, que, por una parte, ha adoptado to-
das las características de la OOP que no perju.diquen su efectividad; por ejemplo,
funciones virtuales y la ligadura dinámica (dynamic binding), y por otra parte,
mejora sustancialmente las capacidades de C. Esto dota a C++ de una potencia,
eficacia y flexibilidad que lo convierten en un estándar dentro de los lenguajes de
programación orientados a objetos.
7
UNIDAD II: DESARROLLO DE LA PROGRAMACION
REALIZACION DE UN PROGRAMA EN C
Según lo que hemos visto, un ordenador sólo puede ejecutar programas escritos en
lenguaje máquina. Por lo tanto, es necesario disponer de herramientas que permitan la
traducción de un programa escrito en un lenguaje de alto nivel, en nuestro caso en C, a
lenguaje máquina.
Editor saludo.c
Compilador C saludo.obj en MS-DOS o saludo.o en UNIX
Enlazador saludo.exe en MS-DOS o a.out por defecto en UNIX
Depurador ejecuta paso a paso el programa ejecutable
La tabla anterior indica que una vez editado el fichero fuente saludo.c, se compila
obteniéndose el fichero objeto saludo.obj o saludo.o, el cual es enlazado con las rutinas
necesarias de la biblioteca de C dando lugar a un único fichero ejecutable saludo.exe o
a.out. Es decir que muestra el proceso paso a paso desde el punto inicial de programación
hasta el fichero ejecutable que luego podrá ser utilizado por el usuario final.
EDICION DE UN PROGRAMA
8
textos suministrado con el compilador o nuestro propio procesador. El nombre del fichero
elegido para guardar el programa en el disco, debe tener como extensión .c.
El paso siguiente, es escribir el texto correspondiente al programa fuente. Cada
sentencia del lenguaje C finaliza con un punto y coma y cada línea del programa la
finalizamos pulsando la tecla Entrar (Enter).
Como ejercicio para practicar lo hasta ahora expuesto, escribir el siguiente ejemplo:
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * saludo * * * * * ** * * * * * * * * * * * * * * * * * * /
/ * saludo.c */
#include <stdio.h>
main ( )
{
printf (" Hola, MUNDO.\n") ;
}
Las dos primeras líneas son simplemente comentarios. Los comentarios no son
tenidos en cuenta por el compilador.
El programa editado está ahora en la memoria. Para que este trabajo pueda tener
continuidad, el programa escrito se debe grabar en el disco utilizando la orden
correspondiente del editor.
9
compilador el DEV C++, pero también se pueden realizar llamadas a compiladores
comunes en MS-DOS o UNIX, etc.
Ejemplos:
cI saludo.c
cc saludo.c -o saludo
Biblioteca de funciones
Para utilizar una función de la biblioteca simplemente hay que invocarla utilizando
su nombre y pasar los argumentos necesarios entre paréntesis. Por ejemplo:
10
PROGRAMA
FUENTE
PRE FICHEROS DE
PROCESADOR CABECERA (.h)
PROGRAMA
FUENTE
COMPILADOR
PROGRAMA
OBJETO
BIBLIOTECA DE
ENLAZADOR
FUNCIONES
PROGRAMA
EJECUTABLE
Como hemos visto, cada vez que se realiza el proceso de compilación y enlace del
programa actual, C genera automáticamente sobre el disco un fichero ejecutable. Este
fichero puede ser ejecutado directamente desde el sistema operativo, sin el soporte de C,
escribiendo el nombre del fichero a continuación del símbolo del sistema (prompt del
sistema) y pulsando Entrar.
11
enlazador (link) para unir en un único fichero ejecutable, el módulo o los módulos del
programa compilados separadamente y las funciones de la biblioteca del compilador C que
el programa utilice.
Depurar un programa
Una vez ejecutado el programa, la solución puede ser incorrecta. Este caso exige
un análisis minucioso de cómo se comporta el programa a lo largo de su ejecución; esto
es, hay que entrar en la fase de depuración del programa.
La forma más sencilla y eficaz para realizar este proceso, es utilizar un programa
depurador. En el apéndice A, se explica cómo utilizar el depurador Code view de Microsoft
con un programa MS-Dos y el depurador gdb con un programa UNIX.
12
- UN EJEMPLO SIMPLE -
Vamos a preparar un programa formado por un solo módulo fuente, con el fin de
depurarlo. El primer paso será editar el programa. Como ejemplo, escriba el siguiente
programa que imprime la suma, la diferencia, el producto y el cociente de dos números.
Este ejemplo no le costará entenderlo puesto que las sentencias tienen la misma
apariencia que en la vida ordinaria.
Edición
Ejecute el siguiente texto sobre un programa del DEV C++ y vea el programa de
ejemplo que se muestra a continuación.
/ * * * * * * * * * * * * * * * * * * * operaciones aritméticas * * * * * * * * * * * * * * * * * * */
// aritmeti.c
#include <stdio.h>
main ( )
{
int dato1, dato2, resultado;
dato1 = 20;
dato2 = 10;
// Suma
resultado = dato1 + dato2;
printf("%d + %d = %d\n", dato1, dato2, resultado);
// Explicacion de esta primera operación: las barras paralelas sirven para que el dev
interprete que lo que viene a continuación es un texto. En este caso asignamos la suma de
las variables dato1 + dato2 a la variable resultado, finalmente con la función printf
mostramos por pantalla los 3 valores gracias a utilizar %d y al finalizar la secuencia
asignarle los valores que quiero mostrar en este caso el primer %d recibe los datos de
dato1 y asi consecutivamente.
// Resta
resultado = dato1 - dato2;
printf(“%d - %d = %d\n", dato1, dato2, resultado);
// Producto
resultado = dato1 * dato2;
printf("%d * %d = %d\n", dato1, dato2, resultado);
// Cociente
resultado = dato1 / dato2;
printf("%d / %d = %d\n", dato1, dato2, resultado);
return 0;
}
13
int dato1, dato2, resultado;
*cada color corresponde al dato que toma nuestro programa para realizar los cálculos.
La expresión que aparece entre comillas en la función printf indica los caracteres
que queremos visualizar sobre el monitor, con una particularidad, que un carácter % indica
al compilador que el siguiente carácter (una d indica valor entero en base 10) no es un
carácter normal que tiene que visualizar, sino que se trata de un especificador de formato
que será sustituido por el valor correspondiente de la lista de valores especificada a
continuación. Según esto, la función printf anterior producirá el siguiente resultado:
20 + 10 = 30
return 0;
void main ()
{
…;
}
Compilación
Como siguiente paso, compilaremos el programa con las opciones necesarias para
posteriormente poder depurarlo. La orden correspondiente para compilar y el programa
aritmeti.c de forma que incluya la información necesaria para realizar la depuración, es la
siguiente:
Depuración
Las operaciones mínimas que debe incluir un depurador son las siguientes:
14
Rastrear
Permite ver la sentencia del programa que es ejecutada. Code View incluye
las siguientes opciones:
A. Ejecutar una sentencia cada vez, incluidas funciones definidas por el
usuario. Esta modalidad se activa y se continúa, pulsando la tecla
F8. Cuando la sentencia a ejecutar coincide con una llamada a una
función definida por el usuario y no queremos que ésta se ejecute
paso a paso, utilizaremos la tecla FlO en vez de FB.
B. Si pulsamos la tecla F5, la ejecución continúa hasta el final del
programa o hasta el primer punto de parada, si éste existe. El
depurador gdb utiliza la orden next (abreviadamente n) para ejecutar
la sentencia siguiente. La orden run inicia la ejecución y la orden c la
continua, por ejemplo, después de un punto de parada.
Punto de parada
Expresiones de seguimiento
15