Вы находитесь на странице: 1из 36

Ciencias Exactas Ingeniería y Tecnología

Programa de la asignatura:
Fundamentos de programación

Unidad 1.
Preparando el camino hacia la programación

Universidad Abierta y a Distancia de México


Unidad 1. Preparando el camino hacia la programación
Índice
Unidad 1. Preparando el camino hacia la programación .................................... 3
Presentación de la unidad.............................................................................................. 3
Competencia específica .................................................................................................... 5
1.1. Introducción a la programación ........................................................................ 6
1.1.1. Ejecución de programas en la computadora ..............................................10
1.1.2. Lenguaje de programación ................................................................................14
1.1.3. Paradigmas de programación ............................................................................19
1. 2. Metodología de la programación .....................................................................20
1.2.1. Fases de la metodología de programación ................................................21
Cierre de la unidad .........................................................................................................33
Fuentes de consulta .........................................................................................................34

UNADM | DCEIT | FPR 2


Unidad 1. Preparando el camino hacia la programación
Unidad 1. Preparando el camino hacia la programación

Presentación de la unidad

La ingeniería de software es la disciplina formada por un


conjunto de métodos, herramientas y técnicas que se utilizan en
el desarrollo de programas informáticos. Los programas
informáticos son una serie de instrucciones con una secuencia
lógica que tienen como fin resolver un problema específico.

Aunque la programación en un proyecto de menor escala se le


considera como la etapa final, en un proyecto a gran escala, la
programación forma parte de una de las fases de desarrollo y se
le considera como la acción de desarrollar programas pilar
fundamental al momento de crear una aplicación es por eso que el
ingeniero en software debe analizar la situación, diseñar el
proyecto, desarrollar el software, hacer las pruebas necesarias
para el correcto funcionamiento y la implementación del sistema
mediante el uso de las computadoras y la programación para
resolver problemas. "Un programa es la codificación de un
algoritmo en un lenguaje de programación determinado”. (Jiménez
y Otero, 2014, p.17).

Por la capacidad de datos que pueden almacenar y manipular, las


computadoras han cobrado gran importancia para el manejo de
datos y recursos. Para resolver problemas mediante la
computadora, es necesario desarrollar programas escritos en un
lenguaje que ella pueda procesar y ser ejecutados por ella.

UNADM | DCEIT | FPR 3


Unidad 1. Preparando el camino hacia la programación

UNADM | DCEIT | FPR 4


Unidad 1. Preparando el camino hacia la programación

Competencia específica

Desarrollar y comprobar pseudocódigo para comprender la estructura de


un programa en un lenguaje de programación con la resolución de
problemas simples mediante algoritmos representados a través de
diagramas de flujo.

Logros

 Comprender los conceptos básicos de programación


 Identificar la metodología de la programación
 Desarrollar algoritmos con base en problemas simples
 Desarrollar y verificar el pseudocódigo de un algoritmo

UNADM | DCEIT | FPR 5


Unidad 1. Preparando el camino hacia la programación

1.1. Introducción a la programación

Como ya se mencionó, la acción de programar consiste en


indicarle a la computadora qué es lo que tiene que hacer. Para
esto, los desarrolladores de software escriben programas
compuestos de un conjunto de instrucciones que son interpretadas
y ejecutadas por la computadora para buscar la resolución de un
problema. Se concibe un programa como “un sistema para
transformar datos” (Winder, 1995, p.3).

Para revisar la historia de las computadoras y la programación,


revisa el siguiente recurso de video:

Para fines de este curso entenderemos que una computadora es una


máquina electrónica que recibe datos de entrada y los procesa de
acuerdo al conjunto de instrucciones, llamado programa, para
obtener nuevos datos que son el resultado del proceso, tal como
se ilustra en la siguiente figura:

UNADM | DCEIT | FPR 6


Unidad 1. Preparando el camino hacia la programación

Un programa se compone, entre otras cosas, de:


 Datos: variables o constantes.
 Operadores: lógicos, aritméticos, relacionales y
jerárquicos.
 Estructuras de control: secuenciales, selectivas y
repetitivas.

Un programa es la forma en que el usuario o programador


establece comunicación con la computadora, de acuerdo a un
conjunto de instrucciones, para obtener nuevos datos que son el
resultado del proceso, tal como se ilustra en la siguiente
figura:

UNADM | DCEIT | FPR 7


Unidad 1. Preparando el camino hacia la programación

Elementos básicos de una computadora

Los componentes de una computadora son básicamente: hardware y


software.

Los recursos de hardware son todos aquellos elementos de la


computadora que se pueden palpar como, por ejemplo: el monitor,
el teclado, el disco duro y la memoria, entre otros (Sánchez,
2005). Los recursos de software son aquellos elementos
intangibles sin los cuales la computadora no funcionaría, es
decir, el soporte lógico: programas y datos, entre los que se
encuentran los sistemas operativos, editores de texto,
compiladores, bases de datos, videojuegos, etc. (Sánchez, 2005).

UNADM | DCEIT | FPR 8


