Guía de Trabajos Prácticos 5
Guía de Trabajos Prácticos 5
Guía de Trabajos Prácticos 5
Unidad 7:
Estructura general de un Programa. Concepto de programa. Partes constitutivas de un programa.
Instrucciones y tipos instrucciones. Elementos básicos de un programa. Operadores y expresiones.
Estilos de Programación.
Distintos tipos de programación. Ventajas e inconvenientes. Comparaciones. Compiladores.
Intérpretes. Paradigma procedural: elementos básicos. Estructura general de un programa procedural.
Creación de un programa. Sentencias. Ejecución y depuración. Los elementos de un programa. Tipos
de datos. Constantes. Variables. Duración de una variable. Entradas y salidas.
Unidad 8:
Estructura de datos Estructura de datos. Conceptos de constante, variable. Campo, registro, archivos
y base de datos. Operaciones. Estructuras lineales y no lineales. Aplicaciones.
Lenguajes de bajo nivel. El lenguaje de bajo nivel por excelencia es el ensamblador. Este lenguaje es
simplemente una traducción directa de cada orden del procesador a una palabra que explique qué hace esa
orden (la palabra, evidentemente, está en inglés). En el ejemplo anterior, en vez de escribir 1000 0111,
escribiríamos ADD (suma en inglés)
Lenguajes de alto nivel. Los lenguajes de alto nivel, entre los que se encuentra el C, son la base de la
programación. En estos lenguajes, en vez de escribir ADD, por ejemplo, podemos escribir instrucciones del tipo
“C=A+B” (es decir, C es igual a la suma de A más B), mucho más cercanas a nuestro idioma natural. Existen
muchísimos lenguajes de alto nivel: Basic, Pascal, Fortran, Cobol, C… pero todos son muy parecidos, de forma
que una vez aprendido uno, es muy fácil aprender el resto.
Lenguajes orientados a objetos. Estos lenguajes son de nivel todavía más alto que los anteriores, aunque se
basan en ellos (por ejemplo C++ y Java, dos de los mas comunes, son extensiones de C). Al contrario de lo que
ocurre con los lenguajes de alto nivel y el ensamblador, no es posible aprender un lenguaje orientado a objetos
sin conocer antes un lenguaje de alto nivel.
Existen dos formas de obtener un código ejecutable a partir de un programa fuente: los intérpretes y los
compiladores:
Los intérpretes son lenguajes que leen las instrucciones en alto nivel y las traducen en tiempo real a lenguaje
máquina.
Los compiladores, en cambio, leen todo el fichero con el programa y lo traducen a otro fichero en lenguaje
máquina, que es el que podemos ejecutar. Existen, pues, dos ficheros en vez de uno, pero la gran ventaja es
que una vez compilado el programa, el compilador ya no es necesario y, además, el lenguaje compilado se
ejecuta mucho más rápido que el interpretado. C pertenece a este último tipo de lenguajes.
LENGUAJE C
Este lenguaje presenta varias características, entre las cuales están:
1. Lenguaje de programación de propósitos generales
2. Permite la Programación Estructurada
3. Abundancia de Operadores y Tipos de Datos
4. No está asociado a ningún sistema operativo ni a ninguna máquina
5. Popular y Eficaz
6. Permite el desarrollo de Sistemas Operativos y programas de aplicación
7. Portabilidad
8. Existen las librerías en las bibliotecas
9. Tiene sólo 32 palabras reservadas
Para convertir un algoritmo en un programa, se deben llevar a cabo las siguientes fases de puesta a punto:
EDICIÓN. En esta primera fase, el programador debe convertir el algoritmo que haya diseñado en instrucciones
escritas en C. Para ello, se debe hacer uso de un editor de textos, con el cual se obtendrá el llamadocódigo
fuente del programa. El programador deberá guardar dicho código fuente en un archivo con extensión (.c) o
(.cpp).
Si un programa escrito en C se va a compilar con un compilador de C, el código fuente debe ser guardado,
obligatoriamente, en un archivo con extensión (.c). Ahora bien, si se utiliza un compilador de C/C++, el archivo
se puede guardar con extensión (.c) o (.cpp).
PREPROCESO. El preproceso sirve para realizar modificaciones en el código fuente obtenido en la fase de
edición. Es el programador quien, mediante directivas del preprocesador, "dice" al preprocesador las
modificaciones que éste debe llevar a cabo.
COMPILACIÓN. Una vez que el código fuente ha sido preprocesado, elcompilador traducirá ese código fuente
(modificado) a código máquina, también llamado código objeto, siempre y cuando, el propio compilador no
detecte ningún error en dicho código fuente ya preprocesado.
Como resultado de la compilación, el compilador guardará el código objeto del programa en un archivo con otra
extensión, que, dependiendo del sistema operativo puede variar. Por ejemplo, en Windows, se guardará con la
extensión (.obj), abreviatura deobject.
ENLACE (LINKAJE O MONTAJE). Los programas pueden utilizar funciones de la biblioteca estándar de C,
tales como scanf o printf. De cada una de ellas existe un código objeto que debe ser enlazado (unido) al
código objeto del programa que las utilice. Esto se realiza mediante un programa
llamado enlazador, montador o linkador.
Como resultado del enlace, el enlazador guardará, en disco, un archivo ejecutable. En Windows, dicho archivo
tendrá extensión (.exe), abreviatura de executable. Dicho archivo será "el ejecutable".
Además de las funciones de la biblioteca estándar de C, el programador también puede utilizar funciones que
hayan sido desarrolladas por él mismo. Éstas pueden agruparse en su propia biblioteca de funciones (no
estándar). Por lo que, también en esta fase, el código objeto de dichas funciones deberá ser enlazado al código
objeto del programa que las utilice.
Gráficamente, el proceso de puesta a punto de un programa escrito en C se puede ver en las siguientes figuras:
ESTRUCTURA DE UN PROGRAMA EN C
Mencionaremos algunos de los errores típicos al programar, para que el
alumno sepa como identificarlos y así los pueda corregir.
1. ERROR DE SINTAXIS: Estos errores son producidos, cuando se hace
mal uso de las reglas del lenguaje de programación, y se violan las normas de
sintaxis, de ese lenguaje (en nuestro caso C); estos errores son fáciles de
detectar por que generalmente es el compilador, que los identifica (Y hasta muestra la línea donde se
encuentra dicho error, pero eso depende de la versión del compilador que estemos usando).
Ejemplo 1:
1) /*Programa que calcula el cuadrado de un número ingresado por teclado.*/
2) #include <stdio.h>
3) void main(void)
4) {
5) int a;
6) int r;
7) printf(“Ingrese número: “);
8) scanf(“%d”, &a);
9) r=a*a;
10) printf(“\nEl resultado de %d elevado al cuadrado es %d”, a, r);
11) system(“pause”);
12) }
1- Comentarios. Es de buen programador escribir un par de líneas al principio explicando que hace el programa
y alguna que otra cosa útil.
2- Se incluye en este caso el archivo stdio.h para el correcto funcionamiento del programa ya que está haciendo
uso de las funciones printf() y scanf(). Se deben incluir todos los archivos de cabecera necesarios, de acuerdo
con las funciones a utilizar.
3- Como ya se dijo, todos los programas en C comienzan con las ejecución de la función main. El primer void
indica que la función no retorna valores y el void entre () que no recibe valores o parámetros. (más adelante,
cuando se vean funciones, se extenderá esta explicación).
4- Llave que abre el conjunto de sentencias pertenecientes a main().
5- Y (6) Declaración de variables. En este caso dos variables de tipo int, (enteras).
7- Uso de la función printf() con una cadena de caracteres como único argumento. Salida del mensaje por pantalla.
8- Uso de la función scanf(). El %d como primer argumento, dice que lea un entero y lo guarde en la variable a.
El símbolo & se explica más adelante.
9- El cálculo a*a se almacena en r.
10- En este caso la función printf() tiene tres argumentos, la cadena de caracteres y las variables a y b. Los %d
en la cadena le dice que intercale los contenidos de la variables enteras en esas posiciones de la cadena. El
\n delante de la cadena indica que se debe realizar un salto de línea y retorno de carro antes de imprimir el
texto. La salida en caso que a =4 sería: El resultado de 4 elevado al cuadrado es: 16.
11- Mediante esta función se ejecuta el comando pause del sistema, que evita que el programa siga hasta que
se presione una tecla.
12- La llave que cierra la función main().
Ejemplo 2:
3) #include <conio.h>
4) int main()
5) {
6) int numero;
7) clrscr()
8) printf("Escriba un número: \n");
9) scanf("%d", &numero);
10) if (numero>0) printf("El número es positivo.\n");
11) system(“pause”);
12) }
Este programa lo único que hace es sacar por pantalla el mensaje: El número es positivo
#include <stdio.h>
#include es lo que se llama una directiva. Sirve para indicar al compilador que incluya otro archivo. Cuando en
compilador se encuentra con esta directiva la sustituye por el archivo indicado. En este caso es el archivo
stdio.h que es donde está definida la función printf, que veremos luego.
#include <conio.h>
La directiva #include <conio.h>, la necesitamos para usar clrscr().
int numero;
Esto hace que declaremos una variable llamada numero que va a contener un número entero.
int main()
Es la función principal del programa. Todos los programas de C deben tener una función llamada main.
Es la que primero se ejecuta. El int (viene de Integer=Entero) que tiene al principio significa que cuando la
función main acabe devolverá un número entero. Este valor se suele usar para saber cómo ha terminado el
programa. Normalmente este valor será 0 si todo ha ido bien, o un valor distinto si se ha producido algún error.
De esta forma si nuestro programa se ejecuta desde otro el programa 'padre' sabe como ha finalizado, si ha
habido errores o no.
Se puede usar la definición 'void main()', que no necesita devolver ningún valor, pero se recomienda la forma
con 'int' que es más correcta.
{
Son las llaves que indican el comienzo de una función, en este caso la función main.
scanf("%d", &numero);
El uso de scanf es muy similar al de printf con una diferencia, nos da la posibilidad de que el usuario introduzca
datos en vez de mostrarlos. No nos permite mostrar texto en la pantalla, por eso si queremos mostrar un
mensaje usamos un printf delante.
}
...y cerramos llaves con lo que termina el programa. Todos los programas finalizan cuando se llega al final de la
función main.
La Sentencia IF
En C la estructura de control de selección principal es una sentencia IF. La sentencia IF tiene dos formatos o
alternativas posibles: SIMPLE o DOBLE
Supongamos por ejemplo, que tenemos el caso de que los alumnos cuya calificación sea mayor o igual que 6
tienen nota suficiente para aprobar el curso. El enunciado seria el siguiente en pseudocódigo:
Si nota del estudiante mayor o igual que 6
Escriba “APROBADO”
Lo que la estructura de selección hace es evaluar la expresión “nota del estudiante es mayor o igual que 6”. Si
el resultado de esta evaluación es Verdadero, entonces se imprime “APROBADO” pero si el resultado de la
evaluación es Falso; se ignora la impresión y ejecuta la línea que sigue después de la decisión.
Para una mayor comprensión se presenta el diagrama de flujo de la decisión anterior:
En este caso, nos estamos refiriendo a una estructura de selección simple ya que no se ejecuta ninguna acción
en el caso que la condición sea falsa.
Si en el ejemplo cambiáramos la condición y dijéramos que si la nota no es mayor o igual a 6 entonces escribir
“REPROBADO”, en este caso nos estamos refiriendo a una estructura de selección DOBLE, ya que existen las
dos opciones: que la condición sea verdadera, o que sea falsa.
Sintaxis en lenguaje C
Para la estructura selectiva simple:
if (condición) {
[instrucciones]
}
Para la estructura selectiva doble, agregamos la palabra else para indicar el grupo de
instrucciones cuando la condición es falsa.
if (condición) {
[instrucciones_1]
} else {
[instrucciones_2]
}
EJERCICIOS RESUELTOS:
En base al parámetro de 6.0 como nota para poder aprobar el curso, escriba APROBADO si el alumno cumple
con la nota mínima o si ésta es mayor, pero deberá escribir REPROBADO si la nota es menor.
#include <stdio.h>
main ( )
{
float nota;
printf("\nEscriba su nota: ");
scanf("%f",¬a);
if (nota >= 6)
{
printf ("\n ha APROBADO el curso con una nota de %.2f",nota);
printf ("\n y puede inscribirse en el modulo siguiente\n");
}
else
{
printf ("\n usted ha REPROBADO el curso con una nota de %.2f\n",nota);
}
system("pause");
}
3. Dado un número introducido por teclado, indicar si éste es positivo, negativo o nulo.
4. De 10 números ingresados indicar cuantos son mayores a cero y cuantos son menores a cero.
Por ejemplo:
do
x = x + 1;
while (x < 100);
Se incrementará el valor de x hasta que x valga 100.
BUCLE "FOR"
Por último el bucle "for", es el más elaborado. La sintaxis es:
for ( [<inicialización>]; [<condición>] ; [<incremento>] )
<sentencia>
La sentencia es ejecutada repetidamente hasta que la evaluación de la condición resulte falsa.
Antes de la primera iteración se ejecutará la iniciación del bucle, que puede ser una expresión o una
declaración. En este apartado se iniciarán las variables usadas en el bucle. Estas variables pueden ser
declaradas en este punto, pero en ese caso tendrán validez sólo dentro del bucle "for". Después de cada
iteración se ejecutará el incremento de las variables del bucle.
Todas las expresiones son opcionales, si no se especifica la condición se asume que es verdadera.
Por ejemplo:
for (int i = 0; i < 100; i = i + 1);
Como las expresiones son opcionales, podemos simular bucles "while":
for(;i < 100;) i = i +1;
for(;i++ < 100;);
Ejemplo 1:
/*programa que muestra una tabla de conversiones de temperatura de grados Farenheit a grados Celsius, de
0ºF a 300ºF de 20 en 20ºF*/
#include <stdio.h>
main()
{
int i;
float c;
for (i=0;i<=300;i+=20)
{
c=(5./9)*(i-32);
printf("%3d grados Farenheit equivalen a %4.4f grados Celsius\n",i,c);
}
system(“pause”);
}
Al abrir el entorno de desarrollo Dev-C++ por primera vez, se encuentra un entorno de trabajo similar al siguiente
Desde este entorno está permitido abrir, modificar y guardar tanto proyectos como archivos desarrollados en C y
C++.
Compilar y Ejecutar
Para Compilar un archivo primero se debe guardar, para ello ir a: Archivo -> Guardar Como ...
Aparecerá una pantalla donde le pedirá que ingrese el nombre del archivo, por defecto Dev-C++ lo nombra como
main, el cual puede ser cambiado por otro, siempre recordando que por tratarse de una aplicación para DOS
debe ser corto y sin espacios intermedios.
Guarda todos los archivos que hayan sido modificados durante nuestra sesión de trabajo.
En Dev-C++ el proceso de
compilación y “linkado” se tratan
como si fueran sólo uno, y el
programador no puede intervenir
durante el mismo.
Si el resultado de la compilación y el
“linkado” es satisfactorio, Dev-C++
generará un archivo ejecutable con el
nombre del proyecto activo.
El ejecutable generado puede ser utilizado independientemente de los archivos del proyecto. Su ejecución se
puede hacer a través de la pestaña: Ejecutar -> Ejecutar
Ejercicios.
2. Escriba en C un programa que calcule el área y la longitud de una circunferencia cuyo radio es
leído desde el teclado.
3. Escriba un programa que a partir de n segundos ingresados por teclado calcule la cantidad de
horas, minutos y segundos correspondientes.
4. Escriba un programa que a partir de un numero entero ingresado por teclado informe si el
número es positivo o negativo. Analizar el caso del número sin signo.
5. Escriba un programa en C que a partir de tres números ingresados por teclado informe cual es
el mayor y cuál es el menor.
6. Escribir un programa que sea capaz de calcular e informar el mayor y el menor de una
secuencia de N números ingresados por teclado. ¿Teniendo como parámetro N, que
estructura repetitiva se utiliza? Fundamente y realice las pruebas de escritorio
correspondiente.
7. Escribir un programa que sea capaz de calcular e informar el mayor y el menor de una
secuencia de números ingresados por teclado, esta secuencia acaba cuando se ingresa el
número -1. ¿Teniendo en cuenta cómo termina la secuencia, que estructura repetitiva se
utiliza? Fundamente y realice las pruebas de escritorio correspondiente.
9. Escriba un programa que calcule y muestre por pantalla la tabla de conversiones de Fahrenheit
a Celsius, desde 0ºF a 300ºF con un incremento de 20ºF.
10. Escriba un programa que sirva para ingresar las notas de los exámenes de diez alumnos para
para calcular y mostrar por pantalla:
a. El promedio de las diez
b. La mayor nota
c. La menor nota
d. Cantidad de notas aprobadas (nota<=6)
11. Durante 12 meses se midió la altura de un río, una vez por mes. Escribir un programa en
lenguaje C que permita cargar en una vector dichas alturas y luego se pueda recorrer ese
vector para poder obtener la mayor altura y el mes en el que se produjo.