Вы находитесь на странице: 1из 10

NET0B0L0uA Y TECN0L0uA BE LA

PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


1
!"#$%&'()#*+'

-'(."/$##*+'

La cieacion ue nuevo sistema infoimtico conlleva uiveisas fases que van ms all
ue la couificacion uel mismo. 0n mouelo tiauicional ue uiseo establece cinco fases:
anlisis, uiseo, couificacion, piuebas y mantenimiento. En la piimeia se iealiza un
estuuio ue los iequisitos uel sistema y la viabiliuau uel mismo. La fase ue uiseo
iuentifica y uefine los elementos que piecisa el pioyecto y la inteiconexion entie los
mismos. Bel iesultauo ue estas uos fases se obtiene un plan que se utilizai como
guia paia la couificacion uel sistema. El piouucto iesultante ue la couificacion se
vei sometiuo a una bateiia ue piuebas que aseguien la fiabiliuau uel mismo.
Finalmente, el ciclo ue viua ue un sistema infoimtico no teimina en las piuebas, si
no que se extienue mientias que est en uso. Asi, es necesaiio iealizai y pieveei un
mantenimiento uel mismos. Touas las fases uebeiian estai uebiuamente
uocumentauas, peimitienuo que en futuio, se pueuan acometei cambios y mejoias
en el sistema ue maneia sencilla. En este mouelo clsico se contempla, auems, que
se pueuen pasai poi las uistintas fases ms ue una vez, peimitienuo ietioceuei a
una fase anteiioi si se uescubie una ueficiencia que impiua continuai. Be esta
maneia, el piouucto final se obtiene meuiante una seiie ue iefinamientos sucesivos.
Al finalizai caua una ue las fases, se cumple un hito uel pioyecto, el cual, suele venii
acompaauo ue un entiegable. Este pueue sei, poi ejemplo, un nuevo uocumento o
un listauo ue couigo, o una nueva veision ue un entiegable anteiioi.

En el piesente uocumento nos centiamos en explicai como se uesciibiiian las
estiuctuias ue uatos y la algoiitmia ue un pioyecto. Ambas pouiian incluiise en
entiegables, poi ejemplo, tanto en la fase ue uiseo como en la ue uocumentacion.
Ahoia bien, suponemos que se ha escogiuo un uiseo estiuctuiauo paia acometei el
pioyecto, y en este sentiuo iin las inuicaciones. Existen otios paiauigmas ue
piogiamacion, tales como oiientacion a objetos, que iequieien un enfoque uistinto
en la elaboiacion ue los uocumentos. Bentio uel uiseo estiuctuiauo, la
heiiamientas que vamos a planteai peimiten una uesciipcion uetallaua uel pioyecto
Existen otios mouelos (ej, BFB, BEC.) que peimiten iealizai una uesciipcion ue
ms alto nivel, peio que queuan fueia ue este uocumento.