Unidad 1. Preparando el camino hacia la programación
Con el fin de poder entender la interacción de estos recursos y
la estructura interna de la computadora, se hará referencia al
modelo de Von Neumann que propone que tanto el programa como los
datos sean almacenados en la memoria permanente lo que permite
que la computadora no tenga que reconstruirse, pues para
programarla únicamente se deberá introducir el programa por el
dispositivo indicado y posteriormente alimentarla con los datos
de entrada para que calcule la salida correspondiente.

Arquitectura de una computadora

Los elementos que componen esta arquitectura de la computadora


según el modelo de Von Newman son: la unidad central de
procesamiento (CPU por sus siglas en Inglés – Central Processor
Unit) que está integrada por la unidad aritmética-lógica (ALU
por sus siglas en Inglés - Arithmetic Logic Unit) y la unidad de
control (CU por sus siglas en Inglés – Control Unit), la memoria
y los dispositivos de entrada como el teclado, el ratón, un
escáner, etc., y los de salida como el monitor, una impresora,
una bocina o altavoz, por ejemplo.

UNADM | DCEIT | FPR 9


Unidad 1. Preparando el camino hacia la programación

Para consultar una breve reseña y el concepto de programación,


lee detenidamente el documento U1. Conceptos de programación y
cómputo que se encuentra en la sección Material de apoyo.

1.1.1. Ejecución de programas en la computadora

Continuando con los elementos necesarios que integran el ámbito


de la programación, abajo se expone una explicación del
funcionamiento de una computadora en relación con la ejecución
de un programa.

Según Joyanes y Zohanero (2005), al ejecutar cualquier programa


una vez que el programa y los datos fueron almacenados en la
memoria principal, se realiza el siguiente proceso en el
interior de la CPU:
1. La Unidad de Control consulta en la memoria la instrucción
indicada en el contador del programa y la almacena en el
registro de instrucciones, actualizando el contador del programa
con la dirección de memoria de la siguiente instrucción.
2. Una vez almacenada la instrucción en el registro del programa,
la unidad de control la decodifica, detectando los dispositivos
implicados en su ejecución.
3. Una vez detectados los dispositivos, la misma Unidad de
Control, les envía las señales de control, indicándoles la
acción a realizar y, si es el caso, los datos y/o la dirección
de memoria correspondiente.

UNADM | DCEIT | FPR 10


Unidad 1. Preparando el camino hacia la programación
4. Cuando cada dispositivo concluye con las acciones designadas,
envía una señal a la unidad de control, para que ésta continúe
con el mismo procedimiento para la siguiente instrucción, así
hasta ejecutar todo el programa.

Al período en el que se ejecuta una instrucción se le conoce


como ciclo de instrucción o ciclo fetch.

Para revisar a detalle el funcionamiento del CPU consulta el


siguiente documento Unidad 1. Funcionamiento de la Unidad
Central de Procesamiento CPU en la sección Material de apoyo.

Con el fin de ilustrar este procedimiento, se analizará la


ejecución del siguiente programa escrito en un lenguaje de
programación ficticio.

Ejemplo de ciclo de instrucción:


El siguiente conjunto de instrucciones calcula el área de un
rectángulo. Para comenzar es necesario delimitar el problema
cuyo objetivo es obtener el área de un rectángulo. Como se sabe,
los datos que se requieren para poder calcularla, según la
fórmula, son las medidas de la base, las medidas de la altura,
realizar la operación de multiplicación la base del rectángulo,
por el dato que corresponde a la altura:
𝑏∗ℎ
El ejemplo de programa para calcular el área de un rectángulo es
el siguiente:
Imprimir “Ingresa la base:”
Leer b
Imprimir “Ingresa la altura:”

UNADM | DCEIT | FPR 11


Unidad 1. Preparando el camino hacia la programación
Leer h
área← b*h
Imprimir área

Antes de definir paso a paso la ejecución de este programa se


describirá la función de cada una de las instrucciones que lo
integran.

En programación hay una nomenclatura en la cual la información


contenida dentro de los signos <> (se les conoce como
picoparéntesis o signos mayor y menor que) debe ser modificada
por el programador, es decir, son datos que se proporcionan a la
computadora y dependen del objetivo planteado. Según el ejemplo
la palabra Dato puede ser una letra o un símbolo dependiendo del
planteamiento, es decir, es el nombre del campo o variable y
éste debe ser modificado.

Instrucción Descripción
Imprime en el dispositivo de salida estándar
Imprimir el <Dato> indicado en la instrucción, que
<Dato> puede ser un mensaje de texto o el valor de
una variable.
Lee por medio del teclado un dato, lo
Leer <X> almacena en la variable <X> indicado y lo
almacena en la memoria RAM.
La flecha representa una asignación, esta
<X> ← <Dato> acción actualiza la dirección de memoria
asignada a <X> con el valor <Dato>.
Lista de instrucciones en lenguaje de programación

Cabe señalar que, en los lenguajes de programación, las


direcciones de memoria se representan por medio de variables,

