Академический Документы
Профессиональный Документы
Культура Документы
- 227 -
Tras los pasos de un... Hacker
Algunos de mis compañeros de aula del colegio y muchos jóvenes de otros cursos,
al ver que podía programar mi computadora, me pidieron que les explique algo
de este conocimiento que ya lo dominaba. Por vez primera, entendía el reto que
tiene un profesor, cuando trata de hacer que alguien que no sabe, aprenda algo;
así que, para satisfacer este requerimiento de mis amigos, realicé una primera
guía de programación BASIC, que la repartí en fotocopias para que se enteren de
la computación e intenten aprender a programar (inicios del año de 1.989).
La tarea no era nada fácil, ya que mis compañeros no tenían computadora, así
que no serviría de mucho que en papel desarrollen los algoritmos propuestos.
Los lectores que quieran aprender a programar, tendrán que tener una
computadora e instalada la copia del True BASIC™ que les había mencionado
adquieran (puede servir también cualquier lenguaje de programación con su
respectiva guía de uso).
- 228 -
La historia... Introducción (VI).
- 229 -
Tras los pasos de un... Hacker
- 230 -
CAPÍTULO VI. FUNDAMENTOS DE LA PROGRAMACIÓN
Para entender completamente todos y cada uno de los algoritmos que vamos a
estudiar y desarrollar, así como los que pedimos resolver como ejercicios
propuestos es necesario tener claros los conceptos que ya los discutimos y
tratamos en capítulos anteriores.
Para realizar este estudio de manera formal empecemos definiendo el concepto
de algoritmo.
6.1 ALGORITMO
- 231 -
Tras los pasos de un... Hacker
6.2CARACTERÍSTICAS
1. Finitud.
2. Definibilidad.
3. Entrada.
4. Salida.
5. Efectividad.
6.2.1 FINITUD
Un algoritmo tiene un número finito de pasos. Un procedimiento que tiene todas
las características de un algoritmo salvo que posiblemente falle en la finitud
puede ser llamado MÉTODO DE CÁLCULO, por ejemplo: El método para obtener
la raíz cuadrada de un número, el método para calcular el número PI, entre otros.
6.2.2 DEFINIBILIDAD
Todo paso que se sigue en un algoritmo debe ser definido de modo preciso, no
debe darse posibilidad a la ambigüedad. Por esta característica los lenguajes de
programación son definidos de manera formal para la codificación de algoritmos
(programas).
6.2.3 ENTRADA
Un algoritmo debe tener cero o más entradas. La entrada son los datos con los
que se inicia un algoritmo para que se procesen conforme está definido en el
algoritmo.
Estas entradas deben de estar perfectamente identificadas y definidas.
- 232 -
Fundamentos de la programación... Capítulo VI.
6.2.4 SALIDA
Un algoritmo tendrá una o más salidas. La salida son los resultados del proceso
de la información en la ejecución del algoritmo.
Las salidas tienen una relación muy estrecha con las entradas, casi siempre son
de la misma especie o tipo de datos.
Por ejemplo: Para obtener la raíz cuadrada, se tiene una entrada numérica real
positiva y las salidas son dos números reales, uno positivo y otro negativo.
6.2.5 EFECTIVIDAD
Todo algoritmo tiene que ser efectivo, que llegue al objetivo deseado, esto quiere
decir que los algoritmos tienen que estar compuestos de órdenes simples capaces
de ser ejecutadas con facilidad y tratar de controlar en los procedimientos que las
operaciones que pueden acarrear error, este no se produzca.
Por ejemplo: Evitar que se intente calcular una división para cero.
Las estructuras a las que se refiere el conocido Teorema de Böhm –Jacopini son:
1) Estructuras secuenciales. (Ejecutar primero una instrucción y luego
otra).
- 233 -
Tras los pasos de un... Hacker
1) Los programas son más fáciles de entender, ya que pueden ser leídos de
forma secuencial, sin necesidad de hacer el seguimiento a los saltos de
línea (GOTO) dentro de los bloques de código para entender la lógica.
2) La estructura del programa es clara, puesto que las instrucciones están
más ligadas o relacionadas entre sí.
- 234 -
Fundamentos de la programación... Capítulo VI.
- 235 -
Tras los pasos de un... Hacker
están definidas en los estándares ANSI para el BASIC, para esto elegimos la
versión Bronze™ del Lenguaje de Programación True BASIC™.
(www.truebasic.com)
Bueno, tengo dos principales razones para decirles que es mejor empezar con el
True BASIC™el hermoso arte de programar computadoras, a saber:
1) Una computadora puede trabajar con varios tipos de datos, tanto PASCAL
como C, para que las rutinas implementadas funcionen correctamente,
llevan implícito que el programador sabe el correcto uso y definición del
tipo de datos, por el contrario con True BASIC™, solamente están
definidos dos tipos de datos para el uso de las variables, los numéricos y
los de cadena o “strings”, facilitando que el alumno compruebe que la
lógica usada en la implementación de la rutina, función o programa,
trabaja correctamente y no dedicar mucho esfuerzo a preocuparse en las
definiciones del tipo de variable. Muchas veces esta preocupación de los
tipos de variable, hacen que los alumnos repudien la programación,
porque, cuando han querido hacer que se ejecute correctamente un
programa, el compilador se convierte en un tirano del alumno, al verificar
que esté bien la sintaxis y la coherencia de las definiciones de las
variables (este control es válido cuando queremos optimizar velocidad o
uso eficiente de memoria) pero en la etapa de aprendizaje, lo que nos
interesa es que la lógica funcione y eso es lo que conseguimos con el
BASIC para que el alumno verifique que el programa funciona por la
lógica implementada.
- 236 -
Fundamentos de la programación... Capítulo VI.
POWER BASIC©, que prácticamente está a la par de la eficiencia de C pero con las
ventajas de la facilidad de la sintaxis del BASIC.
Para las primeras implementaciones de los algoritmos, nos ayudaremos con la
definición gráfica de los mismos, usando los conocidos diagramas de flujo, esto
hará que alguien que no desee implementar estos ejemplos en BASIC, lo haga en
PASCAL o C.
Las primeras instrucciones del BASIC que aprenderemos, son las que definen los
tres grupos de estructuras de control más simples. A estas sentencias o
instrucciones (también se las conoce como palabras reservadas), asociaremos el
correspondiente símbolo gráfico para poder esquematizar el algoritmo.
- 237 -
Tras los pasos de un... Hacker
- 238 -
Fundamentos de la programación... Capítulo VI.
Aquí escribiremos
la asignación.
- 239 -
Tras los pasos de un... Hacker
INPUT X, Y
Lista de variables
a ingresar.
PRINT “HOLA”
- 240 -
Fundamentos de la programación... Capítulo VI.
Existe una convención para el uso de los separadores de resultado usados por
BASIC, estos son el punto y coma “;” y la coma “,”.
Mensaje o
expresión a
presentar.
Los valores a leer, pueden ser desde uno hasta los que necesitemos, recordemos
que los mismos deben estar separados por comas. Los valores numéricos se
digitan como tales y los alfanuméricos entre comillas.
Esta instrucción es complementaria de la instrucción READ (LEER), conforme
conste en esta las variables a leer. Esta lectura y asignación de valores se las hace
de forma secuencial.
Ejemplo: DATA 1, 2, 3, 4
- 241 -
Tras los pasos de un... Hacker
Lista
de
datos
Sirve para hacer una asignación de valores que ya están definidos en una
instrucción DATA en el mismo algoritmo. Por ejemplo: Los valores de prueba que
pueden estar en una tabla, estos valores son fijos, pero siempre tienen que estar
asignados a una variable.
Ejemplo: READ A
Esta definición hará que se lean cuatro valores que deben estar
definidos en DATA, los asignará correspondientemente a las
variables A, B, C y D.
RESTORE (RESTAURAR)
Sirve para decirle al algoritmo que empiece a leer otra vez los datos desde el
primer valor asignado en DATA.
Ejemplo: RESTORE
- 242 -
Fundamentos de la programación... Capítulo VI.
DATA.
RESTORE
END (FIN)
Ejemplo: END
FIN
INICIO
- 243 -
Tras los pasos de un... Hacker
Expresión
Si
Condicional
No
END IF
- 244 -
Fundamentos de la programación... Capítulo VI.
Expresión
Si PROCESO
Condicional
No
Expresión
Si PROCESO 1
Condicional
No
PROCESO 2
- 245 -
Tras los pasos de un... Hacker
END IF
Expresión Si
No PROCESO 1
Condicional 1
Expresión
Si PROCESO 2
Condicional 2
No
PROCESO 3
- 246 -
Fundamentos de la programación... Capítulo VI.
- 247 -
Tras los pasos de un... Hacker
1
3
5
7
9
<CONTADOR> =
<VALOR INICIAL>
A <VALOR FINAL>
PROCESO
<CONTADOR>
+
<INCREMENTO>
Cuando no conocemos a ciencia cierta las veces que se tiene que repetir un
procedimiento, en BASIC se ha definido la siguiente estructura de control
iterativa:
Debemos tener en cuenta este detalle cuando utilicemos este tipo de estructura.
- 248 -
Fundamentos de la programación... Capítulo VI.
Ejemplo: LET I = 10
DO WHILE I>=0
PRINT “Valor de I: “; I
LET I = I - 1
LOOP
10
9
8
7
6
5
4
3
2
1
0
CONDICION SI PROCESO
NO
- 249 -
Tras los pasos de un... Hacker
1
3
5
7
9
PROCESO NO CONDICION
SI
DO
<PROCEDIMIENTO>
LOOP WHILE <EXPRESIÓN CONDICIONAL>
HACER
<PROCEDIMIENTO>
FIN HACER MIENTRAS <CONDICIÓN>
- 250 -
Fundamentos de la programación... Capítulo VI.
DO
PRINT I
LET I = I + 2
LOOP WHILE I < = 10
1
3
5
7
9
PROCESO
SI
CONDICION
NO
DO
<PROCEDIMIENTO>
LOOP UNTIL <EXPRESIÓN CONDICIONAL>
HACER
<PROCEDIMIENTO>
FIN HACER HASTA QUE <EXPRESIÓN CONDICIONAL>
Ejemplo: LET I = 1
DO
PRINT I
LET I = I + 2
LOOP UNTIL I > 10
- 251 -
Tras los pasos de un... Hacker
1
3
5
7
9
PROCESO
NO
CONDICION
SI
Definidas así las instrucciones que nos permitirán elaborar nuestros algoritmos y
a la vez representarlos de manera gráfica, podemos empezar a desarrollar
nuestros primeros programas.
NOTAS Y BIBLIOGRAFÍA
Sobre este tratado de Fundamentos de la Programación, las notas han sido
elaboradas en base a publicaciones de revistas especializadas y la consulta de los
siguientes textos:
- 252
Fundamentos de la programación... Capítulo VI.
- 253 -
Tras los pasos de un... Hacker
- 254 -