01(.$#($.)1 /& /)("1

Nicolas Wiith acuo el famoso lema ue la piogiamacion estiuctuiaua:

!"#$%&'($) * ,)'%-.'-%/) 01 2/'$) 3 4%$#%/(/)

En este apaitauo nos centiaiemos en uesciibii las estiuctuias ue uatos, mientias
que en el segunuo lo ueuicaiemos a la paite algoiitmica, ya que es ese en el oiuen en
el que uebeiian apaiecei explicauas en la uocumentacion. Aunque uuiante la fase ue
uiseo la eleccion ue las estiuctuias ue uatos y algoiitmos, ue nuevo, consiste en un

NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


2
pioceso ue iefinamiento, a la hoia piesentai el iesultauo final se plantean
piimeiamente las estiuctuias ue uatos, y a continuacion, los algoiitmos que se
uespienuen.

La uefinicion ue las estiuctuias paite ue conjunto ue tipos ue uatos bsicos, y ue
mecanismos que nos peimitan geneiai nuevos tipos ue uatos. 0no ue nuestios
objetivos es conseguii una uesciipcion uel pioyecto inuepenuiente uel lenguaje ue
piogiamacion escogiuo. Paia ello, se pioponen empleai una seiie ue tipos ue uatos
geniicos que son comunes a la mayoi paite ue lenguajes estiuctuiauos.

Tipos bsicos:
- enteio
- ieal
- booleano
- caictei
- enumeiauo

Tipos compuesto:
- aiiay (matiiz)
- estiuctuia
- cauena

La ueclaiacion ue las estiuctuias ue uatos constai ue uos paites. En la piimeia se
uefiniin las constantes uisponibles. En la segunua, los tipos ue uatos que se van a
empleai. Caua constante, tipo o campo ue un nuevo tipo ii acompaauo ue un
comentaiio que explique la necesiuau uel mismo.

02&%34" 56 7.&1 &' .)8)

Las ties en iayas es juego ue uos jugauoies. Se juega sobie un tableio ue NxN, y con
uos tipos ue fichas (tiauicionalmente un X o 0). Caua jugauoi coloca en tuinos
sucesivos una ficha sobie alguna ue las casillas vacias uel tableio. El juego finaliza
cuanuo o bien algn jugauoi consigue alineai ties ue sus fichas en cualquieia ue las
uiiecciones posibles (veitical, hoiizontal o uiagonal), o bien cuanuo no queua
ninguna casilla vacia uonue colocai ficha.

A continuacion se van a uesciibii las posible estiuctuias ue uatos necesaiias paia un
piogiama que implementaia uicho juego. Piimeio se iealiza una bieve
piesentacion, y a continuacion una uesciipcion uetallaua ue las mismas.

Paia iepiesentai el tableio se ha uefiniuo el tipo tableio, que consiste en un iegistio
que contiene una matiiz ue NxN ue casillas, el nmeio ue casillas ocupauas y cul ue
los jugauoies posee el tuino. Caua casilla pueue estai vacia, ocupaua poi una ficha
uel usuaiio, o poi una ficha uel oiuenauoi. Poi ltimo, el tipo ue uatos accion iecoge
las posibles acciones uel usuaiio.

NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


S




9"'1()'(&1

:"%;.& !&1#.*3#*+' <)4". 3". /&=&#("
N Nmeio ue filas que tiene el tableio S
N Nmeio ue columnas que tiene el tableio S

7*3"1

:"%;.&
5
7*3" !&1#.*3#*+' !&=*'*#*+'
Estauo enumeiauo Posibles estauos en los que se pueue
encontiai la paitiua
INICI0_PARTIBA,
}0uANB0,
PA0SABA
FIN_PARTIBA
Accion enumeiauo Bifeientes acciones que pueue
iealizai el usuaiio
}0uAR,
SALvAR,
CARuAR,
TERNINAR,
C0NTIN0AR,
PA0SAR
Casilla enumeiauo Posibles valoies que pueue almacenai
una casilla uel tableio.
vACIA = si la casilla est libie;
0S0ARI0 = si la casilla contiene
una ficha uel usuaiio;
0RBENAB0R = ficha uel oiuenauoi
vACIA,
0S0ARI0,
0RBENAB0R
Natiiz aiiay Tabla que contiene las casillas uel
tableio.
|1..N, 1..Nj ue
Casilla
Tableio estiuctuia Estiuctuia que uefine el tableio y el
estauo uel mismo.
- casillas = Tableio ue NxN casillas;
- ocupauas = Nmeio ue casillas
ocupauas en caua momento, es uecii,
casilla <> vACIA;
- tuino: vERBABER0 si juega el
oiuenauoi y FALS0 si juega el usuaiio
casillas: Natiiz ;
ocupauas: Enteio
tuino : Booleano



1
Touos los nuevos tipos ue uatos uefiniuos se nombian empezanuo poi mayscula.
Las constantes se esciiben con touas las letias en maysculas.


NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


4
>1&$/"#+/*?"

Entenuemos poi pseuuocouigo un lenguaje semifoimal que facilita la uesciipcion
algoiitmica ue un piogiama. El pseuuocouigo se entienue como lenguaje tcnico, asi
que se espeia que el lectoi posea conocimientos ue piogiamacion (ej. analistas,
uesaiiollauoies). En este sentiuo, obeuece a unas ieglas minimas conociuas poi la
comuniuau. Ahoia bien, no es necesaiia empleai una valiuacion foimal, como pueue
sei el caso ue un lenguaje ue piogiamacion ue alto nivel (ej. C o Pascal), si no que se
peimite cieita flexibiliuau a la hoia ue expiesaise. Esto es asi, en tanto en cuanto
que el inteipiete uel couigo no es una mquina si no un humano.