UNADM | DCEIT | FPR 12


Unidad 1. Preparando el camino hacia la programación
para hacerlos más legibles. De tal manera que <X> representa una
variable y <Dato> puede ser un mensaje o cualquier valor.

Ahora sí, de acuerdo con la información anterior, en la


siguiente tabla se describe el ejemplo de un programa paso a
paso explicando las acciones que realiza la unidad de control
junto con las otras unidades de la computadora involucradas en
la ejecución de cada una de las instrucciones del programa.
Instrucción Descripción
 La unidad de control envía señales al
Imprimir “Ingresa base: ” monitor para que imprima el mensaje
“Ingresa base:”.
 La unidad de control coordina las
acciones necesarias para que, por
medio del teclado ,el usuario
Leer b
introduzca un número y lo almacene en
la memoria principal, en el espacio
correspondiente a la variable b.
 La unidad de control, nuevamente,
Imprimir “Ingresa altura:” envía una señal al monitor para que
imprima el mensaje “Ingresa altura:”.
 La unidad de control coordina las
acciones necesarias para que el
usuario introduzca un número, por
Leer h
medio del teclado, y lo almacene en el
espacio de memoria correspondiente a
la variable h.
 La unidad de control envía la señal
indicada a la ALU para que realice la
multiplicación, posteriormente envía
la señal a la memoria junto con el
área← b *h
resultado de la multiplicación para
que se almacene en el espacio de
memoria correspondiente a la variable
área.

UNADM | DCEIT | FPR 13


Unidad 1. Preparando el camino hacia la programación

 La unidad de control trae de la


memoria el dato almacenado en el
Imprimir área espacio asignado a la variable área y
coordina las acciones para que el
monitor imprima este valor.
Ejemplo de ejecución paso a paso de un programa

Para revisar el tema sobre el lenguaje máquina, consulta el


documento U1. Lenguajes de bajo nivel en la sección Material de
apoyo.

1.1.2. Lenguaje de programación

El lenguaje de programación sirve para escribir código orientado


a resolver algún problema o necesidad. Cada lenguaje de
programación se define a partir de un conjunto de símbolos
básicos, llamado alfabeto; un conjunto de reglas, llamado
sintaxis, que definen la forma de manipularlos o combinarlos
para representar instrucciones; y las reglas que especifican los
efectos de dichas instrucciones cuando son ejecutadas por la
computadora, conocidas como semántica. De esta manera se puede
decir que los elementos que conforman un lenguaje de
programación son:

𝐿𝑒𝑛𝑔𝑢𝑎𝑗𝑒 𝑑𝑒 𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑎𝑐𝑖ó𝑛 = 𝑎𝑙𝑓𝑎𝑏𝑒𝑡𝑜 + 𝑠𝑖𝑛𝑡𝑎𝑥𝑖𝑠 + 𝑠𝑒𝑚á𝑛𝑡𝑖𝑐𝑎

Los lenguajes de programación se clasifican en lenguajes de bajo


nivel y lenguajes de alto nivel dependiendo de su legibilidad
para el ser humano. Los primeros se caracterizan porque sus
instrucciones se parecen más a las acciones elementales que
ejecuta una computadora, como son: sumar, restar, guardar en

UNADM | DCEIT | FPR 14


Unidad 1. Preparando el camino hacia la programación
memoria, etcétera. En cambio, las instrucciones de los lenguajes
de alto nivel son más parecidas a un lenguaje humano, por lo
regular en idioma inglés.

Los programas escritos en bajo nivel describen a detalle lo que


sucede a nivel de hardware, mientras que los programas escritos
en un lenguaje de alto nivel lo ocultan, teniendo como ventaja
que son más fáciles de entender para las personas.

Estructura de un lenguaje
Como en muchos otros lenguajes, una función es un código de
programación que tiene una tarea específica y forma parte del
programa original. Es una secuencia de instrucciones precisas,
para realizar una tarea en específico.

Una función está definida por los siguientes elementos:


 Cabecera de la función. Está integrada por un tipo de dato,
un nombre de la función y una la lista de parámetros.
 Código de programación. Es único para cada función. Se
incluye el valor devuelto por la función.

Los aspectos más importantes en el diseño de una función son:


 Tipo de resultado. Se refiere al tipo de dato que devuelve
la función.
 Lista de parámetros.
 Cuerpo de una función. Se encierra entre llaves {}.
 Paso de parámetros.

UNADM | DCEIT | FPR 15


Unidad 1. Preparando el camino hacia la programación

 Declaración de variables de forma local. Dentro de una


función pueden declararse variables de distintos tipos,
pero estas perduran únicamente dentro la función.
 Valor devuelto por la función.

Una función devuelve un único valor, el valor que devuelve puede


ser de cualquier tipo de datos reconocido. El nombre de una
función comienza con una letra o un subrayado (_) y puede
contener las letras y subrayados que se desee.

A continuación, se muestra la estructura general de una función


en lenguaje programación C:

