Clases de Programacion

(en C para el grupo de Sistematica

Algoritmos


J Salvador Arias
Laboratorio de Sistematica, Escuela de Biologia, Universidad Industrial de Santander

Sumario | Ejercicios | Ejemplos

lo realmente comlicado en la programacion, y por ello valioso, es diseniar buenos algoritmos.
Mascarell & Benedito

Sumario

Un algoritmo es una secuencia de instrucciones, finitas, para resolver un problema.

Los [pseudo]lenguajes de programacion, son una serie de instrucciones sucesivas, que el computador ejecuta. Esta es la importancia entre el programa y el algoritmo: el algoritmo son las instrucciones que el programa ejecuta.

Los algorimos poseen un inico y un fin, requieren una serie de datos de entrada con los cuales se realiza la resolucion del problema y produce los datos de salida.

En C, los programas (i.e. algoritmos), tienen una seccion de cabezera, donde se suele anunciar que archivos de biblioteca (funciones ya definidas) se usan y se declaran las constantes.

/* Ejemplo de cabezera */

/* declaracion de bibliotecas */
#include "stdio.h"

/* declaracion de constantes */
#define HOLA "\nhola mundo\n"
#define NUMERO 10

El verdadero incio del programa es la funcion main(), esta esta seguida de corchetes { para abrir (mas bien iniciar) y } para finalizar.

Luego del inicio se declaran las variables, segun su tipo (enteras, reales, caracteres...), cuya validez esta sometida al ambito del bloque (una seccion entre los corchetes): fuera de este bloque no tiene validez (pero si en los bloques internos). Para optimar la funcionalidad y mantenimento de los programas, es mejor reducir al maximo el ambito de las variables.

Para los nombres de variables es aconsejable utilizar la notacion polaca (o hungara?), donde los primeros caracter esta en minuscula, y son acronimos del tipo de la variable y luego el nombre oficial de la variable, con el primer caracter en mayuscula y dejando lo demas en minuscula (con exepcion de inicio de nombres). Ejemplo:

	int iNumeroCasas;

Las instrucciones, pueden hacerse mediante sentencias directas

	iCociente=iDividendo/iDivisor;

O bien puede utilizarse una funcion (un algoritmo prebiamente realizado)
	fValor=sin(fAngulo);

Las instrucciones, siempre terminan con ;

La diferencia redical entre una funcion y un bloque, es que las funciones necesitan parametros sobre los cuales realizar una accion (en nuestro ejemplo, el angulo del seno), y generalmente retornan un valor (como el seno, un error... a veces no retornan nada) el programa en si puede verse como una funcion que puede recibir los datos de forma interactiva, o por linea de comandos. Las funciones, en general, no pueden utilizar variables declaradas fuera de la funcion. En los bloques anidados, las variables declaradas fuera de ellos (es sus bloques anteriores) pueden utilizarse (algo asi como plesiomorfias?) pero lo declarado dentro de ellas, solo puede usarse por sus propios bloques anidados (la apomorfia?).

	void main() { /* Cabecera */
	  /* declaracion de variables */
	  int iNumeroUno;
	  { /* Un nuevo bloque */
	    int iNumeroDos;
	    /* puedo usar variables previas  (plesiomorficas) como iNumeroUno, y apomorficas como iNumeroDos*/
	    iNumeroDos=iNumeroUno+4;
	  } /* Cierro el bloque */
	  /* Aca no puedo usar iNumeroDos */
	} /* fin del progrma */

Ejercicios

Realizar algoritmos para:
* preparar un huevo
* preparar despinchar un auto

+ El algoritmo del factorial
+ El algoritmo de la division

A modo de ejercicio (como para no olvidar las cosas, mas no como regla estricta...) realize una plantilla, comentad<, de las partes de un algoritmo en un programa de C.

Revisen las funciones de entrada y salida basicas de stdio.h (y de otras bibliotecas), en especial printf y scanf, sus parametros (i.e. variables que reciben) y lo que debuelven. (No se preoucupen si no reconocen algunos tipos!!)


Ejemplos

El tipico "hola mundo" :hola.c
Un programa que recibe dos numeros y los suma: suma.c



Actualizado 11 de Abril 2002

Clase anterior | Indice | Clase Siguiente