You are on page 1of 13

Cajamarca, 9 de diciembre del 2013

El presente trabajo va dedicado a mis padres, a mis


tios,a mi enamorada, por estar presentes siempre
conmigo, y quieren lo mejor para mi.

Además quiero agradecer al profesor por haber


brindado este tiempo, sus conocimientos y
compartirlos con nosotros.
INTRODUCCION

A lo largo de la historia, el hombre se ha visto en la obligación de realizar un número


constante de tareas para poder sobrevivir. Con el paso del tiempo y el desarrollo de
la tecnología, estas tareas fueron ejerciéndose cada vez con un mayor grado
de productividad. El proceso de mejora fue lento pero continuo hasta la revolución
industrial, momento en el cual vemos como existe una rápida sustitución de
actividades manuales por el trabajo llevado a cabo mediante máquinas. Así, los bienes
de capital fueron aumentando cada vez más la productividad, circunstancia que
todavía está en proceso de expansión. Con el desarrollo de las primeras computadoras,
ya no solo el trabajo físico pudo reemplazarse por máquinas, sino también el trabajo
intelectual. En efecto, las computadoras pueden realizar cada vez con mayor poder
cifras enormes de cálculos complejos que tienen la posibilidad de procesar y generar
datos para el beneficio humano. La programación, en particular, es la adaptación de
ese potencial de las computadoras a las necesidades del hombre, generando distintos
procesos automáticos que generan resultados que sirven desde diversos aspectos,
como por ejemplo el laboral, el estético, el lúdico, etc.
MARCO TEORICO

Para crear un programa, y que la computadora lo intérprete y ejecute las instrucciones


escritas en él, debe usarse un lenguaje de programación. En sus inicios las
computadoras interpretaban sólo instrucciones en un lenguaje específico, del más bajo
nivel, conocido como código máquina, siendo éste excesivamente complicado para
programar. De hecho sólo consiste en cadenas de números 1 y 0 (sistema binario).
Para facilitar el trabajo de programación, los primeros científicos que trabajaban en el
área decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras
o letras provenientes del inglés; las codificaron y crearon así un lenguaje de mayor
nivel, que se conoce como Assembly o lenguaje ensamblador. Por ejemplo, para sumar
se usa la letra A de la palabra inglesaadd (sumar). En realidad escribir en lenguaje
ensamblador es básicamente lo mismo que hacerlo en lenguaje máquina, pero las
letras y palabras son bastante más fáciles de recordar y entender que secuencias de
números binarios. A medida que la complejidad de las tareas que realizaban las
computadoras aumentaba, se hizo necesario disponer de un método sencillo para
programar. Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea
tan trivial como multiplicar dos números puede necesitar un conjunto de instrucciones
en lenguaje ensamblador, en un lenguaje de alto nivel bastará con sólo una. Una vez
que se termina de escribir un programa, sea en ensamblador o en algunos lenguajes de
alto nivel, es necesario compilarlo, es decir, traducirlo completo a lenguaje máquina.1
Eventualmente será necesaria otra fase denominada comúnmente link edición o
enlace, durante la cual se anexan al código, generado durante la compilación, los
recursos necesarios de alguna biblioteca. En algunos lenguajes de programación,
puede no ser requerido el proceso de compilación y enlace, ya que pueden trabajar en
modo intérprete. Esta modalidad de trabajo es equivalente pero se realiza instrucción
por instrucción, a medida que es ejecutado el programa.

Diseñar un programa supone describir objetivos, seleccionar y secuenciar contenidos y


actividades así como especificar la metodología y forma de evaluación incluyendo
adecuación al currículum, al aula y a los contextos educativos para los cuales se
diseña.. Supone, en definitiva, trasladar la filosofía del currículo a un plan detallado de
enseñanza que variará en función del paradigma del que el programa sea reflejo.

El modo concreto en que el diseñador aplica la prioridad, selección, subdivisión y


secuenciación de objetivos y contenidos, así como la selección de la metodología y el
sistema de evaluación, refleja puntos de vista sobre la lengua, sobre la forma de usarla
y sobre su concepción de la enseñanza y aprendizaje de una lengua. En este sentido,
cabe afirmar que diseñar un programa de lengua puede entenderse como una
expresión de un determinado paradigma científico, en tanto que representación
concreta de conocimientos y capacidades. La representación de la lengua de un
diseñador de programas diferirá, por ejemplo, de la de un lingüista descriptivo, debido
precisamente a los requisitos pedagógicos de dicha representación.

Proceso de programación:

El proceso de programación

La programación es más que solamente escribir código. El software tiene su ciclo de


