You are on page 1of 43

Introduccin a la Programacin y

Computacin 1
Ing. By ro n Rodo lfo Ze peda Arvalo
byron .zepeda.u sac@gmail.com

Programacin modular
y estructuras bsicas

Programacin Modular
La programacin modular es uno de los mtodos de diseo ms flexible y potentes para mejorar la
productividad de un programa. En programacin modular el programa se divide en mdulos (partes
independientes), cada una de las cuales ejecuta una nica actividad o tarea y se codifican independientemente de
otros mdulos. Cada uno de estos mdulos se analizan, codifican y ponen a punto por separado.
Cada programa contiene un mdulo denominado programa principal que controla todo lo que sucede; se
transfiere el control a submdulos (posteriormente se denominarn subprogramas), de modo que ellos puedan
ejecutar sus funciones; sin embargo, cada submdulo devuelve el control al mdulo principal cuando se haya
completado su tarea. Si la tarea asignada a cada submdulo es demasiado compleja, ste deber romperse en
otros mdulos ms pequeos. El proceso sucesivo de subdivisin de mdulos contina hasta que cada mdulo
tenga solamente una tarea especfica que ejecutar. Esta tarea puede ser entrada, salida, manipulacin de datos,
control de otros mdulos o alguna combinacin de stos. Un mdulo puede transferir temporalmente (bifurcar)
el control a otro mdulo; sin embargo, cada mdulo debe eventualmente devolver el control al mdulo del cual
se recibe originalmente el control.
Los mdulos son independientes en el sentido en que ningn mdulo puede tener acceso directo a cualquier
otro mdulo excepto el mdulo al que llama y sus propios submdulos. Sin embargo, los resultados producidos
por un mdulo pueden ser utilizados por cualquier otro mdulo cuando se transfiera a ellos el control.

Programacin Modular

Programacin Estructurada
Los trminos programacin modular; programacin descendente y programacin
estructurada se introdujeron en la segunda mitad de la dcada de los sesenta y a
menudo sus trminos se utilizan como sinnimos aunque no significan lo mismo.
La programacin estructurada significa escribir un programa de acuerdo a las
siguientes reglas:
El programa tiene un diseo modular.
Los mdulos son diseados de modo descendente.
Cada mdulo se codifica utilizando las tres estructuras de control bsicas:
secuencia, seleccin y repeticin.
Si est familiarizado con lenguajes como BASIC, Pascal, FORTRAN o C, la
programacin estructurada significa tambin programacin sin GOTO (C no
requiere el uso de la sentencia GOTO).

Programacin Estructurada
El trmino programacin estructurada se refiere a un conjunto de tcnicas que
han ido evolucionando desde los primeros trabajos de Edgar Dijkstra. Estas
tcnicas aumentan considerablemente la productividad del programa reduciendo
en elevado grado el tiempo requerido para escribir, verificar, depurar y mantener
los programas. La programacin estructurada utiliza un nmero limitado de
estructuras de control que minimizan la complejidad de los programas y, por
consiguiente, reducen los errores; hace los programas ms fciles de escribir,
verificar, leer y mantener. Los programas deben estar dotados de una estructura.
La programacin estructurada es el conjunto de tcnicas que incorporan:
recursos abstractos,
diseo descendente (top-down),
estructuras bsicas.

Recursosabstractos
La programacin estructurada se auxilia de los recursosabstractos en lugar
de los recursos concretos deque dispone un determinado lenguaje
deprogramacin.
Descomponer un programa en trminos de recursos abstractos - segn
Dijkstra - consiste en descomponer una determinada accin compleja en
trminos de un nmero de acciones ms simples capaces de ejecutarlas o
que constituyan instrucciones de computadoras disponibles.

Diseodescendente (top-down)
El diseo descendente (top-down) es el proceso mediante el cual un
problemase descompone en una serie de niveles o pasossucesivos de
refinamiento. La metodologa descendente consiste en efectuar una
relacin entre las sucesivas etapas de estructuracin de modo que se
relacionan unas con otras mediante entradas y salidas de informacin. Es
decir, se descompone el problema en etapas o estructuras jerrquicas, de
forma que se puede considerar cada estructura desde dos puntos de vista:
qu hace? Y cmo lo hace?