Tipos de datos
Los tipos de datos que suelen utilizarse en la mayoría de los
lenguajes de programación son:
 Cadena (texto).
 Entero (número entero).
 Decimal (número con punto decimal).

Evolución de los lenguajes de programación

UNADM | DCEIT | FPR 16


Unidad 1. Preparando el camino hacia la programación
Con las primeras computadoras surgió el primer lenguaje de
programación que fue precisamente el lenguaje de máquina, el
cual es considerado el lenguaje de primera generación. Las
instrucciones en lenguaje de máquina dependían de las
características de cada equipo, por lo que dada la dificultad de
desarrollar programas en unos y ceros, los investigadores de la
época desarrollaron el lenguaje ensamblador, cuyo conjunto de
instrucciones consta de palabras nemotécnicas que corresponden a
las operaciones básicas que una computadora puede ejecutar.

Para ilustrar esto se revisará la siguiente instrucción:1

Mueve el contenido del registro 8 al contenido del registro 10

En lenguaje de máquina, ésta se podría representar como:


0010 0000 1000 0100

Lo anterior es ilegible para el ser humano, en cambio en


lenguaje ensamblador esta instrucción se puede representar de la
siguiente forma:
MOV R8, R10

El código anterior continúa estando en clave, pero es


definitivamente más amigable que las cadenas de ceros y unos.

Para traducir de lenguaje ensamblador a lenguaje de máquina, se


desarrollaron programas llamados ensambladores (en inglés,
assemblers). Este lenguaje fue considerado de segunda
generación. Posteriormente, en la década de los 50´s aparecieron

1
Este ejemplo es una adaptación de la versión original que aparece en (Joyanes & Zohanero, 2005, pág. 32)

UNADM | DCEIT | FPR 17


Unidad 1. Preparando el camino hacia la programación
los primeros lenguajes de alto nivel, cuyas instrucciones son
más parecidas al idioma inglés y, por lo tanto, más fácil de
utilizar para los programadores, además de que son
independientes de la arquitectura de las computadoras. Algunos
ejemplos son: FORTRAN y COBOL (que son los primeros lenguajes
que aparecieron y en sus inicios se utilizaron para aplicaciones
científicas), C, Pascal, Ada, Lisp y Prolog (utilizados
principalmente en inteligencia artificial), Java, C++, C#, entre
otros.

Al igual que el lenguaje ensamblador, los programas escritos en


un lenguaje de alto nivel deben ser codificados a lenguaje de
máquina, así que junto con ellos se desarrollaron programas
traductores, que de acuerdo con la forma en que trabajan se
dividen en dos tipos: compiladores e intérpretes.

Compiladores. Traducen todo el programa escrito en un lenguaje


de alto nivel, llamado programa o código fuente, generando un
nuevo programa objeto que está escrito en lenguaje de máquina y
a partir de éste se genera un programa ejecutable, el cual puede
ejecutarse cada vez que se desee sin tener que compilar el
programa fuente nuevamente. Además, como parte del proceso de
traducción el compilador detecta los errores que hay en el
código fuente, informándole al programador para que los corrija,
pues un programa sólo se compila si no tiene errores.

Intérprete. Revisa cada línea de código individualmente, la


analiza y enseguida la ejecuta, sin revisar todo el código y sin
generar un programa objeto, así que cada vez que se quiere

UNADM | DCEIT | FPR 18


Unidad 1. Preparando el camino hacia la programación
ejecutar el programa se vuelve a traducir el programa fuente
línea por línea.

Por lo anterior, los compiladores requieren una fase extra antes


de poder generar un programa ejecutable, y aunque esto pareciera
menos eficiente en cuanto a tiempo, los programas creados con
compiladores se ejecutan mucho más rápido que el mismo programa
ejecutado con un intérprete. Adicionalmente, cuando un programa
ya ha sido compilado puede ejecutarse nuevamente sin tener que
compilarse, mientras que los programas que son interpretados, se
deben volver a traducir cada vez que se ejecutan.

Para revisar una explicación más detallada sobre los lenguajes


de bajo nivel, revisa el documento U1. Lenguajes de bajo nivel
en la sección Material de apoyo.
Conforme han ido evolucionando las computadoras también lo han
hecho las estrategias para solucionar problemas, generando
nuevos programas con diferentes filosofías, llamadas paradigmas
de programación.

1.1.3. Paradigmas de programación

Un paradigma “es un conjunto explícitamente determinado de


conceptos y proposiciones usadas para dirigir investigación
dentro de un campo determinado” (Cedano, Et al, 2014, p. 165).

“Los paradigmas de programación se definen como las diversas


maneras que a lo largo de la transformación de los lenguajes de
programación se han reconocido como estilos para programar y

UNADM | DCEIT | FPR 19


Unidad 1. Preparando el camino hacia la programación
resolver problemas. […] Cuando se describen los distintos
enfoques del desarrollo de un programa y las técnicas-y
lenguajes- correspondientes, se habla de paradigma de
programación. Éste define la forma en que se estructura el
código, y la relación de éste con los datos.” (Ibídem, p. 165).

