Programas
Estructura
de un programa simple
Los
programas más simples escritos en lenguajes imperativos suelen
realizar tres tareas de forma secuencial:
•Entrada
de datos
•Procesamiento
de los datos
•Salida
de resultados
La
función main
El
punto de entrada de un programa en C es la función main:
int
main (int argc, char *argv[])
El
preprocesador de C
Estructura
general de un fichero de código en C
Operaciones
de entrada/salida
Salida
por pantalla con la función printf
La función printf,
que forma parte de la
biblioteca
estándar de funciones de entrada/salida <stdio.h>,
nos permite mostrar mensajes de texto en la pantalla cuando
ejecutamos un programa:
Entrada
desde el teclado con la función scanf
La
función scanf, de la
biblioteca estándar de funciones de
entrada/salida
<stdio.h>, nos permite
leer datos desde el teclado para suministrarle datos de entrada a un
programa:
Salida
de datos con formato
Al
representar un número o una cadena, podemos especificar cómo
deseamos hacerlo:
El
número n indica el número de caracteres que se utilizarán como
mínimo para representar el dato (número total de dígitos en el
caso de los números, tanto enteros como reales).
El
número .m indica el número máximo de caracteres que se utilizarán
para representar el dato. En el caso de los números reales, indica
el número de decimales que se mostrarán.
El
signo menos (-) es opcional y lo usaremos para indicar que el texto
ha de justificarse a la izquierda.
-
X
indica el tipo del dato:
%d
Número entero en decimal
%x
Número entero en hexadecimal
%o
Número entero en octal
%c
Carácter
%s
Cadena de caracteres
%f
Número real
%e
Número real en notación científica
Ejemplos
1)
Longitud de la hipotenusa de un triángulo
rectángulo
2)
Programa
para comprobar si un año es bisiesto o no. Un año es bisiesto si es
divisible por 4 pero no por 100, o bien es divisible por 400.
3)
Cuota de una hipoteca
Documentación
del código
Comentarios
Los
comentarios sirven para incluir aclaraciones en el código.
ANSI
C permite dos tipos de comentarios:
//
Comentarios de una línea
/*
Comentarios de varias líneas */
Es
bueno incluir comentarios que expliquen lo que hace el programa y sus
características claves (p.ej. autor, fecha, algoritmos utilizados,
estructura
s
de datos, peculiaridades...).
//
Cálculo del MCD
//
usando el algoritmo de Euclides
Los
comentarios nunca han de limitarse a decir en lenguaje natural lo que
ya está escrito en el código: Jamás se utilizarán para
“parafrasear” el código
y
repetir lo que es obvio.
i++;
// Incrementa el contador
Los
comentarios han de aclarar; esto es, ayudar al lector en las partes
difíciles (y no confundirle). Si es posible, escriba código fácil
de entender por sí mismo:
cuanto
mejor lo haga, menos comentarios necesitará.
Sangrías
Conviene
utilizar espacios en blanco o separadores para delimitar el ámbito
de las estructuras de control de nuestros programas.
Líneas
en blanco
Para
delimitar claramente los distintos segmentos de código en nuestros
programas dejaremos líneas en blanco entre ellos.
Identificadores
Declaraciones
Usualmente,
declararemos una única variable por línea.
Nunca
mezclaremos en una misma línea la declaración de variables que sean
de distintos tipos o que se utilicen en el programa para distintos
fines.
Constantes
Se
considera una mala costumbre incluir literales de tipo numérico
(“números mágicos”) en medio del código.
Se
prefiere la definición de constantes simbólicas (mediante la
directiva
#define
del preprocesador de C).
Expresiones
Uso
de paréntesis: Aunque las normas de precedencia de los
operadores vienen definidas en el lenguaje, no abusaremos de ellas.
Siempre resulta más fácil interpretar una expresión si ésta tiene
los paréntesis apropiados. Además, éstos eliminan cualquier tipo
de ambigüedad.
Uso
de espacios en blanco: Resulta más fácil leer una expresión
con espacios que separen los distintos operadores y operandos
involucrados en la expresión.
Expresiones
booleanas: Es aconsejable
escribirlas como se dirían en voz alta.
Expresiones
complejas: Es aconsejable dividirlas para mejorar
su legibilidad
Claridad:
Siempre buscaremos la forma más simple de escribir una
expresión.
Conversiones
de tipo (castings): Evitaremos las conversiones
implícitas de tipo.
Cuando
queramos realizar una conversión de tipo, lo indicaremos
explícitamente.
Siempre
se han de evitar los efectos colaterales
(modificaciones no deseadas pueden afectar a la ejecución del
programa sin que nos demos cuenta de ello).
No
comente el código “malo” (uso de
construcciones extrañas, expresiones confusas, sentencias poco
legibles...): Reescríbalo.
No
contradiga al código: Los comentarios suelen coincidir con el código
cuando se escriben, pero a medida que se corrigen errores y el
programa evoluciona, los comentarios suelen dejarse en su forma
original y aparecen discrepancias. Si cambia el código, asegúrese
de que los comentarios sigan siendo correctos.
Errores
de programación
Errores
sintácticos Errores detectados por el compilador en tiempo de
compilación.
Errores
semánticos Sólo se detectan en tiempo de ejecución: Causan que
el programa finalice inesperadamente su ejecución (p.ej. división
por cero) oque
el programa proporcione resultados incorrectos.