Fecha de publicación: Oct 13, 2009 7:53:50 AM
ELEMENTOS BASICOS DE UN PROGRAMA
En el ámbito general, un programa codificado o escrito bajo cualquier lenguaje de programación estructurado consta básicamente de dos secciones:
· Sección encabezado
· Sección cuerpo de programa
La sección de encabezado es usada para declarar, mencionar o identificar las variables con sus respectivos tipos y/o las constantes que se vayan a utilizar en el desarrollo del programa, así como también el nombre de las funciones y/o los procedimientos que ejecutarán las instrucciones de los diferentes algoritmos que va a tener dicho programa. Además en esta sección se declaran los archivos de inclusión (Archivos con extensión “.h”) que permiten el uso de algunas funciones que son necesarias para el desarrollo en si del programa. Igualmente se especifican las estructuras de datos complejas que se vayan a manejar.
La sección cuerpo de programa realmente se describen todos los procedimientos y/o funciones que se van a ejecutar dentro del programa así como también el código del programa principal. Como cuerpo de programa es indispensable que haya parte principal mientras que los procedimientos y/o funciones son opcionales.
ESTRURUCTURA DE UN PROGRAMA EN LENGUAJE C
Ya estamos a punto de entrar a lo más interesante, a la programación en sí; pero es necesario, primero; mencionar algunos de los errores típicos al programar, para que el lector sepa como identificarlos y así los pueda corregir.
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 porque 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). En este curso he usado Turbo C, en su versión 2 y 3.
ERRORES DE EJECUCIÓN: Estos errores se producen, cuando le indicamos a la computadora, realizar una determinada acción, y esta la comprende, pero no puede ejecutarla. Por ejemplo, indicarle a la computadora una división entre cero, sumar dos variables a las cuales no se les ha signado valor alguno, etc.
ERRORES DE LÓGICA: Muchas veces, cuando estamos programando, el compilador no nos indica errores de sintaxis, ni de lógica; pero el resultado de nuestro programa, esta fuera del rango esperado, esto es producto de un error de lógica en el código de nuestro programa. Este tipo de errores son muy difíciles de identificar y por supuesto de corregir, ya que generalmente hay que revisar línea por línea de nuestro programa. Ejemplo: El sueldo negativo de un empleado, etc.
ELEMENTOS BASICOS DE UN PROGRAMA EN LENGUAJE C
El siguiente ejemplo ilustra algunos de los componentes que con mayor frecuencia se usan cuando se trata de codificar programas utilizando el lenguaje de programación C. Cada una de las líneas es numerada para efectos de explicación posterior. En el momento de probarlo en el lenguaje de programación no es necesario la numeración.
/* Programa para calcular el producto de dos números previamente
ingresados por teclado */
#include <stdio.h>
int producto(int x, int y) //función que calcula y regresa el producto de sus dos argumentos
{
return(x*y);
}
main(void)
{
int a,b,c;
/* pide el primer numero */
printf(“digite un numero entre 1 y 100“);
scanf(“%d”,&a);
/* pide el segundo numero */
printf(“digite un numero entre 1 y 100”);
scanf(“%d”,&b);
/* calcula y despliega el producto */
c = producto(a,b);
printf(“\n%d * %d = %d”, a, b, c);
}
Aunque cada uno de los programas son distintos, todos tienen características comunes. Los elementos básicos de un programa codificado en lenguaje C son los siguientes tomando el ejemplo anteriormente descrito:
La función main() (línea 5 y desarrollada de la 6 – 18)
La librería #include (línea 2)
Definición de variables (línea 3)
Prototipo de función (línea 4)
Enunciados del programa (línea 8,9,12,13,16,17,23)
Definición de función (línea 21 – 24)
Comentarios (Línea 1,7,11,15,20)
Sintaxis de Algunos Elementos de Un Programa en C
a) identificadores:
Como su nombre lo indica, estos son los nombres, con los que identificamos las variables, constantes, funciones, vectores, etc, de nuestro programa. Para ello debemos tener presente algunas reglas:
Pueden tener de 1 hasta un máximo de 31 caracteres
Debe de iniciar con una letra o subrayado
Ejemplo:
No es lo mismo una minúscula que una mayúscula, ya que lenguaje c distingue de entre ellas. Ejemplo:
BETA
Beta beta
BeTa
No son válidos los identificadores de palabras reservadas. En un inicio hablamos que c posee 32 palabras reservadas, entre ellas están:
float char while
int else return
Estas palabras no pueden ser utilizadas para identificar variables, constantes, funciones etc
b) Comentarios
En todo programa que estemos diseñando en C (o en cualquier otro lenguaje de programación); es necesario insertar ciertos comentarios en el código, para que en posteriores modificaciones y cuando se realice el mantenimiento, podamos recordar cosas importantes ya que, en los comentarios, podemos incluir aspectos importantes del programas, explicaciones del funcionamiento de las sentencias, etc.
El formato de los comentarios en C, es el siguiente:
/*este es un comentario en C */
/*Podemos colocar mucha información importante
de nuestro Programa */
//Este formato si utilizamos una sola línea
c) La Directiva #include
Permite que, el pre-procesador, incluya funciones proporcionadas por el fabricante, a nuestro programa.
Ejemplo:
#include <stdio.h>
// decimos al compilador que incluya la librería stdio.h
Esta librería permite ejecutar comandos de entrada y salida de información, como es el caso del scanf y printf respectivamente.
d) la directiva #define
Permite definir constantes simbólicas. Pero hasta ahora ha sido poco lo que hemos hablado acerca de las constantes, es por ello que en aprovechando, este especio; dedicaré unas cuantas líneas para aclarar ello.
Las variables pueden cambiar de valor, durante la ejecución del programa, por eso es que se llaman variables. Y las constantes como su nombre lo indica, son valores que permanecen constantes durante toda la ejecución del programa, un ejemplo de ello, es el valor de (pi) que equivale a 3.14159....
En C existen diferentes tipos de variables, entre ellas tenemos:
1. Constates Numéricas:
Son valores numéricos, enteros o de reales (de punto flotante). Se permiten también constantes octales y hexadecimales.
2. Constantes Simbólicas:
las constantes simbólicas tiene un nombre (identificador), y en esto se parecen las variables. Sin embargo, no pueden cambiar de valor a lo largo de la ejecución del programa. En C, se pueden definir mediante el preprocesador.
Ejemplo:
#define N 100
#define PI 3.1416
#define B 45
Esta directiva (#define) va inmediatamente después de los #include. Se escribe la directiva, se deja un espacio y se escribe el identificador de la constante, otro espacio y su valor.
e) Signos de Puntuación y de Separación
/ ! % ^ & * () - + {} [] \ ; : <> ¿ .
f) Todas las Instrucciones o sentencias del programa terminan con un punto y coma (;)
Al momento de programar en C, esta es una regla de oro, y la causa por la cual nuestro programa puede darnos muchos errores de sintaxis, cuando se omite, al final de cada sentencia un punto y coma (;). Ya que con ello le indicamos al compilador que ha finalizado una sentencia.
NOTA: el lector no debe confundirse, las directivas: #include, #define. Main(), no llevan punto y coma, por que no son sentencias.
En el siguiente codificado veremos que al final de cada sentencia lleva su correspondiente punto y coma:
#include <stdio.h>
#include <conio.h>
void main(void)
{
float radio, area;
printf("Radio=\n");
scanf("%f", &radio);
area=3.14159*radio*radio;
printf("El Area es %f\n\n", area);
return 0;
}
g) Todo Bloque de Instrucciones debe ir entre llaves
Esta consideración toma mayor auge, cuando veamos las instrucciones anidadas en condiciones, ciclos, etc.
Ejemplo:
{
...
printf(“Hola\n\b”);
...
}
h) En una línea se pueden escribir más de una instrucción separada por un punto y coma
Esto es posibles, por que con el punto y coma, le estamos indicando al compilador el fin de una sentencia o instrucción.
Ejemplo:
b = c + d; d = 2*k;
TIPOS DE DATOS EN LENGUAJE C
Un tipo de dato, se define como un conjunto de valores que puede tener una variables, junto con ciertas
operaciones que se pueden realizar con ellas.
*TIPOS DE DATOS PREDEFINIDOS
NOTA: El tipo de dato string y bolean NO existen en C. Sin embargo más adelante veremos una forma de cómo hacer uso de las cadenas de texto.
Declaración de Variables
Una Variable, como su nombre lo indica, es capaz de almacenar diferentes valores durante la ejecución del programa, su valor varía. Es un lugar en la memoria el cual, posee un nombre (identificador), y un valor asociado.
La declaración de variables en C, se hace en minúsculas.
Formato:
Tipo_de_dato nombre_de_la_variable;
Ejemplos:
Declare una variable de tipo entero y otra de tipo real, una con el nombre de “x” y otra con el identificador “y”:
int x; float y;
Declare una variable de tipo entero llamada moon, e inicialícela con un valor de 20
int x = 20;
Declare una variable de tipo real, llamada Pi, e inicialícela con una valor de 3.1415
float pi=3.1415;
Declare una variable de tipo caracrter y asígnele el valor de “M”
char car = ‟M‟;
Declare una variable llamada nombre, que contenga su nombre:
char nombre[7]=”Manuel”;
Explicación:
En la nota anterior, se explicó, que C, no tiene el tipo de dato llamado string, o mejor conocido como cadenas de texto, pero nosotros podemos hacer uso de ellas, por medio de un arreglo, (de lo cual hablaremos con más detalle, posteriormente); pero para declarar este tipo de datos colocamos el tipo de datos, es decir la palabra reservada char luego el nombre, e inmediatamente abrimos, entre corchetes, va el número de letras, que contendrá dicha variable. Es muy importante que al momento de declarar el tamaño, sea un número mayor, al verdadero número de letras; por ejemplo, la palabra “Manuel”, solo tiene 6 letras, pero debemos declararlo para 7 letras ¿Por qué?.
Veámos gráficamente, en la memoria, C crea un variable llammada nombre y esta posee la palabra Manuel, así:
nombre:
En realidad, hay 7 espacios, pero la cuanta llega hasta 6, por que c, toma la primera posición como la posición cero, y para indicar el final de la cadena lo hace con un espacio en blanco.
Declaración de Constantes
Las constantes, como su nombre lo indica, son valores que se mantiene invariables durante la ejecución del programa.
Su formato es el siguiente:
const tipo_de_dato nombre= valor;
Donde const, es una palabra reservada, para indicarle al compilador que se esta declarando una constante.
Ejemplo:
const int dia=7; const float pi=3.14159; const char caracter= „m‟; const char fecha[]=”25 de diciembre”;
Caso Especial Constantes Simbólicas
Las constantes simbólicas, se declaran mediante la directiva #define, como se explicó anteriormente. Funcionan de la siguiente manera, cuando C, encuentra el símbolo que representa a la constante, lo sustituye por su respectivo valor.
Ejemplo:
#define N 150
#define PI 3.1416
#define P 50
NOTA: El lector debe comprender algunas diferencias fundamentales entre la declaratoria const y #define; la primera, va dentro del programa, es decir, dentro de la función main() o alguna función definida por el usuario, mientras que #define va en el encabezado, después de los #include, por eso estas no llevan al final el punto y coma (;).
ENTRADA Y SALIDA POR CONSOLA
se refiere a las operaciones que se producen en el teclado y en la pantalla de la computadora. En C no hay palabras claves para realizar las acciones de Entrada/Salida, estas se hacen mediante el uso de las funciones de la biblioteca estándar (stadio.h).
Para utilizar las funciones de E/S debemos incluir en el programa el archivo de cabecera stdio.h, mediante la declaratoria:
#include <stdio.h>
Las Funciones de E/S más simples son getchar() que lee un carácter del teclado, espera un retorno de carro
putchar(): Imprime un carácter en la pantalla, en la posición actual del cursor.
Algunas variaciones:
getche(): Aparece el Eco
getch(): No aparece el eco
estas instrucciones se encuentran en la biblioteca conio.h
Ejemplo:
Programa que espera que se presiona una tecla, la muestra en pantalla, y además muestra el carácter siguiente:
#include <stdio.h>
#include <conio.h>
main()
{
char car;
clrscr(); /*Se encarga de borrar la pantalla por eso se llama claer screen*/
car=getchar();
putchar(car+1);
getch();
return 0;
}
Ejemplo
#include <stdio.h>
#include <conio.h>
main()
{
char x; /*Declaramos x como caracter*/
printf("Para Finalizar Presione cualquier Tecla:");
x= getchar();/*Captura y muestra el caracter presionado*/
getch();/*Espera a que se presione cualquier otra tecla para finalizar*/
return 0;
}
Entrada / Salida de Cadenas
Una Cadena, es una frase, compuesta por varios caracateres (sean estos alfabéticos,numéricos o especiales). En C, podemos hacer uso de las cadenas, mediante, la sentencia:
gets(): Lee una cadena de carácter introducido por el teclado. Se puede introducir caracteres hasta que se de un retorno de carro, (enter); el cual no es parte de la cadena; en su lugar se coloca un terminador nulo \0.
puts(): Imprime en pantalla, el argumento guardado en la variable que se manda a impresión.
Ejemplo
Diseñe un programa en C, que lea su nombre; lo salude y mande a impresión su nombre, usando gets e y puts
#include <stdio.h>
#include <conio.h>
main()
{
char nombre[40];
puts("digite su nombre:");
gets(nombre);
puts("BIENVENIDO:");
puts(nombre);
getch();
return 0;
}
Entrada / Salida Por Consola con Formato
Las funciones gets, puts, getch, etc; son utilizadas, en una forma un poco rudimentaria, sin embargo; C posee otra serie de funciones, que son más completas, las cuales nos permiten leer e imprimir (en pantalla), datos con un formato determinado, el cual ha sido definido por el programador.
Salida a Pantalla printf()
Se utiliza para imprimir en pantalla cadenas de texto solas, o mandar a pantalla el valor de alguna variable, o constante, o una combinación de las anteriores. Su formato es el siguiente:
Printf(“cadena de control”, nombre_de_variables);
En donde:
Cadena de control: contiene códigos de formato que se asocian con los tipos de datos contenidos en las variables.
Ejemplo:
Int suma=10;
Printf(“La suma es %d”, suma);
Explicación:
Declaramos primero la variable como entero, con un valor de 10, luego la función printf, el mensaje va entre comillas dobles, luego en el lugar que queremos que aparezca el valor, colocamos el formato de la variable, cerramos comillas, luego una coma y el nombre de la variable. Es importante recalcar, que en la posición que coloquemos el formato es donde aparecerá el valor de la variable en este caso, 10.
Ejemplo:
Char nombre[7]=”Manuel”;
printf(“%s es en creador de este manual”, nombre);
NOTA: El número de argumentos que tendrá la función printf() es indefinido, por lo que se puede transmitir cuantos datos sean necesarios.
Ejemplo:
Int x=12, y=15;
char z=‟D‟;
float v=10.2563;
printf(“Estos son números %d %d %f; y esta es una letra %c”, x,y,v,z);
También podemos hacer algunos arreglos, al formato de salida, por ejemplo, si deseamos imprimir un número real justificado a la izquierda podemos colocar:
printf(“%-f”, z);
para justificar colocarle signo: %+f
%20f >> Longitud numérica del campo
%.2f >>Imprime el valor con sólo dos decimales
Secuencias de Escapes
Indica que debe ejecutar algo extraordinario.
Ejemplos:
1) printf(“Manuel \n Antonio \n Ortez\n\n);
2) int x=15;
printf(“El Valor de la variable es %d\n\n”, x);
3) float x=8.5689, pi=3.1416;
printf(“El valor de x es %.2f\t\n”,x);
printf(“\t Y el valor de pi es %.2f\n\n”, pi);
Entrada Desde Teclado scanf();
Se realiza mediante la función scanf(), su formato es:
scanf(“Cadena de control”, Dirección y nombre de la variable);
Ejemplo:
Diseñe un programa que guarde y muestre la nota del examen final de 3 alumnos
#include <stdio.h>
#include <conio.h>
main()
{
float n1, n2, n3;
char nom1[10], nom2[10], nom3[10];
printf("Introduzca el Nombre del Primer alumno:\n");
scanf("%s", nom1);
printf("Introduzca la nota de este alumno:\n");
scanf("%f", &n1);
printf("Digite el nombre del segundo alumno:\n");
scanf("%s", nom2);
printf("Su nota es:\n");
scanf("%f", &n2);
printf("Finalmente el ultimo alumno es:\n");
scanf("%s", nom3);
printf("Y su nota es:\n");
scanf("%f", &n3);
getch();
return 0;
}
Explicación:
Primero, iniciamos con las directivas del preprocesador:
#include <stdio.h>
#include <conio.h>
Con la cual le indicamos al compilador, que de su librería añada a nuestro programa las funciones estándar de entrada y salida; así como las entradas y salidas por consola (stadio.h y conio.h, respectivamente).
Luego declaramos la variables, que contendrán las notas como reales (o de punto flotante:
float n1, n2, n3;
Ya que, las notas pueden ser deciamales, por ejemplo 9.6, 8.5; etc.
Luego declaramos las variables, que contendrán las notas, caba aclarar que al momento de las declaraciones las podemos hacer en el orden que deseemos, pueden ser primeros los tipo char y luego los float, o viceversa, pero teniendo el cuidado que las variables que contendrán las nombres lleven la longitud máxima entre corchetes, para nuestro caso, 10. ( [10] ).
Posteriormente, mostramos en pantalla, un mensaje con el cual le indicamos al usuario que introduzca los datos respectivos:
printf("Introduzca el Nombre del Primer alumno:\n");
A continuación, va la función scanf, primero y entre comillas el tipo de dato que va a leer:
scanf("%s", nom1);
como puede notarse, va a leer la cadena de texto que contendrá la variable nom1. cabe aclarar, que cuando se van a leer cadenas de texto, no es necesario colocar la dirección (&), lo cual no sucede con los otros tipos de datos:
scanf("%f", &n1);
Después de haber leído los datos, espera a que se presiones cualquier tecla para finalizar la ejecución del programa.
Ejemplo
Programa que imprime dos veces, la cadena de texto que se ha introducido:
#include <stdio.h>
#include <conio.h>
main()
{
char cadena[15];
printf("Digite la cadena:\n\n");
scanf("%s", cadena);
printf("\n\t LA CADENA ES LA SIGUIENTE:\n\n");
printf("***********************************************\n");
printf("%s\n", cadena);
printf("%s\n", cadena);
printf("***********************************************\n");
getch();
return 0;
}
Es importante, que el lector, intente correr, en su máquina estos ejemplos, para que comprenda con mayor facilidad.
NOTA: Cuando la entrada, es una cadena de carácter, no es necesario el operador direccional (&). El nombre de la cadena contiene la dirección.
Ejemplo:
scanf(), finaliza la captación de la cadena al encontrar un espacio en blanco o fin de línea.
Ejemplo:
char cadena[15];
printf("Digite la cadena:\n\n");
scanf("%s", cadena);
Casos Especiales
JUEGO DE INSPECCIÓN: Define Un conjunto de caracteres que puede leerse utilizando scanf(). Así:
%[ABC]s:
A, B y C son los únicos caracteres que puede leer al encontrar uno diferente, finaliza con un valor nulo.
%[ A-Z ]s
: También pueden ser rangos de carácter en este caso sólo acepta mayúsculas.
JUEGO INVERSO: Aquí se declaran que caracteres NO puede tomar, la función scanf(), se utiliza el circunflejo (^), que acepta cualquiera menos...
Ejemplo:
%[^\n]s:
Acepta cualquier carácter menos un salto de línea.
%[^0-9]s:
Acepta cualquier carácter menos del 0 al 9.
Ejemplo:
Scanf(“%[0-9]s”, &edad);
Realizar los siguientes Ejercicios: (clic aquí)