Un lenguaje de programación siempre sigue un paradigma de


programación, aunque también podemos encontrar lenguajes con la
influencia de dos paradigmas, tal es el caso del lenguaje C++,
que surgió bajo el paradigma procedimental y se transformó al
paradigma orientado a objetos, de tal manera que puede soportar
ambos paradigmas.

Los paradigmas de programación más importantes son: imperativo,


funcional, lógico y orientado a objetos. Para revisar en qué
consisten estos paradigmas, revisa el documento U1. Paradigmas
de programación en la sección Material de apoyo.

1. 2. Metodología de la programación
En programación, se entiende como metodología al “conjunto de
estrategias usadas para abordar un problema y transformarlo en
un programa codificado que tendrá una estructura o arquitectura
acorde con un paradigma de programación” (Martínez y Martín,
2003, p.46).

La Importancia de contar con una metodología radica en la


necesidad de sistematizar las acciones a realizar para la
resolución del problema propuesto considerando todos los
requerimientos, datos y objetivo del programa, es decir, todos

UNADM | DCEIT | FPR 20


Unidad 1. Preparando el camino hacia la programación
los elementos necesarios para desarrollar un programa que dé
solución a un requerimiento específico, con ello se reduce la
probabilidad de error al momento de ejecutar un programa, y los
costos que implica realizar correcciones.

1.2.1. Fases de la metodología de programación


Independientemente del paradigma que se elija y del lenguaje que
se utilice para programar, existe un conjunto de fases que deben
seguirse para realizar un programa de computadora que
constituyen una metodología (Levine, 2001):

Fases de la metodología de programación

Planteamiento del problema


Es la primera fase del ciclo, consiste en seleccionar y plantear
el problema que se quiere resolver para poder comenzar su
análisis. Es muy importante tener bien claro y delimitar desde
un inicio el problema a resolver pues de esto dependerá el éxito
de las siguientes fases del proceso. En el planteamiento del
problema se deben considerar los insumos (datos de entrada) que
se necesitan para resolver el problema; los pasos a seguir para
su solución y el producto final (datos de salida).

Análisis del problema

UNADM | DCEIT | FPR 21


Unidad 1. Preparando el camino hacia la programación
En esta fase se determina ¿qué hace el programa? Por lo cual
debe definirse de manera clara y concisa el problema en
cuestión, se debe establecer el ámbito del problema, las
características, limitaciones y modelos de lo que se desea
resolver. Este paso debe conducir a una especificación completa
del problema en donde se describa cuáles son los
datos requeridos para resolverlo (datos de entrada) y cuál es el
resultado deseado (salida).

El análisis del ejemplo es muy simple y se resume en la


siguiente tabla:

¿Cuál es la salida El área de un rectángulo,


deseada? la cual identificaremos
como área
¿Qué método(s) se El área de un rectángulo se
pueden utilizar para puede calcular con la
llegar a la solución? siguiente fórmula:
Á𝑟𝑒𝑎 = 𝐵𝑎𝑠𝑒 ∗ 𝐴𝑙𝑡𝑢𝑟𝑎
¿Qué datos de entrada Por el planteamiento del
se requieren? problema y dado el método
anterior, los únicos datos
que se requieren son: la
medida de la base que se
representa por b y la
medida de la altura
indicada por h
¿Qué datos o En este caso no se requiere
información adicional más información.
es necesaria para
solucionar el problema?
¿Existe algún problema Las únicas restricciones
o condiciones que deban son que las medidas de la
cumplirse? base y altura sean mayores

UNADM | DCEIT | FPR 22


Unidad 1. Preparando el camino hacia la programación

a cero.

Análisis del problema ejemplo

Diseño del algoritmo


En esta fase se define ¿cómo el programa resuelve el problema?
Para ello, se describe paso a paso la solución del mismo, lo
cual se conoce como algoritmo. Cuando el problema es grande se
recomienda dividirlo en problemas más pequeños y resolver por
separado cada uno de ellos. A esta metodología se le conoce como
diseño descendente (top-down) o modular. Existen diferentes
formas de representar un algoritmo, algunas formales como una
fórmula matemática, o informales, como es el caso del lenguaje
natural.

Para continuar con el desarrollo del programa ejemplo, se


planteará la solución como una secuencia de pasos conocida como
pseudocódigo:

Calcula el área de un rectángulo

1. Obtener la medida de la base (𝑏) y la


altura (ℎ)
2. Calcular: á𝑟𝑒𝑎 = 𝑏 ∗ ℎ
3. Imprimir el resultado (á𝑟𝑒𝑎)
Ejemplo de pseudocódigo

Los algoritmos en la programación. Como ya se mencionó, las


computadoras necesitan recibir indicaciones en un formato entendible
para ellas, con el fin de que realicen las acciones deseadas. Las
indicaciones u órdenes se agrupan en un programa, al conjunto de
programas se le conoce como software. Para analizar la estructura de

UNADM | DCEIT | FPR 23