Estructuras de control
Las estructuras de control de un lenguaje de programacin son mtodos que
especifican el orden en que las instrucciones de un algoritmo se ejecutarn. El
orden de ejecucin de las sentencias (lenguaje) o instrucciones determinan el flujo
de control. Estas estructuras decontrol son, por consiguiente, fundamentales en los
lenguajes de programacin y en los diseos de algoritmos especialmente los
pseudocdigos. Las tres estructuras de control bsicoson:
secuencia
seleccin
repeticin
Laprogramacin estructurada hace los programas ms fciles de escribir, verificar,
leer y mantener; utiliza un nmero limitado de estructuras de control que
minimizan la complejidad de los problemas.

Variables
Una variable est formada por un espacio en el sistema de almacenaje
(memoria principal de un ordenador) y un nombre simblico (un
identificador) que est asociado a dicho espacio. Ese espacio contiene una
cantidad o informacin conocida o desconocida, es decir un valor. El
nombre de la variable es la forma usual de referirse al valor almacenado:
esta separacin entre nombre y contenido permite que el nombre sea
usado independientemente de la informacin exacta que representa. El
identificador, en el cdigo fuente de la computadora puede estar ligado a
un valor durante el tiempo de ejecucin y el valor de la variable puede
cambiar durante el curso de la ejecucin del programa.

Tipos de Datos
En Java diferenciamos dos tipos de datos: por un lado, los tipos primitivos,
que se corresponden con los tipos de variables en lenguajes como C. Por
otro lado, los tipos objeto (que normalmente incluyen mtodos).

Tipos de Datos

Operadores
Aritmticos
(+) Operador de suma (Tambin se usa para concatenacin de cadenas)
(-) Operador de resta
(*) Operador de multiplicacin
(/) Operador de divisin
(%) Operador de resto

Operadores
Asignacin
(=) Operador de asignacin simple
(+=) : op1 += op2 --> op1 = op1 + op2
(-=) : op1 -= op2 --> op1 = op1 - op2
(*=) : op1 *= op2 --> op1 = op1 * op2
(/=) : op1 /= op2 --> op1 = op1 / op2
(%=) : op1 %= op2 --> op1 = op1 % op2

Operadores
Unitarios
(+) Operador ms unitario; indica positivo
(-) Operador menos unitario; niega una expresin

Incrementales
(++) Operador de aumento; aumenta un valor en uno
(--) Operador de disminucin; disminuye un valor en uno

Operadores
Relacionales
(>): Mayor que
(<): Menor que
(==): Iguales
(!=): Distintos
(>=): Mayor o igual que
(<=): Menor o igual que

Lgicos
(&&) : devuelve true si ambos operandos son true.
(||) : devuelve true si alguno de los operandos son true.
(!) : Niega el operando que se le pasa.
(&) : devuelve true si ambos operandos son true, evalundolos ambos.
(|) : devuelve true uno de los operandos es true, evalundolos ambos.

Estructuras de control condicionales


Las estructuras de control condicionales, son aquellas que nos permiten evaluar si
una o ms condiciones se cumplen, para decir qu accin vamos a ejecutar. La
evaluacin de condiciones, solo puede arrojar 1 de 2 resultados: verdadero o falso
(True o False).
En la vida diaria, actuamos de acuerdo a la evaluacin de condiciones, de manera
mucho ms frecuente de lo que en realidad creemos: Si el semforo est en
verde, cruzar la calle. Si no, esperar a que el semforo se ponga en verde. A veces,
tambin evaluamos ms de una condicin para ejecutar una determinada accin:
Si llega la factura de la luz y tengo dinero, pagar la boleta.
Para describir la evaluacin a realizar sobre una condicin, se utilizan operadores
relacionales. Y para evaluar ms de una condicin simultneamente, se utilizan
operadores lgicos.

Sentencia if - else
Las estructuras de control de flujo condicionales, se definen mediante el
uso de tres palabras claves reservadas, del lenguaje: if (si) y else (sino).