vida. Nace, crece, madura y finalmente muere, solamente para ser reemplazado por
un producto nuevo. El entendimiento del ciclo de vida de un programa es importante,
ya que, como programador, se pasará solamente poco tiempo en escribir código. La
mayoría de las veces la mayor parte del tiempo se invierte al modificar y revisar código
existente. Un código debe ser documentado, se le debe dar mantenimiento, debe ser
mejorado y vendido.

Los principales pasos que se deben seguir al elaborar un programa son:

1. Requerimientos: Los programas empiezan cuando alguien tiene la idea de hacer


algo y comienza a implementarlo. El documento con los requerimientos del sistema
describen, en términos generales, qué es lo que se quiere hacer.

2. Especificación del programa: La especificación es una breve descripción de qué


es lo que el programa hace. En un principio, una especificación preliminar describe qué
es lo que va a hacer el programa. Después, mientras el programa se va refinando, de la
misma manera se va refinando la especificación del mismo.

3. Diseño del código: El programador tiene que llevar a cabo un diseño del código
a implementar. En él se deben incluir los algoritmos utilizados, las definiciones de los
módulos a utilizar, archivos utilizados y estructuras de datos usadas en el programa. Es
aquí en donde se desarrolla el pseudocódigo del programa. El uso de diagramas de
flujo también nos permitirá obtener una abstracción sobre el problema, tanto en
entradas, salidas, flujo y procesamiento de la información.

4. Codificación: El siguiente paso es empezar a escribir el programa. Este primer


paso involucra primero escribir un prototipo y después irlo puliendo para crear el
programa final.

5. Pruebas: El programador debe diseñar un plan de pruebas para posteriormente


utilizarlo para probar su programa. Cuando es posible, debe existir un equipo de
pruebas, diferente del equipo de programadores.

6. Debugging: Desafortunadamente, pocos son los programas que funcionan a la


primera. Los programas deben ser corregidos y probados nuevamente.

7. Release: El programa es empaquetado, documentado y mandado al mundo a


ser usado.
8. Mantenimiento: Los programas rara vez, o nunca son perfectos. Los errores o
bugs se encontrarán y necesitarán ser corregidos. Esta etapa es la etapa de
mantenimiento de la programación.

9. Revisión y mejora: Después de que un programa ha sido usado, los usuarios


querrán realizarle algún cambio al funcionamiento del programa, tal como alguna
nueva funcionalidad o un cambio en algún algoritmo. En este punto se crea una nueva
especificación y el proceso comienza de nuevo.

Especificación

Generalmente las especificaciones de un proyecto de programación son vagas e


incompletas. El programador tiene que redefinirlas en algo que define exactamente el
programa que se va a desarrollar. Por lo tanto, el primer paso es escribir una
especificación preliminar que describa qué es lo que el programa va a hacer y cómo se
debe utilizar. El documento no describe la estructura interna del programa o el
algoritmo que se planea utilizar.

La especificación preliminar tiene dos propósitos. Primero, enseñársela al jefe o líder


de proyecto para asegurarse de que la especificación contiene todo lo que se necesita
que haga el programa. Segundo, se puede enseñar a los demás compañeros para ver si
existen sugerencias con respecto al programa.

Diseño del código

Después de que la especificación preliminar ha sido aprobada, se puede empezar a


diseñar el código. En la fase de diseño de código, el programador planea su trabajo. En
proyectos de programación muy grandes que involucran a mucha gente, el código
puede ser dividido en varios módulos, asignando un módulo a cada programador. En
esta etapa se deben planear las estructuras de datos, los archivos y los algoritmos a
utilizar. En esta etapa podemos ayudarnos de pseudocódigo y diagramas de flujo.

Prototipo

Después de que la etapa de diseño del código ha sido completada, podemos empezar
a escribir el programa. Sin embargo, en lugar de empezar a escribir el programa
completo para después empezar a probarlo, podemos utilizar un método llamado
prototipo rápido (fast prototyping). Consiste en implementar una pequeña porción de
la especificación que haga alguna de las funciones requeridas. Una vez que dicha parte
del programa funciona, podemos implementar el resto de las funciones sobre la
porción estable de código construida anteriormente. El prototipo también puede servir
para darnos una idea de cuál es la dirección que lleva el proyecto.

Makefile
Después de que el código fuente ha sido terminado, necesitará ser compilado y
encadenado. Si bien es cierto, podemos correr el compilador de manera manual, el
proceso puede ser tedioso y complicado cuando estamos desarrollando proyectos muy
grandes. Para esto podemos utilizar unmakefile.

Pruebas

Después de que el programa ha sido compilado sin errores, podemos pasar a la etapa
de pruebas. Ahora es tiempo de escribir un plan de pruebas. Dicho documento no es
más que una simple lista de los pasos que debemos seguir para estar seguros de que el
programa funciona correctamente. Se debe escribir básicamente por dos razones:

• Si un error es encontrado, queremos poder reproducirlo.

• Si realizamos algún cambio en el programa, queremos volverlo a probar para


estar seguros que el cambio no afectó nada que haya estado funcionando
previamente.

Debugging

Primero debemos inspeccionar el programa para ver si podemos detectar algún error.
En programas sencillos será muy fácil encontrar el error, sin embargo no lo será en
proyectos que involucran código de más de 5,000 líneas. La mayoría de los sistemas
tiene debuggers de C, en nuestro caso podemos utilizar gdb.

Mantenimiento

Los buenos programadores someten a sus programas a largos y rigurosos procesos de


mantenimiento antes de liberar su código. Cuando el usuario del programa empieza a
utilizarlo y encuentra algún error, entramos a la etapa de mantenimiento, en donde
cualquier error que pudiera tener el programa es corregido y el programa se vuelve a
probar para asegurarse de que el error no vuelva a aparecer, para finalmente volver a
liberar el programa.
PSEUDOCODIGOS

 SUMA DE MATRICES

INICIO
Entero matriza (1,1)
Entero matrizb (1,1)
Entero matrizresultado (1,1)

Mostrar (“Llenar Matriz A”)


Para (entero i=0 hasta i=1) hacer
Para (entero j=0 hasta j=1) hacer
Mostrar (“Valor” & i & “-“ & j & “:”)
Leer matriza (i,j)
Fin_Para
Fin_Para

Mostrar (“Llenar Matriz B”)


Para (entero i=0 hasta i=1) hacer
Para (entero j=0 hasta j=1) hacer
Mostrar (“Valor” & i & “-“ & j & “:”)
Leer matrizb (i,j)
Fin_Para
Fin_Para

Para (entero i=0 hasta i=1) hacer


Para (entero j=0 hasta j=1) hacer
Matrizresultado (i,j) = matriza (i,j) + matrizb (i,j)
Fin_Para
Fin_Para

Mostrar (“Suma de Matriz A + B”)


Para (entero i=0 hasta i=1) hacer
Para (entero i=0 hasta i=1) hacer
Mostrar (matrizresultado (i,j))
Fin_Para
Fin_Para
FIN
DIAGRAMA DE FLUJO

Inicio

Entero matriza(1,1)
Entero matrizb(1,1)
Entero matrizresultado(1,1)

Mostrar “Ingrese los


datos de la matriz A”

Para
i=0
j<0

Leer
Matriza(i,j)

Fin_para

Mostrar “Ingrese los


datos de la matriz B”

Para
i=0
j<0

Leer
Matrizb(i,j)

Fin_para
Para
i=0
j<0

Matrizresultado(i,j) =
matriza(i,j) +
matrizb(i,j)

Fin_para

Mostrar “Suma de
matriz A + B”

Para
i=0
j<0

Mostrar
matrizresultado

Fin_para

Fin
 PRODUCTO DE MATRICES

INICIO
Entero matriza (1,1)
Entero matrizb (1,1)
Entero matrizresultado (1,1)

Mostrar (“Llenar Matriz A”)


Para (entero i=0 hasta i=1) hacer
Para (entero j=0 hasta j=1) hacer
Mostrar (“Valor” & i & “-“ & j & “:”)
Leer matriza (i,j)
Fin_Para
Fin_Para

Mostrar (“Llenar Matriz B”)


Para (entero i=0 hasta i=1) hacer
Para (entero j=0 hasta j=1) hacer
Mostrar (“Valor” & i & “-“ & j & “:”)
Leer matrizb (i,j)
Fin_Para
Fin_Para

Para (entero i=0 hasta i=1) hacer


Para (entero j=0 hasta j=1) hacer
Matrizresultado (i,j) = matriza (i,j) * matrizb (i,j)
Fin_Para
Fin_Para

Mostrar (“Suma de Matriz A + B”)


Para (entero i=0 hasta i=1) hacer
Para (entero i=0 hasta i=1) hacer
Mostrar (matrizresultado (i,j))
Fin_Para
Fin_Para
FIN
DIAGRAMA DE FLUJO

Inicio

Entero matriza(1,1)
Entero matrizb(1,1)
Entero matrizresultado(1,1)

Mostrar “Ingrese los


datos de la matriz A”

Para
i=0
j<0

Leer
Matriza(i,j)

Fin_para

Mostrar “Ingrese los


datos de la matriz B”

Para
i=0
j<0

Leer
Matrizb(i,j)

Fin_para
Para
i=0
j<0

Matrizresultado(i,j) =
matriza(i,j) *
matrizb(i,j)

Fin_para

Mostrar “Producto
de la Matriz A * B”

Para
i=0
j<0

Mostrar
matrizresultado

Fin_para

Fin