Unidad 1. Preparando el camino hacia la programación
un programa, éste "se puede dividir en dos partes que son: el formato
de representación interno del programa, que constituye el lenguaje
máquina o código ejecutable, y el formato de presentación externa, que
es un archivo o un conjunto de archivos, que puede o no estar en un
formato que puede ser leído por el usuario (es decir, en un formato
que respeta las reglas)” (Juganaru, 2014, p.2).

Para que la computadora realice las acciones deseadas, es


necesario elegir el software más adecuado para escribir un
programa que realice la acción deseada., a esta acción se le
denomina programación, con ello, no se afirma que la
programación es sólo la escritura de código, la programación
implica “un conjunto de tareas que se deben cumplir, a fin de
que el código que se escribió resulte correcto y robusto, y
cumpla con el objetivo o los objetivos para los que fue creado.”
(Ibídem) Para ello, es preciso realizar dos acciones dependiendo
del tipo de problema a resolver o acciones a realizar:
 “Conocer las herramientas, los formalismos y los métodos para
transformar un problema en un programa escrito en un lenguaje
(que posiblemente no será el lenguaje máquina), y para que
dicho programa pueda ser transformado en un código ejecutable.
 Saber transformar el problema inicial en un algoritmo y luego
en un programa” (Ibídem).

Para los casos de problemas muy generales, existen métodos


conocidos que solo se adaptan a un problema en particular, el
método es por lo general un algoritmo o una técnica de
programación.

UNADM | DCEIT | FPR 24


Unidad 1. Preparando el camino hacia la programación
La palabra algoritmo proviene del nombre de un matemático persa
conocido como Mohammad Al-KhoWârizmi, nacido alrededor del 780
d. c. en KhoWârizm, de ahí su seudónimo. Se considera como el
padre de la algoritmia porque definió las reglas paso a paso
para sumar, restar, multiplicar y dividir números decimales. La
traducción al latín de Al-Khwārizmī es algoritmi, que da origen
a la palabra algoritmo (Joyanes & Zohanero, 2005). Según la RAE
(2016) un algoritmo es un “Conjunto ordenado y finito de
operaciones que permite hallar la solución de un problema”, y
también es “Método y notación en las distintas formas del
cálculo”.

Formalmente, en programación, un algoritmo se define como una


secuencia finita de instrucciones precisas y eficaces para
resolver un problema, que trabaja con uno o más datos (entrada)
y devuelve un resultado (salida) (Viso & Peláez, 2007).

Para llegar a la solución de un problema se requiere


creatividad, ya que el programador sólo cuenta con la
especificación del problema y su experiencia en resolverlos de
una forma estructurada de inicio a fin.

Existen dos maneras de representar un algoritmo: una gráfica,


conocida como diagramas de flujo; y otra, similar a un lenguaje
humano, la cual se denomina pseudocódigo.

Los diagramas de flujo son una representación totalmente gráfica


de un algoritmo que utiliza símbolos para representar las
instrucciones y flechas para unirlas e indicar el orden en el

UNADM | DCEIT | FPR 25


Unidad 1. Preparando el camino hacia la programación
que deben ejecutarse llamadas líneas de flujo, lo anterior hace
más fácil seguir la secuencia de la ejecución de las
instrucciones. Dichos símbolos fueron normalizados por el
Instituto Norteamericano de Normalización ANSI (American
National Standards Institute, por sus siglas en inglés).

Algunos de los símbolos más utilizados se muestran en el


siguiente cuadro:

Símbolo Descripción
Terminal. Representa el inicio y el final de
un algoritmo.

Entrada y Salida (E/S). Representa la


lectura de datos desde el dispositivo de
entrada estándar, así como la impresión de
datos en el dispositivo de salida estándar.
Proceso. Representa cualquier tipo de
operación que pueda originar un cambio de la
información almacenada en memoria,
asignaciones u operaciones aritméticas.
Escribir. Despliega los textos o contenidos
de las variables en cuestión.

Decisión. Nos permite analizar una


situación, con base en los valores verdadero
y falso. Toma una decisión de las
instrucciones que a continuación ejecuta el
algoritmo.
Conector. Sirve para enlazar dos partes
cualesquiera del diagrama que están en la
misma página.

UNADM | DCEIT | FPR 26


Unidad 1. Preparando el camino hacia la programación

Línea de flujo. Indica el orden de la


ejecución de las operaciones. La flecha
indica cuál es la siguiente instrucción que
se debe realizar.
Conector. Conecta a dos puntos del diagrama
cuando éstos se encuentran en páginas
diferentes. Representa el inicio y el final
de un programa.
Llamada a subrutina. Llama a un proceso
determinado o subrutina. Una subrutina es un
módulo independiente del módulo principal,
que realiza una tarea determinada y al
finalizar regresa el control de flujo al
módulobásicos
Símbolos principal.
de los diagramas de flujo

A continuación, consulta el documento U1. Algoritmos y diagramas


de flujo, en la sección Material de apoyo.

A continuación, se muestra el diagrama de flujo del problema que


hemos tomado como ejemplo en esta Unidad y que consiste en
calcular el área de un rectángulo:

