fundamentos de informática - escuela de informática UTEM

Anuncio
FUNDAMENTOS DE INFORMÁTICA
1º INGENIERÍA TÉCNICA INDUSTRIAL
ESCUELA UNIVERSITARIA POLITÉCNICA
EJERCICIOS DEL TEMA 6: INTRODUCCIÓN AL LENGUAJE C
Contenidos:
•
•
•
•
•
•
•
Declaraciones de variables y tipos de datos
Presentación o escritura de datos con printf()
Modificadores de formato
Petición o lectura de datos con scanf()
Conversión de tipos
Operador sizeof()
Funciones matemáticas
Ejercicios propuestos
IMPORTANTE: Para poder ver el resultado de la ejecución de los programas que se
ponen como ejemplos y los que haga en el entorno de programación Dev-C++ tendrá
que incluir al final de cada uno una instrucción de pausa o bien una instrucción de
lectura. Para ello puede incluir al final de cada programa una de las siguientes
instrucciones:
system(“Pause”);
Envía una señal de pausa al sistema operativo.
Incluya el fichero de cabeceras stdlib.h.
getch();
Espera a que introduzcamos cualquier carácter por
teclado. Incluya conio.h.
1. Escribe el siguiente programa en tu ordenador:
#include <stdio.h>
void main() {
int a;
printf("Dame un valor: ");
scanf("%d", &a);
printf("El valor que has introducido es %d\n",a);
}
Pruébalo con los siguientes tipos de datos y escribe al lado el resultado que has
obtenido:
• Un número entero Æ Entrada ______________ Salida __________________
• Un número real Æ Entrada _______________ Salida ___________________
• Un carácter Æ Entrada ________________ Salida _____________________
Introduce ahora un número de 10 cifras cuando lo pruebes, ¿qué resultado sale?
___________________
¿Cuál es el problema?__________________________________________________
1
Modifica el programa en tu ordenador para que funcione bien. Anota sobre el
programa anterior los cambios que has tenido que hacer.
2. Repite el ejercicio anterior, pero haciendo que el programa declare la variable
utilizada para guardar el número como una variable real. Ejecuta el programa cuatro
veces, introduciendo los siguientes tipos de datos:
• Un número entero Æ Entrada ________________ Salida __________________
• Un número decimal con menos de seis decimales Æ Entrada _______________
Salida ______________
• Un número decimal con más de seis decimales Æ Entrada _________________
Salida ______________
• Un carácter Æ Entrada ________________ Salida ________________
3. El siguiente programa lee dos números enteros desde teclado, posteriormente los
suma, almacenando el resultado en una variable, y finalmente escribe por pantalla el
resultado de la suma.
#include <stdio.h>
void main() {
int a,b;
printf("Dame un valor: ");
scanf("%d", &a);
printf("Dame otro valor: ");
scanf("%d", b);
s=a+b;
printf("El resultado de sumar %d + %d es ",a,b,s);
}
Nota: El programa tiene tres errores, corrígelos antes de ejecutarlo en tu ordenador.
Prueba el programa con las siguientes parejas de datos y anota el resultado que produce:
Entradas: 13567 , 543
Resultado Æ _________________
¿Hay algún problema? ¿Cuál?
Entradas: 24345567 , 167659087 Resultado Æ _________________
¿Hay algún problema? ¿Cuál?
Entradas: 1, 90000000000
Resultado Æ _________________
¿Hay algún problema? ¿Cuál?
4. ¿Cuál es la salida del siguiente programa?
Salida 1:
Salida 2:
#include <stdio.h>
void main() {
printf("%d\n%d\n%d\n---\n%d\n",
6,18,124,6+18+124);
}
¿Y del siguiente?
#include <stdio.h>
void main() {
printf("%3d\n%3d\n%3d\n---\n%3d\n",
6,18,124,6+18+124);
}
2
5. Retoca el programa del ejercicio 3 para comprobar el comportamiento de la anchura
de campo dentro de la instrucción printf(). Para ello puedes colocar distintos
valores de la anchura de campo como se muestra a continuación:
#include <stdio.h>
void main() {
printf("El resultado de <%6d> + <%6d> es <%6d>",
234,22000,234+22000);
}
Nota: Los ángulos <> son sólo para delimitar cuántos espacios se han dejado libres
dependiendo de la anchura de campo que se ponga.
Analiza ahora los siguientes aspectos:
a. ¿Qué ocurre si la anchura de campo no es suficiente (por ejemplo, se pone a 2)?
b. ¿Qué ocurre si se pone un número negativo (por ejemplo, -6)?
c. Para los valores reales, además de la anchura de campo se puede especificar la
precisión del siguiente modo: %6.3f, donde el 3 indica el número de dígitos
decimales que se muestran por pantalla. Comprueba, cambiando los datos a reales,
cuál es el comportamiento en pantalla si se varía el parámetro que indica la
precisión.
6. El siguiente programa escrito en C tiene 5 errores. Lee atentamente los mensajes de
error que indica el compilador y encuéntralos.
/*-------------------------------------------------------*/
/*
Autor:
*/
/*
Fecha:
Versión:
*/
/*-------------------------------------------------------*/
/*
Programa ejemplo sobre errores léxicos,
*/
/*
sintácticos y semánticos
*/
/*-------------------------------------------------------*/
#include <stdio.h>;
#define tasa 25.0
main() {
float horas, dias, total, neto;
printf("Introduce las horas trabajadas: ");
scanf("%f", &horas);
printf("Introduce los días trabajados: ")
scanf("%f", &dias);
horas*dias = total;
neto = total-Tasa;
printf("El valor total a pagar es: %12.5f, total);
printf("El valor neto a pagar es: %12.5f", NETO);
}
7. Escribe un programa que lea una palabra de cuatro letras por teclado, y
posteriormente escriba dicha palabra de manera que cada letra se encuentre
codificada sustituyéndola por aquel carácter que le sigue en la tabla de códigos
ASCII.
3
8. Escribe un programa que lea una palabra de cuatro letras y a continuación la escriba
en mayúsculas. Hágalo usando la función toupper()de la librería ctype.h y sin
usarla. Nota: La función toupper() convierte la letra que se le pasa como
argumento a mayúscula si es posible. Análogamente existe la función tolower()
que convierte una letra a minúscula.
9. Escribe el resultado que produce cada una de las siguientes instrucciones, teniendo
en cuenta la declaración de variables que aparece. Piensa primero cual sería el
resultado y compruébalo después.
int d=2, v=50, n=10, t=5;
a.
b.
c.
d.
e.
f.
n / t +
v / t +
v - 3 *
v + n /
(v + n)
v + n /
3
n
n
t
/
t
- 10 * d
+ 4 * d
* d
(t + d)
+ d
Æ
Æ
Æ
Æ
Æ
Æ
g. d / 57
h. 18 / -t
i.
v%3
j. ‘g’-‘a’+1
k. ‘G’-‘A’+1
l.
d*=n+1
Æ
Æ
Æ
Æ
Æ
Æ
10. Escriba un programa que muestre por pantalla el número de bytes que se reservan en
memoria para los siguientes tipos de datos: int, short int, long int, unsigned int,
unsigned short int y unsigned long int. Además el programa deberá mostrar los
rangos de valores permitidos para los mismos tipos de datos. Estos rangos se
calculan del siguiente modo:
Para los tipos enteros con signo: [-(2 n-1), 2 n-1-1]
Para los tipos enteros sin signo: [0, 2 n -1]
donde n es el número de bits reservado para cada tipo.
Nota: Utilice el operador sizeof(), que devuelve el número de bytes reservado
para cada tipo. Además utilice la función pow() de la librería math.h para calcular
cada potencia que aparece en la fórmula. Por ejemplo, para elevar 2 a n tendrá que
usar pow(2,n).
11. Escriba un programa para calcular el tiempo transcurrido, en minutos, necesario
para hacer un viaje. La ecuación es tiempo transcurrido = distancia total/velocidad
promedio. Suponga que la distancia está en kilómetros y la velocidad en
kilómetros/hora. Antes de escribir el programa analice los siguientes puntos:
Datos de entrada al programa: ___________________________________________
Dados de salida: ______________________________________________
Relación entre los datos de entrada y salida: ________________________________
Una vez analizados esos puntos escriba el programa y anote el tiempo (en minutos)
que le devuelve si la distancia son 30 km y la velocidad 110 km/h:
________________
4
12. La ley de Coulomb indica que la fuerza, F, que actúa entre dos esferas con carga
eléctrica puede obtenerse con la fórmula F=kq1q2/r, donde q1 es la carga de la
primera esfera, q2 es la carga de la segunda esfera, r es la distancia entre los centros
de las dos esferas, y k es una constante de proporcionalidad (busque su valor).
Escribe un programa para calcular la fuerza, F. Analice los siguientes puntos:
Datos de entrada al programa:___________________________________________
Valores constantes: ___________________________________________________
Datos de salida: ______________________________________________________
13. Un tonel es un recipiente, generalmente de madera, muy utilizado para almacenar y
mejorar un vino. La forma de un tonel es muy característica y es un cilindro en el
que la parte central es más gruesa, es decir, tiene un diámetro mayor que los
extremos. Escriba un programa que lea las medidas de un tonel y nos devuelva su
capacidad, teniendo en cuenta que el volumen (V) de un tonel viene dado por la
siguiente fórmula: V = π l a2 , donde:
l es la longitud del tonel, su altura.
a = d/2 + 2/3(D/2 - d/2)
d es el diámetro del tonel en sus extremos.
D es el diámetro del tonel en el centro: D>d
Nota: Observe que si las medidas se dan en centímetros el resultado lo obtenemos
en centímetros cúbicos.
14. Modifique el programa anterior para que, suponiendo que las medidas de entrada
son dadas en centímetros, el resultado lo muestre en: litros, centímetros cúbicos y
metros cúbicos. Recuerde que 1 litro es equivalente a un decímetro cúbico. Indique
siempre la unidad de medida empleada.
15. Hacer un programa que pida:
a.
b.
c.
d.
El total de kilómetros recorridos.
El precio de la gasolina por litro.
El dinero de gasolina invertido en el viaje.
El tiempo que se ha tardado en el viaje (en horas y minutos).
Y calcule los siguientes datos:
a. El consumo de gasolina (en litros y euros) por cada 100 kilómetros.
b. El consumo de gasolina (en litros y euros) por cada kilómetro.
c. La velocidad media (en Km/h y m/sg).
16. Escriba un programa en C para calcular el valor de la pendiente de una línea que
conecta dos puntos (x1,y1) y (x2,y2). La pendiente está dada por la ecuación (y2y1)/(x2-x1). Haga que el programa también calcule el punto medio de la línea que
une los dos puntos, el cual viene dado por (x1+x2)/2,(y1+y2)/2. ¿Cuál es el resultado
que devuelve el programa para los puntos (3,7) y (8,12)? Pendiente
__________________ Valor medio __________________
¿Y para los puntos (2,10) y (12,6)? Pendiente _________________ Valor medio
______________
5
17. Rellena la siguiente tabla (use para ello la ayuda de algún compilador, libros o
internet):
Nombre de la función
sqrt
Qué hace la función
Calcula la raíz
cuadrada
1
double
Número de argumentos
Tipo de datos que
requiere
Tipo de datos del
resultado
Biblioteca
Pow
log
atan
double
math.h
18. Escribir un programa que calcule la distancia euclídea de dos puntos en el plano
definidos por sus dos coordenadas cada uno: (x1,y1) y (x2,y2). Utilice
variables de tipo double y la función sqrt(), de la biblioteca math.h, para
calcular la raíz cuadrada.
19. Escribe, compila y ejecuta un programa en C que calcule y devuelva la raíz cuarta
de un número. Pruébalo con el número 81.0 (deberá devolverte 3). Utiliza el
programa para calcular la raíz cuarta de 1728.8964: ______________________
Escribe aquí la instrucción que has utilizado para calcular la raíz cuarta:
_________________________________________________________________
20. El área de una elipse se obtiene con la fórmula πab , donde a es el radio menor de la
elipse y b es el radio mayor, y su perímetro se obtiene con la fórmula π[4(a+b)2]0.5.
Realice un programa en C utilizando estas fórmulas y calcule el área y el perímetro
de una elipse que tiene un radio menor de 2.5 cm y un radio mayor de 6.4 cm. Área
______________ Perímetro _______________
21. Si coloca una escalera de 3 metros a un ángulo de 85 grados al lado de un edificio,
la altura en la cual la escalera toca el edificio se puede calcular como altura=3 *
seno 85º. Calcule esta altura con una calculadora y luego escriba un programa en C
que obtenga y visualice el valor de la altura. Compruebe que la altura es calculada
correctamente y escriba aquí el resultado _____________________. Generalice el
programa para cualquier altura y cualquier ángulo, pidiéndolos adecuadamente
como entradas.
Nota: Los argumentos de todas las funciones trigonométricas (seno, coseno, etc)
deben estar expresados en radianes. Por tanto, para obtener el seno, por ejemplo, de
un ángulo expresado en grados, primero deberá convertir el ángulo a radianes.
22. La máxima altura alcanzada por una pelota lanzada a una velocidad inicial v, en
metros/seg, a un ángulo θ está dada por la fórmula altura=(0.5 * v2 * seno 2 )/g,
donde g es la gravedad que vale 9.8. Utilizando esta fórmula, escriba un programa
en C que calcule y visualice la altura alcanzada por una pelota lanzada a 5
millas/hora en un ángulo de 60 grados.
Nota: asegúrese de convertir la velocidad inicial a las unidades correctas. Una milla
tiene 1609 metros.
6
23. La amplificación de los circuitos electrónicos está medida en unidades de decibelios,
los cuales se calculan como: 10 log(Po/Pi), donde Po es la potencia de la señal de
salida y Pi es la potencia de la señal de entrada. Utilizando esta fórmula escriba un
programa en C que calcule y visualice la amplificación en decibelios para una
potencia determinada de entrada y salida. Escriba la salida del programa si la
potencia de salida es 50 veces la potencia de entrada ____________________.
Utilícelo también para calcular la amplificación de un circuito donde la potencia de
salida es 4.639 vatios y la potencia de entrada es 1 vatio
________________________.
24. La velocidad de impacto (en metros/segundo) de una pelota de hule soltada desde
una altura determinada (en metros), está dada por la fórmula velocidad =
sqrt(2*g*altura). La pelota rebota a 2/3 de la altura desde la cual cayó. Con esta
información, escriba un programa en C que calcule y visualice la velocidad de
impacto de los tres primeros botes y la altura que alcanza la pelota en cada uno.
Pruebe el programa utilizando una altura inicial de 2.0 metros y escriba a
continuación los resultados que obtiene. Ejecute el programa dos veces y compare
los resultados al dejar caer la pelota en la Tierra (g=9.81 metros/seg2) y en la Luna
(g=1.67 metros/seg2).
EN LA TIERRA
Primer bote
Velocidad de impacto
Altura que alcanza
Segundo Bote
Tercer Bote
EN LA LUNA
Primer bote
Velocidad de impacto
Altura que alcanza
Segundo Bote
Tercer Bote
Ejercicios resueltos
1.
Solución al ejercicio 8.
Solución 1:
/* Ejercicio 8 usando toupper() */
#include<stdio.h>
#include<ctype.h>
void main(){
char a,b,c,d;
a=getchar(); /* Igual a scanf("%c",&a) */
b=getchar();
c=getchar();
d=getchar();
}
putchar(toupper(a));
putchar(toupper(b));
putchar(toupper(c));
putchar(toupper(d));
7
Solución 2:
/* Ejercicio 8 usando toupper() */
#include<stdio.h>
#include<ctype.h>
void main(){
char a,b,c,d;
a=toupper(getchar());
b=toupper(getchar());
c=toupper(getchar());
d=toupper(getchar());
}
putchar(a);
putchar(b);
putchar(c);
putchar(d);
Solución 3:
/* Ejercicio 8 usando toupper() */
#include<stdio.h>
#include<ctype.h>
void main(){
char a,b,c,d;
a=toupper(getchar());
b=toupper(getchar());
c=toupper(getchar());
d=toupper(getchar());
printf("%c%c%c%c",a,b,c,d);
}
Solución 4:
/* Ejercicio 8 usando toupper() */
#include<stdio.h>
#include<ctype.h>
void main(){
char a=getchar(),
b=getchar(),
c=getchar(),
d=getchar();
printf("%c%c%c%c",toupper(a),toupper(b),
toupper(c),toupper(d));
}
Solución 5:
/* Ejercicio 8 SIN usar toupper() */
#include<stdio.h>
void main(){
char a,b,c,d,
distancia = 'A' - 'a'; /* 65-97 */
a = getchar() + distancia;
b = getchar() + distancia;
c = getchar() + distancia;
d = getchar() + distancia;
printf("%c%c%c%c",a,b,c,d);
}
8
2. Solución al ejercicio 10
#include <stdio.h> // para la función printf
#include <stdlib.h> // para la función system
#include <math.h> // para la función pow
/*****************************************************/
/* Muestra por pantalla el número de bytes que ocupa */
/* y el rango de valores para los tipos de datos
*/
/* entero con signo y entero sin signo
*/
/*****************************************************/
int main() {
int n;
printf("El número de bytes que ocupa un entero con signo es %d\n",
sizeof(int));
printf("El número de bytes que ocupa un entero sin signo es %d\n",
sizeof(unsigned int));
n=sizeof(int)*8; //número de bits que ocupa un int
printf("El rango de un entero con signo es [-%.0f,%.0f]\n",
pow(2,n-1),pow(2,n-1)-1);
n=sizeof(unsigned int)*8; //bits que ocupa un unsigned int
printf("El rango de un entero sin signo es [0,%.0f]\n",
pow(2,n)-1);
system("Pause");
return 0;
}
3. Solución al ejercicio 18.
Solución:
/*******************************************/
/* Distancia entre dos puntos en el plano. */
/*******************************************/
#include <stdio.h>
#include <math.h>
void main (void){
double x1, y1, x2, y2;
printf
printf
printf
printf
("\n("\n("\n("\n-
Introduce
Introduce
Introduce
Introduce
el
el
el
el
parámetro
parámetro
parámetro
parámetro
x1:
y1:
x2:
y2:
");
");
");
");
scanf
scanf
scanf
scanf
("%lf",&x1);
("%lf",&y1);
("%lf",&x2);
("%lf",&y2);
x1 = (x1-x2) * (x1-x2); /* Cuadrados de las distancias en los
ejes X e Y */
y1 = (y1-y2) * (y1-y2);
}
printf ("\n* La distancia entre ellos es: %lf.\n",sqrt(x1+y1);
4. Escribir un programa que lea dos valores enteros y muestre su suma, resta,
multiplicación, división entera y resto de la división.
9
Solución:
/********************************************/
/* Operaciones aritméticas con dos enteros. */
/********************************************/
#include <stdio.h>
void main (){
int a, b;
printf ("\nIntroduce el primer número: ");
scanf ("%i", &a);
printf ("\nIntroduce el segundo número: ");
scanf ("%i", &b);
}
printf
printf
printf
printf
printf
("\nLa
("\nLa
("\nLa
("\nLa
("\nEl
suma es: %i.", a+b);
resta es: %i.", a-b);
multiplicación es: %i.", a*b);
división entera es: %i.", a/b);
resto de la división entera es: %i.", a%b);
Observe que:
o
o
o
o
o
o
o
o
o
o
Los números introducidos pueden ser también números negativos.
La división entre enteros genera un resultado entero (sin decimales).
Si uno de los operandos o el resultado excede del rango permitido para los números
enteros, que es [-32768,32767], entonces, el resultado será incorrecto, pero el compilador no
avisa de ningún error.
Todas las instrucciones finalizan con un punto y coma (;). Pruebe a quitar un ; y compile
a continuación. Lea el mensaje de error y fíjese que el error lo señala en la línea siguiente.
Esto es debido a que es en la línea siguiente cuando detecta que falta un ;.
a+b es una expresión (de suma). El resultado de esta expresión será imprimido por la
función printf(). Se podría haber asignado el resultado de esta expresión a una variable
(por ejemplo con c=a+b) y luego haber usado esa variable (c) para imprimirla. Igualmente
ocurre con las demás expresiones, pero de la forma propuesta nos ahorramos instrucciones y
variables.
El código de formato o indicador de tipo %i (de int) es totalmente equivalente a %d
(decimal).
En la función de escritura printf() el número entero a escribir es insertado en la
posición donde está situado el indicador %i. En un mismo printf() puede haber varios
indicadores de tipo (de la forma %i). En ese caso, después de las comillas finales (") deben
aparecer tantas expresiones como indicadores existan. Estas expresiones aparecerán en las
posiciones de los indicadores y en el orden que aparecen. Por ejemplo, pruebe un
printf() con tres expresiones:
printf("\nSUMA: %i + %i = %i.", a, b, a+b);
El carácter \n que hay al principio del texto que escribe la función printf() sirve para
indicar que cambie de línea (retorno de carro, newline). Esto hace que cada una de las frases
aparezca en una línea distinta. Pruebe a poner un \n en cualquier posición dentro del texto
de printf() y observe qué ocurre.
Las funciones printf() y scanf() son funciones que están incluídas dentro de la
biblioteca stdio.h (entrada/salida estándar, standard input/output). Por eso, hay que
incluir al principio del programa ese fichero de cabeceras (.h, headers). Pruebe a eliminar
ese #include y observe los mensajes de error que genera al compilar.
El texto incluido entre /* y */ se llama comentario y es ignorado por el compilador.
Puede incluir comentarios en cualquier parte del programa para indicar cualquier aclaración
que desee. Es siempre aconsejable poner un comentario al principio del programa para
10
o
o
o
o
indicar lo que hace el programa, tal y como se ve en este ejercicio. Los comentarios son
aclaraciones para el programador (no para el compilador) y ayudan a entender un programa.
main() es la función principal del programa. Todo programa en C debe contener una
función main() y será por está función por la que empiece la ejecución. El tipo void
(nulo), indica que la función de este programa no va a devolver ningún valor al Sistema
Operativo. Los paréntesis en blanco indican que la función no tiene argumentos. También
puede escribirse en el programa de forma explícita: main(void)
La llave de apertura { indica, en este caso, que comienza la función main(). Suele
ponerse al final de la línea de la orden que comienza.
La llave de cierre } indica, en este caso, que termina la función main(). Suele ponerse
justo debajo de la orden que cierra, en la misma columna de texto donde comienza dicha
orden.
Las instrucciones que contiene la función main() están sangradas (o indentadas) dos
espacios hacia la derecha. Esto se hace así para indicar de forma clara que todas estas
instrucciones están incluidas dentro de la función main(). El sangrado es muy importante
para que un programa sea fácil de leer y cada sangrado debe tener entre 2 y 4 espacios en
blanco.
Errores comunes de programación
1. Omitir los paréntesis después del main.
2. Omitir o escribir de forma incorrecta la llave que abre o que cierra una función.
3. Escribir incorrectamente el nombre de una función; por ejemplo, escribir prinf en vez de
printf.
4. Utilizar una función de biblioteca sin incluir la instrucción del preprocesador #include
<....>
5. Utilizar una función sin la cantidad correcta de argumentos o el tipo adecuado de
datos.
6. Olvidar encerrar entre comillas una cadena de caracteres en un printf o en los
especificadores de tipo en un scanf.
7. Omitir el punto y coma al final de cada instrucción.
8. Poner un punto y coma al final del comando #include del preprocesador.
9. Escribir la letra O en lugar del número cero (0), o viceversa, y escribir la letra l por el
número 1, o viceversa.
10. Olvidar declarar todas las variables utilizadas en un programa.
11. Guardar un tipo inapropiado de datos en una variable declarada.
12. Utilizar una variable en una expresión antes de haber asignado un valor a la variable.
Cualquier valor que esté accidentalmente en la variable se utilizará al evaluar la expresión, y
el resultado no tendrá sentido.
13. Dividir valores enteros de forma incorrecta. Este error normalmente se confunde dentro de
una expresión más grande y puede ser muy difícil detectarlo. Por ejemplo, la expresión 3.4
+ 2/3 + 7.9 produce el mismo resultado que la expresión 3.4 + 7.9 porque la división entera
de 2/3 es 0.
Es MUY IMPORTANTE saber asociar el mensaje de error que producirá el compilador para
cada uno de esos errores. Para ello merece la pena escribir un programa e introducir
deliberadamente cada uno de estos errores para ver qué mensaje de error producirá el
compilador.
Otro error muy común y MUY GRAVE, a un nivel más básico, es empezar a codificar y
ejecutar un programa antes de que el programador comprenda qué se requiere y los algoritmos y
procedimientos que utilizará para producir el resultado deseado.
11
Algo más sobre los posibles errores
Un error de programa se puede detectar en diversos momentos:
1. Antes de compilar un programa.
2. Al compilar un programa (errores en tiempo de compilación).
3. Al ejecutar un programa (errores en tiempo de ejecución).
4. Al examinar el resultado de un programa después de que éste es ejecutado.
5. Nunca.
En un programa hay dos tipos básicos de errores: sintácticos (o de sintaxis) y semánticos (o de
lógica). Un error sintáctico ocurre cuando existen fallos en la estructura o en la ortografía de
una instrucción (p.e. cuando faltan unas comillas, un punto y coma o cuando una palabra clave
está mal escrita, etc). Todos estos errores son detectados al compilar el programa.
Los errores semánticos son fallos inesperados, resultado directo de una deficiencia en la lógica
del programa. Estos errores no los detecta el compilador y son más difíciles de descubrir que los
errores sintácticos. La forma más normal de manifestarse estos errores es cuando el programa
produce resultados incorrectos. Una de las mejores técnicas para detectar este tipo de problemas
es utilizar un programa depurador (debugger), que verifica la ejecución del programa
mientras se ejecuta.
Resumen del tema
•
•
•
•
•
•
•
•
•
•
Un programa en C consta de uno o más módulos llamados funciones. Una de estas
funciones debe ser llamada main() (función principal). La función main() indica el
punto de inicio de un programa en C.
El programa más sencillo en C consiste en una sola función main().
Después del nombre de la función, el contenido de ésta tiene el siguiente formato general:
void main()
{
todas las instrucciones de C van aquí;
}
Todas las instrucciones de C deben terminar con punto y coma.
Existen tres tipos de datos básicos: número entero, número real (o en punto flotante) y
carácter. Cada uno de ellos utiliza diferentes cantidades de memoria. C reconoce cada uno
de estos tipos de datos, además de otros (con signo, sin signo, corto o largo) que son
modificaciones de los anteriores.
Toda variable de un programa en C debe ser declarada según el tipo de valor que puede
guardar. Una variable sólo se puede utilizar después de haber sido declarada. Las variables
también se pueden inicializar cuando son declaradas. Además, las variables del mismo tipo
se pueden declarar utilizando una sola instrucción.
Las instrucciones declarativas siempre efectúan una tarea software que consiste en informar
al compilador los nombres válidos de las variables en una función. Además de eso, una
declaración de variable también hace que la computadora asigne ubicaciones de memoria a
la variable.
La función printf() se puede utilizar para visualizar todos los tipos de datos que hay en
C.
La función scanf() nos permite leer del teclado datos y almacenarlos en variables de
cualquier tipo.
Cuando se utilizan las funciones printf() o scanf() dentro de un programa, el
comando del preprocesador #include <stdio.h> debe estar colocado en la parte
superior del programa. Los comandos del preprocesador no terminan con punto y coma.
El operador sizeof() se puede utilizar para determinar la cantidad de espacio de
almacenamiento reservado para las variables.
12
Descargar