Encadenamiento: las sentencias if se suelen encadenar.


Anidamiento: las sentencias if se pueden anidar unas dentro de otras.

Operador condicional ?:
Java proporciona una forma de abreviar una sentencia if. El operador
condicional ?: permite incluir una condicin dentro de otra.

Sentencia switch
Permite seleccionar entre varias alternativas posibles.

Sentencia switch
Se selecciona a partir de la evaluacin de una nica expresin.
La expresin del switch ha de ser de tipo entero.
Los valores de cada caso del switch han de ser constantes.
Cada bloque de cdigo de los que acompaan un posible valor de la
expresin entera ha de terminar con una sentencia break.

Estructuras cclicas
Las estructuras iterativas o cclicas
se utilizan para ejecutar
un cdigo repetidamente hasta cumplir una condicin definida por el
programador.
Tipos:
while
do-while
for

While
Permite ejecutar repetidamente un bloque de sentencias, mientras se
cumpla una determinada condicin.
Precauciones:
Verifique si la o las variables de la condicin estn previamente
inicializadas con un valor
Verifique que la condicin en algn ciclo sea FALSA, caso contrario
tendremos un proceso infinito
While (condicin) { Sentencias; }

Do-While
Funciona igual que la sentencia WHILE, con la diferencia que la condicin
se evala despus de haber ejecutado al menos una vez el bloque de
sentencias.
Precauciones:
Verifique que las variables de la condicin sean previamente inicializadas
Verifique que la condicin algn momento sea FALSA, para evitar
procesos infinitos
Do { sentencias; } while (condicin);

For
Permite hacer ciclos de proceso controlados por sentencias implcitas de la
estructura for.
El proceso del for requiere:
iniciar una variable
Verificar si una condicin se cumple
Actualizar una sentencia con algn valor o expresin matemtica definida
For (inicializacin; expresin_de_control; actualizacin de sentencia)
{Sentencias;}

Subrutinas
Tambin llamada procedimiento, funcin o rutina, como idea general, se
presenta como un subalgoritmo que forma parte del algoritmo principal, el
cual permite resolver una tarea especfica. Algunos lenguajes de
programacin, como Visual Basic .NET o Fortran, utilizan el nombre funcin
para referirse a subrutinas que devuelven un valor.
Se le llama subrutina a un segmento de cdigo separado del bloque
principal y que puede ser invocado en cualquier momento desde este o
desde otra subrutina.
Una subrutina, al ser llamada dentro de un programa, hace que el cdigo
principal se detenga y se dirija a ejecutar el cdigo de la subrutina.

Subrutinas
Las declaraciones de subrutinas generalmente son especificadas por:
Un nombre nico en el mbito: nombre de la funcin con el que se identifica y
se distingue de otras. No podr haber otra funcin ni procedimiento con ese
nombre (salvo sobrecarga o polimorfismo en programacin orientada a
objetos).
Un tipo de dato de retorno: tipo de dato del valor que la subrutina devolver al
terminar su ejecucin.
Una lista de parmetros: especificacin del conjunto de argumentos (pueden ser
cero, uno o ms) que la funcin debe recibir para realizar su tarea.
El cdigo u rdenes de procesamiento: conjunto de rdenes y sentencias que
debe ejecutar la subrutina.

Procedimiento y funcin
Una funcin es una seccin de un programa que calcula un valor de
manera independiente al resto del programa. En esencia, una funcin es un
mini programa (subrutina): tiene una entrada, un proceso y una salida.
Un procedimiento es una seccin de un programa (al igual que una
funcin) que realiza varias sentencias de manera independiente al resto del
programa. La diferencia con una funcin es que un procedimiento no
entrega ningn valor como resultado.

Entorno de las variables (alcance o mbito)