0tia ventaja uel pseuuocouigo es que peimite inuepenuizai la uesciipcion uel
piogiama ue los lenguajes ue piogiamacion. 0n mismo pseuuocouigo uebeiia pouei
sei implementauo meuiante vaiios lenguajes. La flexibiliuau que apoita el
pseuuocouigo peimite al piogiamauoi iealizai una uesciipcion bastante ajustaua
uel uiseo uel piogiama, sin tenei que ocupaise ue los uetalles ue implementacion.
Be echo, un mismo algoiitmo se pueue uesciibii empleanuo uistintos niveles ue
uetalle. Asi, se hace especialmente conveniente como heiiamienta ue uiseo
uescenuente.

@' 3"1*;4& 31&$/"#+/*?"

Existen mltiples piopuestas ue pseuuocouigo. Cualquieia que consiga expiesai un
piogiama ue maneia piecisa nos valuiia. Bemos elegiuo una piopuesta en concieta
basaua en el libio ue Coimen et al
2
que nos siiva ue mouelo paia las explicaciones
tanto en teoiia como en picticas. Ahoia bien, cuanuo tengis que empleai una
uesciipcion en pseuuocouigo no es obligatoiio seguii esta piopuesta, sino que
pouis, si os sentis ms comouos, elegii otia que fueia igual ue vliua.

En el siguiente apaitauo se inuican una seiie ue convenciones minimas que uefinen
la piopuesta ue pseuuocouigo. Es posible que, en ueteiminauos piogiamas, sea
necesaiio expanuii la piopuesta paia pouei expiesaise coiiectamente.

En el siguiente apaitauo se incluyen uiveisos ejemplos en los que se muestia el
mouo ue empleo y la potencialiuau uel mismo.

9"'A&'#*"'&1 /&4 31&$/"#+/*?"

1. La inuentacion (o sangiauo) se emplea paia sealai el comienzo y fin ue un
bloque (vanse ejemplos). Esta iegla tambin se aplica a la sentencia
conuicional 1*B1* '".

2
T. B. Coimen, C.L. Leiseison, R.L. Rivest, C. Stein. Intiouuction to Algoiithms.
Seconu Euition. The NIT Piess. 2uuS, pp. 19-2u

NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


S
2. Las sentencias ue iepeticion /&1/&BC)1(), %*&'(.)1 y C)DB%*&'(.)1E y las
estiuctuia conuicionales 1*B1* '" y 1&?$' tienen una inteipietacion similai
a la que se ua en C a las estiuctuias foi, while, uo-while, if-then-else, case
(vanse ejemplos)
S. La asignacion ue un valoi a una vaiiable se iealiza meuiante el simbolo '!'.
Ej. i ! Su
Se pueue asignai un mismo valoi a vaiias vaiiables en una nica linea
concatenanuo sucesivas asignaciones:
Ej. i ! j ! Su
Asigna Su tanto a i como a j.
4. Las vaiiables que se empleen siempie se entienue locales al algoiitmo que se
est uesciibienuo. Las vaiiables globales ueben sei ueclaiauas
explicitamente (!"#$%" 10/0), aunque no se iecomienua su uso a no sei que
sea estiictamente necesaiio
S. Los elementos ue una tabla(/%%/5) se acceuen especificanuo el nombie ue la
tabla seguiua ue el inuice uel elemento entie paintesis cuauiauos |j. Ej. A|ij
inuica acceuei al i-simo elemento ue la tabla A. Con la notacion ".." se pueue
especificai un iango ue valoies uentio ue una tabla. Ejemplo, paia inuicai la
subtabla foimaua poi j elementos A|1j, A|2j, A|Sj.A|jj se empleaiia A|1..jj
6. Los campos ue los iegistios(estiuctuias) se acceuen meuiante el caictei
punto.
7. Los paimetios ue una funcion se pasan 3". A)4".: la funcion llamaua iecibe
su piopia copia ue los paimetios, y si se iealiza una mouificacion en el valoi
uel paimetio, ste no afecta a en la funcion que ha iealizauo la llamaua.
Cuanuo se pasa un iegistio(estiuctuia), se copia el punteio a los uatos, peio
no los campos. Be esta maneia, si x es un paimetio ue la funcion llamaua, la
asignacion x ! y uentio ue la funcion llamaua no iepeicute en la funcion que
ha iealizauo la llamaua. En cambio, la asignacion A|xj ! S, si que es visible.
8. Los opeiauoies booleanos se evalan en coitociicuito. Esto es, cuanuo se
evala la expiesion "a 8 b" piimeio se evala /. Si / se evala como FALS0,
entonces es imposible que la expiesion enteia se evale como vERBABER0,
asi que no es necesaiio evaluai 6. En cambio, si a se evala como
vERBABER0, se uebe evaluai b paia ueteiminai el valoi ue la expiesion. Be
esta foima se pueue especificai una expiesion como a = NIL y f|aj=b sin tenei
que pieocupainos poi A|aj = b cuanuo x es NIL.







NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


6
02&%34" 56 F./&')#*+' 3". *'1&.#*+'
En este ejemplo se plantea como uesciibii el algoiitmo ue oiuenacion poi inseicion.
Se han uauo uos posibles soluciones al mismo algoiitmo, caua una con un giauo ue
uetalle uifeiente. Finalmente se muestian ties implementaciones uistintas paia los
pseuuocouigos planteauos (una en Pascal, y uos en C).

Ambas piopuestas compaiten las siguientes entiauas, y tienen la siguiente saliua
espeiaua.

0'(.)/):
A|1..Nj secuencia ue elementos (a1, a2, aS, .an)
G)4*/):
Peimutacion (a
'
1, a
'
2, a
'
S.an
'
) ue la entiaua tal que a
'
1< a
'
2< a
'
S.<an
'
(uonue < es
una ielacion ue oiuen entie los elementos)

02&%34" 5H56 >1&$/"#+/*?" /&1#.*3#*+' %$8 ?&'&.)4

/&1/& i ! 2 C)1() longituu(A) 6
inseitai A|ij en A|1..ij manteninuola oiuenaua.

02&%34" 5HI6 >1&$/"#+/*?" /&1#.*3#*+' /&()44)/)

0'(".'"6
i, j: nmeios enteios
x: elemento auxiliai

/&1/& i ! 2 C)1() longituu(A) 6
x ! A|ij
j ! i
%*&'(.)1 (j > u 8 x < A|j-1j) 6
A|jj ! A|j-1j
ueciementa j;
A|jj ! x;

02&%34" 5HJ6 -%34&%&'()#*+' &' >)1#)4 /&4 31&$/"#+/*?" 3."3$&1("

for i = 2 to N do
begin
x := A[i];
j := i;
while (j > 0) and (x < A[j-1]) do
begin
A[j ] = A[j-1];
j:= j -1;
end;
A[j] := x;
end

NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


7

02&%34" 5HK6 !"1 *%34&%&'()#*"'&1 &' 9 /&4 31&$/"#+/*?" 3."3$&1("

for (i=1; i < n; i++)
{
x = A[i];
for (j=i; j > 0 && A[j-1] > x; j--)
A[j] = A[j-1];
A[j] = x;
}

for (i=1; i < n; i++)
{
x = A[i];
j = i;
while((j > 0) && (A[j-1] > x))
{
A[j] = A[j-1];
j = j - 1;
}
A[j] = x;
}

02&%34" L6 9"%3.";). 1* $' 'M%&." &1 3.*%"
Pseuuocouigo ue una funcion que ueteimina si un nmeio es o no piimo. Este
ejemplo peimite mostiai como se iealizan &7 aniuauos.

0'(.)/): n, nmeio natuial > u
G)4*/): veiuaueio si es piimo, falso en caso contiaiio
0'(".'": i, nmeio enteio. esPiimo, booleano

