Está en la página 1de 27

CAPTULO 1

1
Enfoques de Programacin

Historia
Existen muchas interpretaciones respecto a la historia de la programacin, cito a la
historia desde 1700 en adelante para explicar el valor de la automatizacin del mismo.

Antiguamente las instrucciones lgicas eran un conjunto de valores entre 0 y 1, el cual


lo conocemos como sistema binario, bajo el concepto de ese conjunto de valores se
dio una interpretacin fsica que conocemos como tarjeta perforada, est
representara dependiendo de su hendidura, abierta o cerrada en la representacin
binaria, si bien las primeras tarjetas perforadas fueron usadas por primera vez
alrededor de 1725 por Basile Bouchon y Jean-Baptiste Falcon como una forma ms
robusta de los rollos de papel perforados usados en ese entonces para controlar
telares textiles en Francia. Esta tcnica fue enormemente mejorada por Joseph Marie
Jacquard en su telar de Jacquard en 1801.

La tarjeta perforada es una cartulina con unas determinaciones al estar perforadas, lo


que supone un cdigo binario. Estos fueron los primeros medios utilizados para
ingresar informacin e instrucciones a un computador en los aos 1960 y 1970.

Las tarjetas perforadas fueron usadas por primera vez Para crear un programa, y que la
computadora interprete y ejecute las instrucciones escritas en l, debe usarse un
lenguaje de programacin.

En sus inicios las computadoras interpretaban slo instrucciones en un lenguaje


especfico, del ms bajo nivel, conocido como cdigo mquina, siendo ste
excesivamente complicado para programar. De hecho slo consiste en cadenas de
nmeros 1 y 0 (sistema binario).

Para facilitar el trabajo de programacin, los primeros cientficos que trabajaban en el


rea decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras
o letras provenientes del ingls; 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 inglesa add (sumar). En realidad escribir en lenguaje
ensamblador es bsicamente lo mismo que hacerlo en lenguaje mquina, pero las
letras y palabras son bastante ms fciles de recordar y entender que secuencias de
nmeros binarios, teniendo en cuenta que la mayora de los intrpretes creaban ms
instrucciones del lenguaje de mquinas, para abarcar todas las posibilidades que se
podan interpretar del lenguaje.

A medida que la complejidad de las tareas que realizaban las computadoras


aumentaba, se hizo necesario disponer de un mtodo sencillo para programar.
Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial
como multiplicar dos nmeros puede necesitar un conjunto de instrucciones en
lenguaje ensamblador, en un lenguaje de alto nivel bastar con solo una, esto facilito
la distribucin del lenguaje para la interpretacin de las tareas comunes, a la
semntica algortmica creando un conjunto de instrucciones secuenciales, cumplieran
un propsito procedural o funcional.

Una vez que se termina de escribir un programa, sea en ensamblador o en un lenguaje


de alto nivel, es necesario compilarlo, es decir, traducirlo a lenguaje mquina.

Bajo este concepto entonces ya teniendo claro que la lgica de cmo crear ese
lenguaje de mquinas est resuelto, entonces se toma en cuenta que la manera de
dirigir la lgica hacia un resultado o meta, para ello se plantean diferentes enfoques
que sirven para diferentes propsitos de solucin, sin ms veamos el primero a
representar.

El Algoritmo
En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo
(del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi)
es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas
que permite realizar una actividad mediante pasos sucesivos que no generen dudas a
quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo
los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos
son el objeto de estudio de la algoritmia.

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas.


Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un
aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos
ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos
nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos
enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones.

En particular estos algoritmos resolveran un problema en particular o llegar a una


meta, simplemente la primera formulacin de la meta es un parmetro importante,
que debemos plantear de un comienzo, entendiendo que la meta llevar establecer
todos los pasos y las operaciones y/o expresiones que tendrn que ocurrir para llegar a
esa meta, entonces algoritmo clsico a plantear mesclando la lgica matemtica es la
suma
Suma = sumando + sumando

Algoritmo para resolver una suma dependiendo de entrada y salida.