UNADM | DCEIT | FPR 27


Unidad 1. Preparando el camino hacia la programación

Ejemplo de diagrama de flujo

El pseudocódigo es un lenguaje de especificación formal de


algoritmos. La solución de un problema se representa de manera
narrativa utilizando palabras claves, generalmente verbos,
escritos en un lenguaje natural, que en nuestro caso será
español. Es una de las representaciones de algoritmos más
utilizadas por su parecido con el lenguaje natural y porque su
codificación en un lenguaje de programación estructurado y
modular como C++ es directa. En el ejemplo anterior se muestra
el pseudocódigo escrito en solución al problema de calcular el
área de un rectángulo.

UNADM | DCEIT | FPR 28


Unidad 1. Preparando el camino hacia la programación

Un algoritmo también se puede expresar mediante una fórmula


matemática, en el caso del ejemplo que hemos tratado, esta
fórmula es:
á𝑟𝑒𝑎 = 𝑏𝑎𝑠𝑒 × 𝑎𝑙𝑡𝑢𝑟𝑎

Se puede utilizar cualquiera de las dos representaciones para


diseñar un algoritmo, pues en cualquiera de las dos se puede
expresar un algoritmo estructurado, de tal manera que la más
conveniente depende del estilo de cada programador.

La forma de evaluar el correcto funcionamiento del pseudocódigo


es a través de una prueba de escritorio. La prueba de escritorio
consiste en que el programador siga los pasos descritos en el
pseudocódigo simulando el comportamiento de la computadora. Para
ello requiere definir un conjunto de datos de prueba que le
permita evaluar todos los posibles resultados que se obtendrán
una vez que se lleve a cabo todos los pasos descritos en el
pseudocódigo. Para fines de comprobación y de familiarización
del funcionamiento de un pseudocódigo se recomienda utilizar un
número finito de datos y escribir las variables en una hoja de
papel, para el caso de un problema simple, para el desarrollo de
sistemas más complejos existen herramientas más acordes para
realizar esta comprobación.

A continuación, se expone un ejemplo de prueba de escritorio


considerando los datos del problema anterior.
Datos de entrada Operación o Resultado
instrucción a

UNADM | DCEIT | FPR 29


Unidad 1. Preparando el camino hacia la programación
realizar
Base, altura Área=base*altura Área
5, 10 5*10 50

En este ejemplo no se muestran variables porque se trata de un


pseudocódigo; en el caso de verificar el funcionamiento del
código de un programa, será necesario desglosar cada una de las
variables que intervienen en el proceso.

Implementación (codificación)

El algoritmo no puede ser ejecutado por una computadora, por


ello debe traducirse a un lenguaje de programación (como por
ejemplo el lenguaje C) para obtener un programa fuente que se
traduzca a lenguaje de máquina que pueda ser ejecutado por la
computadora.

En el siguiente cuadro se muestra la codificación del algoritmo


en lenguaje C, por el momento no profundizaremos en la
estructura y los componentes de este lenguaje, simplemente se
expone este código a manera de ejemplo de lo que se produce en
la fase de implementación o codificación.
#include<stdio.h>
#include<stdlib.h>
main()
{
int b,h, area;
printf("Ingresa la base y altura:");
scanf("%d %d", &b,&h);
area = b * h;
printf("Area = %d", area);
}

UNADM | DCEIT | FPR 30


Unidad 1. Preparando el camino hacia la programación
Ejemplo de Programa en lenguaje C que calcula área de un rectángulo.
En la unidad 2 se estudiará con más detalle este tema abordando
el lenguaje C.

Validación y pruebas
Esta fase se lleva a cabo una vez que se ha codificado el
algoritmo previamente diseñado con el fin de verificar que su
ejecución sea correcta. Existen diferentes formas de probar que
la solución es correcta, algunas de ellas son formales y otras
informales: las primeras se utilizan para garantizar que el
programa o algoritmo siempre calcule el resultado deseado para
cualquier conjunto de datos de entrada; en cambio, en las
segundas sólo se prueba que funciona correctamente para algunos
datos de entrada, tratando de encontrar posibles errores, en
este caso no se puede garantizar que el programa o algoritmo
calcule la salida correcta para cualquier conjunto de datos. En
cualquiera de los dos casos, si se encuentra alguna falla se
debe corregir y volver a realizar pruebas.

Dado que el problema que estamos analizando como ejemplo es muy


sencillo, si se ejecuta manualmente el programa o algoritmo
relacionado para un caso específico de rectángulo se observará
que el resultado es correcto. En la siguiente figura se ilustra
la ejecución del programa:

Resultado de la ejecución del programa ejemplo

UNADM | DCEIT | FPR 31


Unidad 1. Preparando el camino hacia la programación

