PRÁCTICA 3.PRIMEROS PROGRAMAS EN C. 1. De dónde

Anuncio
Fundamentos de la Informática
Primero de Ingeniería Técnica Industrial
Mecánica, Química, Electricidad y Electrónica
Departamento de Tecnologías de la Información
PRÁCTICA 3.PRIMEROS PROGRAMAS EN C.
1. De dónde venimos, a dónde vamos, y qué queremos conseguir.
A estas alturas de curso usted ya debe saber qué pasos tiene que seguir para resolver un
problema computable. Recuerde:
1. Analizar el problema.
2. Encontrar un algoritmo que lo resuelva.
3. Especificar ese algoritmo utilizando alguna técnica formal: pseudocódigo o diagrama de
flujo.
4. Implementar el algoritmo especificado en un lenguaje determinado. En nuestro caso en
el lenguaje C.
También debe entender ya plenamente que un ordenador sólo entiende unos y ceros y que es
imprescindible la utilización de un compilador (o un intérprete) que nos permita traducir el
lenguaje de Alto Nivel en el cual implementamos nuestro algoritmo a un lenguaje entendible
por el ordenador.
El paso siguiente en su andadura para aprender a resolver determinados problemas mediante el
uso de un ordenador es aprender un lenguaje de programación concreto mediante el cual
podamos escribir nuestros programas, es decir, aprender a programar.
A la hora de aprender a programar es necesario que entienda que debe aprender tres cosas
distintas:
1. Por un lado, deberá aprender una serie de conceptos nuevos que no ha visto hasta
ahora en su formación técnica (como son los conceptos de tipo, sentencias de
control, etc.) y que por tanto necesitará de un esfuerzo importante para asimilarlos.
2. Además de aprender conceptos nuevos, deberá aprender la sintaxis de un lenguaje
de programación. Aprender la sintaxis de un lenguaje de programación es como
aprender cualquier otro idioma (inglés, italiano, etc.), usted necesita conocer qué
palabras existen en el lenguaje, qué significan y cómo se pueden combinar.
3. Y por último necesita conocer las opciones del entorno de programación que
utilizará para escribir programas, sobre todo aquella parte del entorno que le permite
depurar el código de un programa, es decir, que le ayuda a encontrar los fallos.
Podemos decir que esto no ha hecho más que empezar. A partir de esta práctica usted aprenderá
la sintaxis del lenguaje C, pero nunca olvide que el fin de esta asignatura no es aprender a
escribir programas en C (que es una condición sine qua non) sino que la función de esta
asignatura en su aprendizaje como técnico es aprender una serie de conceptos de programación
(1) y aplicarlos con un lenguaje concreto (2) utilizando una herramienta determinada (3).
Una vez centrada nuestra evolución y aclarada nuestra finalidad, veamos lo que trataremos en
esta práctica.
Fundamentos de la Informática
Primero de Ingeniería Técnica Industrial
Mecánica, Química, Electricidad y Electrónica
Departamento de Tecnologías de la Información
2. Introducción a la práctica 3.
En esta práctica comprobará si ha entendido plenamente los conceptos vistos en el Tema 4 de
teoría, de modo que antes de asistir a las clases de prácticas o de realizar los ejercicios que se
proponen debería repasar dicho tema, siguiendo las tres vertientes antes apuntadas: nuevos
conceptos, nuevas funciones del lenguaje C y nuevos características del entorno.
3. Conceptos nuevos
Los conceptos nuevos introducidos son:
1)
2)
3)
4)
5)
6)
Variables y constantes
Tipos de datos
Módulos o funciones.
Tipos de funciones (definidas por el usuario o predefinidas)
Biblioteca de funciones
Expresiones y operadores
4. Lenguaje C
Las nuevas características de C que ha aprendido necesita saber para la realización de esta
práctica son:
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
Existencia de palabras reservadas
Cómo crear un identificador de variable o constante en C
Cómo crear y manejar variables
Cómo crear y manejar constantes
Qué tipos de datos existen en C
Qué calificadores de tipos de datos existen en C
Problemas de conversión de tipos en expresiones y asignaciones en C
Qué operadores existen en C y su precedencia
Significado de la función main( )
Significado y uso de los ficheros de cabeceras en C, en particular stdio.h
Cómo introducir comentarios en un programa
Funciones de entrada: getch( ), getche( ), gets( ) y printf( ).
Funciones de salida: putch( ), putchar( ), puts( ), scanf( ).
5. Entorno Dev-C++.
Obviamente en las clases de teoría no recibirá nueva información sobre el entorno de
programación, excepto casos excepcionales. En cualquier caso, aconsejamos que investigue las
opciones de depuración de Dev-C++, bien a través de la ayuda que ofrece el propio entorno, o
bien mediante un libro, o a través de la Web como por ejemplo:
http://c.conclase.net/devcpp.php?art=depurar.
Eso le ayudará a ejecutar el programa paso a paso y ver el contenido de las variables durante la
ejecución del programa, lo que le ayudará a entender los nuevos conceptos.
Fundamentos de la Informática
Primero de Ingeniería Técnica Industrial
Mecánica, Química, Electricidad y Electrónica
Departamento de Tecnologías de la Información
6. Ejercicios propuestos
Con todo lo que ha visto en el Tema 4 de teoría, usted ya puede comenzar a hacer programas en
C. A continuación le ofrecemos una serie de ejercicios que debería usted intentar hacer:
1) Realizar un programa que pida dos números enteros por teclado y a continuación
calcule su suma, su diferencia, su producto y su cociente y los muestre por pantalla
2) Realizar un programa que halle la longitud, la superficie y el volumen de la
circunferencia. El programa deberá pedir el radio de la circunferencia. Fórmulas:
Longitud = 2 * PI * R; Superficie = PI * R2 ; Volumen = 4 * PI * R3 / 3.
3) Realizar un programa que pida el año de nacimiento del usuario y el año actual y
calcule el número de días que lleva viviendo (puede suponer que cada año tiene 365
días, y que no existen los años bisiestos).
4) Determine cuáles de los siguientes identificadores son válidos. Si son inválidos
explique por qué (pruébelos en el Dev-C++ si tiene dudas):
a) registro 1
b) 1registro1
c) archivo_3
d) float
e) $impuesto
f) _nombre
g) nombre A
h) 123_opcion
i) Belen
j) Resultado_total
i) N_pasaje3
j) Float
5) A continuación se muestra la sección de declaración de variables de un
programa mal escrito en C. Explique cada una de las líneas que componen el
siguiente programa con fallos (para explicar cada línea, imagine que el
programa no tiene fallos):
#include <stdio.h>
#define PI = 3.1415
#define EDAD 34
//Función principal
int main (void)
{
/*Ejemplo de un programa en C*/
int a;
Int b,c=10,d;
short int edad = 39;
long int habitantes = 123421; millas = 42341;
unsigned char A;
char f = ‘w’, opcion = ‘S’, nombre = ‘edo’;
char b = 93;
char sexo = “M”;
float pi = 3.1416;
double ganancias;
return 0;
}
Este programa contiene 5 fallos. Encuéntrelos y explique qué es lo que ocurre. Para
asegurarse compruébelo de manera práctica, compilándolo con el Dev-C++.
Fundamentos de la Informática
Primero de Ingeniería Técnica Industrial
Mecánica, Química, Electricidad y Electrónica
Departamento de Tecnologías de la Información
6) Indique los valores de las variables num1,num2 y num3 en cada una de las líneas de
la función principal del siguiente programa. Responda a la pregunta que se formula
en el comentario del programa.
#include <stdio.h>
#define PI 3.1416
//Función principal
int main (void )
{
//Declaración de variables
int num1 = 10;
int num2, num3;
//Sentencias del programa
num2 = 23 ;
/*Pregunta: ¿Cuánto vale num3 en este momento? */
num3 = num1 + num2;
num1 = num1 + num3;
num2 = 3 + num2 ;
num3= 0;
num1= PI + num2 + num3 + 1;
return 0;
}
Si tiene algún tipo de dudas codifique el programa, compílelo, ejecútelo y utilice la
instrucción printf( ) para averiguar el valor de cada variable en cada línea.
7) Corrija el siguiente programa. Para salir de dudas, intente compilarlo.
main ( ) /* Este programa es perfecto
{
// Declaración de variables
vacas, patas int;
//Programa principal
printf (“¿Cuántas patas has contado? \n);
scanf (“%c %c”, patas);
vacas = patas / 4;
printf (“Me parece que debe haber %d vacas |n”, &vacas);
getch ( );
}
8) ¿Qué imprimiría este programa? Asegúrese de ello compilándolo.
#include <stdio.h>
#include <conio.h>
int main (void )
{
int num = 0;
printf (“%i \n”, ++num);
printf (“%i \n”, num++);
printf (“%i \n”, num--);
printf (“%i \n”, num);
getch ( );
return 0;
}
Fundamentos de la Informática
Primero de Ingeniería Técnica Industrial
Mecánica, Química, Electricidad y Electrónica
Departamento de Tecnologías de la Información
9) Escriba un programa que lea cinco notas de exámenes por teclado y calcule la nota
media obtenida. Los datos de entrada deben leerse en la misma línea y el resultado
deberá mostrarse por pantalla
10) Realice un programa que pida una cantidad en pesetas y devuelva su equivalente en
dólares americanos y en euros. Nota: Utilice constantes para guardar el valor
cambio en pesetas del dólar y del euro.
11) Realice un programa que calcule el área del triángulo, siguiendo el diagrama de
flujo que se muestra a continuación:
Base
Altura
Area = (Base * Altura) / 2
Area
7. Conocimientos mínimos
Después de haber realizado esta práctica usted debería responder sin dilación a las siguientes
preguntas. Si no es así es que no ha aprendido lo suficiente, de modo que deberá repasar algunos
conceptos.
•
•
•
•
•
•
•
•
•
•
•
¿Qué es un programa? ¿Qué es un lenguaje de programación?
Qué diferencias existen entre: Lenguaje C, Compilador de C y Entorno Integrado de
Desarrollo Dev-C++
Qué diferencia existe entre una constante y una variable.
Formas de definir una constante en C. Ponga ejemplos.
¿Qué es un identificador? ¿y un tipo de datos? Indique cuántos tipos de datos existen en
C y por qué se caracteriza cada uno. Ponga ejemplos
Qué es una declaración de variable. ¿Qué información se especifica en una declaración
de variable? ¿Cómo se declara una variable en C? Ponga ejemplos.
¿Qué es una palabra clave en C? Ponga ejemplos. ¿Puede un identificador en C llamarse
igual que una palabra clave?
¿Qué es una expresión? ¿Cuáles son sus componentes?
¿Es obligatorio inicializar las variables con algún valor cuando se definen? ¿y las
constantes?
¿Se pueden utilizar variables en un programa en C sin haberlas declarado previamente?
¿Dónde deben ser declaradas las variables? ¿Se puede declarar más de una variable en
una misma declaración? En caso afirmativo indicar qué deben cumplir dichas variables.
Qué es una sentencia de asignación. ¿Para qué sirve?
Fundamentos de la Informática
Primero de Ingeniería Técnica Industrial
Mecánica, Química, Electricidad y Electrónica
Departamento de Tecnologías de la Información
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
¿Qué es un cualificador de tipo? ¿Para que sirve? Enumere los cualificadores existentes
en C y explique su significado.
¿Cómo se determina el tipo de una expresión aritmética cuando los operandos son de
tipos diferentes? Ejemplo: Dada una variable entera a y otra flotante f de qué tipo sería
a + f. Explicar qué ocurriría en el ejemplo. Explicar que ocurriría de forma genérica
fuese cual fuese los tipos de las variables a y f.
¿Cómo funciona la conversión de tipos cuando en una sentencia de asignación se
intenta almacenar en una variable una expresión que no es de su tipo? Ejemplo: Dada
una variable entera a y otra flotante f inicializada con valor 5.24 ¿cómo funciona la
conversión de tipos en expresiones como a = f ? ¿Qué valor se almacena en a?
Explicar que ocurriría en el ejemplo. Explicar que ocurriría de forma genérica fuese
cual fuese los tipos de las variables a y f.
¿Cómo se puede cambiar el valor de una expresión a un tipo de datos diferentes?
¿Cómo se llama a esto?
¿Qué es una biblioteca, referida a un leguaje de programación?
¿Qué se entiende por biblioteca estándar de C?
¿Por qué si todas las instrucciones en C acaban en punto y coma (;), la instrucción
#define no lo lleva?
Averigüe para qué sirve la opción del Dev-C++:
- Depurar Æ Añadir Watch
Cree un programa sencillo donde se use un par de variables e introduzca el nombre de la
variable en la ventana Depurar: ¿qué ocurre? ¿Para qué sirve esa ventana? ¿Qué utilidad
cree usted que puede darle?
Pruebe, con la ventana Depurar visible, a situarse sobre el código del programa e ir
pulsando la tecla F7 ¿qué ocurre? Fíjese en la ventana Depurar.
¿Qué valor tiene una variable en C inicialmente en el momento de crearla? (Puede
averiguar esta pregunta usando el Dev-C++, basándose en lo visto en las preguntas
anteriores)
La función system(“cls”) es un función predefinida que nos permite borrar la pantalla
¿ha probado a llamar a esta función antes de crear las variables?, ¿qué ocurre?, ¿y si la
llama justo después de la última declaración de variables qué ocurre? ¿por qué? (Puede
averiguar esta pregunta usando el Dev-C++)
¿Cuándo utiliza la directiva #define para crear una constante: es necesario utilizar el
símbolo de igual (=) para asignarle un valor a la constante? (Puede averiguar la
respuesta a esta pregunta usando el Dev-C++)
Para qué sirve el operador &
Para qué sirve la función scanf( )
Qué ocurre cuando en una función scanf( ) no precedemos a las variables donde
guardaremos los valores que se lean por teclado del operador &. Pruebe un par de
ejemplo (con y sin &) utilizando la ventana Depurar y la tecla F7.
8. La Frase....
“Su computadora, su compilador y la ayuda de su entorno son buenos maestros. Si no está
seguro de cómo funciona una característica de C, escriba un programa de muestra con dichas
características, compile y ejecute el programa, y vea qué es lo que ocurre.”
H.M. Deitel & P.J. Deitel.
Practicas sanas de programación.
Cómo programar en C/C++.
Descargar