Algoritmo Sumar
Ingresar primer sumando
Ingresar segundo sumando
Calcular la suma
Mostrar la suma

Si bien la suma es una operacin diremos que esto es un proceso algortmico, que
contiene los pasos de ingresar primer sumando, ingresar segundo sumando, calcular la
suma, cuyo resultado y propsito final es mostrar la suma.

Estos pasos para llegar a nuestra meta se hacen posible en estricto rigor, al orden de
los pasos planteados, si bien estos son secuenciales hacen que la lgica aplicada sea
ocupada de manera intuitiva, tambin est ms adelante puede tener bifurcaciones
lgicas, decisiones, repeticiones y casos particulares que pueden representarse
algortmicamente.

Programacin Estructurada
De acuerdo a la programacin de estos lenguajes de alto nivel, surgi la necesidad de
establecer ciertas reglas y/o convenciones para llegar a un orden de cmo programar,
entonces este conjunto de instrucciones fueron enfocadas a dar mejor claridad,
calidad y tiempo de desarrollo, para ello se define todas las soluciones utilizando
nicamente subrutinas, con tres estructuras: secuencia como conjunto de pasos de
programacin, seleccin (If, switch) como una bifurcacin a la secuencia, de acuerdo a
una condicin lgica a cumplir hacer un conjunto de pasos de programacin o en caso
contrario y no cumpla la condicin lgica un conjunto de pasos programacin,
iteracin como un conjunto de pasos de programacin que se repitan una cierta
cantidad de veces de acuerdo a una condicin lgica, dado que este tipo de
programacin posee un alto grado de rigidez entonces se omiten los saltos de pasos
sin condicin como los es GOTO (Traduccin Literal Ir a), esto fue reforzado por una
famosa carta que la sentencia goto era considerada perjudicial, de Edsger Dijkstra en
1968.

Programacin Orientada a Objetos


La necesidad de representacin de diferentes niveles de abstraccin y
comportamientos, llev a crear un nuevo paradigma llamado programacin orientada
a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin
que usa los objetos en sus interacciones, para disear aplicaciones y programas
informticos. Est basado en varias tcnicas, incluyendo herencia, cohesin,
abstraccin, polimorfismo, acoplamiento y encapsulamiento. Su uso se populariz a
principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes
de programacin que soportan la orientacin a objetos.

Desde el punto de vista de la programacin, programacin estructurada y


programacin orientada a objetos estn estrechamente relacionadas, en un orden de
abstraccin y pertenencia la programacin orientada a objetos, contiene en sus
comportamientos la programacin estructurada.

Programacin Orientada a Objetos

Programacin Estructurada
incluida en el mtodo

Atributos
Mtodo Mtodo
CAPTULO 2
2
Introduccin a la programacin
Estructurada

Para aprender a programar utilizaremos un lenguaje comn de seudocdigo en este


caso ser el programa PSeInt, el cual servir para poner en practica la creacin de
soluciones estructuradas para diferentes problemas dentro de este paradigma de
programacin.

Instalacin de PseInt
Para instalar la ultima versin de pseint debe ir a la siguiente URL
http://pseint.sourceforge.net/ en la seccin descargas encontrars para diferentes
sistemas operativos.

La instalacin en Windows es muy simple clic en el


instalador para Windows, descargar la en este caso
es pseint-w32-20121208.exe que es la ltima versin
del 8 de diciembre del 2012.
Con esto estara instalado PSeInt la ltima versin, se debe tener en cuenta que esta
aplicacin utiliza JAVA, por lo tanto es uno de los prerrequisitos antes de instalarlo.
El Pseudo-cdigo
El pseudo-cdigo es una convencin en ciencias de la computacin, y anlisis numrico
el pseudocdigo (o falso lenguaje), es una descripcin informal de alto nivel de un
algoritmo informtico de programacin, compacto e informal, que utiliza las
convenciones estructurales de un lenguaje de programacin real, pero que est
diseado para la lectura humana en lugar de la lectura mediante mquina, y con
independencia de cualquier otro lenguaje de programacin. Esta convencin facilita el
aprendizaje e internalizacin de la lgica aplicada a la programacin. Normalmente, el
pseudocdigo omite detalles que no son esenciales para la comprensin humana del
algoritmo, tales como declaraciones de variables, cdigo especfico del sistema y
algunas subrutinas, pero en este punto nosotros tendremos una diferencia ya que el
enfoque de este libro, es dar una coherencia entre este pseudo-cdigo y un lenguaje
de programacin real como lo es JAVA, para relacionar ambos lenguajes en sintaxis y
semntica.

