Presentación de la unidad
Bienvenido(a) al curso de
Fundamentos de programación, en esta primera unidad estudiaremos qué son las
computadoras y cómo pueden ayudarnos para resolver problemas.
Lo primero que debes tener claro
es que las computadoras no poseen inteligencia alguna, ya que por sí solas no
son capaces de resolver ningún problema, su importancia está en la capacidad de
datos que pueden almacenar y manipular; de tal manera que, para lograr nuestro
fin –resolver problemas mediante la computadora– es necesario desarrollar
programas escritos en un lenguaje de programación para que puedan ser
ejecutados por una computadora.
Propósito de la unidad
- Identificarás los conceptos básicos relacionados con la computadora y los lenguajes de programación.
- Distinguirás los elementos de una computadora que intervienen en la ejecución de un programa a través del modelo de Von Neumann.
- Distinguirás los paradigmas de programación y los lenguajes asociados a éstos.
- Reconocerás las fases que se siguen para solucionar un problema mediante la computadora.
Competencia(s)
específica(s)
Describir los elementos de la
computadora y el ciclo de vida del software mediante el análisis de un programa
simple, con el fin de identificar los pasos que se realizan para construirlo y
determinar qué elementos de la computadora intervienen en su ejecución.
Actividad previa de la Unidad
Foro: Fundamentos de
Programación.
Para facilitar el estudio de la
asignatura, hemos creado un foro de discusión general, a través del cual podrás
comentar cualquier asunto relacionado con Fundamentos de Programación; la
intención es que entre todos podamos apoyarnos para resolver dudas,
inquietudes, externar comentarios y por qué no, conocer a nuestros compañeros
de grupo. En virtud de lo anterior, realiza lo siguiente:
1. Ingresa al foro de
Fundamentos de Programación, genera una nueva entrada y en ella escribe una
breve presentación para que podamos conocerte. Para ello, considera aspectos
como:
- Generales (nombre, edad, estado civil, lugar de procedencia, etc.)
- Personales (intereses, ocupación, gustos, aficiones, etc.)
- Académicos (razones para estudiar esta carrera, lo que esperas de la asignatura, conocimiento previo en los temas de la asignatura)
2. Agrega un comentario a por lo
menos una (uno) de tus compañeras (os).
Recuerda que en tus
participaciones dentro de éste y todos los foros, wikis, blogs y demás
herramientas del aula, debes dirigirte a tus compañeras(os) de manera
respetuosa, cordial y en concordancia con lo establecido en cada ocasión.
Para conocer las normas de
participación del foro, da clic en el icono.
FPR_Act_Prev_NormasForo.pdf
Para ingresar al foro: En la ruta (parte superior
izquierda del aula) da clic en Fundamentos. Se enlistarán las actividades de la
unidad, da clic en foro Fundamentos de Programación
1.1. ¿Qué es una computadora?
Antes de comenzar, te invitamos a
observar el siguiente video en el que se hace una breve narración sobre la
historia de la computadora, con el fin de brindar un panorama general de sus
orígenes y de la manera en que ha evolucionado con el paso del tiempo hasta
llegar al modelo actual de funcionamiento:
Tomando en consideración la
información presentada en el video, a continuación estudiaremos los siguientes
temas que nos ayudarán a comprender mejor qué es y cómo funciona una
computadora:
- El Modelo de Von Neumann.
- Los pasos para realizar un programa.
- Los principales paradigmas y lenguajes de programación utilizados actualmente.
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:
Lo anterior nos lleva a
clasificar los componentes de una computadora en dos clases: 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, la memoria, entre otros.
|
Los recursos de software
|
Son aquellos elementos
intangibles sin los cuales la computadora no funcionaría, esto es, el soporte
lógico: programas y datos, entre los cuales se encuentran los sistemas
operativos, editores de texto, compiladores, bases de datos, videojuegos,
entre otros.
|
Como puedes darte cuenta, ambos
elementos son necesarios para que una computadora funcione, ya que si los
aislamos no pueden funcionar; por ejemplo, si tuviéramos una computadora con
todos los componentes de hardware más avanzados que existen (procesador,
tarjeta madre, monitor, teclado, etc.), pero sin Sistema Operativo instalado,
de poco serviría pues al prenderla, únicamente veríamos una pantalla negra y,
por consiguiente, no podríamos interactuar con ella. Para comprender mejor lo
que acabamos de decir, avanza al siguiente tema en el que conocerás la forma en
que se estructura y funciona una computadora.
1.2. Estructura y
funcionamiento de una computadora
Te has planteado alguna vez
preguntas como estas:
- ¿Cómo funciona y se estructura internamente la computadora?,
- ¿cómo se obtienen los resultados? y ¿cómo se guardan los programas y datos en la memoria?
Cuando tenemos un primer
acercamiento con equipos de cómputo, a pesar de manejarlos a diario, estas
preguntas no son tan fáciles de contestar. Es por eso que en esta sección
explicaremos y responderemos a estos cuestionamientos mediante el Modelo de Von
Neumann, el cual constituye la base de la arquitectura de las computadoras
actuales.
1.2.1. Modelo de Von
Neumann
El Modelo de Von Neumann propone
que tanto el programa como los datos sean almacenados en la memoria, de esta
forma la computadora no tiene que reconstruirse, pues para programarla
únicamente debe introducirse el programa por el dispositivo indicado y
posteriormente alimentarla con los datos de entrada para que calcule la salida
correspondiente.
Los elementos que componen esta
arquitectura son: la unidad central de procesamiento integrada por la unidad
aritmética-lógica y la unidad de control, la memoria y los dispositivos de entrada/salida.
A continuación se describe brevemente la función de cada uno de los elementos
que integran el Modelo de Von Neumann.
Unidad Central de
Procesamiento
|
Unidad
Central de Procesamiento
|
La Unidad Central de Procesamiento (CPU, Central Process
Unit) controla y coordina la ejecución de las instrucciones, para ello
utiliza la Unidad Aritmético-Lógica encargada del procesamiento de los datos
y la Unidad de Control para el procesamiento de las instrucciones.
|
Unidad
Aritmético-Lógica
|
Unidad Aritmético-Lógica (ALU, Arithmetic Logic Unit),
realiza todas las operaciones aritméticas (suma y resta) y lógicas
(operaciones del Álgebra de Boole). Además de los circuitos que le permiten
realizar dichas operaciones, la ALU incluye un elemento auxiliar donde se almacenan
temporalmente los datos que manipula, conocido como Acumulador o Registro
Temporal (TR, Temporal Register).
|
|
Unidad de
Control
|
Unidad de Control (CU, Control Unit), se encarga de leer
las instrucciones almacenadas en memoria, decodificarlas y después enviar las
señales a los componentes que están involucrados en su ejecución, para lo
cual tiene dos elementos auxiliares el Contador del Programa (PC, Program
Counter) y el Registro de Instrucción (IR, Instruction Register). En el IR se
guarda temporalmente la instrucción que debe ser ejecutada, mientras que en
el PC se almacena la dirección de memoria que contiene la siguiente
instrucción que se ejecutará.
|
Memoria Principal
|
Memoria
principal
RAM
ROM
|
La memoria principal es la
parte de la computadora donde se almacenan los datos y las instrucciones
durante la ejecución de un programa. Físicamente está compuesta por circuitos
integrados. Las computadoras actuales cuentan con un área de memoria de sólo
lectura – a la que se le conoce como memoria de tipo ROM (Read Only Memory)
–y otra en la cual es posible escribir y leer datos – denominada de tipo RAM
(Random Access Memory). Ésta tiene el inconveniente de ser volátil pues al
apagarse la computadora los datos almacenados se pierden.
|
Memoria
secundaria
|
Para resolver este
inconveniente, se cuenta con otro tipo de memoria, denominada memoria
secundaria, en ella se puede almacenar una gran cantidad de información
permanentemente, mientras el usuario no la borre. La desventaja de este tipo
de dispositivos es que no son tan rápidos como la memoria RAM. Los discos
duros, los discos ópticos (CD o DVD), la memoria flash (USB) y las cintas
magnéticas, entre otras, son ejemplos de dispositivos de almacenamiento
secundario.
|
Dispositivos de
entrada y salida
|
Los dispositivos de entrada y
salida (Input/Output) son responsables de la comunicación con el usuario del
sistema. Los dispositivos de entrada permiten
introducir en la computadora datos e instrucciones, mismas que son
transformadas en señales binarias de naturaleza
eléctrica para almacenarlas en la memoria. Por otro lado, los
dispositivos de salida permiten enviar los resultados a los usuarios de las
computadoras, transformando las señales eléctricas binarias en información
que éstos puedan comprender. El teclado está considerado como el dispositivo
de entrada estándar pero existen otros del mismo tipo, por ejemplo: el ratón, el escáner, la
lectora óptica, el micrófono o la tabla digital. A su vez, el monitor es el
dispositivo de salida estándar; otros ejemplos de dispositivos de salida son:
impresora, bocinas, plotter, etc.
|
Es así que todas las unidades de
la computadora se comunican a través del sistema de buses que son cables
mediante los cuales se envían señales y dependiendo de la información que
transmiten se clasifican en:
- El bus de direcciones transmite la dirección de memoria de la que se quiere leer o en la que se quiere escribir.
- El bus de control selecciona la operación a realizar en una celda de memoria (lectura o escritura).
- El bus de datos transmite el contenido desde o hacia una celda de memoria seleccionada en el bus de direcciones según la operación elegida en el bus de control sea lectura o escritura.
Ahora ya sabemos cómo está
estructurada internamente la computadora, qué elementos la integran y cuál es
la función de cada uno de ellos; el siguiente paso es descubrir cómo colaboran
para llevar a cabo la ejecución de un programa, enseguida lo explicamos:
Los datos de entrada que requiere
un programa se introducen a la computadora, a través de los dispositivos de
entrada; posteriormente se almacenan en la memoria RAM, para que la CPU pueda
procesarlos, conforme a las instrucciones del programa, hasta obtener el
resultado deseado, mismo que envía al usuario por medio de los dispositivos de
salida. Todas estas acciones son coordinadas por la unidad de control que envía
las señales y datos a cada uno de los dispositivos de la computadora
involucrados en la ejecución de las instrucciones del programa a través del
sistema de buses. En la siguiente sección se describe con mayor detalle este
proceso.
1.2.2. Ejecución de
programas en la computadora
Para entender mejor lo que sucede
en el interior de la CPU al ejecutar cualquier programa, a continuación se
describen de manera general los pasos que se realizan una vez que el programa y
los datos fueron almacenados en la memoria principal:
1
|
2
|
3
|
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.
|
La unidad de control se encarga de decodificar la
instrucción almacenada, detectando qué dispositivos están implicados en su
ejecución, éstos pueden ser: la ALU, cuando se tiene que hacer una operación;
los dispositivos de entrada y/o salida, cuando se tiene que enviar o recibir
un dato; o la memoria, si se quiere guardar o consultar un dato;
posteriormente envía las señales de control a los mismos indicándoles la
acción y si es el caso, los datos y/o la dirección de memoria
correspondiente.
|
Cuando los dispositivos realicen su tarea enviarán una
señal a la unidad de control, para que ésta repita el mismo procedimiento con
la siguiente instrucción, así se repite el proceso 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.
Con el fin de ilustrar este
procedimiento, analizaremos la ejecución del siguiente programa escrito en un
lenguaje de programación ficticio.
Programa
1: Calcula el área de un rectángulo
Ejemplo 1.1: El
siguiente conjunto de instrucciones sirve para calcular el área de un
rectángulo.
Imprimir “Ingresa la base:”
Leer b
Imprimir “Ingresa la altura:”
Leer h
area ? b*h
Imprimir área
|
Antes de definir
paso a paso la ejecución de este programa, describiremos la función de cada
una de las instrucciones que lo integran.
Imprimir
<dato> Imprime en el dispositivo
de salida estándar los datos indicados en la instrucción
Leer
<x> Leer por medio del
teclado un dato
<x>
<- <dato> asignar <x<
con el valor <dato> |
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, describamos paso a paso 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.
|
1)
La unidad de control
envía señales al monitor para que imprima el mensaje “Ingresa base:”.
2)
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.
3)
La unidad de control,
nuevamente, envía una señal al monitor para que imprima el mensaje “Ingresa
altura:”.
4)
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.
5)
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 a.
6)
La unidad de control
trae de la memoria el dato almacenado en el espacio asignado a la variable
area y coordina las acciones para que el monitor imprima este valor.
|
1.2.3. Almacenamiento
de programas y datos
La computadora sólo entiende
señales binarias: ceros y unos, encendido y apagado; ya que todos los
dispositivos que la integran trabajan con dos únicos estados: “hay corriente
eléctrica” y “no hay corriente eléctrica”, respectivamente. Por tal motivo, los
datos y programas almacenados en la memoria están codificados como cadenas de
1´s y 0´s para que la unidad de control pueda interpretarlos. A esta
codificación se le llama lenguaje de máquina.
Es importante mencionar que la
memoria está dividida en varias celdas, en cada una de las cuales se pueden
almacenar únicamente 0’s ó 1’s, a estos valores se les denomina valores binarios
o BIT´s (BInary digiT).
Las celdas se agrupan para formar
registros (también llamados palabras), a cada uno le corresponde una dirección
de memoria, así cuando se desea escribir o leer de la memoria un dato o una
instrucción se debe especificar la dirección donde se encuentra.
Como podrás imaginar, para un ser
humano resultaría sumamente complicado escribir los programas en lenguaje de
máquina, es por eso que los programas se escriben en lenguajes de programación
entendibles para los seres humanos y después se traducen mediante un software
especial –que puede ser un compilador o un traductor– a cadenas de 0´s y 1´s.
De tal manera que a cada instrucción le corresponde un código binario
específico y para cada dato también existe una codificación única.
Por ejemplo, la palabra “Hola” se
representa como “0100 1000 0110 1111 0110 1100 0110 0000”, ya que a cada letra
le corresponde una codificación:
H
|
O
|
L
|
A
|
0100 1000
|
0110 1111
|
0110 1100
|
0110 0000
|
El número 80 se puede representar
como “0101 0000” y la instrucción “MOV R2, R7” se codifica de la siguiente
manera “0010 0000 1000 0100.”
Si quieres conocer más sobre el
sistema binario, consulta la sección Material de apoyo.
Conforme fueron evolucionando las
computadoras se inventaron diversas maneras de representar la información en
código binario. Hoy en día existen codificaciones estándar para los símbolos y
los números, al igual que para las instrucciones; sin embargo, para nuestros
objetivos es suficiente tener claro que cualquier dato o instrucción puede ser
representado mediante cadenas de 0’s y 1’s. Por otro lado, escribir programas
en lenguaje binario es sumamente complicado para los seres humanos, por lo que
en las últimas décadas se han desarrollado diversos lenguajes de programación
que son más cercanos al lenguaje natural (humano), de los cuales hablaremos en
la siguiente sección.
1.3. Lenguajes de
Programación
Los lenguajes de programación
sirven para escribir programas de computadora orientados 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 define 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 tenemos que:
Lenguaje de programación = alfabeto + sintaxis + semántica
Por otro lado, dependiendo de su
legibilidad para el ser humano, los lenguajes de programación se clasifican en
lenguajes de bajo nivel y lenguajes de alto nivel. 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. En cambio,
las instrucciones de los lenguajes de alto nivel son más parecidas a un
lenguaje humano, por lo regular inglés. Por otro lado, 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.
1.3.1. Evolución de los
lenguajes de programación
Con las primeras computadoras surgió
el primer lenguaje de programación que –como es de imaginarse– fue 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 físicas
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 revisemos la
siguiente instrucción:
Mueve el
contenido del registro 8 al contenido del registro 10
En lenguaje de
máquina esta instrucción se podría representar como:
0010 0000 1000 0100
Lo cual es ilegible
para el ser humano, en cambio en lenguaje ensamblador esta instrucción se
puede representar de la siguiente forma:
MOV R8, R10
Aunque sigue
estando en clave, es 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 ellos se desarrollaron
programas traductores, que de acuerdo con la forma en que trabajan se dividen
en dos tipos: compiladores e intérpretes.
- Los 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 de nueva cuenta. 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.
- En cambio, un intérprete revisa una a una cada línea de código, 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.
De acuerdo con 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 se refiere, un programa se
ejecuta más rápido si se usa un
compilador en vez de un intérprete, además cuando el programa
ya ha sido compilado puede ejecutarse nuevamente sin tener que compilarse de
nuevo, mientras que si se usa intérprete, debe ser traducido cada vez que se quiera
ejecutar.
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, de esto hablaremos a
continuación.
1.3.2. Paradigmas de
los lenguajes de programación
Un paradigma
de programación representa un enfoque particular o filosofía para diseñar soluciones.
Los paradigmas
difieren unos de otros, en los conceptos y la forma de abstraer los
elementos involucrados en un problema, así como en los pasos que integran su solución del
problema, en otras palabras, el cómputo.
1.4. Ciclo de vida del software
Independientemente del paradigma que se siga y del lenguaje que se
utilice para programar, existe un conjunto de fases que deben seguirse para
realizar un programa de computadora, al cual se le conoce como ciclo de vida
del software, avanza a la siguiente pantalla para conocer más al respecto.
Las fases que
componen el ciclo de vida de software son:
- Planteamiento del problema
- Análisis del problema
- Diseño del algoritmo
- Implementación o codificación
- Pruebas y validación
- Documentación del programa
- Mantenimiento
A continuación se describe cada una de ellas:
Fases que componen el ciclo de vida de
software
|
|||||||||||
Planteamiento
del problema
|
Es la primera fase del ciclo, consiste únicamente en elegir el
problema que se quiere resolver para poder comenzar su análisis.
|
||||||||||
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 de nuestro ejemplo es muy simple y se resume en la
siguiente tabla:
|
||||||||||
Diseño
de la solución
|
Es 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 subproblemas 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.
En la
siguiente unidad estudiaremos a mayor profundidad los algoritmos y su
representación, pero para seguir con el desarrollo de nuestro programa
ejemplo, plantearemos la solución como una secuencia de pasos en español.
|
||||||||||
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 C) para obtener un programa fuente que se
traduzca a lenguaje de máquina para que sea ejecutado por la computadora. En
el siguiente cuadro se muestra la codificación en lenguaje C del algoritmo,
por ahora no es necesario que lo comprendas puesto que esto lo podrás hacer
conforme vayas aprendiendo a programar, por lo pronto solamente se muestra
con fines ilustrativos.
#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);
}
|
||||||||||
Validación
y pruebas
|
Esta fase debe hacerse una vez que se ha diseñado el algoritmo y
después de que se codifica, sirve para verificar que son correctos. Existen
diferentes formas de probar que la solución es correcta, algunas de ellas
formales y otras informales: las primera se utilizan para garantizar que el
programa o algoritmo siempre calcula 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 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. En este curso utilizaremos las pruebas de escritorio, las
cuales se explicarán en la unidad 2.
El ejemplo es muy sencillo y si ejecutamos manualmente el programa o
algoritmo mostrado en la fase anterior, con un caso específico de rectángulo
veremos que ambos son correctos. En la siguiente figura se ilustra la
ejecución del programa:
|
||||||||||
Documentación
|
Cualquier proyecto de software por la complejidad que tiene requiere
tanto las ideas principales como el
desarrollo de principio a fin sea documentado, con el fin de que cualquiera
puedan entender la lógica del programa y de ser necesario pueda modificarlos
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 sea más fácil volverlo
a hacer que intentar entenderlo. 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, los cuales se encuentran en
diferentes puntos geográficos de globo terráqueo, así que la forma de
entender que está haciendo cada uno y bajo que método es la documentación.
Además de que se debe tomar en cuenta que se llama software libre porque está
disponible el código fuente para que cualquier persona pueda modificarlo a su
conveniencia.
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.
|
||||||||||
Mantenimiento
|
Esta fase tiene sentido una vez que fue terminada una primera versión del programa
y ya está siendo utilizado. Ya que en ésta se actualiza y modifica para corregir errores
no detectados o para cambiar y/o agregar una nueva función. Por ejemplo, se puede extender el programa
1.1, que calcula el área de un rectángulo para que también calcule su
perímetro.
El siguiente conjunto de instrucciones calcula el área y perímetro
de un rectángulo.
#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);
}
En el programa se resaltan las instrucciones que se añadieron al programa
para calcular el perímetro.
|
Actividad Integradora
Ha llegado el momento de verificar qué tanto has aprendido con esta
unidad. Realiza la siguiente actividad, la cual tiene una doble finalidad: la
primera, que reconozcas qué tanto has aprendido para que por ti mismo valores
si la manera en que te has conducido hasta ahora por la asignatura ha sido o no
la correcta; y la segunda, que te diviertas ganándole a la ignorancia, porque
no todo deben ser letras y números, ¡llegó la hora de jugar!
- 1. El Modelo de Von Neumann propone que los programas y los datos sean almacenados en la CPU de la computadora para que puedan ser procesados. FALSO.- ¡Correcto! El Modelo de Von Neumann propone que los datos y programas sean almacenados en la memoria principal de la computadora, evitando así que tengan que reconstruirse cada vez que se quisiera realizar una nueva tarea.
- 2. Los datos que requiere un programa para realizar un cálculo deben estar en la memoria, de lo contrario no pueden ser procesados. VERDADERO.- ¡Correcto! Cuando se requiere un dato para realizar una instrucción la unidad de control se comunica con la memoria para obtenerlo y así poder hacer la operación indicada.
- 3. El sistema operativo, los compiladores y los editores de texto son ejemplos de software. VERDADERO.- ¡Correcto! Todos ellos son programas que permiten que la computadora realice ciertas tareas.
- 4. El teclado, el mouse y el scanner son ejemplos de dispositivos de salida. FALSO.- ¡Correcto! Los dispositivos de salida permiten enviar datos de la computadora al usuario y la función de todos los ejemplos listados en el enunciado es contraria (permiten que el usuario ingrese datos a la computadora).
- 5. Para ejecutar la siguiente instrucción X = 2 * Y Principalmente intervienen la unidad de control, la ALU y la memoria. VERDADERO.- ¡Correcto! La unidad de control envía todas las señales a los dispositivos involucrados en la ejecución de un programa; la Unidad Aritmética y Lógica (ALU) es la encargada de realizar todas las operaciones aritméticas y lógicas; y en la memoria se encuentran almacenados los datos.
- 6. Los datos y los programas se almacenan en la memoria ROM. FALSO.- ¡Correcto! La memoria ROM sólo es de lectura, así que no es posible modificarla. Los datos y programas se almacenan en la memoria RAM.
- 7. Los datos almacenados en memoria están representados como cadenas de unos y ceros. VERDADERO.- ¡Correcto! La computadora sólo entiende lenguaje de máquina, que son cadenas de ceros y unos, así que tanto los datos como los programas se traducen a éste para que puedan almacenarse en la memoria y sean procesados.
- 8. La computadora puede ejecutar directamente los programas escritos en lenguajes de alto nivel, como C, Java o PHP. FALSO.- ¡Correcto! Para que la computadora pueda ejecutar un programa escrito en un lenguaje de alto nivel debe traducirse a lenguaje de máquina, esta tarea la realiza un compilador o un intérprete.
- 9. La diferencia entre un compilador y un intérprete es que: el primero traduce y ejecuta una a una las instrucciones del programa fuente, en cambio un intérprete traduce todo el programa fuente a lenguaje de máquina generando un programa objeto que después se convierte en un programa ejecutable. FALSO.- ¡Correcto! El compilador es el que genera un programa ejecutable, de esta manera no es necesario volver a traducir el programa cada vez que se quiere ejecutar. El intérprete sólo traduce y ejecuta, una por una cada instrucción, sin generar ningún programa ejecutable, así que cada vez que se quiere ejecutar un programa se tiene que volver a traducir.
- 10. Las fases para resolver un problema mediante una computadora son:
Diseño de la solución
Implementación del programa
Validación y pruebas
Documentación
FALSO .- Correcto! Antes de realizar el diseño de la
solución (algoritmo) se requiere hacer un análisis del problema donde se
identifique la entrada y la salida del programa que se va a desarrollar.
¡Muy bien! No
olvides consultar cualquier duda que te surja con tu Facilitador.
¿Cómo te fue?
¿Pudiste vencer a la ignorancia? Recuerda que es muy importante que las bases
del curso las tengas muy bien asimiladas y comprendidas, pues estás comenzando
tu camino en el mundo de la programación y si tus bases no son sólidas
difícilmente podrás seguir con los temas y asignaturas posteriores.
Si derrotaste
con facilidad a la ignorancia, ¡felicidades!, parece que has comprendido bien
lo esencial de la unidad; si por el contrario, fuiste derrotada(o), no te
desanimes, mejor vuelve a repasar los contenidos en los que te viste más débil
y recuerda que cuentas con el apoyo de tu facilitador(a) para explicarte más a
fondo los temas que se te puedan dificultar.
Autoevaluación de la Unidad 1
Para
finalizar las actividades de la Unidad 1, realiza el cuestionario de autoevaluación
que hemos preparado para ti, como complemento de la actividad que acabas de
realizar. Ingresa al Cuestionario y contesta las preguntas que se te presentan.
Para ingresar, en la ruta (parte superior izquierda del aula) da clic en
Fundamentos. Se enlistarán las actividades de la unidad, da clic en la
Autoevaluación de la Unidad 1.
Cierre de la unidad
Aquí
concluimos la primera unidad de nuestro curso en la que, de manera general,
podemos decir que aprendimos las partes que integran una computadora y la
manera en que cada una de ellas interactúa para obtener como resultado la
interacción con el usuario.
También
aprendimos que existen varias formas de comunicarnos o hacernos entender por
estas máquinas a través de lo que denominamos Lenguajes de programación y que
existen varios paradigmas que determinan las características de esos lenguajes.
Por último,
conocimos las fases que se siguen cuando se realiza un programa de computadora,
independientemente del lenguaje que se utilice.
Si todo esto
que acabamos de decir te parece ya familiar, es decir, si sabes a que nos
estamos refiriendo al mencionar lo anterior, entonces ya estás lista(o) para
continuar con la unidad dos.
¡Adelante!
Fuentes de consulta
Guerrero, F.
(s.f.). mailxmail.com. Recuperado el 15 de agosto de 2010, de
http://www.mailxmail.com/curso-introduccion-lenguaje-c
Joyanes, L.,
& Zohanero, I. (2005). Programación en C. Metodología, algoritmos y
estructuras de datos. España: Mc Graw Hill.
Reyes, A.,
& Cruz, D. (2009). Notas de clase: Introducción a la programación. México,
D.F.: UACM.
Viso, E.,
& Pelaez, C. (2007). Introducción a las ciencias de la computación con
Java. México, D.F.: La prensas de ciencias, Facultad de Ciencias, UNAM.
Preguntas de la Unidad 1
Las etapas del ciclo de vida de software son:
I. Codificación; II. Pruebas y validación; III. Análisis del problema; IV.
Diseño de la solución; V. Mantenimiento. El orden en que se realizan es:
Seleccione
una respuesta.
|
III,
IV, I, II, V
A partir del planteamiento del
problema, se debe analizar que se requiere (datos de entrada) y que sé espera
(salida). Después se diseña una solución (algoritmo), el cual se debe
codificar en un lenguaje de programación. Después se debe verificar que
funcione. Posteriormente, si requiere una modificación para corrección o
extensión se realizará el mantenimiento.
Correcto
|
La diferencia entre un intérprete y un
compilador es:
|
El
intérprete traduce una a una cada instrucción mientras las va ejecutando. En
cambio, el compilador traduce todo el programa, generando un programa objeto
que después se convierte en un programa ejecutable.
La diferencia entre un intérprete y un compilador es que el intérprete
traduce una a una cada instrucción mientras las va ejecutando. En cambio, el
compilador traduce todo el programa, generando un programa objeto que después
se convierte en un programa ejecutable.
Correcto
|
Es un ejemplo de una instrucción en lenguaje
ensamblador.
|
MOV
R2, R7
MOV R2, R7 es un ejemplo de una instrucción en lenguaje ensamblador.
Correcto
|
De acuerdo con el modelo de Von Neumann, los
datos de un programa se almacenan en:
|
En la
memoria RAM
Para que los datos sean procesados deben estar en la memoria
principal, específicamente en la memoria RAM.
Correcto
|
Son ejemplos de dispositivos de salida
|
Bocinas
e impresora
Las bocinas e impresora son ejemplos de dispositivos de salida.
Correcto
|
No hay comentarios:
Publicar un comentario