Vous êtes sur la page 1sur 31

Ciencias Exactas Ingeniería y Tecnología

Primer Semestre

Programa de la asignatura:
Fundamentos de programación

Unidad 1.
Preparando el camino hacia la programación

Ciudad de México, junio de 2019

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 ........................................................................................................ 4
1.1. Introducción a la programación...................................................................................... 4
1.1.1. Ejecución de programas en la computadora .............................................................. 8
1.1.2. Lenguaje de programación..........................................................................................12
1.1.3. Paradigmas de programación .....................................................................................17
1. 2. Metodología de la programación .................................................................................18
1.2.1. Fases de la metodología de programación ...............................................................18
Cierre de la unidad ................................................................................................................30
Fuentes de consulta..............................................................................................................30
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.
Unidad 1. Preparando el camino hacia la programación

Propósitos

Al finalizar la unidad podrás:

· Comprender los conceptos básicos relacionados con la computadora y los


lenguajes de programación.
· Comprender qué es la programación.
· Distinguirás los paradigmas de programación y los lenguajes asociados a
éstos.
· Reconocerás las fases de la metodología de la programación.
· Codificarás programas sencillos en lenguaje C++.
· Identificarás los datos de entrada y salida de un algoritmo.
· Diseñarás algoritmos que solucionen problemas sencillos.
· Representarás algoritmos en diagrama de flujo y en pseudocódigo.
· Conocerás el procedimiento a seguir para verificar la correcta ejecución de un
algoritmo.

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.

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
Unidad 1. Preparando el camino hacia la programación
resolución S
(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:

Un programa se compone, entre otras cosas, de:


· Datos: variables o constantes.
Unidad 1. Preparando el camino hacia la programación

· 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:

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
Unidad 1. Preparando el camino hacia la programación
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).

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
Unidad 1. Preparando el camino hacia la programación
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.

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.
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:”
Leer h
área b*h
Imprimir área
Unidad 1. Preparando el camino hacia la programación
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

Imprimir
Imprime en el dispositivo de salida estándar el
<Dato>
<Dato> indicado en la instrucción, que puede ser un
mensaje de texto o el valor de una variable.
Lee por medio del teclado un dato, lo almacena en la
Leer <X> variable <X> indicado y lo almacena en la memoria
RAM.
La flecha representa una asignación, esta acción
<X> <Dato> 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, 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
Unidad 1. Preparando el camino hacia la programación
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 monitor
I
§ La unidad de control coordina las acciones
necesarias para que, por medio del teclado ,el
usuario introduzca un número y lo almacene
en la memoria principal, en el espacio
correspondiente a la variable b.
§ La unidad de control, nuevamente, envía una
señal al monitor para que imprima el
I
§ La unidad de control coordina las acciones
necesarias para que el usuario introduzca un
número, por 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 resultado de la multiplicación
para que se almacene en el espacio de
memoria correspondiente a la variable área.
§ La unidad de control trae de la memoria el
dato almacenado en el 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.
Unidad 1. Preparando el camino hacia la programación

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 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.
Unidad 1. Preparando el camino hacia la programación
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.
· 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:
Unidad 1. Preparando el camino hacia la programación

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


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 cuyo conjunto de instrucciones
consta de palabras nemotécnicas que corresponden a las operaciones básicas
que una computadora puede ejecutar.
Unidad 1. Preparando el camino hacia la programación
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 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

1
Unidad 1. Preparando el camino hacia la programación
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 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.
Unidad 1. Preparando el camino hacia la programación
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

U un conjunto explícitamente determinado de conceptos y


proposiciones usadas para dirigir investigación dentro de un campo
(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 resolver problemas C
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
(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.
Unidad 1. Preparando el camino hacia la programación

1. 2. Metodología de la programación
En programación, se entiende
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 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


Unidad 1. Preparando el camino hacia la 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


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, la cual


deseada? identificaremos como área
¿Qué método(s) se El área de un rectángulo se
pueden utilizar para llegar puede calcular con la siguiente
a la solución? fórmula:
Á
¿Qué datos de entrada se Por el planteamiento del
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
Unidad 1. Preparando el camino hacia la programación

la medida de la altura indicada


por h
¿Qué datos o información En este caso no se requiere más
adicional es necesaria información.
para solucionar el
problema?
¿Existe algún problema o Las únicas restricciones son que
condiciones que deban las medidas de la base y altura
cumplirse? sean mayores 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
Unidad 1. Preparando el camino hacia la programación
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 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) J .

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
umplir, a fin de que el código que se
escribió resulte correcto y robusto, y cumpla con el objetivo o los objetivos para
Ibídem) Para ello, es preciso realizar dos acciones
dependiendo del tipo de problema a resolver o acciones a realizar:
· C
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
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.

La palabra algoritmo proviene del nombre de un matemático persa conocido


como Mohammad Al-KhoWârizmi, nacido alrededor del 780 d. c. en
Unidad 1. Preparando el camino hacia la programación
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-K es algoritmi, que
da origen a la palabra algoritmo (Joyanes & Zohanero, 2005). Según la RAE
C finito de operaciones que
M

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 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).
Unidad 1. Preparando el camino hacia la programación

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.

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.
Unidad 1. Preparando el camino hacia la programación

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ódulo principal.
Símbolos básicos 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:

Ejemplo de diagrama de flujo


Unidad 1. Preparando el camino hacia la programación

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.

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
Unidad 1. Preparando el camino hacia la programación
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 instrucción Resultado
a 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.
Unidad 1. Preparando el camino hacia la programació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);
}
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:
Unidad 1. Preparando el camino hacia la programación

Resultado de la ejecución del programa ejemplo

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.
Unidad 1. Preparando el camino hacia la programación
Mantenimiento
Esta fase tiene sentido una vez que fue terminada y liberada una primera
versión del programa, misma que ya está siendo 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.
Unidad 1. Preparando el camino hacia la programación
Cierre de la unidad

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.

· Jiménez, C. M. y Otero, C. B. (2013). Fundamentos de ordenadores:


programación en C. Barcelona: Universitat Politécnica de Catalunya.
Unidad 1. Preparando el camino hacia la programación

· 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.

· 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.

Vous aimerez peut-être aussi