Se utiliza comnmente en los libros de texto y publicaciones cientficas que se


documentan varios algoritmos, y tambin en la planificacin del desarrollo de
programas informticos, para esbozar la estructura del programa antes de realizar la
efectiva codificacin.

En esta edicin se tomar las caractersticas del pseudolenguaje que fueron


propuestas en 2001, por el responsable de la asignatura de fundamentos de
programacin (Horacio Loyarte) en la carrera de ingeniera en informtica de la FICH-
UNL, en donde las premisas que se ocuparn son:

Sintaxis sencilla
Manejo de las estructuras bsicas de control
Solo 3 tipos de datos bsicos: numrico, carcter/cadenas de caracteres y
lgico (verdadero-falso)
Estructuras de datos: arreglos

Forma general de un Algoritmo


El algoritmo en pseudocdigo de esta convencin tiene la siguiente estructura general:

Proceso NombreProceso
accion 1;
accion 2;
.
.
.
accion n;
Fin Proceso
Si bien esta es la convencin en donde comienza un proceso siguiendo la misma
estructura de pasos de un algoritmo, esto tambin permite el uso planteado de la
programacin estructurada secuencia, seleccin e iteracin, omitiendo como
convencin el uso de saltos de paso (GOTO).

Respecto a su estructura comienza con la palabra clave Proceso seguida por el nombre
del programa, en este caso el programa definir la meta a conseguir, que por
generalidad lo llamaremos el verbo a conseguir (vc), despus de la palabra clave
proceso, sigue una secuencias de instrucciones que definir todos verbo adjetivo (va),
estos harn que nuestro meta se cumpla, despus de estas instrucciones termina este
proceso con la palabra clave FinProceso. Se establece como convencin de termino de
instruccin el punto y coma ;.

Cada accin puede ser una entrada y salida, asignacin de variables, seleccin si-
entonces o seleccin multiple, iteraciones con mientras, repetir o para.

Para ejemplificar con un algoritmo simple, representado por esta convencin de


pseudo-cdigo presentamos en PSeInt el proceso Suma, este ejemplo est disponible
en la ayuda de PSeInt

Siguiendo la semntica de la forma general del algoritmo, este pseudo-cdigo


presenta, la palabra clave Proceso Suma representa nuestra meta del proceso, para
ello se ocupa una salida (Escribir Ingrese el primer numero:), que mostrar a nuestro
usuario o cliente un mensaje de lo que debe hacer, luego tenemos una entrada (Leer
A), que produce que el proceso espere al usuario que escriba el valor por teclado, que
asignar a la variable A, luego siguiendo la misma lgica de mostrar al usuario lo que
debe escribir, esperar que introduzcan por teclado el valor de una variable, siguen las
instrucciones de salida (Escribir Ingrese el segundo numero:) y la entrada (Leer B),
luego viene una expresin que calcula la suma a travs de una asignacin (C <- A+B),
esto se lee de derecha a izquierda sumar A con B, luego el resultado de esta suma
asignarlo a la variable C, por ltimo una salida para mostrar el resultado de esta
operacin (Escribir El resultado es: , C).

Ejercicio Resuelto
1.- Cuadrado

Escriba un programa que reciba como entrada un lado del cuadrado y entregue como
salida el rea y el permetro:

Ingrese un lado del cuadrado: 3


Area: 9
Perimetro: 12

Ir a Inicio, Programas, PSeInt

Al abrir PSeInt aparecer el proceso por defecto sin_titulo eligen guardar con el
nombre 01_cuadrado.
Notar que cambio la pestaa superior a 01_cuadrado.psc, la extensin psc es la que
guardar los algoritmos hechos por PSeInt.

