El
Lenguaje C y Algoritmos Elementales
Algoritmos y programas computacionales
-
Antes de usar un computador para resolver un problema debemos entender
bien el problema.
-
Una vez que tenemos un enunciado bien formulado del problema, debemos formular
igualmente bien un procedimiento para resolverlo, esto es, un algoritmo.
-
Finalmente, tenemos que implementar el algoritmo en un computador particular,
escribiéndolo en un lenguaje de programación, en la forma
de un programa computacional.
Algoritmos
Un algoritmo es un conjunto finito de pasos, cada uno de los cuales puede estar
formado por una o más operaciones, que se ejecutan secuencial mente a
menos que el paso actual especifique otra cosa, y que llevan a la solución
de un problema específico.
Algoritmo de Euclides para encontrar
el máximo común divisor entre dos números:
-
Paso 1. Si los dos números son iguales entre sí, termine;
cualquiera de ellos es el máximo común divisor.
-
Paso 2. Reste el menor de los dos números al mayor.
-
Paso 3. Repita el paso 1, pero usando ahora el menor de los dos números
originales y el resultado de la resta del paso 2.
Ejemplos:
1. mcd(16, 28) = 4
debido a que:
-
16 = 2 x 2 x 2 x 2 => 16/4 = 4
-
28 = 7 x 2 x 2 => 28/4 = 7
16
|
28
|
12
|
16
|
12
|
4
|
4
|
12
|
8 |
4
|
8
|
4
|
4
|
4
|
.
|
2. mcd(8, 25) = 1. Porqué?
Podríamos formalizar el algoritmo de Euclides
(y mejorarlo un poquito), de la siguiente forma:
mcd(x, y) = mcd(y, r), donde r = resto(x,y) si
y
# 0
x si x
= y (esta es una optimización del algoritmo)
Algoritmo para ordenar una lista
de números de menor a mayor utilizando una segunda lista inicialmente
vacía:
-
Paso 1. Si la primera lista tiene sólo un número, sáquelo
de la lista, colóquelo en la primera posición disponible
en la segunda lista y termine; la segunda lista contiene los números
de la primera, ordenados de menor a mayor.
-
Paso 2. Recorra la lista completa y encuentre al menor de todos los números
que hay en ella.
-
Paso 3. Saque ese número de la primera lista y colóquelo
en la primera posición disponible en la segunda lista.
-
Paso 4. Repita el paso 1, pero usando ahora la primera lista reducida,
es decir, sin el número que sacó.
Ejemplo: Aplicando el algoritmo anterior,
ordene de menor a mayor la lista (7 3 9 13 2 18 11 2).
Este algoritmo se llama "de inserción", ya que va insertando los números
de la primera lista en forma ordenada en la segunda lista. Este algoritmo de
ordenación de una lista lo utilizamos cuando ordenamos un conjunto de
naipes para sujetarlos en la mano. Así, partimos con una lista de naipes
desordenados y una mano sin naipes. Luego tomamos cada uno de los naipes de
la primera lista y los vamos insertando en forma ordenada en la mano. Al final
terminamos con cuando la primera lista no tiene naipes y la mano contiene todos
los naipes iniciales ordenados.
Programas computacionales
Podemos implementar un algoritmo en el lenguaje de máquina de un computador
o lenguaje binario, pero estos programas son:
-
Laboriosos de escribir.
-
Difíciles de adaptar y mantener.
-
Extremadamente difíciles de transportar a otro computador.
-
Relativamente caros de desarrollar.
Por esto, usamos lenguajes de alto nivel:
-
BASIC, FORTRAN, COBOL, Lisp, Scheme, Pascal, C, etc.
-
Permiten expresar algoritmos en forma mucho más compacta, usando
instrucciones más poderosas y algo más parecidas al lenguaje
natural.
-
Un compilador o intérprete debe traducir las sentencias del lenguaje
a instrucciones en el lenguaje de máquina del computador.
Estos lenguajes ofrecen varias capacidades:
-
Especificar valores de datos.
-
Registrar resultados.
-
Realizar cálculos y asignar los resultados a variables.
-
Probar valores y seleccionar cursos alternativos de acciones.
-
Repetir acciones.
-
Especificar y usar abstracciones de procedimientos.
-
Especificar y usar abstracciones de datos.

Es C el mejor lenguaje computacional para
aprender?
-
No existe un lenguaje que sea bueno para resolver todos los problemas computacionales:
cada lenguaje tiene sus ventajas y desventajas.
-
C es un lenguaje muy utilizado.
-
Existen muchos libros de C.
-
Es más complejo que otros lenguajes como Pascal por su carga sintáctica.
Ejemplo de un Programa para transformar
de Fahrenheit a Celcius
/* Imprime tabla Fahrenheit-Celcius para fahr=0,20,...,300 */
#include<stdio.h>
main()
{
int fahr, celcius;
int lower, upper, step;
lower=0;
upper=300;
step=20;
fahr=lower;
while(fahr<=upper) {
celcius=5*(fahr-32)/9;
printf("%d\t%d\n", fahr, celcius);
fahr=fahr+step;
}
return(0);
}
HTML, no es un lenguaje de computación
Clase de HTML
Volver al índice de las clases AQUÍ