El mbito es el contexto que tiene un nombre dentro de un programa. El mbito
determina en qu partes del programa una entidad puede ser usada.
Esto sirve para que se pueda volver a definir una variable con un mismo nombre
en diferentes partes del programa sin que hayan conflictos entre ellos.
Respecto al mbito de una variable, ste puede ser:
Local: Cuando la misma slo es accesible desde un nico procedimiento hijo, no
pudiendo ser leda o modificada desde otro procedimiento hermano o desde el
propio procedimiento padre. Es posible declarar variables en bloques de
condicin, bucles, etc de tal modo que slo pueda accederse a ellas en el propio
bloque.
Global: Cuando la misma es accesible tanto desde rutinas o macros de la
aplicacin, como en todos los procedimientos y funciones de la misma.

Ejemplo

Parmetros
Es una variable utilizada para recibir valores de entrada en una rutina o
subrutina. Dichos valores, que sern enviados desde la rutina invocante, son
llamados argumentos. La subrutina usa los valores asignados a sus
parmetros para alterar su comportamiento en tiempo de ejecucin. La
mayor parte de los lenguajes de programacin pueden definir subrutinas
que aceptan cero o ms argumentos.
Existen dos formas de pasar un argumento a una funcin (subrutina) o
procedimiento: por valor y por referencia.

Paso por valor


El paso de parmetros por valor consiste en copiar el contenido de la
variable que queremos pasar en otra dentro del mbito local de la
subrutina, consiste pues en copiar el contenido de la memoria del
argumento que se quiere pasar a otra direccin de memoria,
correspondiente al argumento dentro del mbito de dicha subrutina. Se
tendrn dos valores duplicados e independientes, con lo que la
modificacin de uno no afecta al otro.

Paso por referencia


El paso de parmetros por referencia consiste en proporcionar a la
subrutina a la que se le quiere pasar el argumento la direccin de memoria
del dato. En este caso se tiene un nico valor referenciado (o apuntado)
desde dos puntos diferentes, el programa principal y la subrutina a la que
se le pasa el argumento, por lo que cualquier accin sobre el parmetro se
realiza sobre la misma posicin de memoria.

Modularidad
La modularidad es, en programacin modular y ms especficamente en
programacin orientada a objetos, la propiedad que permite subdividir una
aplicacin en partes ms pequeas (llamadas mdulos), cada una de las
cuales debe ser tan independiente como sea posible de la aplicacin en s y
de las restantes partes.
Estos mdulos que se puedan compilar por separado, pero que tienen
conexiones con otros mdulos.

Segmentos por rutina


Permite que se pueda dividir el programa en segmentos lgicos funcionales
haciendo que los programas complejos no crezcan desmesuradamente.
Gracias a esto, permite hacer que los bucles o segmentos de cdigo
internos, puedan ser "abstradas" permitiendo que la lgica de un algoritmo
sea ms fcil de comprender y por lo tanto, los programas son ms
sencillos de mantener.

Prefijos
A medida que aumenta el tamao del proyecto, tambin aumenta la
utilidad de reconocer rpidamente el alcance de las variables. Esto se
consigue al escribir un prefijo de alcance de una letra delante del tipo de
prefijo propio, sin aumentar demasiado la longitud del nombre de las
variables.

Documentacin interna
La documentacin interna son los comentarios que se encuentran junto
con el programa fuente, estos comentarios son ignorados por el
compilador.
Los comentarios de un programa son explicaciones o aclaraciones que
ayudarn al programador en un futuro, cuando quiera revisar o modificar el
cdigo fuente de dicho programa, y todava sern de ms ayuda si la
modificacin la tiene que realizar un programador distinto al que escribi el
cdigo fuente en un primer momento.

Indentacin
La forma en que el cdigo fuente aparece en el listado supone una
importante contribucin a la legibilidad del mismo. La indentacin o
sangrado del cdigo realza las construcciones lgicas y los bloques del
cdigo.

Recursividad
Es una tcnica de programacin que nos permite que un bloque de
instrucciones se ejecute n veces.
Si dentro de un mtodo existe la llamada a s mismo decimos que el
mtodo es recursivo.

Recursividad
Las claves para construir un subprograma recurrente son:
Cada llamada recurrente se debera definir sobre un problema de menor
complejidad (algo ms fcil de resolver).
Ha de existir al menos un caso base para evitar que la recurrencia sea
infinita.

Estructura de Java

Estructura de Java

Clase simple

You might also like