1* n <= S 6
esPiimo ! veiuaueio
1* '"
1* n es pai 6
esPiimo ! falso
1* '"
i ! S
%*&'(.)1 i <= n2 8 i no es uivisoi ue n 6
i ! i+2
1* i es uivisoi ue n 6
esPiimo ! falso
1* '"
esPiimo ! veiuaueio
uevuelve esPiimo


NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


8
02&%34" I6 !*1&N" /&1#&'/&'(& O>."?.)%) 7.&1 &' P)8)Q
Este ejemplo muestia como empleai el pseuuocouigo paia uesciibii un piogiama
meuiante un uiseo uescenuente. Piimeiamente se uefinen las estiuctuias y tipos
ue uatos necesaiios que se van a empleai. La paite algoiitmica se ha uiviuiuo en
ties: piogiama piincipal, funcion 8-1#/, y pioceuimiento (-191:%01;/0$%. Caua una
uesciibe una paite uel piogiama con un nivel ue uetalle uifeiente, uesue lo ms
geniico a los ms concieto. La composicion ue estas ties paites (junto con otias
que no sean incluiuo) uan lugai al uiseo completo uel piogiama.

>."?.)%) 3.*'#*3)4
El piogiama piincipal consta ue un bucle que muestia el men piincipal y iecoge la
accion a iealizai poi el usuaiio:

0'(".'": tableio: Tableio,
accion: Accion.

impiimeNenu(INICI0_PARTIBA)
%*&'(.)1 lee(accion) <> TERNINAR :
1&?$' accion :
INICIAR: estauo ! juega(INICI0_PARTIBA, tableio)
C0NTIN0AR: estauo ! juega (}0uANB0, tableio)
SALvAR: guaiua(tableio)
CARuAR: abie(tableio)
impiimeNenu(estauo)

Bestacai que el pioceuimiento &(<%&(1=1;- saca poi pantalla un men que vaiia
segn el estauo en que se encuentie la paitiua.


NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


9
R$'#*+' 2$&?)
Paite que iesuelve la secuenciacion ue movimientos. Esta funcion es llamaua uesue
el piogiama piincipal cuanuo el usuaiio quieie iniciai una paitiua.

0'(.)/): estauo: ue la paitiua.
tableio: con la configuiacion ue las fichas actual.
G)4*/): estauo ue la paitiua (FIN_PARTIBA o PA0SABA).

1* estauo = INICI0_PARTIBA 6
inicializai(tableio)
estauo ! }0uANB0
C)D
1* juega0iuenauoi(tableio.tuino) 6
mueve0iuenauoi(tableio)
1* esTieseniaya(tableio, 0RBENAB0R) 6
estauo ! FIN_PARTIBA
impiimevictoiia(0RBENAB0R)
1* '"
lee(accion)
1* (accion = PA0SAR):
estauo ! PA0SABA
1* '"
mueve0suaiio(accion, tableio)
1* esTieseniaya(tableio,0S0ARI0) 6
estauo ! FIN_PARTIBA
impiimevictoiia(0S0ARI0)

1* estauo = }0uANB0
1* sonTablas(tableio) 6
estauo ! FIN_PARTIBA
impiimeTablas
1* '"
cambia(tableio.tuino)
%*&'(.)1 (estauo <> FIN_PARTIBA 8 estauo<>PA0SABA)












NET0B0L0uA Y TECN0L0uA BE LA
PR0uRANACI0N I
Ingenieiia Infoimtica
Cuiso Piimeio. 2uu8-u9


1u
>."#&/*%*&'(" %$&A&F./&')/".
Este pioceuimiento se ha elegiuo como ejemplo ue pioceuimiento que se emplea en
la funcion 8-1#/. Faltaiia uesciibii alguna otia ue las funciones ielevantes uel
pioceuimiento juego (esTieseniaya, sonTablas.) paia completai el uiseo.

0'(.)/): tableio con la configuiacion ue las fichas actual y con al menos una
casilla vacia.
G)4*/)6 mismo tableio con una nueva ficha colocaua.

C)D
i ! aleatoiio(1, N)
j ! aleatoiio(1, N)
%*&'(.)1 (tableio.casillas|i,jj <> vACIA)
tableio.casillas|i,jj ! 0RBENAB0R
tableio.ocupauas ! tableio.ocupauas + 1

Вам также может понравиться