Documentación
Cualquier proyecto de software por la complejidad que tiene
requiere que tanto las ideas principales como el desarrollo de
principio a fin sea documentado con el fin de que se pueda
entender la lógica del programa y de ser necesario se pueda
modificar o darle mantenimiento posteriormente, sin tantas
complicaciones. Es común que si se desea modificar un programa y
no se tiene información acerca de cómo fue construido
originalmente, sea más fácil volverlo a hacer desde el principio
que intentar entender la lógica aplicada en un inicio. Uno de
los mejores ejemplos de la importancia de la documentación es el
software libre, en el cual colaboran diversos desarrolladores
para su elaboración, teniendo el código fuente disponible para
modificarlo a su conveniencia. Estos desarrolladores se
encuentran en diferentes puntos geográficos del globo terráqueo
e incluso varios hablan diferentes idiomas, así es que la
documentación les permite entender lo que está haciendo cada uno
y bajo qué método está trabajando.

Como parte de la documentación también deben incluirse manuales


de usuario y las normas de mantenimiento para que se haga un
buen uso del software y éste se mantenga al día.

Mantenimiento
Esta fase tiene sentido una vez que fue terminada y liberada una
primera versión del programa, misma que ya está siendo

UNADM | DCEIT | FPR 32


Unidad 1. Preparando el camino hacia la programación
utilizada. En esta fase se actualiza y modifica dicho programa
para corregir errores no detectados o para cambiar y/o agregar
una nueva función. Siguiendo con nuestro ejemplo, se podría
extender el programa ejemplo que calcula el área de un
rectángulo para obtener también su perímetro:
#include<stdio.h>
#include<stdlib.h>
main()
{
int b,h, area, perimetro;
printf("Ingresa la base y altura:");
scanf("%d %d", &b,&h);
perimetro = 2*b + 2*h;
area = b * h;
printf("Perimetro = %d", perimetro);
printf("Area = %d", area);
}

Ejemplo de mejora al programa original incluyendo el cálculo del perímetro de un


rectángulo

En el programa se resaltan las instrucciones que se añadieron


para calcular el perímetro.

La metodología de programación sirve para desarrollar software


desde el inicio con su diseño hasta el final con su
implementación, de ahí la importancia de entender las diferentes
fases y las actividades involucradas en cada una de ellas, con
el fin de dar una solución óptima al problema en cuestión.

Cierre de la unidad

UNADM | DCEIT | FPR 33


Unidad 1. Preparando el camino hacia la programación
Al concluir esta primera unidad se abordó de manera general, las
partes que integran una computadora y la manera en que cada una
de ellas interactúa para obtener el resultado esperado por el
usuario. Así mismo, se expusieron las diversas formas de
comunicación con las máquinas a través de lo que se denominan
lenguajes de programación y cómo los distintos paradigmas que
existen permiten aplicar las opciones que resulten más
favorecedoras para la resolución de los problemas que se nos
planteen, distinguiendo los elementos de un programa y
desarrollo del mismo mediante la programación.

Es muy importante tener en mente que el desarrollo y puesta en


marcha exitosa de un programa depende de que se siga
metódicamente cada una de las fases involucradas en dicho
proceso creativo, independientemente del lenguaje que se
utilice. Lo anterior, nos permitirá diseñar algoritmos y
soluciones óptimas bien estructuradas para responder a las
necesidades de la industria en la que te desarrolles
profesionalmente.

Fuentes de consulta

 Cedano Olvera, M. A. Et al. (2014). Fundamentos de


computación para ingenieros. México: Grupo Editorial
Patria.

UNADM | DCEIT | FPR 34


Unidad 1. Preparando el camino hacia la programación

 Jiménez, C. M. y Otero, C. B. (2013). Fundamentos de


ordenadores: programación en C. Barcelona: Universitat
Politécnica de Catalunya.

 Joyanes, L., & Zohanero, I. (2005). Programación en C.


Metodología, algoritmos y estructuras de datos. España: Mc
Graw Hill.

 Juganaru, M.M. (2014). Introducción a la programación. 1ª


Ed. México: Editorial Patria.

 Levine, G. (2001). Introducción a la Computación y a la


Programación Estructurada. México: Mc Graw Hill.

 Martínez Gil, F.A., y Martín Quetglás, G. (2003).


Introducción a la programación estructurada en C. Valencia:
Universitat de València

 Mejía Mesa, A. (2004). Guía práctica para manejar y reparar


el computador (p. 36-41). Bogotá: Panamericana Formas e
Impresos.

 Quero Catalinas, E. (2002). Sistemas operativos y lenguajes


de programación. Madrid: Thomson Ediciones-Paraninfo.
p.128-130

 Rabasa Dolado, A., Santamaría Arana, L. (2004). Metodología


de programación. Principios y aplicaciones. Alicante:
Editorial Club Universitario.

UNADM | DCEIT | FPR 35


Unidad 1. Preparando el camino hacia la programación

 RAE Real Academia Española (2016). Algoritmo. Recuperado de


http://dle.rae.es/?id=1nmLTsh

 Sánchez Montúfar, L.A. (2005). Informática. México: Pearson


Educación

 Winder, R. (1995). Desarrollo de software con C++. Madrid:


Díaz de Santos.

UNADM | DCEIT | FPR 36

Вам также может понравиться