Cambiar el nombre del proceso de sin_titulo a cuadrado.

Para plantear el algoritmo de cuadrado primero identificamos nuestra meta a


conseguir de acuerdo a pasos algortmicos,

i. Mostramos al usuario Ingrese un lado del cuadrado:


ii. Solicitamos una entrada por teclado del lado
iii. Calculamos el rea del lado con la siguiente expresin: area = lado*lado;
iv. Calculamos el permetro del lado con la siguiente expresin: perimetro =
4*lado;
v. Mostramos al usuario Area: + area, esto es una concatenacin de 2
resultados, el primero es la cadena de caracteres Area: y luego el valor
almacenado en la variable area es agregado despus de Area :, teniendo
como resultado ambos valores unidos.
vi. Mostramos al usuario Perimetro: + perimetro

Una vez planteado el algoritmo secuencial, se procede a escribir esto en pseudo-


cdigo

Mostramos al usuario Ingrese un lado del cuadrado:

Solicitamos una entrada por teclado del lado

Para ver si esto funciona correctamente pueden ejecutar este algoritmo con

Notarn que las 2 instrucciones escritas podrn probarlas.

Continuamos con nuestro algoritmo.

Calculamos el rea del lado con la siguiente expresin: area = lado*lado;

Notarn que area es una variable que recibe el resultado de multiplicar lado*lado, a
esto se le llama asignacin.
Calculamos el permetro del lado con la siguiente expresin: perimetro = 4*lado;

Mostramos al usuario Area: + area

Mostramos al usuario Perimetro: + permetro

Ejecutamos este algoritmo completo de acuerdo a la situacin planteada en el


ejercicio, para comprobar si los resultados son los esperados.

Si notamos existe un ligera diferencia entre la situacin planteada y el resultado final,


cuando mostramos al usuario Ingrese un lado del cuadrado: , notamos que al leer
pasa a la siguiente lnea. Para poder representar horizontalmente el resultado se debe
cambiar la palabra reservada Escribir por Escribir sin saltar.
El resultado entonces es el esperado de acuerdo a lo que se especific.

Ejecutar Paso a Paso


Para aprender a programar es importante tener en cuenta el avance secuencial, est
de acuerdo a lo esperado, para eso los diferentes lenguajes de programacin proveen
herramientas de depuracin, que servirn para saber los pasos que ha hecho el
programa y los valores de las variables que contienen, de esta manera se establecer
la coherencia de los resultados a travs de las pruebas realizadas.

En PSeInt se ejecutan paso a paso las instrucciones de tu algoritmo con el siguiente


icono:

Este smbolo significa ejecutar paso a paso, tambin tiene una tecla de acceso
rpido F5.
Existe otra forma de ver como se ejecuta paso a paso las instrucciones de nuestro
algoritmo.

En borde derecho superior al hacer clic se expandir un panel en donde tendr los
botones:

Comenzar
Continuar
Primer Paso
Prueba de Escritorio
Evaluar

Primero presionar el botn comenzar esto nos dar las opciones:

Finalizar
Pausar
La opcin continuar es equivalente a ejecutar paso a paso.

Ahora existe una funcionalidad novedosa que es para saber el valor de cada variable
esto es a travs de la prueba de escritorio, Sabiendo cuales son las variables que se
ocuparn dentro del algoritmo se puede saber instruccin a instruccin cuales son los
valores que adquieren.

Iniciaremos una prueba y agregaremos cada variable a esta prueba instruccin a


instruccin, y ver qu valores adquiere para finalmente ver el resultado en pantalla.

Configurar las variables que sern visualizadas paso a paso

Clic en Prueba de Esc.


Agregar las variables del algoritmo cuadrado area, lado, permetro.

Hacer clic en realizar seguimiento y clic en aceptar.


Hacer clic en primer paso, esto permitir detenerse en la instruccin 1.

Hacer clic en Avanzar un Paso, esto avanzar hasta la instruccin 2, hay que tener en
cuenta que al avanzar un paso se ejecutar la instruccin, en nuestro primer caso al
pasar por la instruccin 1 no se vio reflejado ningn cambio.
Hacer clic Avanzar un Paso, al pasar de la instruccin 2 a la instruccin 3 se ve reflejado
un cambio en el programa, debido a que se ejecuto un Escribir Sin Saltar (Notar que las
variables aun no sufren ningn cambio).

Hacer clic en Avanzar un Paso, notar que se han deshabilitado opciones de botones en
el Paso, existan Finalizar, Continuar, Avanzar un Paso y Evaluar, ahora solamente est
finalizar, esto se debe a que la instruccin leer detiene la ejecucin del programa,
hasta que ingresen por teclado un valor a la variable lado por la instruccin Leer.
Al ingresar el valor vuelven las opciones de botn se vuelven a mostrar: continuar,
avanzar un paso y evaluar, y avanza a la siguiente instruccin 4.

En la prueba de escritorio notar que la variable lado cambio del valor 0 al valor 3.

Hacer clic en avanzar un paso, al pasar de la instruccin 4 a la instruccin 5 se realiza se


evala la expresin lado * lado, la cual da como resultado 3*3=9, luego de tener esta
expresin evaluada se asigna a la variable area el valor resultante 9.

En la prueba de escritorio la variable area cambio del valor 0 al 9.


Hacer clic en avanzar un paso, al pasar de la instruccin 5 a la instruccin 6, se evala
la expresin 4*lado, la cual da el resultado de 4 * 3 = 12, luego de tener esta expresin
evaluada el valor 12 de este resultado se asigna a la variable perimetro.

Hacer clic en avanzar un paso, al pasar de la instruccin 6 a la instruccin 7, la


expresin (Area: , area) es evaluada, primero la variable area se traduce a su valor
que es 9, luego la cadena de caracteres Area : es unida al valor 9, formando una
nueva cadena Area : 9, esta nueva cadena es pasada como argumento a Escribir
mostrndolo en pantalla como salida.
Hacer clic en avanzar un paso, al pasar de la instruccin 7 a la instruccin 8, la
expresin (Perimetro: , perimetro) es evaluada, primero la variable perimetro se
traduce a su valor que es 12, luego la cadena de caracteres Perimetro : es unida al
valor 12, formando una nueva cadena Perimetro : 12, esta nueva cadena es pasada
como argumento a Escribir mostrndolo en pantalla como salida.

Hacer clic en avanzar un paso, al pasar de la instruccin 8 a la instruccin 9, termina la


ejecucin del programa.
Si bien una ejecucin paso a paso no es el comportamiento real del programa, esto nos
dar claros indicios si el programa hace lo que debe hacer, como regla general cuando
nos enfrentamos a una situacin en donde la programacin depende de ciertas
secuencias esperadas, los resultados de la evaluacin lgica sern un factor clave de
xito para nuestra meta a obtener.
Diagrama de Flujo
Otra forma de ver este algoritmo es la representacin grfica dibujado como diagrama
de flujo.

Este smbolo permitir leer tu algoritmo y representarlo de acuerdo al flujo de


eventos que ocurran secuencialmente.

La simbologa es la siguiente:

Proceso y FinProceso.

Asignacin, Dimensin, Definicin, Salida sin variables

Entrada por teclado

Salida con variables

Si Entonces

Segn

Mientras

Repetir Hasta que

a Para
Tambin para ver el listado de todas las variables existentes
Notamos que las variables son area, lado, perimetro.

Ejercicio Propuesto
2.- Triangulo

Escriba un programa que reciba como entrada la base y la altura de un tringulo y


entregue como salida el rea:

Ingrese la base: 2
Ingrese la altura: 4
Area: 4

Algoritmo

i. Mostrar al usuario Ingrese la base: sin saltar lnea.


ii. Solicitar una entrada por teclado de la base
iii. Mostrar al usuario Ingrese la altura: sin saltar lnea.
iv. Solicitar una entrada por teclado de la altura
v. Calcular el area con la expresin: area = (base * altura)/2
vi. Mostrar al usuario Area : + area

También podría gustarte