Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#
\
>
DE PROGRAMACION
A RITMOS ESTRUCTURA DE DATOS
t /' #
'
^
4
'i
r
te& T7Y
'
(i*
3c? *
i
' 1
w
c
,v
'is
l
y/
4
4 TO /
: % i
^
11
« Ü i
\
»
i
m V
a
/\ ’ rfX : • vSj S
JA J f * V
/
^4
í¿¡!« V
V
•
i
i «
FUNDAMENTOS DE
PROGRAMACIÓN
1
Algoritmos y estructura de datos
VJ / AJOOlVf M oi r u t é t\ s
* j
{ ?
• yj li rv , i < !
? ’
i c/ > - i . ,,
•M) JoáMqj J ni
J . A 2 , A AV. ! UW tfi
* '
Facultad de Informática
Universidad Pontificia de Salamanca en Madrid
c «* Munv
roü&tfatatio if
3
oo-rc-M r. t fc:.- - . . x
n© r FACULTAD DE
A »r
^
i\ { t \á CONTADURIA
Y ADMINISTRACION
prr <
BIBLIOTECA
.v; fjie 0025 roim ! .8
»•
McGraw-Hill
LISBOA • MÉXICO
MADRID • BUENOS AIRES • CARACAS • GUATEMALA •
SANTIAGO • SAO PAULO
NUEVA YORK •PANAMÁ • SAN JUAN • SANTAFÉ DE BOGOT • NUEVA DELHI PARÍS
Á
AUCKLAND • HAMBURGO • LONDRES • MILÁN • MONTREAL • • •
f
je
\f\
* t
d
r > g '
. 1
1
iv
FUNDAMENTOS DE PROGRAMACIóN -
Algoritmos y
estructura de datos. Segunda edició
n
No est á permitida la reproducci
ó n total o parcial de este libro, ni su tratamiento
informá tico, ni la transmisi ó n de ningun
electrónico, mecánico, por fotocopia, por a forma o por cualquier medio, ya sea
registro u otros m étodos, sin el permiso
previo y por escrito de los titulare
s del Copyright.
DERECHOS RESERVADOS O 1996, respecto a la segunda edición en espa ñol, por
McGRAW-HILL/INTERAMERICANA DE ESPAÑA S. A. U.
Edificio Valrealty, 1.* planta
.
Basauri, 17
I
28023 Aravaca (Madrid ) inIh « aA f hiA
ISBN : 84 481-0603-2 oorlj miol - ,:
gftfn
^t
? i? v ¿OfC í lgnoJ 'jb Oln lTtftftCq
Depósito legal: M. 8.023 1998 - ,, , ^
rv hhutiM no nonsumtfui'. ob : nricQ bi /J* vs / in i
'o
*
t
34567
•
*
89012
• *
09876543201
i ,v ^ *
Impreso en M é xico Printed in Mexico
*.« JT
‘ ^ Vi
Esta obra se terminó de
imprimir en Mayo del 2001 en
A? o ^
-Vj A
UTOARTE-
San Andr és Ateto No. 21 A
4CÍCol. Ind. San Andr
' V
«
és Atoto
Nuac>aipan Edo. De Méx. 53519
- •
^
^ .
V v
-
< «» »
4
«• r\
A\ r .
O f
- ^
U í r n i j 5Í » r * j< ! 1 . .- . i / r? ioUi:¡ r,i{ ; :* <y> :o > > K n i o ? d < M |
< ¿b iu »ijifio/ r t ¿ 4 - «
\ *
•
«
n^o r r f i
( VI -
Oi-
-
ii
1
CONT
7 ENIDO
a
r < nli : » : U >
hi - f » f j / ilJ . * r
r j.
*
.. ' j b Jr.i j. f l i t !!|: i , /;7
f
.! '
Ml but : M l ty I Mil1 J .« r
. M' l b / ! » .l b * > L£
O í*
dl
. / W .O ! M i< .
IJ » / i J
> !> . ; • i II ó J y ' v *r : > .n
'
/ . ? <*
. o\;J \ ! > /. i;f í!;; iqi iCl
or i >-/
'
) m1 " : M/ b i .iU
H? c
- 113*4*1
f
P; *
tloM - íiT n í » i
(
’ •) V , <4
* t
' jí , í ¿ j/ . ; . M i
' b. ‘ MIVA
" ) u r j r j; H
Prólogo de la segunda edició n
xill
“ * • • •• i •
-*
* « ^ •’1 > * * 11 » * J f« » / »
•i l i i i
;
< *4
o i
4
í , -.1 - ' M11i .
n; 1.2.1. Características de los algoritmos ' I < .f
.1 '
.’
5
n 1.3. Los lenguajes de programación
•
1.3 .1. Instrucciones
i o i
.
*
T ^ • *
- .* > L » » í ; i y - loo .' i> í iiJ i J J MiO i y 1 1
a la computadora i
(
K i i /
6
7
— 1.3.2. Lenguajes maquina
« • A
* • Y 1 J i J I •
’
t ' i . vil 1
Í
* • . '' 1 « t1 i i » . « {* / 1 1
i i
- , , . . . . 7
1.3.3. Lenguajes de bajo nivel
r Í IOI > íiM Í > ll J Ú ¿J t f f l l J juTíí'. JlI P.t*
.
25
)V 1.7. Funciones internas
1.8. . La operaci ón de asignación
.. d:v ^ . /.:Ui...L.ír .í L...J 1.1.- .. 26
; ;¿ „
i '.v‘ .. /..V...
,
J.V.VA' í, 21 . ....
- .
. .
..
f \ •
-
1 9. Entrada y salida de información 31
31
Actividades de programación resueltas 37
Ejercicios
de progra -
rnac¡ón° *UC*^n ^ Pro^*efnas con computadoras y las herramientas 39
o
3 res
,
? uc ¡ón de problemas
40
40
An
A
á lisis del problema 41
2.3. Diseño del algoritmo 43
2.3. 1. Escritura inicia] del algoritmo 45
•4. Resolución del problema mediante computadora 46
2.5. Representación grá fica de los algoritmos 46
2.5. 1. Diagramas de flujo 56
2.6. Diagramas de Nassi-Schneíderman 58
.
2.7 Pseudocódigo 59
Actividades de programación resueltas 64
Ejercicios
•»> 67
Capítulo 3. Estructura general de un programa
67
3.1. Concepto de programa 68
r 3.2. Partes constitutivas de un programa .., 69
t
3.3. Instrucciones y tipos de instrucciones 70
3.4. Tipos de instrucciones 70
3.4. 1. Instrucciones de asignaci ón ...
/
3.4.2. Instrucciones de lectura de datos (entrada)
3.4.3. Instrucciones de escritura de resultados (salida )
3.4.4. Instrucciones de bifurcación
3.5. Elementos básicos de un programa
— 71
'
72
72
73
1
74
3.5.1. Bucles •
’ j
76
3.5.2. Contadores
i
i
3.5. 3. Acumulador 79
on
80
3.5.4. Decisi ón o selecci ón . . . .
• •
Si 3.5.5. Interruptores 81
í* it
3.6. Escritura de algoritmos/programas 84
3.6. 1 . Cabecera del programa o algoritmo 84
3.6.2. Declaración de variables 84
j
3.6.3. Declaraci ón de constantes numéricas 85
3.6.4. Declaración de constantes y variables carácter i 85
3.6.5. Comentarios 86
3.6.6. Estilo de escritura de algoritmos/programas 87
r Actividades de programación resueltas 88
Ejercicios ‘
93
>? - :
•. •
}
Capítulo 4. Introducción a la programación estructurada 95
I
. - * , - f f 'í *'i l r . f i i t
4.3. 2. Dise ño descendente ( top-down )
4 '
t 1
rs
re r
4.4.
4.5 .
Estructura secuencia!
Estructuras selectivas
* ••••, *
J jjj
iru
f
I' f
4.5 . 1 . Alternativa simple ( si - entonces / if - then )
4.5 . 2. Alternativa doble ( si - entonces -si _no / if - then-else )
^
105
r r
^ 4.5 .3. Alternativa múltiple ( segun_sea , 'caso_de / case ) '•••' Hl
\ 4.6. Estructuras repetitivas * •<
yf 4.6. 1 . Estructura mientras ( «while » ) 120
Mí
f ' ,.r
4.6.2. Estructura repetir ( «repeat » )
4.6 . 3. Estructura desde / para ( «for» )
*
. 125
128
r: c
4.7 .
4.6 .4. Salidas internas de los bucles
Estructuras de decisió n anidadas ri . 132
*
ri
C l <*
t- L
f
4.8.
4.9 .
Estructuras repetitivas anidadas
_
La instrucci ón ir a ( «goto» )
, ....... 138
142
144
Actividades de programaci ó n resueltas
145
i-l- r Ejercicios ‘
iU
160
Capí tulo 5. Subprogramas (subalgoritmos): procedi
mientos y funciones 163
5.1. Introducción a los subalgoritmos o subprogramas .'.
5.2. Funciones 164
5.2. 1. Declaraci ón de funciones 166
5.2.2. Invocación a las funciones L67
5.3. Procedimientos (subrutinas) 168
0? r 5.3.1. Sustituci ó n de argumentos/pará metros
.' 173
5.4. Ambito: variables locales y globales
5.5. Comunicación con subprogramas: paso de parámetros....
..u . . .1
174
178
r - 5.5.1. Paso de pará metros
1
) 181
'
182
5.5.2. Paso por valor 183
~r 5.5.3. Paso por referencia 184
5.5.4. Comparaciones de los métodos de paso de pará metros d . ....:.. 185
Qd í 5.5.5. Síntesis de la transmisión de parámetros
5.6. Funciones y procedimientos como pará metros
,
f .. 187
190
5.7. Los efectos laterales 192
lo 5.7.1. En procedimientos 192
5.7.2. En funciones . 193
5.8. Recursi ón (recursividad ) 194
.
Activid ades
.
de rprograma -
ción resueltas
.M i 1J I ' í . ¡ l i UJ i
‘ . i i • .l 1 <
A v, . . . .i n 197
. . Ejercicios
k 4 . •
f% ;
'
•
-' 1
> • - J U * • 111 f i i J
- ‘: J
i\ ó
. \ t » i • . . i. i t ! J í , r
202
r <
Cap ítulo 6. Estructuras de datos (arrays)
'
« • • - . • .. . . . . . • •
•
'
. *
.» M i *. . • .
203
I
, ,
Almacenamien to de arrays en memona 222
6.6. Almacen a
i ‘K cenain ^ ^ ^
de arrays multidimensiona
e
••••* ••i
» ’
•••••
224
Almacenamiento
—
»»
[ }i
6 6 2. ón resueltas
230
Pin Actividades de programaci £ .1.1
w, ,,
•
MI ,. .
,: i /
237
t f )
n¡
Capí t \ Las cadenas
„
as de caracter ess
caractere
. Z ^ ,
-
. w* * ¿L. 238
238
>i c f
—
rt. fntn
7 2. El juego de
ró rrr
s
caracterees
le caracter ^ " 1
.» ií 238
! j
r i
7.2. 2. Código EBCDIC ,••••• ;
'“ "
V ;> 240
: 1 / 7.3. Cadena de caracteres
•••••
; ! 242
7.4 . Datos tipo carácter
, •••• - •• ; 242
’ “
i ""' •
: ... i
£1 ! . , , tes
7.4. 1 . Constan . i
", ’ •
\ ut-
••••« ••
7.4. 2. Variables 243
1.4.3. Instrucciones b á sicas con cadenas
7.5. Operaciones con cadenas A 4 i
_
U V1V I I W L»
!',? “ ’"üiuu úV
« VW
'
de una cadena ••••••"V,
7.5. 1 . Cá lculo de la longitud ••• . Z 4:)
r- u . hi nvilmoici ú /.Q í n i n i p / UAUst )
Kdt Comparaaci
7.5. 2. Compar ci ón
é
^ •
4 /'\ 1
7.5. 3 . Concatenaci ón
„
..W í 4 . Uí 46
247 ^
ó *! 7.5.4. Subcadenas •
248
TV51 7.5. 5 . B úsqueda 249
'. < . . . ¿ .> 4 , . 4 . . ... .. . h
7.6. Otras funciones de cadenas
8ó l
£ Tf 7.6. 1 . Insertar w imtl vtf . ó 249
!•••••- 250
l 7.6. 2. Borrar
: .¡
* tn¿ 250
4. . . , .
7.6. 3 . . Cambiar ,„ .
. .? ; .. . . . s . .4 . ; < U ú
¡ y. f 7.6.4. Conversi ón cadenas/números 251
Actividades de programaci ón resueltas ,,, .wm! ... . ..'. 252
£« l
A r Ejercicios .... , ,. , , . ,. , . , , . , v. 257
t > f .. . . .. t . ; ¡ ufjlsi toq (> ;¿*1 J.. T..c ••
Archivos (ficheros) :,, . 4 .. . . . .'.. . . ....>r .,. . , . M ¡, . , , . ... . j,. , . . ... .. , .. . ; .. . ,, : 259
apítulo
\r ¡
»
iroréstniciurajéií rqijick
^ i.“ .' ..- i ¿:. .:!2 ' :
j v n c ? f / j otno ¿ tt >unttnihyjo i <( v .ó*.C 260
2 - L
1 »
DPI . > oí ..
IP i
8.1 . 1 . Campos . .
8.1 .2. Registro s
>¿Ytl i o í, í V>7oV* *
*
f> ]
*
V ’ 261 r * ***
,} r
8.2. Conceptos y delliiictoanesí *tw,naiñ!o4agtfa Xh «tlt? ?.«« /«firríít7Jlííí!?. ? ?J;?} ?¿ í .
8.2 . 1 . Clave ( indicativo) . :. ::. .: ;;.:. . : ; .
8.2. 2. Registro físico o bloque
'®
íí ;
1 !
^í ^^^ 262
262
262
cffltifg
affiifoOTffi
. 8.3 .
8.2.3. Factor de bloqueo :::: WW
Soportes secuenciales y direccionables ...4;. i 4 .i;.4wn.u;í0» a /<nU.t .;iift..-4««tr. í id
8.4. Organizaci ón de archivos ^
9b ,
,
265
265
^ ... |
!<>
i Ar
8.5 .5 . Reorganizaci ón de un archivo
8.5 .6. Destrucci ón de un archivo
. .. . .. . rU . .. .u.:ú.l..... .A L
¡
'
( ) 273
273
¿ . i .. . ,’ tl n. /.í
?o 8.5 . 7 . Reuni ón, fusi ón de un archivo i .'/. 274
^) .( *
8.5 . 8 . Rotura/estallido de un archivo i ; ...'........ . l í .'.
r ‘
« 274
Ó )! 8.6. Gesti ón de archivos 274
8.6 . 1 . Crear un archivo 275
<W 8.6. 2. Abrir un archivo > 276
'.r r > 8.6 . 3 . Cerrar archivos 278
r' ;
8.6.4. Borrar archivos ¡ 278
8.7 . Mantenimiento de archivos .
t
¡ > 278
8.7. 1 . Operaciones sobre registros 280
8.8. Procesamiento de archivos secuenciales (algoritmos ) [ 280
"
t./ 1 •
8.8 . 3. Actualizaci ón ' 284
8.9. Archivos de texto r’
. . . . ..
Mr 8.10. Procesamiento de archivos directos (algoritmos) . . .... ;] '
’
287
0< > f 8.10. 1 . Operaciones con archivos de acceso directo .
’ '
.
’ 11
287
11
8.10. 1.1 . Creaci ón .. . ' ' * 287
t ' -F :
8.10. 1.2. Altas m
810.1 . 3 . Consulta 290
8.10 . 1.4. Bajas .... . ... .. . . ... . .t .'. . . . .. . .... . . ..
‘ ' '
: : » 292
‘
.
8.10. 1.5 . Modificaciones . 1 293
i .:. ...'. /. .. .'... .’...'.... ...
.
8.10 . 2. Clave -direcci ón ..
'
294
aw .
8.10. 3 . Tratamiento de las colisiones 294
gor ,
8.10.4. Acceso a los archivos directos mediante indexación .; . 294
Oí Ji- _
o « A A *i p . . » : . .- , : ;
/ ' ' ’ A .' ' )
' . ! .
'- i » i i t
one
ro; 8.11 .
v •1 V /• f • X •
/ 1
L
•••••••••«
•••«•««• a*
296
Actividades de programaci ón resueltas ..! ;. . . . . ...!. . . . . .. ..... . .
’ 1
297
?.( U-
-
i^rcrCTÜS 304
M Ui
í HRp^ ííl--:H- :-.-.1.:f;.¿r;.IJ.
,(
. Ordenación, búsqueda e intercalarf¡Sa*;::vbí-i.Clti nu .tb
5'A» .?cbi?.:üü
^ ^ 305
rítulo
Cap
Vof
V 01-
Y ^ Introducci ón
/ «Hiobmri
..
* . vyf , * y v"
v w
. 11
T r ** ** *
'
* *
.
* *** **
. 306
.. 307
9.2 . Ordenaci ón . . v 11tiíi.N Y Viv J i i v ¡ r > ' r. * v
- * * * * * * * *
* * ** ** ** * ***
* * * * * *** *• i
. .
801 9.2. 1 . Mé todo de intercambio o de burbuja ÍVy," rrt í ,“
PlH- ón por n
( Hi-
9.2. 2. Ordenaci inserci ó
27
01 l '
•••• - •
'
^
3 5
at 1 JWIWIV -
Ejercicios
L/ »V
*
M • ,í ... j
,
» ^
.. V..;..,.VVV .. J,.. 35
y fusión externa (archivos)
Capítulo 10. Ordenación, búsqueda
>
360
r. ( •
10.1. Introducci ó n .t í -.
i
360
i i- t- 10.2. Archivos ordenados • • »
'r \/
O
Ci s
4
:
O J O D '- J A'
X Contenido
..
361
10 3. Fusi ón de archivos
364
10A
10 4 Partición de archivos 365
10.4.11 * Clasificación interna
,, 355
rr
•f
í’Z
-•
10.4.2. Partici ón por contenidoón .... 366
t 10.4.3. Selecci ón por sustituci 268
10.4.4 Partici ón por secuencias
* *
*
jgg
"
archivos
10.5. Clasificación de ón por mezcla directa
•
369
' 10 5.1. Clasificaci
10 5 2. Clasificaci ón por mezcla
natural ¿n
por mezcla de secuencias equilibradas *
r 10.5.3. Clasificaci ón
t Actividades de programaci ón resueltas !
Ejercicios
, y listas enlazadas) 385
Capítulo 11 .Estructuras dinámicas lineales de datos ( pilas colas
datos 386
11.1. Introducció n a las estructuras lineales de
1
*
de datos 387
11.1.1 . Estructuras din á micas
•
-> r .l J 388
11.2. Listas ; * IJ*
390
11.3. Listas enlazadas *
\' r f
4 jq
7C* i 1 1 . 8. 1. Representaci ón de las colas ..... 420
11.8.2. Aprovechamiento de la memoria
Z Ü . Z.' *
r c <*
426
11.9. Doble cola 1•t • . . J ;
1
4^ 8
;
.
•••;•*:•
Actividades de programación resueltas .. . ‘.l'
Ejercicios '
!
.'
!
... !..’
...
”
’
/
ZZ
• •
’
•
*
428
436
Capitulo 12. Estructura de datos no lineales (á rboles y grafos) .. 439
•
¡2 2 ¿T*' ' 6
"
" ' r:'
440
440
Sií!
^
Xi *
(
12.3.2. Á rboles binarios completos !. i ; f ! i FU
•• i * » t i 444
. 12.3.3. Conversión de un árbol general en árbol binario
I A i/
ro ? .....’ 445
12.3.4. Representaci ón de los á rboles binarios .........i .: !: .. ! 449
* i
.' 453
i 1 12.4. Á rbol binario de b ú squeda 455
12.4. 1 . B ú squeda de un elemento
f . i f\
457
F \? 12.4.2. Insertar un elemento : 458
M? 12.4.3. Eliminaci ón de un elemento 459
o j¿ 12.4.4. Á rbol binario mediante arrays 461
í
'í • *
.4
j 14.3.3. Tablas
labias de decisi ó n mixtas i¡; ¿i
*
14.3.4. Comparación y transformación de los tipos de tablas í 1
i
f
506
14.4. Tipos de reglas de decisió n . ,, t r r i
506
»
14.4.1. Conversión de reglas «O» y «SI NO» _ 507
vu ... 508
14.5. Construcción de tablas de decisión . ... . 11 i r i '
509
in 14.5.1. Estudio de condiciones, acciones y relaciones
: t
? . 14.5 .2. An álisis y requisitos de una TD 509
14.5.3. Simplificación de una tabla de decisión 511
r¿ u.- i I i
511
14.6. Encadenamiento de tablas de decisión t : . i.. .. 513
8^4 14.6.1. Tablas abiertas 1 ....' 513
('O 14.6.2. Tablas cerradas ;¡. i ; < j .v.-...
' . l . . 514
f ót 14.7. Conversión de tablas de decisión en programas
.Vi 14.7.1. Programaci ón directa en lenguajes de alto nivel
14.7.2. Transformación de la tabla en diagrama de flujo
’. '. . 516
516
on- Actividades de programación resueltas
.. ..i . 516
v, 522
0*4 Ejercicios .
530
r
v .U
*
" >
.
. . . ::n>v , A, - .. M l ' . . 1.
Apéndice A Especificaciones del lenguaje algorítmico UPSAM ...;
. . ‘
¡V
..
J 707
librO 1-4.1 floi'JE'J Í 1
rdU - ob rió binoin £ ¡- 4 i
¿ cnifcH 'oiq .
'
“
f V
- , ,vl) yb •í.dc * n;l a tijbbtwboiJnl . 1.1 '
. •
*
;l > . t , : . I t
,lA, T ¡ r .í t
t ; vr :I . i . t . .1,4 í f
* .M
v
(K , Ml .3
* r*
. v*
. r
i l l s '»
* ¿ :*, M t * í
* vise T r* ; •
* * » () ohc *
. CV 1 ! * i lírit
' *
i i t
1
V » > | :
i
«
.
i
* i
r i .7 > » * (
f .. , .
j »‘
l fi >' . . t CAPITULO
i 1
Kwt m w woi
» .> , . otuhiu . o !. iVr n
rv ‘
i i
» »\ ALGORI. TMOS Y PROGRAMAS ,U.V ,
nlor ' í J {. í
i r » i
i: ,\ V i J
rr ; t *iu ''
• e- \ V '
i
.* loin / « iv . o nm y
• .? niir v - finut
yl¿ !
1.1. Los sistemas de procesamiento de la información . : i • i
f l» fi "
..
»
.. . ,. . *
’ - Ai V A ’
' 1
\
i, - ,
1.9. Entrada y salida de
• /
informaci ,
ó n . ' A A .il s *
j , _
. ,x ; H * j¿ i T : » i .
*•
i '
i
» i
W \\ ) J ' A A •
. I * •; ) , - A . - 1
• »; • A: - - ," i I » '
*
- Y’ \ U\> - A A ! !f l i ‘ J
de
La principal raz ón para que las personas aprendan lenguajes y técnicas
/;• programación es utilizar la computadora como una herramienta para
resolver problemas. La resoluci ón de un problema exige al menos los
siguientes pasos: ' ' '
' ,f
! :' - ' i • . '
'
, . i Oí l JO’I
- ' I: ,*
.
J
. Definición
.
^ 1
1 nnfmipí nn n análicic del nrnhlpma
o análisis HPI problema .A linTjPl
. Diseñ o del algoritmo.
i) .
5 .> . * l * >
0. •
'
;u .. >m;mu ‘ ! * ••
•
2
' < ‘ l ü ' fjif! 3. Transformaci ón del algoritmo en un programa.
m .«
» ; iMH
i
»
» , -.
J
.
-
\ •.
. * r J. ' i• * ri \» »
-
4. Ejecuci
•
L. j V ón y vu u v ó n del programa
y validaci VJ y / i \J i i 11\A / i \y i i \A I I KJ i ui i
. .. ¡• ,u.\ 11 . 1- : . . *
>
Scanned with CamScanner
H
2 Fundamentos de programación
í
ó un método para encontrar
griego ( del siglo iv antes de Cristo), que invent
*
AI-Khowarizmí
UJL : > el má ximo común divisor de dos números, seque trata de con
considera
los algoritmos ).
el otro gran padre de la algoritmia ( ciencia
El resto del cap ítulo trata de los datos y las operaciones elementales
Wirth inven-
T i
¿\ V :r ’ f necesarias para el diseñ o del algoritmo . El profesor Niklaus
v k
V
'
\\> « v ^
Entrada^ datos Procesador Salida=información
.^ iORi « x iir,m
n »r
Figura 1.1. Sistema de proceso de informació n .
Algoritmos y programas 3
Para realizar un proceso se le debe suministrar al procesador un algoritmo adecuado. Por ejem-
plo, al cocinero debe dársele una receta, al pianista la partitura y as sucesivamente, considerando al
í
cocinero y al pianista como procesadores.
Cuando el procesador es una computadora, el algoritmo ha de expresarse de una forma que reci-
be el nombre de programa. Un programa se escribe en un lenguaje de programación y a la actividad
de expresar un algoritmo en forma de programa se le denomina programación . Cada paso en el algo-
ritmo está expresado por medio de una instrucción en el programa. Por consiguiente, un programa
consta de una secuencia de instrucciones, cada una de las cuales especifica las operaciones que debe
realizar la computadora. . , 19; , . ¡¡;q
Existen dos conceptos importantes a considerar en los sistemas de procesamiento de la infor-
mación: hardware y software. Hardware es el conjunto de componentes f ísicos de una computadora
— —
(Figura 1.2) equipo físico y software es el conjunto de programas que controlan el funciona-
miento de una computadora equipo lógico .
El hardware de una computadora se compone de:
— . lyik o : —.< //]
-
1. La Unidad Central de Proceso, UCP ( Central Processing Unit, CPU ). La UCP es el conjunto
de circuitos electrónicos capaces de ejecutar algunos cálculos sencillos como suma o multi-
plicación de n ú meros. La potencia de una computadora depende completamente de la velo-
cidad y fiabilidad de la UCP. ¡ .. . . .
'
L .J
_
2. Memoria central . La informaci ón I procesada '
> 4J
t
por la . UCPv se almacena normalmente en la
1* * r i » i I K» y
\ < i v i '
memoria central hasta que se terminan los c álculos. Los programas de computadora se
k
U í U J >' i
í A’ Ji* O í fl
Oírlq
>
Memoria ; .
bsrnoibi I central *
. ‘J usíq bb nóbfnodfib ü ! ivuiq
yjti ±m n : . íV !
'
IVa :
> ¿ V Ü Cf ! / v í rod e! n;í
-
w
Dispositivos
i
‘'i • -
i
Almacenamiento i'WcÁ
• ; ' <
í }
• I f M ' .
f I : ( \
de ’ •
Unidad í. ; { >
entrada/salida * • *• *
secundario •
( periféricos ) proceso í / . M. . i
•v.’ vj ' i\ \ w. lis iil3- í '
•
ni Dh
n • » i X / : sl t V Vi '
íí nin u
ÍA n ' >
t
- Í1 l . 'ib <
i
{
.V M >1 \ 'b r- uitlbbt
lhi
i
t *
*
,1
’
>
4 Fundamentos de programación
.
/ %
I
i algoritmo
;i
computadora
J • : f ; : , : 7;i <
» /
_
. - -r - r\
*£ • ; y - !: i , .
i • •
1. Diseño del algoritmo que describe la secuencia ordenada de pasos sin ambigüedades que
conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo.)
( f '
— >
; "
. t
—
2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. ( Fase de
codificación. )
3. Ejecución y validación del programa por la computadora.
Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de
modo que sin algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan
como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un len-
guaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algorit -
mo será siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, una receta de un
plato de cocina se puede expresar en español , inglés o francés, pero cualquiera que sea el lenguaje,
los pasos para la elaboración del plato se realizarán sin importar el idioma del cocinero.
En la ciencia de la computación y en la programación, los algoritmos son más importantes que
los lenguajes de programación o las computadoras. Un lenguaje de programación es tan sólo un
medio para expresar un algoritmo y una computadora es sólo un procesador para ejecutarlo. Tanto el
lenguaje de programación como la computadora son los medios para obtener un fin: conseguir que
el algoritmo se ejecute y se efect úe el proceso correspondiente.
Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante
será el diseño de algoritmos. A la enseñanza y práctica de esta tarea se dedica gran parte de este libro.
El diseño de la mayor ía de los algoritmos requiere creatividad y conocimientos profundos de la
& > ro ramac r1,
algoritmo ^ ^ ^
esencia, la solución de un problema se puede expresar mediante un
IpRlCJ Á . Í * - 'DI1}
]
'
'
n*
N l. Inicio.. . ? :; L
^2.
- Leer el pedid o.- -
3. Examinar _ Xa f_icha _ delujcl.iente
.
x 4TTrT e 1 clien
•
Eiempl 1'2
° v ¡ Á « nAR '. - Í ACP .;
es primo o no.
r% - f*
*
•
\
v
9
”
‘ ». í
(
'
*J
iv‘« *' < ’’
'
• CfV s V
un número
Se desea diseñar un algoritmo para saber si \ j r,
ás divi-
-
v Y
al punto 3.
„
6 Fundamentos de programación * «» r
~ u. -n « i
í
’ ti %9 **
anteriores serían:
#
r
1. inicio. el proceso.'
continua
3
'
A: 131 / X. como el resultado
3 ,. .
nó
-
es entero ,
:
se
b o rr J
.
i
-
1
'
« '
o *
l
al punto \‘jV Úi
/
no es enter .
i >
3 y 4. 131 / X resultado r
'5. X <-
•
3 i 1 .X = 4 . al punto 3.
r í
.
: W *
•
'
•'*. jV!'
¿ v.
7. Fin.
*
vi
; i t .t J
•
í "
l j •'
: Oí , T »» ' i
¿í VI ' - *
Ejemplo 1.3 - ’
i, f i
1 i
; .' . i , í i 1
r r
Mr
2 y 1000 .
rsu.
números pares entre i* * ' J
^
«: i; i
4
- ib *
'
J ioq > o:
E1
PU,SersSiasepalab”
representar las sumas sucesivas 2 +
k y NUMERO ( variables serán denominadas
( 4 ), ( 2 4 6 ), (2 4 6 8), etc.
+ + + + +
más tarde) para
^
,
5 * 11 ) v)
.
. »con el siguiente
n se puede escribir
La.- vsoluci’ ówt ,
algoritmo: M V: . • .. • .
: KTm J • ** • i ' 1 4
' ’ i’ •
• ' '' ' '
I
1. Inicio.
2. Establecer SUMA a 0. »'/ £* • í
a 2.
r \y o íTÜ f’/ - - * '
3. Establecer NUMERO
4. Sumar NUMERO a SUMA. El resultado sera el
nuevo valor de la suma ( SUMA ).
5. Incrementar NUMERO en 2 unidades. ..
S. l nlqttm ) 3
1.3. LOS LENGUAJES DE.PROGRAMAC
W*
IÓN AS
'
' V > V \ \ .
‘
V '
:
' '
Como se ha visto en el apartado anterior, para que un procesador realice un proceso se le debe sumi -
nistrar en primer lugar un algoritmo adecuado. El procesador debe se capaz de interpretar el algo-
ritmo, lo que significa .i . , <•
i r ¡ , /¡ ., t í
1
vio í > ‘ . !
- . i < •
• lenguaje máquina ,
• lenguajes
lenguaje de bajo nivel ( ensamblador ),
• de alto nivel .
n i b i.!>! A' lW |
5
: Ki < f ) í \ r ; ‘1! '
1.3.1. Instrucciones a la computadora
t
.'J » ,V 'i \ ,• \ .
i ,
L o s diferentes pasos (acciones) de un algoritmo se expresan en los programas como instrucciones
sentencias o proposiciones ( normalmente el té rmino instrucción se suele referir a los lenguajes
m áquina y bajo nivel , reservando la sentencia o proposici ó n para los lenguajes de alto nivel ). Por
consiguiente, un programa consta de una secuencia de instrucciones, cada una de las cuales especi-
fica ciertas operaciones que debe ejecutar la computadora.
La elaboració n de un programa requerirá conocer el juego o repertorio de instrucciones del len -
guaje. Aunque en el Capítulo 3 se analizará n con m ás detalle las instrucciones, adelantaremos los
tipos fundamentales de instrucciones que una computadora es capaz de manipular y ejecutar. Las ins -
trucciones básicas iy \ comunes a casi todos los lenguajes de programación se pueden condensar en
. ' AJ
I
-
1
'
'
cuatro grupos:
Vi { :fj > fl v ; JIJIJ • )
- *
*
_ _
'
*
-M '* >
L
ipe
^ ,
; ¡ MU : ::
' jr ; í: j / ' j r> > i *j :
ví *
r
.
.' S\
¡ r:
H ’ tfVinV
1.3.2. Lenguajes maquina
.
B
:K > i
• ' .j i
' ¿ • •
]j v; » f
*
; %( \- ¿ y. / *; . * ' -
Los lenguajes máquina son aquellos que está n escritos en lenguajes directamente inteligibles por la
máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de carac-
— —
teres d ígitos 0 y 1 ) que especifican una operación, y las posiciones (direcció n ) de memoria
implicadas en la operació n se denominan instrucciones de máquina o código máquina. El código
maquina es el conocido código binano. ,
Las instrucciones en lenguaje m áquina dependen del hardware de la computadora y por tanto , ,
diferirán de una computadora a otra. El lenguaje m áquina de un PC (computadora personal) será
diferente de un sistema HP 9000 ( HP, Hewlett Packard ) o un sistema 6000 de IBM.
Las ventajas de programar en lenguaje m áquina son la posibilidad de cargar (transferir un
' Xi i ü o í t ' obviJfj OH lobiild *.v : !. f ' i jiU
..
, ; i
1
i / í iHl' - ' j
.
;
¡ ; . ’ !\ Mí jjj n ; .\ Ivb % 1 V J í V
I t t . í" ? oLi ; Uiq '
>
.
I
i j
Memoria e o »,
• jó ¿ /» 1
* I
- r '¡ ir ó
*
\ l éü i n j n n í fb ¿ ¡
u * b ^ nrsi ^ JIKUW í n • c » IHWSJ teman erni
t r j V M M i : *t
'
Direcci ón Contenido
• <* i 1(V j VTH r ' - fI *
v » ’ , i .
< •
•
S í . fn :1 L*
» • ' f !¡ ) ' > 1 *
i
*
Posiciones
0100
0101
0010
0100 u ^ ^ OOOO 1 ,
0000
'
0000 ;
0000 : : 0100 Lj
'
0101 1
... : «
• V n/
i • y- wÍMíí nniii ói^ iob ’
? ¿ i obcyui'iuo / '
/ *
\
i <\
'
i
.
him nn ¿ ihii'j * M í i rrt
-
u •
Ti > r ftí l !
’ if - */ L• ¡ MU } . fTf i : /ti U u ,V.\ i l : f u , f , / < f ¡
’ ; i " 'i ; . , '
>nj y. ) \
Figura 1.4. Instrucciones en lenguaje má quina . ' -J Í MiU Ü r > ;, l
t
—
lo que hace pr ácticamente no
lllJpM i
IO i ' ¡V .
dificultad y lentitud en la codificación ,
poca fiabilidad ,
dificultad grande de verificar y poner a punto los
en el
programas
procesador
.. L
(UCP, Unidad Centml de Pro
Prn . . . -
los programas só lo son ejecutables mismo
¡ i uu
ceso ). i ?: r v
r f |ó ; .
' ,r O j \
. I 11
:
. ‘
' l '
-
1
‘ •
Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero, al igual que
ellos, dependen de la m áquina en particular. El lenguaje de bajo nivel por excelencia es el ensam-
blador ( assembly language ). Las instrucciones en lenguaje ensamblador son instrucciones conocidas
como nemotécnicos (mnemonics). Por ejemplo, nemotécnicos típicos de operaciones aritméticas son:
en ingles, ADD, SUB, DIV, etc.; en espa ñol, SUM, RES, DIV, etc.
* *“ '
•
. i . ;
Esta instrucción podría significar «sumar el número contenido en la posición de memoria M al
:
. niiwq
UU JQ - *-
*
\ *;
número almacenado en la posición de memoria N y situar el resultado en la posición de memoria
P». Evidentemente, es mucho más sencillo recordar la instrucción anterior con un nemotécnico que
su equivalente en código máquina: ,
: n 5 J T>i .: •i l :
• i
0110
. , : •
1001
-.
• 1010
.v ‘» - " 1011
w- . o r ru . : cuJ
’ v
'
"r
*
ó
* »
n
;
2 w ;i
; . . ; \V / ¿
Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la com-
putadora — en esto se diferencia esencialmente del lenguaje máquina — , sino que requiere una
fase de traducción al lenguaje m áquina.
El programa original escrito en lenguaje ensamblador se denomina programa fuente y el pro-
grama traducido en lenguaje máquina se conoce como programa objeto, ya directamente inteligible
por la computadora.
El traductor de programas fuente a objeto es un programa llamado ensamblador ( assembler ) ,
existente en casi todas las computadoras (Figura 1.5 ). , M- .
—
No se debe confundir aunque en espa ñ ol adoptan el mismo nombre el programa ensam
blador ( assembler ) , encargado de efectuar la traducció n del programa fuente escrito a lenguaje
— -
m áquina, con el lenguaje ensamblador ( assembly language ) , lenguaje de programación con una
estructura y gram á tica definidas. , ,
Los lenguajes ensambladores presentan la ventaja frente a los lenguajes m áquina de su mayor
facilidad de codificaci ón y, en general, su velocidad de cálculo. / . : ¡5 . i
v^
Programa Programa
Programa objeto en
fuente en
ensamblador
ENSAMBLADOR
( assembler )
c ó digo ¡ \ .i
( assembly ) . mi á quina; ,
i : ' v* ‘ * ' i > * * í
Hoy día los lenguajes ensambladores tienen sus aplicaciones muy reducidas en la programación
de aplicaciones y se centran en aplicaciones de tiempo real, control de procesos y de dispositivos
electrónicos, etc.
las personas escriban y entiendan los programas de un modo mucho más f ácil que los lenguajes
m áquina y ensambladores. Otra razón es que un programa escrito en un lenguaje de alto nivel es
independiente de la máquina; esto es, las instrucciones del programa de la computadora no dependen
del diseño del hardware o de una computadora en particular. En consecuencia, los programas escri-
tos en lenguajes de alto nivel son portables o transportables , lo que significa la posibilidad de poder
ser ejecutados con poca o ninguna modificaci ó n en diferentes tipos de computadoras; al contrario
que los programas en lenguaje m áquina o ensamblador, que sólo se pueden ejecutar en un determi-
nado tipo de computadora. nbc - : . . : r' : : i j p lOi jub.' /: ¡: i ; v : >
i 1 ' 5
- i sint
» « ql
1 J > ’ in . imms
'
í njJ nu. ,ií lbiHc íri
ácticas similares a los lenguajes humanos.
2 us iel jnn
• La esentura ^
de programas se basa en reglas
Nombres de las instrucciones, tales como READ, WRITE, PRINT, OPEN, etc.
• Las modificaciones y puestas a punto de los programas son m ás f áciles.
• Reducci ó n del coste de los programas.
Transportabilidad. -* »
• fuente
Incremento del tiempo de puesta a punto, al necesitarse diferentes traducciones del programa
para conseguir el programa definitivo.
• guajes
No aprovechan los recursos internos de la máquina, que se explotan mucho mejor en len-
se
m áquina y ensambladores.
• Aumento de la ocupación de memoria.
• El tiempo de ejecución de los programas es mucho mayor.
y .
Clipper Ada Modula-2 Prolog LISP Smalltalk
y comienzan a difundirse:
J, t < )
. fl / oíí ' i - uW. viq - f * !•>!' ’ ’
. .. » ,\ f • .¡ f ? j y. - y , t ; i
’ ‘ f+ I 1 1 ) 1 )r i U
. '
’
' { •
1
•
•
1
*' •
' *! *
J ,‘
w
*
1
,
:
'
f r
‘ «
_
f l í )Y J í i f í • U / i
*
.
t
* *
-oiním:¿lo
1.3.5. Traductores de lenguaje
fnvm f ’ tfc íí * : ? r .L . C T .
Los traductores de lenguaje son programas que traducen a su vez los programas fuente escritos en
lenguajes de alto nivel a código máquina.
Los traductores se dividen enY:u i
-
,, V
-
,
,
j
i
.
+ i
.
.
'
' <
-. .
) . . 'j ' '
j•-
. : "
unv
'
ic i • .
interpretes. , ,
ü! o n p o l .cVikniVMwy .K i y u o W W W H íT üO¿ t a v i f l o l .. rOJ
,
1.3.5.1. Interpretes
* o c * ,
. i , ; , ).r¡Qidl ¡ fi ' ji
i > j tt ’ ití ' Alibfif í t fiuu ¿? nin o « oan « n> ot
.
'
.
' i • •
.
, "
l > f l í IK * f ’.urpDtiT o
Intérprete ¡ i . ' • •
: • \\K\j i WyjíMl ?.i ) J
y -
r
’ • ílqju?
‘ Traducción y ejecución c I
i
\
i ( *1 í v • •
l í nea a línea i » ,|f \ i
I i
/
( .A , . ,
is * IV
. * r' íí lfturi - * . •
i> r ! -r . v pro; ; ~ r> n i -
Programa fuente
-
i eti 'ay'. n "
íU • b ' AJ Oí'. ís'XJifj !3
v
: ••
-
¡ r ¡o > ; ; r f j .
vi¡> n : ¿ í . ^ T i ) . i *’
, i¡:
« •-
.. ,
rr «
1 ' i ' ¡1
i i -
! * '• *
» ') * >
( i'
WnHyuV '
i * >*if ? * í,orn jb
;
•
vsurtW
*
i !
Compilador * •* i
; ) jf . ji rmvim:; * - - -' U
sb
wl
. : .1 ¿
* h ?! T. IM Í ;' ) \
1
Xit! •
! . ... i : ' / cmugmq b 8)1139( 9.92 •
'
1.3.5.2. Compiladores
obcivcm -b nófotmp sb o¿930iq Í3
Un compilador es un programa que traduce los programas fuente escritos en lenguajes de alto
nivel — Pascal , FORTRAN, .. . a lenguaje máquina. —
Los programas escritos en lenguajes de alto nivel se llaman programas fuente y el programa tra-
ducido programa objeto o código objeto . El compilador traduce — sentencia a sentencia— el pro-
grama fuente . - , ,7
Los lenguajes compiladores típicos son: C, C++ , PASCAL, FORTRAN, COBOL.
t
' t. A:
- . i ; •: ;•
*
~
Programa fuente
J
-
?
í 1
i
<' e! r Compilador
itr (traductor ) : • n des i ;
en
< A . . »
_ :r
Programa objeto
O i4 ! *
r
crr t : 11 . -v
c1 Montador
L
^-
i i •%
1
»Í S oictM *
r
i * > í ¡ l
r Programa ejecutable
; en lenguaje rnáquina
j ÍU
El proceso de ejecución de un programa Pascal, por ejemplo, tiene los siguientes pasos:
1. Escritura del programa fuente con un editor (programa que permite a una computadora
actuar de modo similar a una máquina de escribir electrónica) y guardarlo en un dispositivo
de almacenamiento (por ejemplo, un disco).
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador Pascal.
4. Verificar y corregir errores de compilación (listado de errores).
5. Obtención del programa objeto.
6. El montador obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendrá la salida del programa.
zsiofosliqmoO S.S.E. r
El proceso de ejecución ser ía el mostrado en las Figuras 1.9 1.10.
y
Jh , ff ¡ . ,- • ' :{ ; ] j ;( .
/ i fl / V‘í ' , (W
*
j« .'A s O » V \V - »
? •
‘ *
* * * , .
‘ ’ •
,V f /! . I — bviif •
Programa 1i
- i, : , ri •' r » Vu n \
“' / in > ’ » fi .- o:? :
V \
I
« j
I ‘ i
J i . \ rj¿ - 3 tf /l ñ H 70 ÍJ
1 , « OVJWM ,- VIT í ^ WVH* obioub A '
i
'
i
'
*
r
Resultados r. ; r,J c, , <
< •
T - r programa , u: u. n • <
, . fuente • 02 K Oiq \ V. v . n -
fuente ¡
. Ir’ . nu . rI )
r~ Compilador
i
»* nt ,
* .« * : ómñ i ü * j
1
i
SI , ^ Existen ^
i
errores en la
compilaci ón
^
y ,
f ~ ‘ •*
no
1»
O * 0|/1 O S f í U »> r I
! Programa
y
¡
Montador Programa
ejecutable
. ) , * r. , ^•
-
. » 1 » nv: * TI
*
>C t
Ejecuci ó n
—
Existen algunos lenguajes de programación FORTRAN esencialmente que admiten otros
tipos de datos; complejos, que permiten tratar los n ú meros complejos, y otros lenguajes Pascal
— — —
que también permiten declarar y definir sus propios tipos de datos: enumerados ( enumerated ) y
subrango ( subrange ).
) i é ti j ta’ rt ó’ i’ > i'> ; . rihmt :
'
; ' ’
.
• •
. . .
. i r. •
v •
•
5 6
- • -15
20
4
17
1340 26
*
Los enteros se denominan en ocasiones números de punto o coma fija. Los números enteros
•
máximos y mínimos de una computadora2 suelen ser — 32768 a +32767 . Los nú meros enteros —
fuera de este rango no se suelen representar como enteros , sino como reales , aunque existen excep-
ciones (enteros largos: FORTRAN, Quick/QBasic, C, C++ , etc . ) .
,. . » V
I ! . ’ - V .' . •
•'
• •
Reales: El tipo real consiste en un subconjun to de los n úmeros reales . Los n ú meros reales
siempre tienen un punto decimal y pueden ser positivos o negativos. Un nú mero real consta de un
entero y una parte decimal . r ! tb
Los siguientes ejemplos son números reales: s ¡ ¡ b i n ‘ j y. r:
0.08 3739.41
*
'i !f * . A.-
j
f'
' 'i
. -T
l. ' íJ 3
3.7452 i • i )
-5 2 . 3 2 1 • •/. f í OOVOJCf l 'j r! 1 '
-8 . 1 2
l
3.0
J J
• n »
; .
trr í .¡ • • i ñ .*? h ! J omoo
-'ol > r'i J
-
En aplicaciones científicas se requiere una representación especial para manejar números muy
grandes , como la masa de la Tierra, o muy pequeños , como la masa de un electrón. Una computa-
dora sólo puede representar un número fijo de dígitos. Este número puede variar de una máquina a
otra, siendo ocho dígitos un número típico. Este l ímite provocará problemas para representar y alma-
cenar números muy grandes o muy pequeños como son los ya citados o los siguientes: « .d »
<
Existe un tipo de representación denominado notación exponencial o cient ífica y que se utiliza
para números muy grandes o muy pequeños. Así,
' •í vtniij
367520100000000000000
o mndir »
y posteriormente en forma de potencias de 10:
•
^ .
or. rt r ? un ^Oí BG . l’ Af
. 3 . 6 7 5 2 0 1 x 1020
•Cr*
^
y de modo similar: ti •
- t- • *> "*! -, t > o < m: !• , o '. i
vurntrii )
. 0000000000302579
I vi',1 t \ í u i •• ( »'«» nvf í iij : nqi ) *
se representa como á \WS \ \ \ V í ) oji ; . ! í i ? in - j . ii ;
3.02579 x 10 u ‘
que
La representaci ón en coma flotante es una generalizaci ón de notación cient ífica. Obsérvese
las siguientes expresiones son equivalentes: fTi > / j ¿ í . VjfTi ñ u ¿-i
K. ..
i rife ¿ i > :
#
:
, íí¡ i •
- •
El tino tó6xico — también denominado booleano— es aquel dato que solo puede tomar uno
de dos
valores:
i
c
i t
Este tipo de datos se utiliza para representar las alternativas ( sí/no ) a determinadas condiciones.
Por ejemplo, cuando se pide si un valor entero es par, la respuesta será verdadera o falsa, según sea
par o impar.
. V *
_ -I ... £ £ * C . -
. oí qmspj wq . - - -J .
. í o oi í
El tipo carácter es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato
óq ó oitn
^
'
r
tipo carácter contiene un solo carácter.
Los caracteres que reconocen las diferentes computadoras no son estándar; sin embargo, la
mayoría reconoce los siguientes caracteres alfabéticos y numéricos;
boilnSD eobimraft
• caracteres alfabéticos ( A , B , C , Z ) ( a , b, c , z), ^
• caracteres numéricos ( 1 , 2 , 9, 0),
• caracteres especiales *,
sfitiG Tnuij i 1 1 non
i '
£ ~> í JWJOBIVQ . o
i * t ii
, :ui
en«
•
-
iqS .«oioUíóqBsiína EÍiirmona &nabfi3 finiJ 29
Una cadena (string ) de caracteres es una sucesi ón de caracteres que se encuentran delimitados
por una comilla (apóstrofo) o dobles comillas , según el tipo de lenguaje de programación . La lon-
gitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o
limitadores. Algunos lenguajes tienen datos tipo cadena . ,
- .> n ? aJ - , . . ¿o!sboau
^
qK ni) • .
w ótait .
óóqfinu far stiunne /duVI .¡uíbilfav i;oob
"
- ;• rsk fiteaoo no?
61 ’ ^ '
Datos
r
\U * : • '
> \ * \% 0
Lógico
i ¡i
*
w - i * >> 1 }r
r,
,? v *vyi - D ¿" H ¡ ti ? uir .
'
‘‘
' '
*
Entero
i
Real '
! - i
' '¡ t > A
3 . 3 7 4 5 6 2 E2 equivale a 3 . 3 7 4 5 6 2 x 102
. * •
* sv
Una constante tipo carácter o constante de caracteres consiste en un carácter válido encerrado
dentro de apóstrofos; por ejemplo,
t " |ff « f ! ip i 9M : : > ;
T
. *
'
.B• + • • 4 • 1
Si se desea incluir el apóstrofo en la cadena, entonces debe aparecer como un par de apóstrofos,
encerrados dentro de simples comillas.
11 ti
/
\ - i %
¿S ) i \
i
/
Una secuencia de caracteres se denomina normalmente una cadena y una constante tipo cadena
es una cadena encerrada entre apóstrofos. Por consiguiente,
.r
^C Í j í fTIOO
.•i i
•Juan Minguez ' /
n U 3í¿¿ ü O (( «
« el !ir :
-
'
son constantes de cadena válidas. Nuevamente, si un apóstrofo es uno de los caracteres en una cons -
tante de cadena, debe aparecer como un par de apóstrofos;
Juan ” s '
! •. - r.r
/ 1 i
Variables i»' i
Una variable es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algo-
ritmo o ejecuci ón del programa.
Dependiendo del lenguaje , hay diferentes tipos de variables, tales como enteras , reales , carác-
ter, ló gicas y de cadena .
Una variable que es de un cierto tipo puede tomar únicamente valores de ese tipo. Una variable
de carácter, por ejemplo, puede tomar como valor sólo caracteres , mientras que una variable entera
puede tomar sólo valores enteros.
Si se intenta asignar un valor de un tipo a una variable de otro tipo se producirá un error de tipo .
Una variable se identifica por los siguientes atributos: nombre que lo asigna y tipo que describe
el uso de la variable.
Los nombres de las variables , a veces conocidos como identificadores , suelen constar de varios
caracteres alfanuméricos, de los cuales el primero normalmente es una letra. No se deben utilizar
— aunque lo permita el lenguaje, caso de FORTRAN como nombres de identificadores palabras —
reservadas del lenguaje de programación . . r . •r
. - • • •
v » • *•
- mdI I
•"
'•# I
NOBRE APELLIDOS3
1 . .
>1 > ^
Los nombres de las variables elegidas para el algoritmo o el programa deben ser significativos y
tener relación con el objeto que representan, como pueden ser los casos siguientes:
—
Existen lenguajes — Pascal en los que es posible darles nombre a determinadas constantes típi -
cas utilizadas en cálculos matemáticos, financieros, etc. Por ejemplo, las constantes n = 3.141592...
y e = 2.7482818 (base de los logaritmos naturales ) se les pueden dar los _nombres PI y E.
« K >; : U : -J !urv\ H .V Ah
- '
PI = 3.141592
E = 2.718282
‘
.vTi tn v £> 3 r.a /^,>1 i )H } 1 ;|ñ at ;
. ¿ .
•
. . . ••
sb 7. ' ;.> !
J
a + (b + 3) + Vc
. :
+6 + (6 - 5) + ve
‘
' *
* r V -v '
f
— '
‘ *
* < • '* í
• j
' *
t
•U .' - i
*
nA u i •
11 • •/
' «
;uu 7 U* i • \,
Aqu í los paré ntesis indican el orden de cálculo y V representa la función raíz cuadrada.
Cada expresión toma un valor que se determina tomando los valores de las variables y constantes
implicadas y la ejecuci ón de las operaciones indicadas.
Una expresión consta de operandos y operadores. Seg ú n sea el tipo de objetos que manipulan,
las expresiones se clasifican en :
aritméticas, i í ir * • . I rr '
J ) Su
lógicas, 11 •» í i' n¡ ', . y >
carácter. /
»
* i í n j' í r ¡ ‘J rji . : u / j, n i u * wjil < n > •f - *
»
/
-
A , <
'/ . ni f ‘ . » «; , *
;/ » J
f ;’ rA ¡\ j í UU .
1.6.1. Expresiones aritméticas .
i l í / / i í!:/'
i .i • .
'
» ./ • ]
H ; . 3 idíTK / ‘ f U j / ?‘ :
Las expresiones aritméticas son análogas a las fó
rmulas matemáticas. Las variables y constantes son
numéricas (real o entera) y las operaciones son las
aritméticas.
+ suma
u
- l « YA > t rj . • • •
-
. ; ü í 'j
resta
¿a> í y: i. *
? í; > .
*
< / % <*1 ?
/
.í
j
divisi ón
\ ,
¿exponenciación
A
/ r
l » •
- ;
. < r. '
: m
"( i ,
1
• •
'
Los símbolos + , *, * *, A ( r o * *) y las palabras clave div y Imod se conoc rá>;. >. :! l (J
i '
;
en como opera-
,
dores aritméticos. En la expresión
5 + 3
mismo tipo si los operandos lo son datos reales y enteros suelen dar normalmente resultados del
un real ( véase Tahla 1 n tambi é n. Por ejemplo, el producto de operandos
reales produce
- U
»
A
y Exponenciación Entero o real r Entero o real
Supla Entero o real Entero o real
vi
Resta Entero o real Entero o real
V iJ (
•i
v
Ejemplos:
5 x 7 se representa por
6 representa por
5 * 7
6/4
1>: í/t JOlr; db MllnoF .f.f.a . r
j
3
;
se representa por rm ?obnfiisq > / ijfn o wb ns reiJ *
uj tonoi ?? <fxs zsJ
3 A 7 ,
n< v v ; j
.
v . . i > i v \ ' ' . - . t ' ’ * • *. ' \ > li ¿liljrsn nnnmionst # t* - *
,
/M sb ns *
T »
u
• ?
—
•
*
i ti $ . i ‘ /
El• sí>mbolo /* se utiliza
*
i i•
i ' i
^
para la divisi•ón real y el operador div
. i < t / <
a • •i *
en algunos lenguajes , por ejemplo
* *
BASIC, se
) , suele utilizar
A div B
i \ ,:
el símbolo \ ; * representa
' .| -j . t la .divisi
w
ón entera
.. - r” —
-.. * I * : i
-
,
: hsbnon ;¡
. ..
- tii . • í • t -
4
I ' f ?‘J!
Sólo se puede utilizar si A y B son expresiones enteras . - Lllla parte enteraT de
y obtiene
* : t *
|
A / B. Por con-
siguiente, ,
i
° bom x vxb -co iobcwjo © #
'
r+
¿ttobmaqu
1 9 div 6 *
3 2 cociente 2. r olqmai3
I
resto * * . \
w > \ <\/ t Aútw.yu í V>\ ‘A * uW\ « >v . . . . Y , . » Vu 0 \
'
? \
* £ Í V>
—
1 5 div 6 = 2 1 5 mod 6 = 3 .- .y «
1 9 div 3 equivale a 6 i
1 9 mod 6 equivale a 1
;
Ejemplo 1.4
Los siguientes ejemplos muestran resultados de expresiones aritméticas:
30 / 30 1.0 10 mod 3 , 1
•» .
V! 1
0 "M /
6/8 0.75 10 mod 2 0
Las expresiones que tienen dos o más operandos requieren unas reglas matemáticas que permitan
determinar el orden de las operaciones, se denominan reglas de prioridad o precedencia y son:
1. Las operaciones que está n encerradas entre paré ntesis se eval ú an primero. Si existen dife -
rentes paréntesis anidados (interiores unos a otros), las expresiones más internas se eval ú an
OK primero.
* : ' r '
. - .
2. Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de
prioridad:
• operadores *, / , \ , .
í noiiisir»
• operadores div y mod,
• operadores + , -. Jj
a) 3 + 6 * 14 ¿>) 8 + 7 * 3 + 4 6 *
• wnscjoiii
’ ¿siobt ? rro si sttw . • \
a) 3 + 6 * 14 b) 8 + 7 * 3 + 4 * 6
i > vit
3 + 84 8 + 21 24
87 29 + 24
: ¡v •
^- j - IMK "
i \
53 *
i .
-4 * 7 + 2 A
3 / 4 - 5
1. -4 * 7 + 8 / 4 - 5
2 . -2 8 + 8 / 4 - 5
'*
>
*
3. -2 8 + 2 - 5
4 . -2 6 - 5
-3 1
fi Q h
( ¿Wí DtfO í jd ) Siidlpcl ¿ 3« » r V •t
Ejemplo 1.7
I <J 7 n' f
ítmicas las siguientes expresiones algebraicas:
Convertir en expresiones aritméticas algor
-ChfiV5 ( x + y )
'
i '
'
1
'
C~ ÍF R -V e'f l)
,
-
f :
1 '
'
uwj . : ü ú\ . l ! ;• •• • "
oDifié Jnd < 3 tl í¡íTi5> nfn » v
• • •
- • *'
b a2 + b2 o ^ ÍL V \)
' ‘
•
*
. oleofl
'
> » njo ?fioig6l obniinidmoo tuumoi 3
?>.
w+
^——vv ri \ I .pG ' « 1
'
. f — ^ r
ÓV
. '
- Ti
— — - -
óicfibrcb eslob
nnWtfKIIVI sqO
«< » «» í * | • \ 3. f
.f A tfg # #
*
1
l r% W *» MtW <
fv w) - '
r,
-
.
:v . ' j i j . /sdbp:. ! u
'
b v r .; .-. : í e-’ tv j -i
o ' Vjr
*i u\ • t .
- v. q i í iv
Los resultados serán: . i iddíí j . r. npn'> .v . rx . b: . ,. J
^^
'
w 3'yi
• • i; : - / : {< » . . •
. 1|3 • * .. . ’
.
5 * (x + y) V
V.
s \
a A 2 + b A 2 .
V
( x + y ) / ( u + w /a ) •
KOIDAJS íI sa ftoaAnsrao . ( 4 J 4 v • i iX 3 - l
x / y * ( z + w)
A * (B + 3) la constante 3 s e suma primero al valor de B, despué s este resultado se multiplica por el valor
de A.
( A * B) + 3 A y B se multiplican primero y a continuación se suma 3 .
A + (B + C) + D esta expresión equivale aA + B + C + D.
( A + B/C ) + D equivale a A + B / C + D. i , ,
A * B/C * D equivale a { { A * B ) / C ) * D y no a ( A * B ) / ( C * D ) . vil . 1 Vs.
uU u :
Ejemplo 1.9
Evaluar la expresión 12 + 3 * 7 + 5 * 4.
12 + 21 + __
5 * 4
20
12 + 21 + 20 = 53
Un segundo tipo de expresiones es la expresión lógica o booleana , cuyo valor es siempre verdadero
o falso. Recuerde que existen dos constantes lógicas, verdad ( true ) y falso ( false ) y que las varia-
bles lógicas pueden tomar sólo estos dos valores. En esencia, una expresión lógica es una expresión
que sólo puede tomar estos dos valores, verdad y falso. Se denominan también expresiones boo-
leanas en honor del matemá tico britá nico George Boole, que desarrollo el Álgebra lógica de
Boole.
Las expresiones lógicas se forman combinando constantes lógicas, variables l ógicas
y otras
expresiones lógicas, utilizando los operadores lógicos not , and y or , y los
operadores relaciónales
(de relación o comparación) = , < , >, < , > ,
= = < >. *
Vi
1.6.2.1. Operádores de relación
Los operadores relaciónales o de relación permiten t.
realizar comparaciones de valores de tipo
numérico o carácter. Los operadores de relación
sirven para expresar las condiciones en los algo
ritmos. -
Los operadores de relación se recogen en la ni. >
El formato general para las comparaciones
Tabla 1.2. du ¿'ji «>.I r
es
i0 1
expr é sionl
OPERADOR DE RELACION expr é sion 2
I
A
- n* V
>
mayor que
V >' " <r" \ 1 • , *
<=
« C
llWU t
-
igual que
menor
'• M
o igual que
• i . SW. r
*
,¿
c 1
• Al
# •
>=
mayor o igual que
O í:. r clqrnsiB
distinto de
4
v ' ‘'.\ iu\ vy:7i
„ t-
A > B es verdad
mientras que i ;
knomH / vio V,
/ \
i ¡IíAII íí II *. l > n 1
, V T
\’ . . -- ¿ •
\ ' T L ÍU í .l OUp 1 'jtfiLnorjriT !
(A - 2) < , (B - 4) es falso
tf f f Uíií r j J l 'j / i r, i *
. : *. ! JjO - ÍV ' J fi ’•
. , s J
Los operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de datos estándar:
:, r . ¡ 4 ,. , . , ,j
I . J r f; f
. , •) T *
* *
> * * ' ‘ f*.
i 1i * ! ;
* J' .
- -
•‘ J
:»(
. i . . , ; TA í I í . -J I !» ' í :•
¡
= . / v n.i
:
i"
*‘i Uv .nv »
’
NI
3
N2
6
-
Expresi ón lógica
3 < 6
— Resultado
verdadero
; (:
- \\ .
i
) \
V •
4?
.
. . 1
*7fl
Para realizar comparaciones de datos tipo car ácter, se requiere una secuencia de ordenación de
los caracteres, similar al orden creciente o decreciente. Esta ordenación suele ser alfabética, tanto
mayúsculas como min úsculas, y numérica, considerá ndolas de modo independiente. Pero si se con-
sideran caracteres mixtos, se debe recurrir a un código normalizado como es el ASCII { véase
Apéndice A). Aunque no todas las computadoras siguen el código normalizado en su juego com-
pleto de caracteres, sí son prácticamente está ndar los códigos de los caracteres alfanum éricos más
usuales.
Estos códigos normalizados son:
letras may úsculas A a Z siguen el orden alfabético ( ' A ’ < B , ’ C ’ < ' F , etc.).
• SiLasexisten 1 1 1
• etcétera). letras minúsculas , éstas siguen el mismo criterio alfabético ( ' a ' < ' b ' , ' c ' < ' h '
. >?
, „ .. .. . 77
En general, los cuatro grupos anteriores están situados en el código ASCII en orden creciente.
Así, ' 1 ' < A y ' B ' < ' C ' . Sin embargo, para tener completa seguridad será preciso consultar el
1 1
a no a
Oii * i'i • • t
:
. : . Lv . • • i i. - i . ví; o nouio !*; I;:!í VP ?ci
a b a y b .. .
i J ) i f. : •
- (tt . - -
s i i j j : ir * , ü *jiTjrni ; n ; *: » :.
•
u u ;-- *
falso
. . okuzu
a b a o b ii i - r ( í bf : \ iii¿íín < ' ii . Oviifu
' , oj? 3
- L verdad
verdad
verdad i
falso
. verdad
verdad
a o b• sonn verdad
e t
•
¿919 . rtBO ÉOJ •
cuando a , b o ambas
falso verdad verdad son verdad
'
falso falso i
falso r. /• j j Mi \J C'J.VS)U v ?o. }
4
o
i.
J , .
.t * . I
Tabla 1.3. Operadores lógicos
Vl ’> i’ 1
1 * *
» HJjfiiftinr , \ hl o
' * v » j.; i ,
•
r Operador lógico Expresión lógica Significado
I
no ( not ) no p ( not p ) negación dep • ' ! r
'• < ’
, , y ( and ) p y q ( p and q ) conjunción de p y g ,v
,i -A
r
•
V
II y ( 5 < 10
K
( 5 > 10 ) o ( ' A ' <
>
' B' )
es verdad
e s v e r d a d , ya que ' A ' < ' B' ’
rr ¡ oiqmojS
Ejemplo 1.10
La Tabla 1.4 resume una serie de aplicaciones de expresiones lógicas.
t
l t>
j )
verdad
. , • •
r
!• n i o >i
_
J
!*
!; 1 e r i
. *
i
i'U Ziitl ^ -r - - . - ,f , , , T i , j ,» r p r
'
PRUEBA es un valor lógico falso
i
no PRUEBA verdad
(0 < 5) o ( 0 > 5) verdad
' irT
(5 <= 7 ) y ( 2 > 4 ) falso *
no ( 5 <> 5 ) . , verdad
. '• í , i ‘4 *
H *. • •* ^ * .‘‘.» * 1 * rM * -• 4.
Operador aly ’
.A
•* < Prioridad
.
no ( not )
y' 1 iJ
más al ta (primera operación ejecutada)
/ , * , div, mod, y ( and ) í ‘>r/ ! r * • i . ( .
r t .n *: • « ;!n 3 n ;.20 i ( X ) JXl .
o ( or )
!1 :: ooistiro Y ;! ernbsbonuh
• ó to! (x) OItioI
más baja (ú ltima operaci ón ejecutada)
<, >, =, < = , > = , o
) -
Tabla 1.6. Prioridad de operadores lenguaje BASIC
(
¡* Operador i v oí - ¡
Prioridad • t j' .
..
'
.
. .
’
*
• !
A <_ i |O Ol í .
más baja U ú xr .
.-
.
"* •
* /
div ( \ ) \x) r uvx
ü:
rr j ‘1 o l , i.l i1f IL U • * > !» *
mod U . v , •• t
+, -
<, >, =, o, < = > = . I
i vi y .( » ;- >?:. ? »* * «
*
t
J• i
no ( not )
y { and ) 4
más alta VJl 'iitl «
, < *
o ( or )
Ejemplo 1.11
no 4 > 6 produce un error, ya que el operador no se aplica
a4 OU olqrn^' 3
no ( 4 > 14 ) produce un valor verdadero • I\ ‘ * V>
'
'
i' ¡\ » 1 >‘ *
V •'
(1.0 < x) y (x < z + 7.0) si x vale 7 y zvale 4 , se obtiene un valor verdadero
a^ O - wO r qxt> - 6l '
)I M . i íXjO < o ;
1.7. FUNCIONES INTERNAS in :;
-
j
i MI
fob ; ! I *
i
*
9
- t • M J -i
' >¡ n j
Las operaciones que se requieren en los programas exigen en numerosas ocasiones, adem
ás de las
operaciones de las operaciones aritméticas básicas, ya tratadas, un n ú mero determinado de opera-
dores especiales que se denominan funciones internas , incorporadas o está ndar. Por ejemplo, la fun-
ción ln se puede utilizar para determinar el logaritmo neperiano de un n ú mero y la función raiz 2
( sqrt ) calcula la raíz cuadrada de un nú mero positivo. Existen otras funciones que se utilizan para
determinar las funciones trigonométricas.
La Tabla 1.7 recoge las funciones internas más usuales, siendo x el argumento de la función.
.
!./ : [ ) fj / >
i
uS
f
loglO(x)
. ¡m . logaritmo decimal de x entero o real real
w .
t * p n ó iafiTjn » > r< itlKA
redondeo(x) redondeo de x .= ,< ,
(round ( x ) ) *
real — entero
:
^noi ) aoiobmaqo ob bfirih
^ riS o r eldoT
• 1
. ,
sen(x) seno de x
( sin (x) ) * .Y - entero o real real
cuadrado(x) cuadrado de x
(sqr (x ) ) *
entero o real igual que argumento
•«
raiz2(x) raíz cuadrada de x Y
entero o real real c - cvn
ísgrt ( x ) ) *
trunc(x) truncamiento de x -
real entero sr ;
t »
* Terminolog ía en inglés. . v i M
« • t o
Las funciones aceptan argumentos reales o enteros y sus resultados dependen de la tarea que realice
la Junción:
Expresión Resultado j « ?
h - jft F. )
i
raiz 2 ( 2• 5 ) • .....
ti.»
5
l » . . - i»
'* *
redondeo ( 6 . 6 )
i , » jl : ij , < , / ,
• * ‘ ? ; 1 ! i >1|
„ / *
i .
*
fr
7 . i jh r . > 1 • •
,
redondeo ( 3 . 1 ) 3
redondeo ( -3 . 2 ) -3
truno ( 5 . 6 ) i tuv feobsn iafifiri »132 A afdfihfi'/ « IB st/psoilin*'»
truno ( 3 . 1 ) i . b sup 3 .
. .
truno
cuadrado ( 4 )
. . ;
16 . 1 * ;
^ . * ’ '
-
•
abs ( 9 )
abs ( - 1 2 )
9 Aí I
12
r
4
— >
.
O 'J r ud i-U v Al "> • . s- tA ) 7t hix A srnol 3up omiJ Íü WIJí V h
: / itcumo v. í »u ?:> obm uo
Ejemplo 1.13 tobo
Utilizar las, junciones internas para obtener la solución de lá.ecuación cuadrá.tica ax2 + bx + c> =- '0. í-
|
;j I V i: ' - . • 1.
. i • i J
"
• •
— ^
mjs x tolev al» ,oücq obm/g*; b n3.00
^
.oli ítKtnonsms einoi or ; p toil:/ b obriv / usi ía / .-’ .ó
r ben» bs íó lobcisq . » hb - -
x=
-b +
^ b
2a
2
Aac
> \
o lo que es igual:
rr
xl =
-b ± ~Jb 2
.
- Aac
-Ty>r¡ '/ \ -
j.
v
x2 =
-Hub.
-
. ¡ v. rnauti Sí £ + Y nó iasiqxs 1J si» TOIIí V is
b ± yb 2 - Aac
2a
/ !
brns nsbWí b " sidmon ooreim la íUí HIJU oldi c 7
Oín -. i . A >!'-) >
\
< *! v
- .»
r
la
Las expresiones se escriben comox
b , rscrjnimn'j 1 r Mi »n aism -4 slda/ if*í c «fab/ íaulsfi
'
í / lolcv btmiimslsl »
2 Y* ) IfXBV B TI ¿m ‘ ¡ K
Sí ;oUiJns^ nsnsn
obfill ü
xl = (-b + ralz2 (cuadrado(b) - (
) ) ja Í Í ’
* . :
x2 = -
( b - raiz2 (cuadrado(b) - »
4 * a c)) / (2 * a)
sob SKIXS sb oq íi la x n ügs . nsoiliatb x nórscn|t o ab «snoo
ó i j
es negativo se producirá un error, ya que la raíz cuadrada de un n ú mero negativo no está definida.
c
r\
, 'i ru y
i n i ¿'- jianiv 50 / fj • - ' ,
'* r 7
El formato general de una operación de asignaci ó n es:
¿
cuando éstas se ejecutan, el valor último que toma A será 5 (los valores 25 y 134 han desapare
cido). ?J r
-
La computadora ejecuta la sentencia de asignación en dos pasos. En el primero de ellos se cal-
cula el valor de la expresión al lado derecho del operador, obteniéndose un valor de un tipo especí-
fico. En el segundo paso, este valor se almacena en la variable cuyo nombre aparece a la izquierda
-
del operador de asignación, sustituyendo al valor que tenía anteriormente.
X <— Y + 2
Es posible utilizar el mismo nombre de variable en ambos lados del operador de asignación. Por
ello, acciones como 1
y\ f
^ [7
N «- N + 1
•
tienen
. f 11 ( \* ' * í ' ••
'
! . • • -* /
J{ ¡( ' , * *j ?’ '
t
' *
t \
sentido; se determina el valor actual de la variable N, se incrementa en 1 y a continuación el
resultado se asigna a la misma variable N. Sin embargo, desde el punto de vista matemático no tiene
sentido N <- N + 1 . - VI *
Las acciones de asignación se clasifican segú n sea el tipo de expresiones en: aritméticas, lógicas
y de caracteres.
*
iLtu ‘} * •
-
TER 2 4- 0.75 *^ 3;4 ^ r •' *
U r ! .<* 1 i r i t tyy ' ; ;vi J
. tV
y •
resultados de cada expresión y se asigna a la variable COCIENTE, es decir, las tres operaciones equi-
valen a COCIENTE <- ( 1 4 . 5 + 8 ) / ( 0 . 7 5 * 3 . 4 ) .
Otro ejemplo donde se pueden comprender las modificaciones de los valores almacenados en
una variable es el siguiente:
El ejemplo anterior se puede modificar para considerar la misma variable en ambos lados del
operador de asignaci ón : .fe * 1 W . i
N 2
N N + 1
> *
M 8 < 5 i
ni i ;
N «— M o (7 <"= 12)
. yjioq :06 t. * SI * £1 rioai) . í to! r bfru moi A
. .. , •
P <- 7 > 6
p
'
j*
Tras evaluar las operaciones anteriores, las variables M, N y P tomarán los valores falso , verdad , ver-
dad . > ) > ;<
V- . 'J : iV ’i.'- loVwt W V
" >
O, > • '
/ .
1.8.3. Asignación de cadenas de caracteres JC
z l &i * Sxljp: —» x
La expresión que se eval úa es de tipo cadena:
.T -
' oiq /.a nb» .- j t ' jj in. :It.v.o: :\ l
X ' 12 de octubre de 1942 . ,V 1 '
» Y \ V' ) A
OÍ • ’
í ¡J ->
La acción de asignaci ón anterior asigna la cadena de caracteres ' 12 de octubre de 1942 ' a
la variable tipo cadena x .
( 5+ V . . :
•
; ;;>o n •
> ¡’ 3 1 ) S s - L t-y . •
• ¡ 'W -
. ' üt s n
-3 jUV Á l l l i i t
'
A 4 i )
B 4- 4
C 4
—
C 4 A
- C
+
+
2 * B
B
i , >y
»
B <- C - A \
I
\ * \ + \) v \\s I * f
A <- B * C
_
C < A + 2 * B
4 J +O=
/a expresión A + 2 * B tomará el valor 3 + 2 * -
JJ
C «- 1 1 v ..
La siguiente acci ón
r : nrj d o3
C « — C + B ' '
r.
í ;olc <
••
i
. Jí : ' f ' » JJ . í /. o - ' ¡ un
A < - B * C
A tomará el valor B * C , es decir, 12 * 15 = 180 ; por consiguiente, el ú ltimo valor que toma
A será 180 . —> ' i
,
L.
i i
x 4- 2
x 4- cuadrado ( x + x ) ZQVJ í of -. iss
. . o ab nfcfos
eb ssnibr nrfeA S. 8 . f ,
. . -
x 4- raiz2 ( x + raiz2 ( x ) + 5)
- K> t
• !CC
¡Á r J : .. i idií V ' » • '. é i
' ..- í q / v e.J
TLos
M
resultados de
VA i* A
A
cada expresi" ó* n son:
J
; '
M U* :. .• ea cl tip ) le pr . . ...: n rittru
• , '6 cas
X 4 — 2 x toma el valor 2
x 4- cuadrado ( 2 2) x toma el valor 4 al cuadrado; es decir, 16
-
+
en esta expresi ón se evalúa primero raiz 2 ( 16 ) , que produce 4 y, por ú ltimo, raiz 2 ( 16 + 4 + 5 )
proporciona raiz 2 ( 2 5 ) , es decir, 5 . . y 1 r .
x 2
í nuv Liu .i i . - - '\ < Aí ; S nvf ^uq on - \ n > i ^£ r } gj«?8 ¿r> l n -í <
" >
' * -*
(
l: ' H i /t i j / M U i f j vtiiV Os Id jn IV ( W bvMlis *
*
» * ' 1
X 16 •
>
¡
1.9. ENTRADA Y SALIDA DE INFORMACIÓN
l
»
i
. * ">
• »» fin u.* i ^ .r
Los cálculos que realizan las computadoras requieren para ser útiles la entrada de los datos nece-
sarios para ejecutar las operaciones que posteriormente se convertirán en resultados, es decir, salida .
Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas
variables. Esta entrada se conoce como operación de lectura ( r e a d ) . Los datos de entrada se
introducen al procesador mediante dispositivos de entrada (teclado, tarjetas perforadas , unidades de
disco, etc . ). La salida puede aparecer en un dispositivo de salida (pantalla , impresora, etc . ). La ope -
ración de salida se denomina escritura ( wri te ) .
En la escritura de algoritmos las acciones de lectura y escritura se representan por los formatos
siguientes: - -- f
leer ( l i s t a d e v a r i a b l e s d e e n t r a d a ) '/'
—
—>
. í
>.
"
Y,
escribir ( l i s t a d e e x p r e s i o n e s d e s a l i d a )
- HGvIrv - \ o
.I -* Vi )
Así , por ejemplo: .-
leer (A, B, C)
\ t A
— . , ,v
leer escribir
nn 1 rvr, :ü i ab ovitfeoqssb hru* ¿ q (xtcUioas ) LM . HJU J
por r
MDI I di •
'
•
vf li;
read write o bien print
NOTA 2 : Si no se especifica el tipo de dispositivo del cual se leen o escriben datos , los dispositivos
de E/S por defecto son el teclado y la pantalla. > \
— »
*
> ?
^
5'
0 “
° “ t0ra Í °S
" fl 0j S y qU Í ad0S' bÍ f rCar a paS0 4: en caso «mió
° “ ‘ ' . continue el “
6. Quitar la rueda .
,, LÜ , -
(a ) VALOR <
e valor de la variable WtU
4.0 * 5
*
I
,
después de a ejecncldn de las
siguientes
* I' ’
operaciones:
^ vb t í
(b ) -
X <r 3.0 .
— -
Y i 2 0
VALOR <
»
X * Y - Y I¡i' J
. -J
( c ) VALOR «
X <- 3
- 5
( a ) VALOR = 20.0
(b) X = 3 . 0 1
Y = 2.0
VALOR = 3 A 2 - 2 = 9 - 2 = 7 VALOR 7
( c ) VALOR = 5
jb ‘5
VALOR = VALOR * X = 5 * 3 = 15 VALOR = 15 • •
'
:
1.3. Deducir el resultado que se produce con las siguientes instrucciones
var entero: X , Y
X <- 1
;
t ,¡( i ‘J j C .‘ O I -> n *S VU : YJ ! I í•* •* .
" '
; v t \u u s j i
^
i’¿ A KT O'A
*
—
Y < 5 r ; ‘ ‘1
escribir(X , Y)
i i r' OíTMJ no ^ KJ * r <
1
r
»
Ití VI
:rnt
i
¿ rnfnyjT ; '
La instrucción de salida ( escribir ) presentará en el dispositivo de salida 1 y 5 , con los formatos espe -
c íficos del lenguaje de programaci ón ; por ejemplo,
l 5
/v
-
r «N
sí iiw ti
X A + B + C
X . :l i b
r n J ' Á * io(\ ?\
X -
< A + B * C
X
X
—
< A + B / C
A + B \ C O A 'T i tí 1 K
\í .
7
J -in •
Ajn:
* .
'
r
•
. . bM
,
í . Sv?
" *" - "*«
*
. ' "* - ** * A ' i*
X —
< A + B mod C
X (A + B) \ C
. / i ;rn « r >\ ] ; ? : » 1
* *0 . 1.1
— , *
J v. 'J ! i ' i
X < A + ( B / C)
Siendo A = 5 B = 25 C 10
iViVV. '
.- \¡ .
Expresión X «
.»
» •. » < ' <
.
A + B + C = 25 + 10 5 +
*
40 > . » \i / j f
i
A + B * C = + 2 5 * 1 0 5 255
A + B / C = + 2 5 / 1 0 5 * n ’
7.5
; í ;* / i i
|V I
A + B \ C = + 2 5 \ 1 0 = 55 + 2 7 i ; I I/ V * t
A + B mod C = 5 + 25 mod 10 = 5 + 5 10 Mi
- I
*
/
% A
P
(A + B) / c
= (5 + 2 5) / 1 0 = 30 / 10 3
A * I B / c>
‘ 5 + (2 5 / 1 0 ) = 5 + 2.5 7 5*. «i
d)
m+ n
—P 1 -
m+ ’
r. • u y
- Aac
v i '," - no- n á t
fl
* —- ri
,/
P -Q 2Q
.
) * • '? '
) *
o» i r : >!i
M/ nonnn;;! ' 1
n '
HM / .
Q
5 «
%
f/ v
^
r
o; M/N + P
b) M + N / ( P - Q)
c) ( SEN( X ) + COS( X ) ) / TAN ( X ) nbrr.ib / » ';• ) v > v iji r;Iqm ! ) r: r; ni irrl *J /
d) (M + N ) / ( P - Q)
e) (M + N / P ) / (Q - R / 5)
f) ( -B + raiz2 ( B * 2 - 4 * A * C ) ) / ( 2 * A )
.
‘ ~ i' '
'
*
1.6. Calcular el valor de las siguientes expresiones:
4 .* 6 .
5 i 4H LA
a) 8 + 7 * 3 + 4
b) - 2 A 3 * ’ ‘ ,1 * i\
-
» *
—
C l
cj ( 33 + 3 * 4 ) / 5 c + A
’ 5 LTirxJ 0
d) 2 A 2 * 3 , i t\ .
e j 3 + 2 * (1 8 - 4 A 2 )
16 * 6 - 3 * 2 J .! r rí '
C tib í!/
. Oí *
' '
« v t . '
t »
* *
a) 8 + 7 * 3 + *
A- i L c s n o i j'j’ n '. rii -^ 1 i: . VL / > r::' . : -r
24 r.Maiinb. ob"nTi bt> ?.sn
8 + 21
29 + 24 A ib b 2ÍTOJ ü *
: wb m’ .n • !t unoi D *
53 i ib lüí: ‘!•> o
b) -2 A 3 '
i:
f;
- ! IzttSi
i II StttJ .
;
X V>
-8 OÍA v. ilix » na ; * nx ra íI .
•
7
'
(3 3 3 * 4) / 5 >
c) +
33 + 12 / 5 » *
^
; »i
- I 4 # <l
, i ; vi i J. 4
\ V
45 / 5 4
I
•4
i «
*
9
» •%
d) 2 * 2 * 3 t { ’
v
) a "iiobv A > I : v\au QK. jnWi
4 * 3 _ - **• v .
)
•
1
* • .
• »
12
r
* V
e) 3 + 2 * (1 8 - 4 * 2) t ¿i
I . it •i
3 + 2 * (1 8 - 1 6)
3 + 2 * 2
^
3w. 4. M
7 - N
'
Á
9 6 -
3 * 2
6 «* v
(
*
_
M
.* » í <\
I f
(i
9 0
Ahora A = 5 y B = 10 . i\
*»
• B toma el valor de A
• C toma el valor de B
• A toma el valor de C I
A C
C B
B AUX
Instrucción
AUX Observaciones
(1) A <-5 5
(2) B «- 10 —
(3) C - 15
ir
AUX «- A
~
5
io
— 15
__
10
A <- c 15 5
*
C
B <
<—
-
B
AUX
15
15
10
10
15
10
5
5
15 5
5
•i ? i
J
/
Mediante una tabla se da un mé todo eficaz para obtener los sucesivos valores:
'
A B
(1) A 4 - A . 4 . : ’ . .. . r : . t
——
(2) B 4 A 4 4
(3) B 4 A + 3 4 7
La variable B no ha tomado todavía ning ú n valor y se representa esa situación con un guión.
La instrucción ( 2) asigna el valor actual de A ( 4 ) a la variable B.
r . n . ,
. ,
1.10 ¿Qu é se obtiene en las variables A y B, despu és de la ejecución de las siguientes instrucciones?
#
..
(
’
biiJcM I >¡1 / . < r Oí c* * * (Ü)
A 5 • " f> J : lo 1 » * « * ¡ I . í
—
*
'
t C
B 4 A + 6
í)\
A 4 - A + 1 í . .
f
;
B 4- A - 5
.3 f V cc:i / r’/ . L’. i
. r \\ ,; > •
Instrucción A B Observaciones . !
( 2) B 4- A + 6 5 11 Se eval úa A + 6 (5 + 6 ) y se asigna a B
- 5 Jfcu 11
wfloioubób ,<mui9 «iugí>* :
(3) A ir; A +. l •
^
. ’
v> u
j < r
i
6 , • ; Se eval úa A + 1 ( 5 . + . 1)
; y se asigna a A, ; '
borrá ndose el valor que tenía ( 5 ) y tomando el
, -
tv.< \ • ¡ tnio
* nuevo valor, ( 6 ) A . . y mtm. eoJ .
(4) B <r - A - 5 6 1 Se eval úa A - 5 ( 6 - l ) y s e asigna a B
I Ir , iv : vrd (
A 3 / . | O .; >
—
nrv > ro . ¿ ;; v : { I
f » '
n v B 4 204 i
1
C 4 - A + B ) c; v :' Aí - . ! f' !
‘ ;
.
‘
B 4 - A + B í r. rtn t
A —
< B - C
>. . 1
Instrucción A B C Observaciones 1: / * 1 ( 1; - TI on
(1 ) A <— 3 3 B y C no toman ning ún valor t
A <- 10
| y fit oí * » * i
¡ r;
•¡ r - *
B +- 5 ;
r
i í*. 1 i
<
t
* A.' . 1 1
.
A —
< B « ) y
|
t
n ni d
B <— A ; < íí\ i i Mí . '
r i r •> i r • f J
Instrucción A B Observaciones
I
\2. SObtener
PUeden d“ C0m( 0” cr e TOS
í tener el segundo
orZT "°
P^mer número (entrada ) denominarlo NUM1
número (entrada) denominarlo
,
,
ples en lo que se denomina refina
NUM2 • ’
^ *
t\ ú
iU
-
)
-
a) Ir al cine. j| f . * • >
sJC 1?5
g ) zzzz
( -i- £. * ( f t -zrr. ( i". Of > *
’ - i A
écP) 12
234
E - 5
' • J
b) -8 . 9 7 5 ,
< ¿j' o " 9no MrKI
°* W
' • ?e
.
* so
.
í 'hao
,
2b r ú a /
, , t
b ustf íwind . 11.1
. . ,
¿ 3.6 ¡ f ) 1/ 2 — -- — -
g) ^
32 , 767
E + 7
i) 3.5 x 10
h ) - 7 E12
0 , 4 S«
£P>224
^ '
f
- V-
k) 0.000001
^ r E1
í t<oa taca 7 : Yi
1.4. Evaluar la siguiente expresi n ó para A = 2 y B = 5 :
?. } fio;'' 7
( £ brc.i • . ('i
£ bom ( ?. Iban;? t ) C\
-
éj j ú í ^fcZ ' / 4 - / ' 3.5 ' " - /¡m r' bon “ ) ( v
;
/ iAttvA ’ ú-.i í J • 1 .
5
- 3-0 •
r¡a l f : ; ' el
1.5. Evaluar la expresión T ’ 5
’
•
b
4 / 2 * 3 / 6 +
12
6 / 2 / l / 5
K
A
-
25 /
2 / 4 * 2 i . "
£ "
,. í ; La \ ..
(o
< ;'. S
ítmicas: :
1.6. Escribir las siguientes expresiones algebraicas como expresiones algor
•
1 v;
+ yl a+b *
3x + 2 y
•
) *
a) - 4 ac b
h ~ ~
> 7 c)
2z
d)
c-d
x+y 3x » a
e ) 4x2 - 2x + 7 D 8) T h ) xyz
x 5 be
y ~y
i) ’ ' j ) 2 nr k ) - 7i r 1 l ) U 2 - x , ) 2 + ( y2 - y , ) 2
x2 - xl 3
* *»
: 4
algoriinricas
.
U Escribir las signes expresiones mWa .1.1
'
. , 1i } i ,
., , . i
•, T
1 1
> i
• i
i * * * •' I
•' l!
, . ,r < .
i
a) b A 2 - 4 * a * c - 17 •! 1
X * 12
b) 3 * XA 4 - 5 * XA 3 + < .
i f l ;s : l ü .
* I I * 1/ , . 1¡ » D (ó
( b + d ) / (c + 4 ) '( / f t >
»<
c) A (1 / 2 ) >> 1*
1
* •>
I
'
2 + y A 2)
M
d) ( -x- A -
V V V
:
es y el valor de C es 1, evaluar las siguientes expresiones
.
1.8 Si el valor de A es 4, el
a) B * A
valor de B
BA 2 / 4 * C
5
-
¿ si l i
« tM 'V t h í i, ' t h " df. ' tf V Á • • ' ‘
x
“ : -V
- ; , 1 i .; > ' IJ Í! ..
i
A 2 •„ .» v „i . ¡f . • ,/ t í , t ;.
(A * B) / 3
()
c) ( ( ( B + C ) / 2 * A + 10 ) * 3 * B
) - 6 ; . , ,; n .
•
j '¡ • J i * i * > » i
'
í i l! ¡ ' . i
O
!l
‘ - *
'
j
r
t.V
/1
.
, . \.> i; r rnO O
a A b A c
.:.
r, f '. ! Ll'jV H í
¡
*1 » cb 1 Jt
;
r r
i iw
^
i , • • ' • ; . 1
i. „ WJHC
»i í>
¡\ ! , • , iinjruui
I ia J I : ; • ; l i o> VO
• í
* »x .
<J * 1
'
»f '
í
»
•
. . . U - ' M'-j '
— .f •
no / 0 ! o 'i ‘
» '
'
•
1.10. Obtener el valor de cada una de las siguientes expresiones aritméticas: , í M ' 1 s\
n
a ) 7 div 2
nis! - - »i n ú n ob ubi ;r r n ¡i , il ; rui ob fibou
«
1
.
V <
b ) 7 mod 2
c ) 12 div 3
d ) 12 mod 3
e ) Omod 5
»ol il« K », i ) : ; ?. jlfisiu
^ ^ .Óf P !
r I
* -
(o
• »• >
’
f ) 15 mod 5 0^ S'i !o
g ) 7 * 10 - 50 mod 3 * 4 + 9 V ->
h ) (7 * (10 - 5) mod 3) * 4 + 9 \\\ . V
'1 » c
_ . * <v
NOTA: Considérese la prioridad de Pascal: más alta: *; / , div, mod; más baja:
a) 9-5- 3 * V
r
,
b) 2 div 3 + 3 / 5 . **
1
v 4 i
^f»
c) 9 div 2 / 5 (\
J) 7 mod 5 mod 3 V1 ( ;1 ( ni (A
e) 7 mod (5 mod 3)
f) (7 mod 5) mod 3 ...,q iioi
i " irp/j . r.'
i Uiy : .,i u. uluvH .b. l
g) (7 mod 5 mod 3)
h) (( 12 + 3) div 2) / (8 (5
- + 1)) it
i) 12 / 2 * 3
I! , ;n \ ::. t .'il / 1
j) raiz 2 ( cuadrado(4)) S
i.
*
V
' ^ S *
V V [
£ • »:•
£* rM ; '; f * O
'
.
7?H í /i f 1 *>
' K. í Jtí * >Í1 í 3 vJ i/ fuli
If if P 5 <f
* > UJUCm - J, .. 9 A
: > :q
OVA1
;
1
'
i
*
' '
- 1
n ;j;rjirnM!Oil
*
^ .
. ’
i
’« ' j
'
*
v
*
•#
J O <
{ - t
.. . ..
7
; } |4 > ; * : I?
». *.
I; • \ •
- otjjj
I
s ? ; c <{ n \n rr I
n* unmu : .
2• .* ij
'
*V » i - i . 4
M> iiv> tr ; i / i; » ; *j i . - .
/ «(
t »
Oí CAPÍTULO
nonnifom r;i fuloümuqffi Ji J> l - , • - M J t i
ill
r
LA RESOLUCION DE PROBLEMAS
CON COMPUTADORAS Y LAS
r
HERRAMIENTAS DE PROGRAMACIÓN
¡ . di r t •jí lslob oboj noo obcsilfim laq OJM mcusb
vr i i (; ) ." í jr.
í - K * * nq ! •
in oVcq c vv (mil jóiq nrttih n íi io ví lun/>>f3b .
. _
)
Ji ' i. j'
' mino.. ':: h u {< '. ! MI. .omiJlu
t
i
I •
t
#
.
í é
¿!i b íti'jíii!
! ' - .iiifinioo r nu ' ? * •
'
" j- üi • • *
¡ íMI
EJERCICIOS oí fií jj Bfitoídotq l-t>b riuio >bcn3ud ¡ \ n J oltíJ^b noo tsJii ^rib t . .
^ .
.
¡ .,
*
,
jaq»:?! ¡ v ;iir:j» 3T .- ol rio .*;biíi>; ' diinlno - ’ó «noior/JFLI&\ 3b tbell
r r i. r .
srjjib fi6rjiJÍo<í
- « • í . • ¿ • i i
r
•JÍ
135 U3U 5 f Í1U VJÍKi ¡ < ) -
) . í J r * -
— f y ’ f f f « « • * • 1 . •
r " * **
.
S
f
^
J
W t
^ *» í
• an álisis de problema,
«SfenV Wí
\ \ : . jtimnv » /.
t •
ó
• resoluci
dise o del algoritmo,
> ' >• . ;
ñ
• .' ón:tludel- algoritmo
*j *
'
en la computadora.
iiinq fu ü .ul ouq •
,
1
'
^ / f
V . ' di > .; nt >., En este capítulo se analizan las tres fases anteriores. El aná lisis y el
diseño del algoritmo requiere la descripció n del problema en subproble-
mas a base de « refinamientos sucesivos » y una herramienta de pro-
gramación — diagrama de flujo, diagrama N-S o pseudoc ó digo ; los
conceptos fundamentales del aná lisis, dise ñ o y herramientas de pro
—
gramació n ( diagramas de flujo, diagramas N -S y pseudocódlgos )
-
se
describen como conocimientos indispensables para el aprendizaje
de la
programación de computadoras. .. .. yjt
t
fu; A.
fio • .* lr .
isu
•
.
: :•) * .
- ' * , ¿ y
>' >
.
r> r
. 4,..^ „ ...;
.
r' rnniJo ! - •
- r. ste i..¡ MI
39
«“ lÉí 'a
computadora, la resoluci n de ó P
dividir en «ts
Memas. Ayudado por una
importantes:
-... ..
3 resolución del algoritmo en la
“ í
B i d
b í iai ftnA . +
’-
1
i , ’ ,
El propósito del análisis de un problema es ayudar al programador para llegar a una cierta com-
prensión de la naturaleza del problema. El problema debe estar bien definido si se desea llegar a una
solución satisfactoria. opio óc. . bue?R \. £ ,
Para poder definir con precisión el problema se requiere que las especificaciones de entrada y
salida sean descritas con detalle. Una buena definición del problema, junto con una descripción deta-
llada de las especificaciones de entrada y salida, son los requisitos más importantes para llegar a una
solución eficaz.
El an álisis del problema exige una lectura previa del problema a fin de obtener una idea general
de lo que se solicita. La segunda lectura deberá servir para responder a
las preguntas: ,
La respuesta
P íTa segunda pregunta indicará qué TdatosreSUlse,proporcionan
ados deseados las «didas del problema.
0
o las entradas del problema.
'* • i TV . o ^ oaih
i •
t at? *n
mt Resolución no rr« £ Tn
de r
* •-» < un problema
i .<
Análisis
del Diseño
del Resolució n del
problema problema con
»
algoritmo
'• ••
•
r ífrí
la computadora
Jv
Figura 2.1. La
. -v
,
resolución de un problema .
' ;
r v -
Aná lisis
i
del
problema
O ) vnr n o! ' ’
i
) i
Ejemplo 2.1
j
Leer el radio de un círculo y calcular e imprimir su superficie y la longitud de la circunferencia.
Análisis n : ii ' f¡ ;
Las entradas de datos en este problema se concretan en el radio del círculo. Dado que el radio
puede tomar cualquier valor dentro del rango de los números reales, el tipo de datos radio debe ser
real . : üv
- ''
' '
Las salidas serán dos variables: superficie y circunferencia , que también serán de tipo real .
Lina computadora no tiene capacidad para solucionar problemas más que cuando se le proporcionan
los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la
; .v .>
máquina constituyen, como ya conocemos , el algoritmo . ¡ n •
42 Fundamentos de programación
Superficie y
longitud de
circunferencia
\
í!
i
nu i
I I
\ . ; • »
.. . . . , > -> j i* • '
í U! U ' .U > -
Figura 2.3. Refinamiento de un algoritmo. ¡
j, • ¡ ! ;
.. 1‘jllllj' jli '. V *J , jlh íKjl) ' idi- IIC ' • O 1 ) "AUV . S - . ''l - líí O.' * - í
- •
. . .. . . i-,
Subproblema Refinamiento
leer radio
ncalcular superficie -v j\ J
leer radio
l » . iV?
'
— '
‘
.
V
-. 2 Jfc SV ;. ,O . ...
1
L Ií V . r ! r ) *
' }% t
. I i
’
1*
Las ventajas más importantes del 1 • » •.
!*
v ; ij nfM ít u n
diseño descendente son:
r.nVmunsi ) Mil ! t
ma
’ módubs. COmprende más «cimente al dividirse en partes m' ás- simplest j II * ^ í í < * ) l > o
Se "*
; J ’ J I
’
denominadas
—
f-
* as mot*tiicaciones en los módulos
La comprobacon del problema son más fáciles .
--
se puede verificar fácilmente ‘ ^ 1 » ' y » 1 / * / O? *'' 0
}
•* ' *
.
Xrsr
Tras los pasos anteriores ( diseño
*
,
descendente v ímf , •
i í; li
t
> nobinua
. r .- n ; : ¡ -
- -
i Fssasstistsssi
Diseño
de un
algoritmo
deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado
coherente, . > ¡\ , j » ¡ . . ni . JUV , - •
t - •
t l•.Ji l t J i ' i . i ; RJ fifniiioi/ '
yP/j i’ Ujj 1 Vr. uu - Vv / t >;v
¿Qué hacer para ver la película Tiburón ? Jjf í 1 •
>< ¿ y
rr/ íí iJ ; r
, * « f t j *
• ; •
j<
•
t %
* »; .- * , . j
, f f! • # *;
* •
* • j
La respuesta es muy sencilla y puede ser descrita en forma de algoritmo general de modo simi -
lar a:
•»
ir al cine
comprar una entrada ( billete o ticket )
ver la pelicula
regresar a casa
. . ,
> , . . # • » » - 4 1 * ? jf .. ' V r . . \ b i ,; r ; r b S'J urr i b 1 -
I; ( » 1 /0
i *•
El algoritmo consta de cuatro acciones básicas , cada una de las , cuales debe ser ejecutada antes
de realizar la siguiente . En términos de computadora, cada acción se codificara en una o vanas sen-
tencias que ejecutan una tarea particular.
El algoritmo descrito es muy sencillo; sin embargo , como ya se ha indicado en párrafos ante-
riores, el algoritmo general se descompondrá en pasos más simples en un procedimiento denominado
refinamiento sucesivo , ya que cada acción puede descomponerse a su vez en otras acciones simples. .
describir de la
As í, por ejemplo, un primer refinamiento del algoritmo ir al cine se puede
forma siguiente :
1. inicio peri ó dico *•i
2. ver la cartelera de cines en el
- i
I
5.4.1. ver la pelicula
f in_ _mientras
5.5. abandonar el cine *
f i
-I
•iv 0 < : ¡‘ )
_ ••, . l
¡t :11
J. i t
5
' * ;¡¡! ;* • ?
r si no
I W
5.6. refunfuñar
fin_ si
i - j • • [ fi íl í J 90p
• •¡
- jifio
. . ' ¡; í rvjt J , I
f
> cw < !
.IbJu . tY'
*.
. *
* f .
6. volver a casa
7. fin
ii . ••• >
r »
I
•» r i JjJ
' J ’ ;n ) -
En el algoritmo anterior existen diferentes aspectos a considerar. En primer lugar, ciertas palabras
reservadas se han escrito deliberadamente en negrita (mientras, si no, etc.). Estas palabras describen
las estructuras dé control fundamentales y procesos de toma de decisión en el algoritmo. Estas inclu -
yen los conceptos importantes de selección (expresadas por si-entonces-si _no if-then-else) y de repe-
tición (expresadas con mientras -hacer o a veces repetir-hasta e iterar-fin-iterar , en ingl és,
- -
while do y repeat until ) que se encuentran en casi todos los algoritmos, especialmente los de pro-
ceso de datos. La capacidad de decisió n permite seleccionar alternativas de acciones a seguir o bien
la repetici ón una y otra vez de operaciones básicas.
‘ 1
qv ;« V aJ '
¿:
l ° C la' ir *Va 2
" “d° repetidamente « .
* L . J 4 . »
, , "
ación
ssxesssassts°lfrT r
O
.
constan
'
nuestroestlri ^ ° 01
ntm
e - '
S -
repetltlvas
A lo largo de todo el libro
tic : .
s describiremos las acciones nece-
de nuestro estud*o; para ello
S .’
-
“ ,; ” £ rr
empleo de We ‘
analicemos la acción
Localizar las( s) butaca( s ) •* tmirrisp io j *
áv
fin-mientras
5. sentarse en la butaca
v. 11/ :rl / t > . . - iSl :; ; v / f o r j¿;¡ r v > ni
» *
'
j
1
- .
En este algoritmo la repetición se ha mostrado de dos modos, utilizando ambas notaciones, repe -
tir .. hasta_que y mientras fin_mientras. Se ha considerado también , como ocurre normalmen-
. ...
te, que el n ú mero del asiento y fila coincide con el n ú mero y fila rotulado en el billete. ,
l\ j -
-
& i > - *
"i
*
* .• * ' 4
> < * » .r i »1 l l í . 1
.V | . 4
- .
2.4
• - DEL PROBLEMA MEDIANTE
RESOLUCIÓN COMPUTADORA
* • \ i * * » ‘ , * *
. \ / j ».:>S
, aui >n ñm 11 , j .
Una vez que el algoritmo está diseñ ado y representado gráficamente mediante una herramienta de
programación (diagrama de flujo, pseudocódigo o diagrama N-S) se debe pasar a la fase de resolu -
ción práctica del problema con la computadora. ' . "¡ vi: •
1 •
•
1
‘
'
v \
1
* * \ V * V |‘
r . '
’ * • '
»>! v * A«
r
t !
"
r ' ’ r I 1 '
J
*
En el diseño del algoritmo éste se describe en una herramienta de programación tal como un
1 é
diagrama de flujo, diagrama N-S o pseudocódigo. Sin embargo, el programa que implementa el
algoritmo debe ser escrito en un lenguaje de programación y siguiendo las reglas gramaticales o sin-
taxis del mismo. La fagp Hp rnnverdi ón del algoritmo en un lenguaje de programación se denomi-
na codificación , ya que el algoritmo escrito en un lenguaje específico de programación se denomina
código.
Tras la codificación del programa, deberá ejecutarse en una computadora y a continuación de
comprobar los resultados pasar a la fase final de documentación.
* \ .i -J L» r > ! i) -
‘U .. ,.,l : JT. . A ’ '• ú- i -íÍ! *¡ rt í I ’ • .' '
'
-
'
.
• - .
-í VI: . r o i !. :
- , ; h n • !
¡ ni b
» ; ¿ "¡ ¡ i 3 ¡
Resolución ICJ «*
- ?
* "
' / •
1 •
iu • •
í del problema 1 • •
id ( . , ii ; a: •
'
> , f n v u\ ; con computadora i til •
• i V
»'
: *
‘ UÍ L. - o ¿.J ' i GHJ :. niJ .
rtliu í f ''
'
i
-'
- / * i
, i
"
;
b kriiii
Figura 2.5. Resolución del problema mediante computadora.
• # / ,
— 5
oJ
Fundamentos de program
ación
46
2S22K:
o se debe u l!
ricamente, de modo
,z a
' j
^
®
conseguir este objetivo
que las
representado gráfica o numéprogramación, sino que la descripción pueda
ue n oritm
sucesivas acciones
^ ^^ ^ .ser
no dependan de la sin-
serv r racímente para su
Tp ued a
~
de
taxis de ningún lenguaje ma , es decir, su codificación.
transformación en un progra para represen tar un algoritmo son:
Los mé todos usuales
n3
: <;bi/i)¿o» fi od > ri
ó bí Joqín ít i rtilnogln otes
. .. , 1. diagrama ífi v sup. ut
de flujo , ;iü
. mi ZBiiiiiM
\ 3. lenguaje
diagramaaN
2 . diagram j -
í v - S (Nassi Schneiderman
ó n de
)
,
algoritm
,
,
os : nvpudoc
pseudoc
.g ntn ifii
ó * , , .{ . , ,
< digo bb oismofi b jup
de especificaci
4. lenguaje español ,
5. fórmulas.
no suelen ser f á ciles de transfor mar en programas . Una descripci ón en
Los métodos 4 y 5
prolija y generalmente ambigua. Una fór
-
no es satisfact oria , ya que es demasia do
español narrativo ón de
ón . Por ejemplo, la fórmula para la soluci
mula , sin embargo, es buen sistema de representaci ítmico que se debe
el procedimiento algor
una ecuaci ón cuadrá tica es un medio sucinto de expresar • , / oij jn
'
. 1 lit ) lili f .
• • . IM TMU - * o? i J. 'ÍI
y . ¡ J - "
x\ = ( - b +
^
jb 2 - 4 ac ) / 2 a Jb
x 2 = ( - b - - 2 - Aac ) / 2 a
vrowv ! \ « \ * i ' Vi '\swxvf \n \ Ai .V
significa Min VilWSt ':
% • • • 1 p I '
t /. vti ; ;\ v ’ 'A > \\\ nt » v». ) '
1 . Eleve al cuadrado b.
2 . Toma a ; multiplicar por c ; multiplicar por 4 . . .. .
3. Restar el resultado de 2 del resultado de 1 , etc».
" í K : viiu . voluta
Sin embargo, no es frecuente que un algoritmo pueda ser expresado por medio de una simple fór-
rj '
. ni run ¡ v - . quit y - - • •
muía. ‘
'i -' ," . i . • . . . . { .ornzirn ! ixiit
o c. ; i v v >
. ¡ 1
'
* '
" ’ . j 'J|
fIU í I J . • oir ' lrvj 'dt b oup no; , i\o\ y,YÑ }
,
\ >n
toyai
= nomhrfr
neto de un trabajador a partir de la 16 de n Pro8rama que
lectura del " “ deduce el salario
*K s x f f i t s j s
,nstí ,U,e) S°n mUy Variados- E la Figurá íJ íS S S;;
" oste iepíetntaTna*plantilla
f Amerídecandibujo típicaAndar ás
donde se
i.
Símbolos
principales Funci ón '
Proceso (cualquier tipo de operación que pueda originar cambio de valor, formato o
posici ón de la informaci ón almacenada en memoria , operaciones aritmé ticas, de
transferencia, etc.).
Decisión ( indica operaciones lógicas o de comparaci ón entre datos
— —
normalmente dos y en funció n del resultado de la misma determina cu á l de los
si ^ distintos caminos alternativos del programa se debe seguir; normalmente tiene dos
— —
salidas respuestas SI o NO , pero puede tener tres o m ás, seg ú n los casos).
Decisió n m ú ltiple (en funci ó n del resultado de la comparación se seguirá uno de los
diferentes caminos de acuerdo con dicho resultado).
utí rioae
\ c ? jiri ,ai íi < nof ¡ \
Conector (sirve para enlazar dos partes cualesquiera de un ordinograma a través de
un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la
misma página del diagrama ).- .
Indicador de direcci ón o l ínea de flujo ( indica el sentido de ejecución de las
operaciones). . .
; . < - tr Kü :j , v \ v . oft - .
-
Línea conectora (sirve de unión entre dos símbolos ).
-if ; • i Conector (conexión entre dos puntos del organigrama situado en páginas diferentes).
J njiJn
^vjqtn ?abíi\ il
Llamada a subrutina o a un proceso predeterminado ( una subrutina es un módulo *
independiente del programa principal, que recibe una entrada procedente de dicho
programa, realiza una tarea determinada y regresa, al terminar, al programa principal ).
Símbolos
secundarios Funci ón \\
»
f \
! K nbi . í'rttih *
Pantalla (se utiliza en ocasiones en lugar del s ímbolo de E/S).
A I ti * *4 i IJl ‘
í l’ j
V: , < K
•
-
n jfn üOl 3?
{ ,' r > -- r
Ü
Impresora ( se utiliza en ocasiones en lugar del s ímbolo de E/S). i «( ‘ *
i » f í L ' m; *
r: • 4 ..J, * >
—
i i , ’, » * » i
iLaii V
t I . 4 1 t i * t * i f
* i I\
( « *t í X
t
I
48 Fundamentos de programaci ón
*
i
• •
Inicio
li
t
r leer
nombre, horas 1 í f
precio j ú A
. >r .
;
t
»
brutos-
» horas * precio i )f
r
. 1í
, : •
i
1
i
* Í?JKJ ¡
i
i !' 1' •• i
tasas*-
it / l ' OM? - 4 f
.
0,25 * bruto « i
i
>
Jf ^on- < .
^ •i
, i' i 1
i
neto*-
fí M
r
- .
, 1M O
T .
4
9
1 ‘
bruto - tasas ..
> . -A 1 :
4 -. I\
I
.1
\ )
escribir i »
nombre , bruto
1
I
tasas, neto
x i *: j * . u ») n
í .J
-
i
L•
'
,¿ t í- iT Í ’ . •
Fin
’ r
f
'
1
.1 ‘ t
*
»'
i
I.
*'
1 ; > < , •
i? • . /
- •r
Figura 2.7. Diagrama de flujo . f •
contemplan la mayor ía de los símbolos utilizados en el diagrama; sin embargo, los símbolos más uti -
lizados representan:
s.
• proceso, •
’
i ,Í A 4' U \ ) <T VL j 1 •
'
* * Lj/i )
i t
• conectore
>
decisión, p . ‘
. •
•
.. ... (
• fin, s, J
i: N '* y . Li - í i' i i i i . ‘t i .¡:V! 1 *
í Li
• entrada/salida,
• direcci i
En un diagrama de flujo: f
i r
existe una caja etiquetada ‘ 'i n i c i o " , que es de tipo elíptico,
existe otra caja etiquetada " f in " de igual
forma que la anterior,
si existen otras cajas, normalmente son
rectangulares, tipo rombo o paralelogramo (el resto de
las figuras se utilizan sólo en diagramas de flujo
generales o de detalle y no siempre son
imprescindibles). J r
c '. 1 . '
—
de esta nexibilidad conduce a diagramas de flujo complicados
e ininteligibles
> 1
* * •i f ! 3 paa «mi 1 KT ; 3
I
r H « 0 <D J
V
Sigtff í ; M
3
Wt
í crrrrn 1 FTHTTOT]
r rt
UNIVERSIDAD PONTIFICIA DE SALAMANCA
fn-rt ; :
H4 S
Facultad da Informática
< Jr. «la t-
• aaaaaaaaaaa » aaaaaaaaaaaaaaaaaa « aaaaa
. .
Ei.*M^ a »Mm«aAatt ww> fcLa*»ai V»wta>fa»Cylmjm,6iS4 Í!aJj<lrf| .
l f i
c Terminal
.
. «olfib «í O ob uitorn v L
Entrada/ •
Procesó
•
> ttUWq}" \5
Salida
/
Figura 2.9. Símbolos m* á^ s' utilizados en los diagra mas de flujo. v
v / • ’ I .* * P
i I
v T
Símbolos de diagramas de flujo
'oitmri 'ireb lobstnoa 3 i 0 3 •
4
Calcular la media de una serie de números positivos, suponiendo que los datos se leen desde un ter-
—
minal. Un valor de cero como entrada indicará que se ha alcanzado el final de la serie de
números positivos.-
—
50 Fundamentos de programación
DS C y variable suma
S. i
1. Inicializar contador de n ú meros r
2. Leer un numero.
3. Si el número leido es cero: .
• calcular la media;
• imprimir la media; ' :
• fin del proceso. - J . T- : ' ' •
• calcular la suma;
• incrementar en uno el contador de n úmeros;i . 8.5* * i p * ** . • > .
• ir al paso 2.
4. Fin *T - '
'y
?
» . ..... i i
- j
'v í .
I r o m i o1
El refinamiento del algoritmo conduce a los pasos sucesivos necesarios para realizar las opera-
ciones de lectura de datos, verificación del último dato, suma y media de los datos.
r ~~"
T
'
j
\\
'\ A
'
_y \
inicio
O: u .
J : > < ‘o ‘odadc: . G, S fiiugM
dato •
!, / 1
f, ;/ i
. J,( • I M
• ' f •
f
íif f í
, í,, imunrol> lemuí) wU
ubi
\!
i "
ÍV.
J * lit ) '
• I.
...
media
r . i
s/c
Jí y ,
' • so
! 7ft JOfrjuptjtj n »J
°i n "
, ab
.
wpiwibi
i » *, i
s i
c i . « * j( t . .
' 1 >bfos9qtni n 11 *
•mprimir
!
media
fin
< l ; iÜagsSg
^ . v
^ vision por cero.
\‘'
• o íiH!Í3
'
‘. *5
,
ft :
‘ ,v. íS
f
1
* ‘
- t \ \ * \i )
f /
'
n; v ‘*, t * • !
Ejemplo 2.3
i> ,kr vvyul \ nni /v:í, iU
-
i
o i ó ini
Suma de los números pares comprendidos entre 2 y 100 .
C
*
inicio
i i
(
i
;
SUMA 2
N Ú MERO
t
<- 4
1
.n e : SUMA - I
<
SUMA + N Ú MERO
t
A
t
N Ú MEROS- f
— > OIRAJA
i
-
(
AflOR 3
2
OM n V jt.
AHOH. ODqR ® 5, r
( Ofr -SAROH ?
' NÚMERO + 2
i
-»0!HAJA 2
A 10H
AROH OiO lFR .
.
i
í
f
i
i
s
»
1 número =< 100
Á
l I
r
_
t '* •
*
1
•
*
t r
no *
, . k;
t
\
’
-. i : ' * i
\ \ escribir
»
SUMA ti
t
. •
J
C )
i
i
i
* i
Ejemplo 2.4 i
/ NOMBRE
r -
r> -
JI.
.? *-MJ
*» < v J2 •
t
- CHr í
A • Mí
• w* -
J . . . • r} '. . > .
i r ';l
4 I
• ^
’
Si r no V l \
i . HORAS <= 40 .*
i' pfa i i*
V
^ w
T.
•*
*
, i
( HORAS - 40)
* •' v ^v r
*
00 r > = - '
en i
rv
\ 'i! di is, >‘
v
AMO >
escribir
c at- »
/ SALARIO
i i
7
«
^ «$ >
'
-
**"
v
.
%» V '
< ” *
O . . i
‘ '
'
'
.
V ' VJ W \ i,
j .
i-
M .'. AIVW v o \ .'oVjií ' fctfttt '. •‘ v
.
. v:’, .' ¿'. ' vyúrt í ' : : > B® ' .
r
. 1, v,,
c
*
i
•
\
fin
;
VsrtVvi&ss/ not ¿oiüDfr» V 0 * ,
'
W-U'l .. . .
^ _ ve* fcjactrF n e\ ;
" ,
' < i ..
;
1
' y
* .
\
«* * s
*
4 v
. %
r
>
S
6’ ’
^r;^ •
;0 A - .v < *« • ** i
- A;>í \ H_0rÍ3 ^'I
*
í !
’
iTO.ta#
^ 0Í - í
» 4 *
3OH
*' v
;
^ •
AKOFJJOE *
ips
*
r
US
o bien:
.in »y\ - s > kY,\ lYO > V \ . OA
2.4. b Ai ? c \ Vnn^ v y: i > wic\o us »W/n >m'!\ iAW IVJ
Diagrama de flujo ‘ v \v*
{
:
jU '
\4 t -
,
iv \< o 7 U\ \ . Hk
^ inicio
f ) .
r -,
o
n t
r S
-*
¿
>
r> ; v. . n w bVmV:v \m\
**
no , r r<
. -t
f
i má sdatos *
' 1? Í A > »
•
. 5
> . »i -
. V • ) of i ‘ji ' V . ' •
’
T í A; o¿ bi <
fiteq d slrtaruSv oni' : S ííÍ J íJ . ¿) n yn ¡ u/ sc\ o-j VK \ . ominen
" $
pf» , p
«feb oncn&n b fftsq I : 3T Y ^nimí X3 9•
j ' ¿
»
leer
'
HORAS, PRECIO.HORA . O . ‘J i . ’ A / OT © T . * í i : -Í i
r f •
• • - > í iO Í T r r. ' r
r
f ? V JATO' C l I " l
i.
r -*
o
8 f ;< o C; i * r« v . ? c T <
* ru n it i r i ;' ,
.
,7L' a O i » Í OiI r - . 2 le 1
* _ > «
*i *
•
‘ . C: V. <4 :;a, ' u: ¿ '
’
51 “ % c> - O^.VTTJ
n
S/
HORAS <= 40^ ° .S C. í ¿i 'íí fn í 'í . n
i
* •.
j » ;Y í
*
»l
K ..
>*
i
4
/
' •
’* viua\»
, •
.V • '
V
•
» tA l i g o n t m o p r o N e m a ni
' A I*
* . .
> < .
( 4 «
* >o J
r
-r — 1 n b
fin
o
j . . }
V »
HOO • i
'
U 1
^ C .!
54 Fundamentos de programación
Ejemplo 2.5
realizar operaciones sencillas de conteo es una de las primeras
La escritura de algoritmos para
r.
cosas que un ordenador puede aprendeuna secuencia de números, tales como
Supongamos que se proporciona
2 3 6 0 2
5 3 0 2 4 4 0 0 • • •%
_
‘
•
i
\
I ’ i
8. Retornar al paso 2. ^ ; i
f K
r
•«
«
r >
la
respuesta es " Iguales " , yaque 3 + .6 ¡ ,
:AJA 8
= 9 . Sin embargo, si los números son:
,
2 3 4 ^
" S i
t
s
el resultado será " Distintas ".
ni n - 1
i I
iy .
nir
inicio
v
* ,8 , A
TOTAL 4- 0 —
*:
0 « 8 * A
no
m á s números?
*
.-/r Of
SI
-
leer
CV - J 4/ 1
NÚMERO »
os
‘ »
*
no
NUMERO = 0
A -%
I' + * i >
i Ot
s/ ;•
r ¡tíí tOvl) diioap
2< - TOTAL
TOTAL + 1
iíniJeit ÍV
BN
ni
escribir
- -
—^
v
TOTAL
.(5 2 oHbmgjB) ^ r ~ . , . ..
. H eiO .0 r .£ oiugR
• •
inicio
<
.wi , / . - '
\ »r
^
leer *
A, B, C
n .(;
s/
A+B c
i
\ ?( . u i r c B r,
no . »
s/
A+C B » -
it
Gr ivMUH
'
no
"
si i
B+C A
= 03 IW '
- ?>•
no
-
r
V
escribir escribir
« distintas » f
«
r
-* JATOT
JATOT
«iguales»
...1
fin t
\\
c
1
• r*-*T
Jr uJ íi
II \vJ \
Figura 2.10. Diagrama de flujo
2.6 (Ejemplo 2.6) .
v
X.
2.6. DIAGRAMAS DE NASSI-
SCHNEIDERMAN (N-S)
acciones sucesivas se
bir diferentes
' el° qtTom° tenn lashs
como un diagrama de flujo
d
escrjben en
^
acciones en una caja /
su “ V’
^
W C m diagrama
°,
as & ó°n y°las cajas de Chapin es
en los dlagramas de son contiguas: Las
flujo, se pueden escri
— -
c C» V >» •
•
—
a
-»
f A • *
* t
l
•1
. í il - *
bj¡0 i o cr . mi muvti 0 « U)l* -' f;!
fin • vi JIJ 0’ ’ ! :oq •-. /;! ( 'j
*
( tu
'
. ,
'! •
V . *\ ? • .<
* .yjdffion te irdivj
11
"i >\ V
leer ' > oriel»;
nombre , horas , precio *;» V ¡dín
(M H , \
; i o?
calcular
salario 4- horas * precio
nnin )00QU38S . v.s
calcular
. . » •; ! * ?;’; b om r; impuestos 4- 0.25 * salario o' ¡3
'L! . r¡
'
*
f» . . ;
r
.i calcular ¿ : '
* >¿ • 'r . :• »;í in. ¡ 1 til»* »;.. ;.> 4 '
: í* ; y » -'
•
- ->í
• neto 4- salario impuestos - •• '
*
- '. f
f ¡ ,
I
i ' .
J .-
i
*
* 'í !fU : il
t‘ * • *
>
escribir
i 7 1 1'l
* nombre , ; salario , impuestos , neto Di * ¿W ,
* . 0 * ,í j |3
: M . frj í . .
. V ;r -
' j ,
* i. «
jn i iijji irbitu
4 , i . . .; *
% . |. ' ’
•
1 /
'
* í '• i '”
' « k • • * . \ >
- 6J í
La estructura condicional (el rombo) ú: . c
'
; -
. r j- , ! v
te , ar; 1 . : ‘j ! -
,
-J u¿.u •; I •' •
!
' / - . \ -V . , i .íjiofj,
gJ - . i- '¿ . ' - i P: :/ M
' • " | .
) v
;
ó !’ ; . • - . .
viort r si .
i : . * / rt ; ^ vi
¿condición?
:ov S ‘j.o c ; /.:! . ii ru í u Í Lrnor .í; ) .
.
'i ;[ M'. i;
*
4
i 'V
OJ íí U TTí ni * no ot/ £3 d ) J i:) '"/ r; n w üííV t/¿i: - ol i;í m)
. J :5 íí O^ í oí r ? . - ü P 'J ^! t. '
t. . •
' • vffjuq V :J : » OliibÓ'J
^ ' J* J .
-
; r J v i i v* r J » í * ** •
mi ) 4 : ; • •••
/
:• .
"
' • , l ^ < / • • ' *.
.
—
:
/ ? I if ’!M >/ t »; * rvi ’ r » i
-
i odKn - u! * :.- , — rtí n n — i i
.•
.
,
•' <
b
» ?
, b >'
í x j!i;: ,
" *
) (
'
IKSHMI ¡
:r
QU
•
/ i. íf . i -T £ { ;
t m»
< acciones> <acciones>
?• on# » .»
»•
. J r v • -*i * * .
: ; 3Q i:! iKí J l > oruinriid L1
^
y . -' .Tí : b. i .
,
* • /
If ! Y .I : - n -
-
-
*
• r
: •
- ' Im auníl .í ní í oioixxl
J , ;
*
de programació •
n >
Fundamentos I ; ll I
.
tr#
58 :I * )r
'
' "•
:•. !•«< r i'
horas traba
Ejemplo 2.7 en función deI número de
trabajador
calcular el salario neto semanal de un
Se desea :
jadas y la tasa de impuestos
35 horas se pagan a tarifa normal, tarifa normal,
•
las primeras
que pasen de 35 se pagan a 1,5 veces
la
•las horas
las tasas de impuestos
son: ,
• 60.000 pesetas son libres de impuestos impuesto,
de
a) las primeras
40.000 pesetas tienen un 25 por 100
b) las siguientes 100 de impuestos,
c) las restantes, un 45 por .
• la tarifa horaria es 800 pesetas
bruto , tasas y salario neto (este ejemplo se deja
, salario
Se desea también escribir el nombre
como ejercicio al alumno ). - ,
•
V i <*,
- i
2.7. PSEUDOCÓDIGO
ón ( descripción ) de algoritmos. El
uso de tal lenguaje
El pseudocódigo es un lenguaje de especijicaci
ó n a un lenguaje de programación ) relativa-
hace el paso de codificación final (esto es, la traducci
mente fácil. Los lenguajes APL
algoritmos
1
«»
. rt o
rascai y /Ada
AFL Pascal uuu¿<ui a veces como lenguajes de t
\ ua se utilizan
especificación de
de representar bási-
— j
,n S ^?^^ . ,
8 reservadas en
-
SU
.
inglés e a
T "
Stop, if then else, rvhile.end rep a un e c «c
' ta es
' *<^t, end,
¡ge normalmente la
indentation (sangría en el margen izquierdo) de dlferentesh' pseudocodlS °“
1T"“ "
start
* “ u »«„ *» j o. ’
_ horashoras _ _hora__hora
/ /calculo de impuesto y salarios i
read nombre, , precio
salario bruto
tasas
_ 0,25 *—
<
salario_bruto
precio
-
neto < salario bruto
tasas salario_
write '
,
-
i
, ,
end
i d neto
La línea precedida por // se denomina comentario. Es una información al lector del programa y
no realiza ninguna instrucción ejecutable, sólo tiene efecto de documentación interna del programa.
Algunos autores suelen utilizar corchetes o llaves.
No es recomendable el uso de apóstrofos o simples comillas como representan en BASIC de
Microsoft los coméntanos, ya que este carácter es representativo de apertura o cierre de cadenas de
caracteres en lenguajes como Pascal o FORTRAN, y dar ía lugar a confusión.
Otro ejemplo aclaratorio en el uso del pseudocódigo podr ía1 ser un sencillo algoritmo del arran -
- • 1 de un coche.
que matinal 1 1 r
-- »• • ' ‘ 5 * • l i . h J\ » J 1 1 •
'
•. • .. J i. ¿
: >* * ; I j ) h 1 « H I I
, « * •* - l .
* A- J > i
1 ' r
inicio i ,
• 1 f
!A f 6 5 5i
w * J
pisar el acelerador
n i i: í •. o i i . l L ’ i a 3 . f .
oir el ruido del motor
. r
t \*
, , » : J ! ; O ¿ Ifc!£ 1 : b I í 5. '3 i 7 . í
.
' < •
- V *
^
pisar de nuevo el acelerador
esperar unos instantes a que se caliente el motor
llevar el estrangulador de aire a su posición
.•• rji V ojwft . l'l tib 13
í.it'
' ,
.
fin
Por fortuna, aunque el pseudocódigo nació como un sustituto del lenguaje de programación y,
por consiguiente, sus palabras reservadas se conserváron o fueron muy similares a las de dichos len -
guajes, prácticamente el inglés, el uso del pseudocódigo se ha extendido en la comunidad hispana
con términos en español como inicio, fin, parada, leer, escribir, si-entonces-si _
no, mientras, f in _mientras, repetir, hasta _ que, etc. Sin duda, el uso de la termino-
logía del pseudocódigo en espa ñol ha facilitado y facilitará considerablemente el aprendizaje y uso
diario de la programación . En esta obra, al igual que en otras nuestras 1 utilizaremos el pseudocódi-
go en espa ñol y daremos en su momento las estructuras equivalentes en inglés, al objeto de facilitar
la traducción del pseudocódigo al lenguaje de programació n seleccionado.
Así pues, en los pseudocódigos citados anteriormente deberían ser sustituidas las palabras
start, end, read, write, por inicio, fin, leer, escribir, respectivamente.
inicio start leer read
r >' h. r i t
> )/ • » ~i ’ ^ •
.Ü T 3M Oí VIAJAS
;\
ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
.
.
.
2.1 Se desea obtener el salario neto de un trabajador conociendo el n ú mero de horas trabajadas, el salario
v % v
\
1. Obtener valores de horas trabajadas , salario _ hora y tasas.
• * < T !!- . '
• » ¡ »s . 7 re i
2. Calcular salario _ bruto, total de impuestos y salario _ neto.
3. Visualizar salario_ bruto, total de impuestos y salario_ neto.
;úí
i lu í - po l ;;t : } •«
í4 . [ i
1 Metodolog ía de la Programación . McGraw Hill, 1986. -
¡- Jtri' jmo m
.. /
oT/. ;
M
• /
j /
• . ' fri .
'
/ w i> ri r '
T . •
*
y paga , neta i
V: U I un * u ; fuj' jnt no )'JULO
paga b r u t a , total de impuestos
I 1'> X
1! )£: olqíí . ap 013O
>
t r a b a j a d a s , salario b r u t o y t a s a s
.
.
1 Obtener valores de horas
impuestos y paga neta .
.
2 Calcular salario b r u t o , t o t a l de
horas t r a b a j a d a s por e l s a l a r i o
.
2.1 Calcular salario bruto multiplicando l a s
hora .
b r u t o por t a s a s
2.2 . Calcular e l t o t a l de impuestos multiplicando salario ’
( tanto por ciento de impuestos )
“ * • * -l . ' *
—
• > •
T
..iQ -hilDecríC Ki: / r? AS I í J .rv ? r; *
- . *j / * ;
;intrArlii
-
r
E : Offr *5 : :n {
7' : rr. ittr
——
'
‘ Cnlí 4
V; v .U 1 ..
/
introducir /M r
•
^ í
zof i
r; HORAS . • ’
. /n ** 7 V
> “ t "* -
, «•
V.
_
•
O U * **
{« *
ATAAA . ; ;\ j , ,
-.
•
.
SALARI0 H0RA . - no orili '
i lv ;v t Í 3L L '
¡
T :
ü r. < i > ;
o!x - - i
r\ íofis : o .T: >:: v A
"
' *» Í£
’
IbrjnbtV
SALARIO_BRUTO
I
1 c
H0RAS*SALARI0_ H<0-
Í 'í -i ' '
RA
a
t
'
•:
•
,b ?>
.1 c. -. lí r
ñ \Jzc' zv
-
-
"
Í >i 3 c -
TOTAL_IMPUESTOS<-
calcular \
SALARIO_BRUTO*TASAS
tari
V
*
U *^ >
> » r
.
I
calcular
•
IvSLé
t* r ^ruu . ! /.
. '
ia
ubi
f .. ;
-
-
u, i .> ; : .. . i /
/ ^ i;
ARIO RUTO-
^ TOTAut
-IMPUESTOS
^ |v 1
^ "
¿ s >
- Vf ?
-
23
^ QAQ í V!T0 \
síguicn ív:
..
visualizar (
^ V. !'. >- ii o i j t r.-t do ;ctí b c’¿ .!
¡ i¿
SALARFO
^
f
BRUTO rn L! <^«TOíi -
i
7 •
TOTALJMPUESTOS
SALARIQ NETO /
/ .
1 l nV!
-
^
i wn*ñ .:; í c 1:1 '
.
'
.
.
.
.
fin
5.
- r
« .
. : v>
Ii
* r
\
v
iV ,l
>
. - *.
. * i *¿
.. . '
.
»!
>**
tivUSStfi
•
'
--
-
•
-
•
Pseudocódigo
> •
r
í ll ! / ; t Mu * tT I . >
í > v a í > r. f w * t/ ; ! f
r « , v»
"Í J ÍíI
•
EO J L' : \t JO * ( T / ,^ * • ! J . ó,;
f :* > rr?o ¡ :
1. inicio . * í V í J f :( n i
, í i j. !‘i i J ;d
2. Establecer CONTADOR a 1. ü b *
í
*
fln_ m± entras ’ , . f
5. Visualizar SUMA.
6. fin.
^oirjnirrr n* ¿LVHF i\ ?!> c# rinit lo i' .Lní rori no? o
Este algoritmo se representa por el diagrama de flujo 2.8 .
Diagrama de flujo 2.8
IOi - !-
• " IT. -
-
. WI .I i ', ,- o omlriojls 3Jt9 9b 0(. í fl 9b t íí HMil io fl!
( inicio )
\ y 91 n\uTVjV, ut*.mTASÜ(i
! !1 * <
70 CONTADOR
V
1
OiO Í ni )
*
v
p
1 obiftevnoo srl 02 :
| staemsivaiq
*
"
l lioLibctni \
soft/ ni n nsSUMA 0 V 7 Isíol oqmeii \
1
*
*
N:t
^ mientras
CONTADOR <=100
*
<TO T
i
3
I
la carrera en 2 horas 25 minutos . Se desea
í 2.3. Un corredor de maratón (distancia = 42, 195 km) ha recorrido
por kil ómetro.
un algoritmo que calcule el tiempo medio en minutos
-- Jt
El an á lisis del problema es el siguiente:
fy y 0
A V<nuu3í *3 '
’ 'X
’
'"T r
«
* -4
o con carácter general, si el tiempo es h horas m minutos
T h * 60 + m
"! ‘ : -b . '. i n i! f ; t 9 i ¡ vr 92 onjjnogls 9Í *3
c inicio
i
- 1
. 3
introducir T se ha convertido
tiempo total T
en minutos previamente
r -
-•
»* .
•
T <= o? no
si
X
••
r
.
i!r » •
escribir
mensaje de error /* * •
'* u ¡
distancia * • ‘i
D <- 42.195
\ Jt)
i
• M
calcular X
T/ D I "
i
.
,j
r
^
- •
vtf }¿
• '
omisioglti nu
•
i' it :' rJ •|,
"*
I
•
f
/ t »; ,
i jT ¡ escribir
resultados ! .<
- . - ‘
‘ >.
•
> nr » - r
« * r irn
r
-
4
;M
«V'Ti al
hi":W
2.4. Definir el algoritmo necesario para intercambiar los valores de dos variables numéricas. j
Análisis ú t 'Xv.vJ .
Para realizar este análisis se utiliza una variable denominada auxiliar que de .modo temporal toma uno de
los valores dados. mugni ni nu M> 3101 ti j juz o sata tob . M : OM fcturrnó t £ l -
Variables: A B AUX imnu > •
\\ \r . \ ~ <\
• • .
lf
/ . . .
• j { •
^
fn tDfiUll!Tílt
.
> B
w í c\vw. * >(Wtn ¡
»
A, J. 4
oioini
%
B 4- AUX , ;
- * J.
*
I c.V - •
rtr AB . .- -
' *
« . ¡as ! V
B segundo valor, f
AUX variable auxiliar. \i f # % • • ..*
» .- » »
4 — •’ ‘i
-
• ulo C I ftl á •
“ <1c
> i
AR Ü 7 JA
* f
\ I ^ ^
V
-V
Pseudocódigo
inicio
leer( A , B )
AUX 4- A
sv o
: x nupe : .
, Lro
m - , -> A 3 HA
-
^r . .. ,
- ,; 1 M U")
:
A 4- B '
: A R A T j A :> A 2 A e . .
.
, j . •
H
"
* J
*
B 4- AUX
escribir ( A, B )
ftoha de Madrid el jifa 23 & agosto de 1987 fu el igu
.tr
u fin > fai
\
Diagrama de flujo 2.10 \
lidiioao
Al HA \ \
^ ^
.
t inicio
1
\ 1I t
f
: i« •
*
t * • 1 •!
» J
leer A, B
. 4 ~-
ué !> M
A U X f- A , r ,, . soir> í:iH 3t 3
, 1
A <- B
í .
1
OJ ' I
B <- A U X ; Mi . ’ O /r . » ',
.! • »( v
.
, £ t í oU 1 , 5.
• ‘1 A
>V
escribir
A, B
Í \' -
1
c fin ) *. \ . , *'
*t
2.5. Escribir un algoritmo para calcular el á rea de un tri á ngulo dada la base y la altura.
»
i liflf í /T .1,1
. . .' • i
• '•
Análisis
.I • j f i ** If <
j*
» ... * c >t
i *
’
A
La fórmula geom^ étrica del á rea o superficie de un tri á ngulo es:
f
T
> ' i
>
i •itu t í :' U - ' i ,' .1
¿“ JA;’ -
- t rol
Se necesita asignar los valores de la base y la altura a variables por ejemplo, BASE y ALTURA, res-
—
pectivamente ; a continuación, calcular el área utilizando la fórmula y asignar los resultados del cálculo
—
a una variable llamada AREA. Supongamos B = 4 . 5 y H = 7.2 .
t r / m ía r ‘ u u\ . t ; v u > v \A V .UVJ I J lAtithn uhiMMiiuvrj A -
. frlr.;•. ,.
»
c
idmtigv ..
inicio
|
¿ ; i i ' Mi ,
)
ou'. rt ::: : !,1 ti u !i; / i - .- MinLr o - / Kriitl ú í c/ l
) ’
,
->
i
O í‘. í 11 ¿
\
)
fin
*
E A. vio
r~-
) -
-— A
I; EJERCICIOS / 1
i >»
XUA
2.1. Deducir los resultados A
que se obtienen del sigiiienii algoritmo:
var entero : y„ y z
inicio \
y §
7 20 V l\ A ,
\
z y 4 y — >
escribir ( •/ , y )
escribir i % )
. i
A -
.1 > V
fin
- •
.
2.2 ¿Qué resultados producirá este algoritmo?
var entero: nx, doble
inicio
NX <r- 25
DOBLE NX * 2
escribir( NX )
escribir( DOBLE )
fin M
‘ - • ‘ . e.
*
* ¿ y* ..
^ ^
4
Á rea = P ( P ~ a )( P ~ b )( p - c )
-
100 dracmas griegas = 88 ,728 pesetas
—
V
) .
ones .
2.16. Desarrollar algoritmos que realicen las siguientes conversi
íacos e imprimir el equivalente en pesetas.
a ) Leer una cantidad en chelines austr
imprimir el equivalente en francos franceses.
b ) Leer una cantidad en dracmas griegos e equivalente en d ólares y en liras italianas.
el
c ) Leer una cantidad en pesetas e imprimir
: *, % t $
/ *V ft i i
. rr tet
c) » nj
* CM >
>
j
a)
> f eei ima cat) iqaq eu qi* r.uia<> Eu :
pcct nil 3 «•«a/IK- fj $» .. - GUV í!( V{ T .
C ¡ • vliu ::!
•
• • •
•
. •'
-
• r .
. - J ~
Ll
-
if# ;
'
I J »p; v i ^ CMIUS
.
* IJ 8 > ‘: : 1 •
j y/juro
= 30 lit 3 ' •
_
'
-si
lOO'qiffcuf • - Suefis •
'
:
'
// •
3*12’ £j r. -njpor : . . \y
f - r. w .\ ir)
5sqs > ) -
j*ff gc qe?c& n e
qovqr \ > =
, r
* « * ? » • - * o - - -;
• ; v. IT
+ < * 3 . V i ’i b u r ( •
.
’
• i o; l .' -
r: ' p' t f niriu . y;-> - - •
j
óó
’ft = b(b - a 0
Ti? Dpqra r
ó ajSiwitiw d cap
'
^ |C
i
Jiif 'f»
. t ouunfa (jc
: "
. . ;
( G' . *ifji. cupcif
J' f
nr j. ' :J ’ ; '
- ' • •
: . •
. - IG . r,0 v\’ (r\&L ( V , i ,';
r i*
•
x , i; Gfjqc u.
«/I fc ^
¡
u e i u y a u' / . or 1
' tiJJpK.
3’ y racupitai/ rjEoufujo 4 »Tfc?i u
• f
3*d C*l - 3 ’ 0 3 - i n - G
• I ¡ Jy #'
‘ ’
. • •
jy 3 :<G
2 * Dctcujjium.6 j
'
J
?'f f in o - j
'
' ’ • •
'
• -* * • -1
-
^
< fK> 'i - '- }
'
TOfcjo
f VL t
3' j .3
'
i
•
r v >
. t .A 3 )
^- '
' '*
rV;* ~: . / T V J - At!. I ' b £4
‘
. •r pJiOKit
l U
^
3
1
1
I
H' J *
f 5 «
1
u
M
< *
," ¡ G CAPITULO
1 .
i 1
I. , q . ' uri:ro i vi ;' . , . '
I M :
M 1 !
A ESTRUCTURA GENERAL
•* > v » \ « Wii
^ * !JlrDE UN PROGRAMA
>
'
* J
T i o i
0 H • v nftioinuqaQ
.j
ni rr
3 «; ; ? v:i
>u cl o! » * ':t oo »( j 13 * J U c u j p H *
’
'
Viikwwso >toooi() nó .ainaiugiznoo toq ,«> wi>vM»ium$trtc\ V> otvitnn liZ
- í
*
CONTENIDO
’ '
' I'9'1 ®* ’
- / ll. u; . £ - (/h r1]t¡z r j) ii n >i t- fi
^.b
3.4. Tipos de instrucciones. ,2 -M nmui ií ©
3.5. Elementos bá sicos de un programa. ;o3ib;) )obu ^ q o
^
3.6. Escritura de algoritmos/programas. wYn V}í \ \ Wvi J. .
ACTIVIDADES DE PROGRAMACIÓN RESUELTAS.
y i< vu
’ ' «'' Vm-ntm; ' u
'' > K\ ,
'
EJERCICIOS.
' * “
.- twrarttwwvjiA » ?.
j
' t >
i
»
\
ab 23(Eugn9l 9tdo2 / 0 j| bEn los capítulos anteriores se hlá ‘visto la forma de ' diseñar algoritmos
para resolver problemas con computadora. En este capítulo se ¡ntroduce'al
lector en el proceso de la programación, que se manifiesta esencialmente
en los programas.
El concepto de programa como un conjunto de instrucciones y sus .
tipos constituye la parte fundamental del capítulo. La descripción de los
• Mijjr . b elementos básicos de programación, que se encontrarán en casi todos los
.
M r ' iV \ Vv
i programas: interruptores, contadores,'totalizadores, etc., junto con las
normas elementales para la escritura de algoritmos y programas, confor-
resto cle capítulo.
oftioo . .. j^.man e
- . C. ibbo ob Ol::r » (n 03 }. • < ' *
sbauq urrungt /tq mi oinomÍBUiq a
^
.
,
üuVivi, II
' ;
- c .
jii
;
" -
.
!» ¡ « . ¡ ¿ IUIU I ¡ r
,
íí > *• i .b
í : ns ( v.» >tn\ > ) i fí!Biyoiq bb . í i íri íi j tul
'
M- I n i
ucrmobniii) . . '
3.1. CONCEPTO DE PROGRAMA r—
arnsigbiR ! j
.n
Un programa de computadora es un conjunto de instrucciones — órdenes dadas a la máquina que
producirán la ejecuci ón de una determinada tarea . En esencia , un programa es un medio para con
-
—
seguir un fin . eitif > QC» q . : u el- . oupoltl
•
. Z . Z niugR
67
D M
I Definición A
del problema O
C N
U T
7 r
M E
>
i ! I ( ' \ V-' Diseñ o del I
> algoritmo E N
v
N I
T M
Codificación - A I
> del programa C E
»
i &
N
V
O T
Depuració n y N O
> verificación
•
diagrama de flujo, áonoioouueni 9 i. :. ooit y enob ? ."t rs! .£.£
» i
^ .
•
diagrama N-S, .a ^ noioouuani sb eoqiT .í . i: -
•
pseudocódigo;
3. codificación del programa;
• i © b eooieód aoJnem 9l 3 3.E
.ssrrGtQO . c .comthogls ob Biu í iioa 3 .b . i
4. depuración y verificación del programa ; , - ... . . . , , .
.
5. documentación; "TJ 3U 23fl MOANIAHOOIW 3Q 330ACir
6. mantenimiento. 01010 ;13 i
°
de este libro; sin embargo,
programación .
•:* .
dedicaremos
apéndices, a las fases 3 4 5 y 6
’ Y ’ aunaue
/ •
.
atencin &
'
°
q é sta *S SOn proPias de
'
^
antenores V son el objetivo fundamental
Pi
del libro véase Capítulo 13) y en los
M»os espec íficos sobre lenguajes de
’ Bl
c¡
^
!
3.2. PARTES CONSTITUTIVAS DE
UN PROGRAMA
Tras la decisión de desarrollar „n
~
/
~
:„ ;:
Conceptualment
^ ^
as del programa
dP
datos en salid (
fbe establecer d conjunto de esped.
)
"
8
el
egra
c - se
d0r
mUeS
0S
á
* °"
Entrada Programa AKO < - *
1
*
* ** '~~
~ -
r nf*
' •» ’
( al
\
* .* 9oritmo de
y. resolución) - ;
v Salida
* ov'A » n \ttvv )
Fi9ura 3 2.
- BloqueSdeun ti l
r
:?>* •
rI V J
programa. ' * +• * V
^
V
.x »
\\ \ * ¡V' i
.
'‘
>
>
i *
‘• .
El programador debe establecer de dónde provienen las entradas al programa. Las entradas, en
cualquier caso, procederán de un dispositivo de entrada teclado, disco,... El proceso de intro- — —
datos , operación de lectura o acción de leer. . m n ni \ ¿ornrnib ma
—
ducir la información de entrada datos en la memoria de la computadora se denomina entrada de— olio , £ sl . atari - -.
Las salidas de datos se deben presentar en dispositivos periféricos de salida: pantalla , impreso-
ras , discos , etc. La operaci ón de salida de datos .. én como escritura
se ‘conoce tambi
. . .. ...
o acció- n de
- O - < 4 4 S *
4 *
‘
escribir.
^ ^
. aJoc CJ ? IV ab oJnua Í3 otaab riern n ó
** it . I
\
'r -
:? Q Í q * r;. > lv .- otnriiri bill..instrucci
instrucci
rJTITjl
¿
ón
ón
1.
2
> : {
n\ / 6 v A i • o n mero •
.
V
. Al : * \ h * VH * VV í lili f
- J . ,*
-
r r
En el caso del algoritmo las instrucciones se suelen conocer como acciones , y se tendr ía:
. un :* entrada.
! U U
.
*
iv r. r orcjiino? i?
— acción 1
. Múir' o-
i
• 4
* *
— . j
t < .
¿o • / 4
. '
wnoluv b ri 'Ji • / .1
• .acci ón 2. J
í . k i l í.dll < ] I b nóíou03(3 ci 3b V.jnA .KTCM
j f '
'
> .
Tolüti'/ i'Uu < •bmnt'j. ív.ubnl ü inarnKitoHq .o • { vi yiip iVidnri ni 'jini loftí v mj ijoíivb « v^vb i¿
. fiU Ü ' Jl 'J jli br i < iA uyifci 'jini \> T. n íbb sup í fdcfi il'jvb <:l 0 ce /
.
.
'
. .
— acción n
P > !' ;
1
s
u,
archiva » V -- ». : f *W ü * - • ! !<;
U. Ci * 1
# vn jfr
* *» » .*.
*
• #
uy » Mjj
’
hx ni ’ acci ón 1 1* •» ' •
*
Á -;:i * ji «. j if
acción 2
o - Aax ' n Load < XJ 3i) O .1. O
i
r Jt d i *
acci ó n n ? jtxv ( :.nnn J'O i . bi ü;y -'
nó iicn i
*. ;
~V
-> í K * bt f í i *
3.4. TIPOS DE INSTRUCCIONES
i
•jo * /
Mili J 4
Las instrucciones disponibles en un lenguaje de programación dependen del tipo de lenguaje. Por
ello, en este apartado estudiaremos las instrucciones acciones básicas que se pueden imple-
mentar de modo general en un algoritmo y que esencialmente soportan todos los lenguajes. Dicho de
—
otro modo, las instrucciones básicas son independientes del lenguaje.
HCÍ iT.
La clasificaci ó n m ás usual, desde el punto de vista anterior, es:
'i3. instrucciones
de lectura,
OQWT3MI 30 8tm Y awqoowreui
4. instrucciones de escritura,
?
: tab w ítaztb b . ;
. , '"I
5 . instrucciones de bifurcación. v
. - 1
.
'
b It‘j u r t w . . .
TJ « i r* , v * u ; . i ' . . / !»
" W> ú o > .. i i
< , . .
;
; ' - x: i q r
. li í « • I. }
•
-
.zanoiofncmno^j in m
í > ' 'j ,
' '
3. AUX i A
:«anob xmeni eatadjuate ; , ( ab nbbuosj > 1 ab obalfijédi I i ; >ilqx3 • > *
4.
5.
A
B
<
< -
— B
AUX V
- *- * CS
í i O'
— OO J *J I *t • •» '
#
« -
-> ‘
i
. Ví i) cibi |
t rj o¿ sbnoL f; Bt/unaoin laB ot íiuq í b niíib¡5 ,is
' ¿ti /tob nataua
H* ¿ 1 ¿ v». \ • 9 . *, #. * , • <
*
' v U•
i1 « . i , v V • • ' 1 uW I1i • 4 » *
* i
HORAS
4
4-
12325
32
I
i
*
J
»
TASA 4- 1200 r
j H
.
b) leer ( A , B , C ) *
t 1 í n óí . os
\
i %
t n
ían a las variables los siguientes valores:
Si se leen del terminal 1 0 0 , 2 0 0 , 3 00 , se asignar
r »
A = 100 I
B = 200
0 no bao
c= .j
300
•1 i
programas '
72 Fundamentos de r . j. tItí i í j \ t O
(salida ) '
J \'J *
resultados
>1J
de escritura de
—
iones
3.4.3.
t
Instrucci r
,
en urdispd ‘ ° guientesa¡nstrucciones:
> V*
Estas instrucciones se
Ex plicar el resultado
escriben
de la ejecución eS| 0 1
sV
A
3.4.4.
n n .v
c <- 300
El desarrollo
«- 100
Instrucciones de bifurcación
lineal de un programa se interrumpe cuando seejecu auna
donde se bifurca, hacia adelante o
y C.
ámLas bifurca-
-
1
:i
«**» ’
iisiluv 'JUSí ?
r
IO íü V
u ; ; r. •
(i
i,
\
va.fno
;
ra;í ‘
i .
Jt .
.
¡ , r,
•
1
"j
i
!
-* - h -
u!
.'a! ' i V
.
H5
*
-
•
* ** J
- \ :•
?,°
« /»
'
^
«
( positivo ) . TOIBV O
iiii i íiv JI
^ of í ji )
t
»
- r ’ « . t
i n s t r u c c i ón 1
instrucci ón 1 rjvin ni dJnuibon ;
Uí - é r. »
li í nt i n s t r u c c i ón 2
instrucci ón 2 ^ r
.fV í; n - Í¡ ib ‘>f> *
L'd• I • ii
. ñí i.ib
i
U C L I1 I
.
1
:
•
did» albifurcaci
0 es
" el nuj0 de Un prograraa pueden realizaree «te un modo incondicional o con
Bifurcaci ón incondicional. la bifurcaci ón cp
"
*
-
.
la instmcción sin necesidad del
H .M :
cumplimiento de ntoguna ón
j pr0 gnma
cZdicl °“ ^^
- •
I (
ítt n« 3l»|s¡| 20)90)1111 Í9ll
,
.
• ' r j
Idisiu / asi i . obsngi
• .
acci ón 1
cr i »4
.; - >
J "
. /'
Ot. ’1
i
'
> •• •
acci ón 2
’* * «
é ¡4 * f . 4
! * i < i jt
> ^ « Ai -VaQl Í d
r ,
bb rmol tv i ?.
acci ó n 3
-
* V , - s
' 1 > *1
C 01 >
*
. •
la
ción. Si se cumple la condición , el flujo sigue ejecutando la acción F2. Si no se cumple, se ejecuta
A i ;J
acción Fi .
23 Í D 5 jS . r .C . E
no ¿condición?
s/
• ! •: /• t JU • r; . lyuol í ü «SV. M <> r vD o *r. ven:» k nu í ty c nU
Vi r
• . ~ i .* V Í i » % • » i < •
i - . M . ,> I« . 4v v
i
^ -’ j
- • •í7T•7i » i;nirm : - .
<
>b crtzm n nu
ü
í ¡> A • \ fj f
acci ón F1
t . > 111 1 ) 7• wn orn ^ incvvrn nu LL i 51 . . . yó n , Ft 2- i. >
acci
j 1.1 fiiobcb
4
. í ft ' »: jiii 'iOj
— — -—
' ; j l
VI ' •*
*
ü\‘) * • MU i. rbm |íno j » >
*
.
— -- up ncoil noQ cnu *3 om¿i u» >om
í> b IEJOI ) tibud lab ubi mvm o cwv \
-
v -A id IJ nt; noli }'/! ‘i r
*
ú up
:?3TiBq ¿ vu ab cJ -,noD ohud n J
’
./
.
- ,.
c
tivamente f ácil . . 3b rnumi c! ¿ítV
que se
.
Los lenguaies
...
T
constructivos ,
nv J cnu rí anlo:)¿2 vi alnenBVji
.
asi
restantes lenguajes ' -.tienen
como
,
reglas para° las que
•
vi ir. •
esos
elementos> básicos
elementos
r i oI n - ' i , '¿ i
se combi - •
'
—
nan . Estas reglas se denominan sintaxis del lenguaje. Solamente las instrucciones sintácticamente
correctas pueden ser interpretadas por la computadora y los programa que contengan errores de sin-
taxis son rechazados por la m áquina. . J
Los elementos básicos constitutivos de un programa o algoritmo son:
.
'
V ¿
palabras reservadas ( inicio, fin, si - entonces ..
, •
etc. ),
• identificado res ( nombres de variables esencialmente), j -
•
• caracteres especiales (coma, ap- óstrofo, etc1 .), ,M
'
constantes, *
variables, V \
H
A
-U jl
(O \ '
, expresiones \
instrucciones. : tt
i V
I ^ ——
cuya° comprensi:óx ~n y funcionamiento sera vital para el correcto diseño de un algoritmo y natural-
mente la codificación del programa. i
Estos elementos son:
bucles, lw
i • \
; .V i .
\ AMUY
1
\\ .. >
I
,4
t
contadores, -L - í — A k S .i
i
acumuladores, > : * í . *
L .
interruptores,
estructuras: minimi - ’'¡ty IX nuipn
—— secuenciales,
selectivas,
— -
repetitivas. ii \ 1 ; «J ,i »vi ; . Cjitot -v .
r
1 lk
‘V
t
t»
3.5 .1 . Bucles
O Í\
instrucciones /
• .
c
' jfv • . r : . •:}< _ * »• iÚ ! . 1 Í Ul /'. j . lllir
•
V.
JUJI m m.
•
. ' i JU í
‘ •inicio ' ’ .-i boi
K '
i ;' - !(¡* ’ !!
’q
¡ • i
y • • ; • .í -
b n no -' m
)y i
stnin « r.
í Ll
o~
lU
-
b t ío • '¡vjt : ;<i >
’ i . n} nom*»fo zoj
SUMA i ' . oio tul ' v v.'.u’i rví v u UYtt\
s .* 1 * J
t > 11 j i ;
0 .
n\nt\ a
’ Mil.
• i .
.:
' ) 1> ? ‘V\ vAuYlí\\ V!ViVÜ *
Hl ' ' ' uno )
i
°
jlUUtWr •
leer N A ó muv / * .
* /•tV Vr*: v \i. . - '
< v .y I
.rjn« ú nmi í.m *
i »
Bucle
-
' %
’
. , oh ¿femobA
•
SUMA + N i )¡
• 1t?\1 ¡
^ : 0‘' ú njiqmou
i
’ /
c •;IJV
- .rrnKi I - ¡\ > I
•f ir
: noiui; V.\ OlUOttt
•
v
•
escribir
il : l \ f
- » tiV3í ll
^í J f Oí / *
ri
SUMA (3) A A *
' '
'vvvtV nV v . , * > #
V
iAx A AAVVUXU \\ *'
L \
1
Este término se traduce tambi
én, a veces , por
lazo o ciclo.
\
\ ?. \ nv \ VMr\ U*
’ i \\
> *
isVvf —
Scanned with CamScanner
Estructura general de un programa 75
El diagrama de flujo escrito en pseudocódig
o» es: * i «
j oi:rn ?
r
inicio »
SUMA <- 0
_
_ !
1 : leer ( N ) I |
J
i /X IIVJVUü
si N = 0 entonces »
i
escribir ( SUMA ) J í l
ir_a fin
i
si _no
SUMA <- SUMA + N
fin_si «•
i
j
i
ir _a 1
fin i 5\ ^V ) \ ) r \
T
»
inicio
)
1
—
_
•4
L:±l i
SUMA O
.- L
i
>
ntt nil .*
leer N yuii: a&VáuB o olno \br.aqeb ú z \
- z\j3
• . b u> o 0
'
* ' . A: • > \
t :
< £ iu íí
¿
«
^
r / .< 94r>ud eb eoq íT .S.C utupH
si
» rnphc \* N=0 i
• i
re ;! >/
Ó: .s .r f•;
Cu * « tv
no ‘ . «i .• •
s
' ’
¿ * .. n «
i ,’ f
í
' /U
' '/ Ó ^
* ;
/
-*y_s
'
*
escribir /
riiyi ¡; . r
i i 1
. ;
' i - !I
'
£ i’
• ir * [ MJ ifilounoj ’J b < ; if í >
SUMA + Ñ SUMA
/ T rn ü n
IULJMOO m > ti 1
.
».
i
>. k
>
í K Ií JV pi r/,
f í U £ 5:; nt»
O t •
v: -iip
* oni!i
J
;
-r
-
<
5 Mji íi .
. t
• ".
V: *
.
c11 - ,
fin
.
D
üU
Jioi
rí q >
*
no!>c 1
.. i;
"
i;¡ .
,
nlJ
í f
¿
h¡: j
o!) r> J
J L - i;* f -y l i 'Á «n i t > I »C l b i f *I M í: > f .f . K í :/ : * 1
Bucles anidados . . v. \\ v »? r» \ tViirir ‘Oh;
v ‘I; ; ir : :
) ’ ; í’• {
* , . . ‘ f
. í
En un algoritmo pueden existir varios bucles. Los bucles pueden ser anidados o independientes.
i
. . , . . . . . * . . •
Los bucles son anidados cuando está n dispuestos de tal modo que unos son interiores a
otros; los bucles son independientes cuando son externos unos a otros (Figura 3.5).
\i f
J I « r. J .. IJV. H. í O - • y ,M I Mii í itiaJ u? t ¡ • .> < m ¡ na .« usa
\
\
bucle A •k
-
l \
bucle B t
( )\ n\ ;
>
bucle C 0 ir / Uo
A*' .
i
‘•t
fin fin
fin s
dLño,
\
- \
^J ^^
Bucles anidados
^
Bucles independientes
r» . \ / [
i
malmente contar los sucesos o acciones internas del bucle, como pueden ser los elementos de un
fichero, el nú mero de iteraciones a realizar por el bucle, etc. Una forma de controlar un bucle es
m p Hiantp un
mediante
. rnntarlnr.
un contador ’ %
inicio
CONT <- 1 l 7
, «
*|
no
cuerpo del
bucle
*
iv
i
c *
fin
Ejemplo 3.1 I
)
Un a<ját ;
. - t ú t so
’
AJ n'.' ji ) l . roj ' ( > „
(
V -i ;
.|
inicio
i
' Ji '- ' -
-
•
. : jt¡
•
. .’ * / 1 : '0 i A.
. i f. ' '.
. VS
í
.
"
- 1
.
1
M. ;
~
1 . 1: y\
‘j -A < - Uf ; . ‘i ’ -
)7 i¡ • . ,
i . •
.. ,
\ • »
. O / 14- 1 -J i
i . r
fUMl IV i. * j 'jú p
'
i .
o1v i a 1**
t - •-
s/ z ,11 J I # OI
* . »r
» I > 50? >
i
—
/
I • O r j .<
no .i
i <— i + 1
78 Fundamentos
\
;
\
i
¡rucio
f -
<*
|| •
leer
m, n .*
/
I r e olqrno[o
- Vi í V '
\ Vu
r» %\ V umi W»\n *s¿ «zwfiv tm - V > ouf¡n \> W BA
Ví U uozoh u -
I
V iXi IVskVyt‘\
,£!ura UCe 0 t1
°
IV
Ejemplo 3 . 2
Y,
»tni •
I vt eup
:
*
.
"
,
^ r )
Para realizar estas operaciones es usual poner en todos los archivos una ficha denominada fin de
fichero o de archivo (FF), que se sit úa al final del archivo, con lo cual cuando se lee el archivo y se
encuentra esta ficha (FF) se sabe que se ha alcanzado el final del archivo.
El algor i tmo en lenguaje natural ser ía:
.i
1. inicio *
..
i
\
i
2. C 0
3. leer ( ficha) s.
4. s i ( FF ) i r a ( 8 )_ SOc ^ ; < n
•
u :
—
(
5. C < C + 1
i
6. escribir ( ficha)
7. _
i r ar ( 3 )
i v , \ \
I
l .
8. escribir (C ) * • •
‘ •
I .
l V
9. fin ü : : , ZJ * yw
C‘
»
i
r * i -.. v
t
1 I
I
l
*
t
t
ner
Scanned with CamScan
Estructura general de un programa 79
c inicio OI ó IHI
Cf- 0 '< ! ; V -
fi
leer ficha • .Vi ÜÍ'
! i »
—
*
r?
s/ Vi
¿FF? f • # * O
» ^
/1 *
*
- W ^ C/
i
no
V'
-*
C 4— C 4 1 * * '*' / escribir C
on J fin
«ai
\ v
.
/ •\|VlUt/ A >
i
_ i
t
( fill
3.5.3. Acumulador ¿ (
Un acumulador o totalizador es una variable cuya misión es almacenar cantidades variables resú l
'
de que el
tantes de sumas sucesivas. Realiza la misma función que un contador, con la diferencia
caso del con-
incremento o decremento de cada suma es variable' en lugar de constante, como en el
.
,
tador. .nói mis o nóú bsb A > tsnuvjin\¿‘j wsií iiu nscbb («marig
Se representa por la instrucción S . S +: i N; [donde N es una variable y [no una constante.
- *
.oJnuq olü jni .' ntatsb nn » i/í uou /lid O / .uó bibnov »
¿
Ejemplo 3.3
J
Sumar los primeros K números enteros. El algoritmo correspondiente es:
1. inicio on ' 15
[ noiaibnoo
2. leer ( K ) r 1
3.
4.
N 4
—
SUMA
0
-
4 0 .. . .
.
i
•é *
I
5.
6.
N 4
—
SUMA
N + 1
4- SUMA + N
rr; p ;
_
n fil íeos
^
7. si N = K, ir a ( 9 )
8- _
ir a ( 5 ) .
- • •
' • , • ; ! : ; Í3 i U .
*37
inicio
M < 11 M t )
0 ü
leer K _ .i
N <- N + 1 r TT .
SUMA «- vlis
i
SUMA + N i
j on
f H
\
\\
J . íi
¿N K?
SI
J
"
i
no t
— c—
J
I údno; • /
. \ I;
/
6 rf; y escribir
• - SUMA
_J
fin )
i ü bsh » muoA XXX
3.5.4. Decisión o selección . PI - v.
• '
- . ¡m v.m - "> 11
- .
.
. <>
,
ib . -. - xwn' j ,
'
•
.
'
, £. S 0 l Cf í r -
<v
' '
. . . ..
.
ZW \ * > ' M. vn \
' V\ Y. : TV }h; <. ¡ \
r. < > V "
1
'
Si
condición ? no otzint .
*
acci ó n Fl
— i
acción F2 »
En el caso anterior, se
es verdadera, se ejecuta tiene una instrucción w
la acción SI , y
si la ondició condSes
n es T ? d°sePejecuta
falsa °sibles lacaminos ,
S
ó»
: si la condict
acción S2. Es posible
I
Scanned with CamScanner
Estructura general de un programa 81
también
tamoieu realizar diferentes
uucremes acciones para el caso
,es* se
dición ofreciese cinco posibles solucione c*. "teniativas múltiples. En el caso de que la con-
’ ^presentar
ía como
W \ IV i U MI .
r‘ » i >?,
i
»*, / n » i i . \
n ni » * * *
r i
condici ó n ? (5 ) tint í n . i: !
.
rI .* .i
i¿ n * iA I . »» • intit 11
- »
^« »
( 2) Ao
( 3)
(4) j
' •L l ' J J j
acción S1 acción S2 | acción S3 acción S4 acción S5
vi
3.5.5. Interruptores
'
o wp
‘-V
i
=1 ,
rt
s w? =0
i %
n¡
r I
acción F1 h,
r acción F2
*• f VVt
í
r -» Wií
)
I
i
\
y
SUMA 4- 0 r »
,1 .-4 i -
v \ \
A i
\ M oqmoc s
t . > M i l
leer N
»
N o
escribir
no .- /n /'> .»
^
SUMA
. i! M « A SUMA
í
*
' •
SUMA + N
C fin
) luego se ha de
Los interruptores - SW- se suelen inicializar a un valor determinado ( 0 o 1 y
modificar su valor alternativamente a medida que se leen las fichas impares y pares. De este modo,
cuando SW = 0 , se leerá n las fichas impares y cuando SW = 1, se leerá n las fichas pares.
inicio
.i
i
I
i-
-r 8 -nolooe
j© no i.<í ilOti VC,
' ÍC no * ;: •
-—
. V > V\ n ú lo ii .tuuuvo o UVUYRTVJUú IJ J
(\ ' . .
ülifMiy ; - » ;ip . i : rw/o ‘' )!
‘V © "
y
. : . s.otvjvib wtriol obouq 9Up sídaru /
*
!
ficha
m!
1
> / ? •
'
•i -. fi o\ yitimó
r,‘‘ ú nu
n
- ut
jb itoiafirmolni ifioimimoa
id& $Q) .0 i )Jí ,•
ultima s/
ficha .
N
no x fin
—
1
21 nrhh
*
5/ n ó bofí
SW 1
I
u§ f
4
f; V » • V
L i 1.1 » » v‘ j ?. 3 . vvr ta y , 12 norooe ti u ryj \ y w , [ u U .uui W 2 i¿
' <rj
SW <- 1 o í a »;SW
*- 0
\
escribir .U ¡r -es •
escribir 1
/
campo M campo N /“
11 v ?:d V
r©
W
u - !/! 'S
>
Ejemplo 3.5
- ,
\ ^ V
i.
‘• MU
"
, I
“
A
A */- ‘'
»
•
•
— • • -
. " •' ** ’ *a -
.si la convicio
T 4
1 i oo:
í ——
f> ' i
1
í <
>v (
v
i i íirrtr
.
"• •
. . . ‘ .. •
• • '
; •
r ‘
'
• ?c .: . ' , V
•
k
inicio j
* » u » • J.'ou /njtnq | * o r:ino!í¡ ;, VJ ¡\ vru o í u .
f ' ! ' ' iV . r ?¡ on lr •;;!<; m * ob : vv vv í . . - . -
nming® bit olpaiatif i Irw b . TTTTI , t jrwloal u?. aup OUp oborn ob y • 1
ib bU f ' ü ' VLí Ií; o ;; l \ . > i Í A í Oobi ! r ntpX r / i , ; ! . ooirriJtao $ IB ojfiugnol b • m^n í n ; r . : «Nnsuxil
'
^
if íC] ;otííH* r. . vivoib -JUH igcnq ab fíuan 3i (AÍT> olhoffp ¿Bnunaoro zol ab BDíSóI BI éinoupoi otní h
TAI*
<C
mvicM mi y
I < = 1000? 3>
^
umcnn Ai w
t ^
fTÍ Tiiu :?9lnonoqfnoo íob st íiBJenooorninoalB nU
AV.rt 'rr.
c)2:l .ólbi \ io% Lr. i i í Í!
'
} fi í flOO ' A f t -
s/ 1
'
^
í
nÓ ÍO O f i cm; < 0 m. y yvym. At smoofoo cJ
d¿ vi . ( -JV- ito' / oirt ó no '7 leer i
r / '
fin
'
Y ¡nfctee oidsiaq
.
1
-
m vomio
.
•
/ ; / ' Vj ir L> \ V
• \' S > . -. . V * V- 13
S »
r'
:A> ndirio í t n v ? ó ijp
. ¿• < , st
‘| | ^ , i , i mVui : i iTsm l'J; '
?J» 1
^ ^
'
< »i i .
"
.
iioii óq : Xy r:u \'SJY, ::á nó* \ Aburt4 ' fa
^
’
n > ó Ai ] f ; Y\
^
•
ii oljniiuo « i :: í ! ¡ '
Ejemplo 3.6 n
J|^ -
'
om.l .i ^ cn í A |
Calcular la suma de los números de 1 a 1000.
ilO Í T ' f or»
•> **
• 1
JO ?.
La suma se realiza con totalizador o acumulador S, que irá realizando las sucesivas sumas
-parciales, 1, 1 + 2 , 1 + 2 + 3 , 1 + 2 + 3 + 4 , etc. Para ello se inicializa la variable del suma-
—
f
' i ? « -f - « «* .'
- - •í » ¿ H •A 4 > J» t J i* . t V* I
--
•
_
/
, ¡ : b ícipgf jup rbin r ! ndd®q Bl noo : ; 3Jnoil nor (í TiO j 3iri, non o íol^ roíl
.
) '
^
- -.
*
t
O'
S <- 0
1 i) ’
1
pÜ +l
- 0 . C í ir á n' .. .- .w v\ ¿Vil *
cail la
/. -'
esí^d á bisv sb nob&'cboO .S.9 X
0% t%
¡
r* j • •
, • ? " '
' MV V
I <- 1
— .’ t
í .
• v' ’'
v ' ' '
X ‘ *
. f.v. iiitu
i "
i '.í i ; iii+ ' > n + i vi^ - 1 Ig3 íoqil .!> • obnaortioagea y oid í non- . .-
.BHK . . . . iddcrj í,í noo
_ 7
-.
iisv
< 1000
no
* J escribir
.. .
S
< > V , r 'i /T lo ono i , i i Vmi b ' ai .)
'
K
'
)
7 .
“ XXJV
si i IkilAV * 2* 1i < J
l,
-
u r * (? í r.IF i .! ; N
* 2 k\ ll : !w - tu . *
S <— S + I
rr; > r> r. ; a X 4 : ? •
*'
•; í
• '
i • « >
-
lf l + 1 ri , . b ü )2 i! « n ú ó slqni ía oldshfiv BniM u 3V1 i4v+\ «bao obnob
i
t
.
“ v .wvAwy ) rjif :! {t
r . ::
¿
? í » j vL
. j .: 'í JKV.
/
S¿L
ALGORITMOS/ PROGRAMAS
3 6 ESCRITURA DE ion debe ser lo más
clara posi -
La escritura de un algoritmoque su lectura facilitó consme
entendimiento del algoritmo
estructurada, de modo
ble y un lenguajes1 i pmgram
y su posterior codificación en escritos en lenguaj a programas. En nuestro del algo-
libro uti -
Los algoritmos deben ser ^ ^
ódigo, y la estmctura
llzaremos esencialmente el
lenguaje a gon " '
|
programas escritos en el
nseudoc
“ ‘“
a ue programaci
¡e de
lenguaje p s ,,
ón estructurado; por
ritmo requerirá la lógica de los
de programa y un bloque algoritmo
ejemuú alaoTmo
0
constará de dos componentes
ón
: una
simple
cabecera
que comienza con la palabra
algoritmo. Esta
La cabecera de programa es una acci
palabra estará seguida por el nombre asignado
al programa completo.
algoritmo es el resto del programa y consta de dos componentes o secciones: las
El bloque
acciones de declaración y las acciones ejecutables. que tengan nombres. Las accio -
Las declaraciones definen o declaran las variables y constantes
ejecutables son las acciones que posteriormente deberá realizar la computaci
ón cuando el algo-
nes
ritmo convertido en programa se ejecute.
8.£ o í arrití|3
Algoritmo
cabecera del programa
secci ón de declaraci ó n
- , A ¿'
- VilZ i ;’
>'
secci ón de acciones
c + \
VAMIr
‘
1 J / \* * Jí
^ UV: 5 L ti
Í '
10 ¿ L í iM:
‘
t, í , lobcM Í Blot nr > v e?. üfriu? f;J
3.6.1. Cabecera del programa o algoritmo ’
. : ü - . . : ? !! ? . lobíi’ MOO te V 0130 6 TOO
Todos los algoritmos y programas deben comenzar con una
cabecera en la que se exprese el identi-
ficador o nombre correspondiente con la palabra reservada que
programación, la palabra reservada suele ser program
señale el lenguaje. En los lenguajes de
. En algoritmia se denomina algoritmo.
algoritmo DEM01 T_
i
o z >
var
2 i i .i n n n o w ..
.
_ .• "
ooo f
^
»> I
-\
tioo-1
tipo 1:
• ,
lista de variables 1
tipo -2: lista de variables- .
I
-2
: -n: .
tipo
sicoVSro!
i
de datos bá
UgT Í ^ nÍ 3S Por comaS Y
r
Por ejemplo, la sección de declaración de variables u >i C/a!
s i! . .
'
< i .v , rnl
r l .
! • ( * / ; v* > f f i r;
>
11 j i I
#
i
I i ;í i
var
loj
^ f 4
\ i . í ,, ,
real : Horas
real : Impuesto
real : Salario
. ( ft n í uhrjj, > >
u / vi. i ’ i ; o:: ii oJMini ' il í
o de modo equivalente
orno:> j< 1
I
« i 1,‘ ,i¿ ¿ 01 / ¡ tr/ ? j;nr J I , r
var _
^
entera : Numero - Empleado
%T
o i j] í . - l n: . .
real : Horas, Impuesto , Salario
rj i id Juj 1 • i; v; ?:;n í r v» » ; un ! / ? J M! I O > ¡ ,V / J
r V f
declara que sólo las tres variables Hora, Impuesto y Salario son de tipo real .
Es una buena práctica de programaci ón utilizar nombres de variables significativos que sugie -
ran lo que ellas representan, ya que eso hará más fácil y legible el programa .
Tambi én es buena práctica incluir breves comentarios que indiquen cómo se utiliza la variable.
var tfrraJxoy ccnsini n i &(tu rq nu sb nófocín^minobaJ
entera: Numero_ empleado / / numero de empleado, TJ í . . ^ :r ; i ; oJ > rr j t •
; OfTWOOb üJ
•
4
Impuesto
Salario
’ dir
nbV
*
1
'
r
'
/ / impuesto a pagar,
,
/ /; cantidad
.
4
^ *
ganada
d ' /ji
- c / ^
Ví?
¡
w T
, ,
\ t i n Ȓ i o r *>1*
i M .' 1
— *
o r' jtwi' jní oti í:OO :
.ru- / r:ovn O í
t*
tama ñ o = 43
horas = 6.50
* . • * > t 4 *
const l
o
estrella = ' * '
frase = * 12 de octubre '
mensaje = ' Hola mi nene ' XAH í 'HO i
Las variables de caracteres se declaran de dos modos:
*
» a ; ' M í . > . •! ? ! ' )
rl ¡ - 111 4i .
iun : -J Í > itlKAf i ndt J , J t ¡ Vin i J y , :n í
1 . Almacenar un solo carácter.
var cará cter; nombre, inicial , nota , letra
t
V. V. • ) V> t • ’ v \\ Á *\ * . i
% \
* t !I « I ,
FORTRAN
PASCAL .7 /\U ) A
(* )
. { »
¿ tiiobnut rf . cn ' ú n
' , ; .
*
:) ,- r.í l onp
• ' . -;
O !;
¿ bien: * . ^} j >
1 ; *
-
r ; r i x u n&t f ú >s ^ o zaloud *ol na £iih;jní;2 ¡nqrnate Tfixi í ií U .£
.ni 3 7 oi oinJ:
ornoj IB f cbi í .cnungmcj /
{ }
v p filar:'4 ( 3
( * autor J .R. Mackoy * )
{subrutina ordenaci ón} •. r « : r. .Ti í
r
> U f "i L r }
i •'
ÓU
\
MODULA-2
•*
b, - ,d , .
. f' : íL #
o i r, f ni
Los comentarios se encierran entre los símbolos (O « i . i ; t .n i l
*' Si f * #
(* *) K f‘ í i. ¡ *
¿ . . . . unao-i ri » > ia *
i idt 'iTintt
C -
; fr >
'
[ .6 ;
M oeoii
¿
' )
O í: ir
^ -
w
C+ +
í J 3^US á ?rWOIDAWAfiOCn-í í dO 83
¿
/ / Esto rj LWJR * r * <% . -- % • * # ¿*
- *
r. . .- . ‘ .' i .i • r V- *
, i
/ /sección de declaraciones .i d
var tipo de datos: lista de identificadores i
!
A
V
. 1
> .' i,
" í‘< ' '
« sentencia Sn >
fin
NOTAS:
án en una
n de consta ntes y variab les las omitiremos o se describir
1 . En ocasiones, la declaraci ó
s funciones .
tabla de variables que hace sus mismaán entre comillas simples.
ar
2. Las cadenas de caracteres se encerr o en aquellas instrucciones que proporcionen legibi -
3. Utilizar siempre sangr ías en los bucles
y fin.
lidad al programa , como inicio
Ejemplo 3.7
algoritmo raíces o
//resuelve una ecuación de 2 grado '
tlw i
inicio
leer { a , b, c)
D f b A 2 - 4 * a * c
- t
si D < 0 entonces '
escribir ('raíces complejas )
si-no COI
-
l *
si D 0 entonces
=
> * i; . íón/dnpíp
escrib ir ( -b/2*a)
si-no
escribir((-b-raiz2( D ) )/(2*a)) u
escribir(( -b+raiz2( D ))/( 2*a ))
4 4J
fin-si
fin-si
fin oldof » ¿;I i n -'ol v!) ¿ L\ K'.TiobL
‘
t
• I
:TU OS
lo siguiente:
n> • H ¡i il lab ogie! oí A ' KÍ OV . .
3.1. Determinar la cantidad total a pagar por una llamada telefónica , teniendo en cuenta
-r i , i
llamada que dure menos de tres minutos (cinco pasos ) tiene un coste de 10 pesetas,
• minuto adicional a partir de los tres primeros es un paso de contador y cuesta 5 pesetas .
toda
•
cada
.
. .» - vifco í ; omtiicgto ?.tb eb oi ítaS B.í
f .S
^'
*
•
Análisis
n i i r»
'
- > .*•
.
El algoritmo de resoluc
;ión del problema-entraña los siguientesi .'pasos
'
:
-
‘:?:r r r.‘ • . - Yr
.
éúncá' f tcp Obi ?
í
; , jv:q Á fct-,
" • .
- h
’
•í .
' ~r i «.
1. Xn Í C Í O. • , <
=
il
: siexce1asn ae 2 ii;s % ;
5 „ Ue estos porten 5 Te\os
16 SUman 10 pesetas se obtendrá el
preciVtotal ^ 36
*
ni »
Variables
»
©
inicio
n
leer
NPASOS
mal^ |
**»
S\
v
j
v
.ó
Ü
TI Ü MOcí O no * .
r\ r\
v LO
_ {
' b IfiUQ Í hacer z'' 1
FACT <- 10
N <- NPASOS-5 v ^ !
'
!
;i
' i
I
I
i 4i '
L
N>0
r
— s
c/
\
»
iu
- % !O i*: '
i
.
hacer
f C '*• O 7 .i
lC1« . i
i FACT 4- FACT + N * 5
»
\A * H ~> ri
no 1A ! ,1 n A t « m • » i ." *
,>
.on
1
P i? » v ^
-JOV íít ri oiamuiA
; ' 4 , vruií ©
- .* — t ú ? OiLC r ^ -
. v\ .T
r .- » * - *•
^ .
í
be
i
’1
’ i ti CC J escribir
I NPASOS ¡/ on J
FACT i- t „r '
\?,
I
i
fin v©, y i i ( dnost?
_
t
noo ut íemR '
i
ii o I
i
i
.
' ncvi í isoq
3.2. Escribir un algoritmo que calcule el producto de los n primeros números naturales .
Análisis ¡ r¡ )
El problema puede calcular el producto N * ( N 1 ) * ( N - 2 ) * . . . * 3 * 2 * 1, que en
términos matemáticos se le conoce con el nombre de FACTORIAL de N .
—
El algoritmo que resuelve el problema será el siguiente : umVdr.v W' < H .
. .
1
2
3
4
.
.
.
Leer N
Caso de que N
-
0 , visualizar “ Factorial de 0 igual 1 M
Comprobar que N > 0 ( los n ú meros negativos no se
V -
consideran ) ,
Hacer l a variable P que va a contener el p r o d u c t o r
.
- c .- tl í W: r;
igual a 1 ,
w
Scanned with CamScanner
90 Fundamentos de programación
/ Vu \ * «; ir> /
5. Realizar el producto p ,,= P * N.
w = 1 , y de modo
hasta llegar a N
Disminuir en una unidad sucesivamente
simultaneo los productos P * N.
.
6. Visualizar P.
7. Fin. I .
• •
inicio
\ r;
leer
N
> ..
r
N 0 - SI
.
/ • ,r r ~
• ,
-> 202,
no .r x*
* C.r I
no escribir
N>0 ' Factorial de 0
: ‘f >i r igual a 1_!_—
s¡ ' - * I - )A
a ogAgM -> n I
p <- i ^ v
10 • r.r!
T M.
escribir
- -
• *.
P <- P * N
U<M >
üJnj, -
no . ’- .
rsl 1
S
Y s/
escribir '
' Prueba con escribir
positivos' 'Factorial = '
P
vi* fif: u t f n . * } }
fin
J
; > 1 Uiiu )V ] ‘
l’seudocódigo
’ * «' * « > )Hi , , vi vi
algoritmo . . ; t ;J \ *"
Factoríaj I ‘ 51 •
«
*! , 4 S í» n
var
ont
^ ro í H
real * p
Scanned with
CamScanner
Estructura general de un programa 91
inicio
leer í N ) » - \
si N = 0 entonces
escribir( ’ Factorial de 0 igual a l')
si _ no
si N 0 entonces
> f
P <- 1
1: P f- P * N . i
N <— N - 1 ,»
fli N = 1 entonces
escribir( ’ Factorial = p)
si _ no íj
ir_ a 1
fin_ si
_
si no
•nnr VV
'
-
escribir á ’ Numero negativo ’ )
escribir( ' Pruebe con positivos ' )
fin_ si -<
_
•
0 v <j
fin si
fin
V•*
?
3.3. Diseñar el diagrama de flujo para resolver una ecuaci ón de segundo grado Ax2 + Bx + C = 0
Análisis 7 .
r a .t
La ecuaci ón de segundo grado es Ax 2
+ Bx + C = 0 y las soluciones o raíces de la ecuación son:
- B + ^JB 2 - 4 A C - B + 4B2 - A A C
XI =
2A
I
X 2=
\
v AS\
2A
< u 8-)
FX
SXy
——
Para que la ecuaci ón de segundo grado tenga solución es preciso que el discriminante sea mayor o igual
t
que 0. ( u:
El discriminante de una ecuaci ó n de segundo grado es:
D = B: - 4 AC
f . 1 -:f » !
:r • > •
v. . I -W S O P • ' : i
Por consiguiente, si
, *
'
.
'V.Ú Vrv í
D = 0 XI = - B /2A X2 = - B/ 2A
. !
•1
1. Inicio.
2. Introducir los coeficientes A , B y C.
3. Calculo del discriminante D = B; 4AC.
4. Comprobar el valor de D:
-
• si D es menor que 0, visualizar un mensaje de error ,
• si D es igual a 0 , se obtienen dos raices iguales XI
• si D es mayor que 0, se calculan las dos raices = X2
XI X2
y
= -B /
Pin del algoritmo.
• • •
inicio on . i
.o
.
leer • i
A t Bt C r
& xc
mensaje
hacer de error •* -»
-
4
D = B2 4AC o *r I e
. t'
í
4 i
- -* **
'
IT 4. I
s/
D<0 ic nx ü
ni :
no
•» i . t
t i y > ;/. » ! !/j iwivi'! . ?„>
s/ i
D 0
SuYú /rJ .
no
escribir b r«
rv flOi ( -B/2A
r
' /•
*• »
r V
J íí\f
,
- i*
= 17
XI =
X2 =
(-B + D)/2A
(-B - D)/2A
* r
í\
-
_. „ . á, . n». . 11
, • rj I oí; o - muyo* l' b Í IÓÍ ¿:J ; J J M llfp í 1 ¿ .
l ¡; jjyf O !< / i >
- .0 t/ .
fin 4 /
t : fW - *
•
!. pontuoo nnu o& oín; nunh '- u. o -
mayor de ellos.
3.4. Escribir un algoritmo que acepte tres n úmeros enteros e imprima el
^
Análisis \ L .\
El diseño del algoritmo requiere de una serie de comparaciones sucesivas. Las operaciones sucesiv
las siguientes: _ A'y. uunv -. vw .‘ r . -
1. Inicio.
2. Introducir los tres números A # B , C.
3. Comparar A y B:
• si A es menor que B:
- comparar B y C: ,
^
• si B es mayor que C, el mayor es B,
• si B es menor que C , el mayor es C. .*
• si A es mayor que B:
- • si A es
comparar A y C: *
menor que C , el mayor es C ,
• si A es mayor que C , el mayor
es A.
inicio
; l i’iriM VJik >
.. -1 • , *
.
i . *
* >
T
;
s/ no
escribir \
A<B B < C
\ B J
no s/
no
A<C
si
escribirr \
©
escribir \ i
A V
«
fin
EJERCICIOS
. 3.1. Se desea calcular independiente la suma de los n ú meros pares e impares comprendidos entre 1 y 200.
3.2. Leer una serie de n ú meros distintos de cero (el ú ltimo n ú mero de la serie es -99) y obtener el n ú mero
mayor. Como resultado se debe visualizar el n ú mero mayor y un mensaje de indicación de n ú mero nega-
tivo, caso de que se haya leído un n ú mero negativo.
3.3. Calcular y visualizar la suma y el producto de los n ú meros pares comprendidos entre 20 y 400, ambos
inclusive.
-3.4. Leei 500 n ú meros enteros y obtener cu á ntos son positivos.
^
> • ,
3.5. Se trata de escribir el algoritmo que permita emitir la factura correspondiente a una compra de un artículo
determinado, del que se adquieren una o varias unidades. El IVA a aplicar es del 15 por 100 y si el pre
cio bruto ( precio venta más IVA ) es mayor de 50.000 pesetas, se debe realizar
-
un descuento del 5
por 100/
3.6. Calcular la suma de los cuadrados de los cien primeros n ú meros
naturales.
.
3.7 Sumar los n ú meros pares del 2 al 100 e imprimir su valor
- .
6.8 Sumar diez n ú meros introducidos por teclado.
3.9. Calcular la media de cincuenta n ú meros e imprimir su
..
resultado.
.
3.10 Calcular los N primeros m ú ltiplos de 4 (4 inclusive), donde
N es un valor e introducido por teclado.
. BIS/
ar Un 8rama 9 ue permita realizar un contador e
’ ’ , ^'^
3.12 Dados diez n ú meros enteros, visualizar la suma
imprimir los cien primeros n ú meros enteros.
de los n ú meros pares de la lista, cu á ntos n ú meros
pares existen y cu á l es la media aritmé tica de los n ú
meros impares.
v» i w * » L* .
i
i'
r>
M V r _.
< 1
'
I fc* f
'
i
! SIX
i
\o ¿ . ’ndfr;:,i.v \ u
i
ay
T - io’r \
* q? r < . -
. n aol nircubc . n y at;jl:Qr»c • - o n3
1ÍÍ9Q 01 í 4
,
L ri ,:jGqf> > - Os V. VJV »
^ ~r Tiootniarn < nos . vririr
* ;r. P -
¡ \" J 6 n * i>
^ >;: 90 . » . L ;ds; OJ -
j
¡:
í tr - o » c ..
*
MVJQVJ y aonc fibienc
ol : ot JU / O 'J
'« nu
PIILV: t . r
•
.i 4
- f» nS ' Í 2 fii n:
*
vO - SS ' S - S - '’ 9 b iGli < s MO t. S j* r f . ‘S ‘iibljj»
'
CAPÍTULO
. 1J
’1
*
. :
I Bb üO í '4 or
. rbóoc
. i
; ; j v i
.. .
.
INTRODUCCION A LA PROGRAMACION
ESTRUCTURADA
T r n¿r n# - n p ¿ .
y\
* ^ ^ ~ > .5 f.. .U
•!
A
k * * *
•' : * t
*
* r tZj V », '
*.,/ r- l \J li Í „} i , <
* K *
. . ,
/>luni >0' :¿ioír¡li¿ i » 5nu s;njl .1O í;?>{í / ) b r , . , > •' / r. r
. ;!
:inq< »q ! ’ u i n,i n ' >rü
* . •
h *.
/
-
'¡ rru - - NUV í >' orvi i:
• Vy . lú 'lü .Vr. lobBl/w/FTi - crxrr? noi ut
'
•
oqU otif ; * .
? , '
^
fiiscjbi: . » : " flíi . i r. " ! . ' « íK
'
í : - .íí J /¡;- ; • f i o r . -v : >
• i¡ , ;RRJ .
ánt íl L, 'j / ulil MO . ; / norlJob ,
- moa n 5oiq ai ;q .
'Jrn: ;¡i¿ o;!>i[oí qritív r : jfilburri y üfi , iptyj *;b ¿ansídoiq >L ; < ; hulo ' ;;i
. ¿
*
C f l J ,£. • : n o: , , fl ',v y. : -„ ) J jidinabivncrj OTl . 'TtUi, stu
•
*
i •
« . Jli •
:•! > ; b «. 'q
CONTENIDO r nj . '
Técnicas de programación. .
!
4.1. ' • '
4.2. Programación modular.
4.3. Programación estructurada * 1 1 si . . "" ' ' .
" i.
< 11 4.4.
- Estructura secuencial. •
1
t
EJERCICIOS. -: il ’ s i( 1 >lkx •
;
. v '- sk
., Ü / S ' - isi .
' 1
. - -.
•
^
• « '
y
»> f
. • J "
'
1
> • t
•»
•v i» » ¡ ¡ ' *
• •
j s . i.
. J .Sií
vi' S
* M •
1 j
- ; rxr¿iwf cuu
O . .* i
•
ni ¿ .¿?. l ‘ •
.. .
.
-
. ’ I » !'
'• ' í
1. secuenciales
2 . repetitivas ,
, ,
. i, : , i ¡ >
-
3. selección.
i
o i
- o > , i / :> ; r, t.u r. - n / n i v / - i b - w y i j
95
. i
la
La programación modular es uno de los métodos de diseño más flexibles y potentes para mejorar
productividad de un programa. En programaci ó n modular, el programa se divide en módulos (partes
independientes ), cada una de las cuales ejecuta una ú nica actividad o tarea y se codifican indepen -
dientemente de otros módulos. Cada uno de estos módulos se analizan , codifican y ponen a punto
por separado.
Cada programa contiene un módulo denominado programa principal que controla todo lo que
sucede; se transfiere el control a submodulos ( posteriormente se denominará n subprogramas), de
modo que ellos puedan ejecutar sus funciones; sin embargo, cada submódulo devuelve el control al
módulo principal cuando se haya completado su tarea . Si la tarea asignada a cada submódulo es
demasiado compleja, éste deberá romperse en otros módulos má s peque ñ os. El proceso sucesivo de
subdivisi ó n de módulos contin ú a hasta que cada módulo tenga solamente una tarea específica que
ejecutar. Esta tarea puede ser entrada , salida , manipulación de datos , control de otros módulos o
alguna combinación de éstos . Un módulo puede transferir temporalmente (bifurcación ) el control a
otro m ódulo; sin embargo, cada m ódulo debe devolver el control al m ódulo del cual se recibe ori-
ginalmente el control.
Los módulos son independientes en el sentido en el que ning ú n módulo puede tener acceso direc-
to a cualquier otro m ódulo, con excepci ón del módulo al que llama y sus propios submódulos. Sin
embargo, los resultados producidos por un m ódulo pueden ser utilizados por cualquier otro módulo
cuando se transfiera a ellos el control .
¡*
. y- \. -> \ 3- 1 'f .
Mó dulo 1 Mó dulo 2 Módulo 3 Mó dulo 4 ^
. .. ;
_
^ / iif rrn v o .
J y !• '
' .. r \ LLLi u
v '
« ji ii .
M ó dulo 12 M ó dulo 31 Módulo 41 Mó- dulo 42
Módulo 11 I.
• •
• i J u J
* >
. ’/ocnq sb nri
i <*
*
- •
oVttWnwJ»?.
• V *
*
l
Módulo 21 Módulo 22 >b ció i aeiqi : r
I gói t
nóbouifónl -
r ¡ CIIIIK 1« omoloH ;¡ i o
Módulo 221 Mó dulo 222
trabajar simultá-
Dado que los módulos son independientes , diferentes programadores pueden del algoritmo
neamente en diferentes partes del mismo programa. Esto reducirá el tiempo
del diseño
radicalmente sin afec-
y posterior codificación del programa. Además, un módulo se puede modificar
tar a otros módulos , incluso sin alterar su funci ón principal .
se conoce también
La descomposición de un programa en módulos independientes más simples
módulo con indepen-
como el método de «divide y vencerás» (divide and conquer ) . Se diseña cada llegará hasta la descom-
dencia de los demás y siguiendo un método ascendente o descendente se
posición final del problema en módulos en forma jerárquica . í ir . fj c : fe i • rrv . ió - j
- •
- '
.
•
, :U- íj í U '. ’
I ; ir *.
>. s*5
• .
'
iu i..r
tamaño de un módulo.
Una dificultad en la programaci ón modular reside en la determinación del
Aunque no exista una regla fija que permita definir el tamaño está
ndar del módulo, una buena apro-
de instrucciones ).
ximación es considerar módulos del tamaño f ísico de una página 30 o 40 l íneas de este tamaño,
(
a en módulos
Evidentemente no siempre se conseguirá descomponer un problem . < ; ,
pero el programador deberá realizar esfuerzos para su diseño . , '
iadamen te no hay
Puede no ser claro lo que debe incluirse dentro de un módulo . Desgrac
,
será dema-
reglas, pero tal como se ha dicho antes , un módulo de una o dos l íneas probablemente
grandes de 30 o m ás l íneas pro-
siado corto y será mejor incorporarlo en otro módulo; los módulos as ,
bablemente ejecutarán tareas múltiples y se deberán romper en unidades más pequeñ .
Ejemplo 4.1 T t y
bluboV i»
Se desea diseñar un algoritmo que realice las siguientes tareas:
i
i
*
t
Scanned with CamScanner
\
ón
98 Fundamentos de programaci
, de modo que exista un
módulo principal o de
descomponer en módulos
Este programa se puede
control y diferentes submódulos
.
. !i j i) i
»
!
M ódulo principal :
».
« impresi ón de cabeceras
JL
subm ódulo
• Llamada a
de datos».
Llamada a submódulo « procesoón de totales».
' rbut
p
t * vf
..
Submódulo proceso de datos;
;o
>
• Lecturaóden dedatos.. *
!
t -y , r í; ; •» •
? .- £*- • * '* Hit ftrr> óf ? J! -v
• Impresi
Ejecuci cálculos
ón detallada de líneas.
, t
,
pfíVi
.
r ’ • • i i
'
*
;
,
: •
'
‘ •
'
1
• • l »i í ' !T ; nófosmi n . i :; , .
4- 2.2. Implementacion dG los mó dulos :,¡ bn ¡
¿ ¿ iu / *
i ,
'
La programación modular se implementa utilizando módulos que toman diferentes nombres, seg ú n
T
f . í> olqinc;!
Mó dulo
principal : f
> t «A v i . vnj v’v * ) í\\í i > ; > *>V .
-
'V
*
‘ - J
1 1 •
•) ’ i • V!í{ rui •i
M ódulo de M ó dulo de
impresión Mó dulo de -vi ;
proceso de
de cabecera impresi ó n J «•
datos de totales
J
. Ó Cj i
Figura 4.2. Estructura modular simple. u& , ¡
lww « iiiq.,ii ¿
1U 'v . 9
» s *• *“ ' ***
.*
' *' * * ' * * • •• » «I 'M .
.
I
W/
.- "
*
<
" i '* “
' *
*
' I ri i I * - - • - -• •
'
• estructuras b á sicas .
t ’
¡5' nu ovio fio
^ cnl^orrrob rnicsooLl v fnrfc H . 9 l c am n3 ) ?
La programación estructurada se auxilia de los recursos abstractos en lugar de los recursos concretos
de que se dispone (un determinado lenguaje de programación).
Descomponer un programa en té rminos de recursos abstractos — según Dijkstra— consiste en
descomponer una determinada acción compleja en función de un número de acciones más simples,
capaces de ser ejecutadas por una computadora y que constituirán sus instrucciones.
; voTj knjnoo í/usq ¿ til < > Bí> í I í>: Sí U :;\ í b -. rí ns ub oinuq ' \m nu oo ? oq *»
" . .
/ , i y - i ; r ,-
4.3.2. Diseño descendente ( top-down )
•
- : l itttt9 BI abaab tonunes nsf •
. rjowL r ¡ . |
éfxa * <
.
El diseño descendente ( top- down ) es el proceso mediante el cual un problema se descompone en una
serie de niveles o pasos sucesivos de refinamiento ( stepwise ) . La metodología descendente consis-
te en efectuar una relación entre las sucesivas etapas de estructuración, de modo que se relacionen
¿
unas con otras mediante entradas y salidas de información. Es décir, se descompone 1 problema en
órquicas, de modo que se puede considerar cada estructura desde dos punte
etapas o estructuras jet
de vista qué hace y cómo lo hace . - forma
.-
-
.
,
. se consideran de la :.
Si se considera un nivel n de refinamiento , las estructuras siguiente
El diseño descendente se puede ver en la Figura 4.4. , ahg |
i C (W tt krj
^ ^^
.
a
YS
r no í o r '•4
V
— '
V 4
.
S IH
.
.
* 7>
* nooiii j
iI V . -.7
J " v/ i i
'
A35 i 0ijef
- r .i ñ A íir
1 * *
¿\ f*„ » »v
r
i
. ' P7': i
.. •
,
i •
i .<.
l
‘, i I 1 í
» •«
<• .
, t »
v ; .’ v : >.í M! : * ' - l- r/ l I
básicais
4.3.3. Teorema de la programaci ón estructurada: estructuras
puede ser escnto utili-
En mayo de 1966 Bohm y Jacopini demostraron que un programa propio
zando solamente tres tipos de estructuras de control: . . " ; £V! .i . - 4
•
—
posee un solo punto de entrada y uno de salida o fin para control del programa,
• existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas
partes del programa, "•
-
• todas las instrucciones son ejecutables y no existen lazos o bucles infinitos (sin fin).
rr: - ’ fcJ . ;'V
• " •• • • / ‘- .
•
‘ ;•'
• •
. i : > , fjjyj
- • • t ,
- *
9(192
^
4.4. ESTRUCTURA . ji.' ? ‘, I¡\ í/; r :j «;' . i i * n * ; isi/ Joi .lo
'
••
fj'J al
SECUENCIAL , n0
. ,
i v •*
I
La estructura secuencial es aqu élla en la que una acción (instrucción) sigue a otra en
!f :
'
^ 'b i* i hora •
- ' ito mi? cnu
secuencia Las
tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as
hasta el final del proceso. La Figura 4.5 representa una estructura secuencial. La
í sucesivamente
cial tiene una entrada y una salida. Su representación gráfica se muestra estructura secuen-
en las Figuras 4 5 4 6 y 4 7
\
t i
>
. .
I
4 \
li i m b
acci ó n 1
i
1
ir » ’
I
1 I
» I
I
acci ó n 2 I ¡
A I
f \
acci ó n n > r rzh u ! y\/ ¡ y¡
FACULTADOE . *
, ,
NSST
UBUOTECA
4'5' Es ruc ura secuencial
- 8‘-
’
1
1
i
\ Y * ft * Vi r
'
acción 1
acción 1 otnifii
• i
V
A \/
f
X -
Y — >aal
s:
- V íÜi ü ^v A
i TO
*'
1
•
"iidhoeg
— —\
1
<
inicios \
< accionl >
i
i
V • t
fs /
\ : • limb H ) Sy . _J
y. ni i
I
fin
.
< í ACH\ 'jb O '.MV VW n?> ni \n\ ’AvctMt onaisw, noiv/ ilm aVi tAvew
Ejemplo 4.2 otoñé ob\»uz V» witifyvJV -.V .¿p .*v\ •
. W) ,V o\wim \ '¿h moA w\ & orovj
r 'i ,
Lalculo J
de
, J
la suma y producto
, ,
de dos números .
' ><w\ ZGÍlMKynt
Pseudocódigo •."
*
_ O • ) O i l f, J
rs* O [ < • •! ro * \
< fc Tor( o r V/ O iq , <: r. :od » o ? c; . « * n ) i * t
'
—
*
1 ;
**
. -
r. IC ' I 4 o í:r i i^ o i if *, f r j
inicio
leer ( A ) . T 4-J r í. j x TA . * {J £ . 0 . z * y i j r* r. i
leer ( B ) 0 2 . üq n í
^ -
• • u ¿ Y - Y ;Y I . r . 4 O . a j í /: i . & - .^
—-
S < A + B
P « A * B
'
-
'
^
• <
' • •
V lv
3.14
«
escribir ( S , P )
fin
I
r»
Diagrama de flujo
• •
inicio
leer
A
eer
i
i
B
S i— A + B t ;, n ,
S A*B
; rni * &> >J /? : rr ; fi - 3 •• /nogFI
escribir
S, P
i
fin
nri -í
Ejemplo 4.3 A;
- .
•
too t u eb op 5 ob « j¿>* í
*
O swr ? *
Se trata de calcular el salario neto de un trabajador en función del número de horas trabajadas,
precio de la hora de trabajo y, considerando unos descuentos fijos, el sueldo bruto en concepto de
impuestos ( 20 por 100 ).
/ < >Vi VVí n'' - vu\ « o\ v ) - . .
Pseudocódigo 1
/V '
¡
:
i . <¡ J
‘
h" j; c; . /
jr ; ;: -3 - >3/ j -j2!J
inicio
//calculo salario neto
_
leer(nombre, horas , precio hora) _ _
_ - —-
salario bruto 4 horas * precio hora
impuestos 4 0.20 * salario
__ _
bruto
__ Ol J ¿XI ¿
s
*
/: - cí
' 'í
nil
Diagrama de flujo
AVSTOa .í jP. 2AF.U70UI¿ TZ 2 X X
fíh KJl » ¡ v Ir. r ..W- :
» «J
-
i
inicio (BfTTK ! ffí JOB' ftm J
*r
"j < v . 3
ttil H' •
• • •
*
: t2 6H J J 5ü p sbfi OÜq n K
1 jqnoy
; ni V - ; • M r .. . l * ‘í w • .21» . . 'f .i - ’ f _
~ i
* ’, t • / < ' < w . . .
/n :í ' fj
- b ftf r ; V
.
ofio •
•
*
. i f’ '
*
- '
'
‘ i /r. ’ \ (
7 ; . i . : i'xnuloin l ' • !
leer *. r•» *
* ••
V - A '
• •
/ NOMBRE, HORAS
PRECIO_HORA
/
*
// íb n O O
.
y.. •' / r
y : f;. í rjoS .
• ¡ .
<; I B T l< ; ; : • •
rió , rx xf o •>& . o rr ; {3 .3 .5 }
*
:n 'J v ¡jyir ! y it!}
í . vn;?v r>n< « oí, i;
t
.
"
y ilt r, 5 . -
. < - olqiilarn
fj
IMPUESTOS 4-
0.20 * SALARIO_BRUTO 1
' s -: * ’ ’'
T - í e '- H a -" ‘• •' To - i , > •
n: •
no| oh i¡ /rtcnrrortii .
- { ;
«jnunmv _ onu i VJ ^
cn?¡ y. / -' r
/} -y i? ¡f. o f! r
, • <o i11 ; ’ Vjs
. ! - ..vn- ' j / L ¡ ' - j ' " . -/'
noi
íibnó
fijj ^ ;ó
•
f / fl / ?
.
íiüií i7: ci no mn
^oum o.': ofqny«
( tinoj > th¿escr b r.;;ns '. id
IO_BRUTO
'
NOMBRE, SALAR
¡¡
- ' rtí : - ?oooijj
^rtOHariooi it í
— SALARIO NETO —
iv>
>
i
t r Aftbpi urj' p i
. n
’ A*- - • Y •• r < noio ? ??r Cio . >
1
I
í
r C fin ) I
t
uvrí.y.'n'.ov .*
i nuirJOB I
88 no * 00.» - J I.
i
1
I ma N-S
Diagra * m nrn tmm •*«
»
f
* 4<w
I >IW >>
— ^ >
7
<
- W> .
- AY -íUt > ‘ • • -S -
•• j\ .U 4 > . 1
' \ \ .. l j i f \Yi r \
- - 1> ‘ i, H i
t
leer
• : •á so;» o p.?» ‘
t\i
y : I®
nombre, horas , precio '
1
r/_ > Vt .» f >
i
iio c!? r¿ e»
^ salariojoruto <- horas * precio An a l J
totf - t u v ¿¿ñu* .
í
'
impuestos <- 0.20 * salario bruto y Vir/t ' *
^
'
^ t
1
t escribir _
u. nombre,' salario _ bruto , salario neto
,r .i- • ¡ry, > ío ,* > r . I*
'
» • -
r ~ « n;>u- ?0Ln%:3 ^ íVV í^S í
——
4.5. ESTRUCTURAS SELECTIVAS
.
dad uando algontm
^ ^ ^ w^ ^
ealment n
-
ene ^
La especificación formal de
atgoritmos
descripción más complicada que
una is a s ‘ ¡ó n de una determina
^ condición.
da
sírr;
luac
»*
“ paM _
si entonces . si no con una figura ), geomé trica en forma de rombo o bten con un
ángulo en el interior de una caja rectangular.
tri
Las estructuras selectivas o alternativas pueden ser
:
• simples,
• dobles, .
• múltiples
)
4.5.1. Alternativa simple (si -entonces / if -then)i
La estructura alternativa simple si - entonces (en inglés, if -then o bien IF -THEN)ejecuta
una determinada acción cuando se cumple una determinada condición. La selección si -entonces
evalúa la condición y
• si la condición es verdadera, entonces ejecuta la acción SI (o acciones caso de ser SI una
acción compuesta y constar de varias acciones) ,
• si la condición es falsa, entonces no hacer nada.
Las representaciones gráficas de la estructura condicional simple se
muestran en la Figura 4.8.
O)
C)
condició n ¿condición?
verdadera falsa
falsa
verdadera
acciones acci ó n
r
b) Pseudocódigo en castellano
si <condicion >
Pseudocódigo en castellano
entonces
< accion Sl> SI ( a c c i ón
compuesta )
fin_ ai 81 < cond -¿ cion > entonces
< a c c i ón S l l >
Pseudocódigo en inglés < accion S 12
>
i£ <c
°ndicion >
< accion si >
then
endif < acci ón
I
Sln>
' pseudocódig0; c)
diagrama N-S.
if -then-else) i .l
4.5.2. Alternativa doble (si -entonces-si _no /
o; » .* •- . .
•
u: . n i;
¿condición?
verdadera falsa
-!<
^ condic¡ón? > -
^^ n r>no 3 no V - is: »
.*
— . ¿ - V v
'\t
i
acción SI accion S2 acción S 7 acción S2
on _ i8
S» a
n
4 07 T19
r . »
V ) . —; * '
• .írX - L< • > * * •-*.*
c
‘
^
;®
t
r i
nr. * / « « r
¡ i -> e b ~ :
: b) li<Ü & Mk#
i
a)
*
f - .- () • • <Ñ l . ,- ,
v
’’ v ’ ' Ti _ » < „f . *
*‘ 1 C
s
Pseudocodigo en castellano
#
Pseudocódigo en castellano • n ti
si <condicion> entonces
‘ (S I acci ón compuesta )
• « ! si * < condicion> entonces
<accion Sl >
1 <
g.£ olqfflS :
?
si_ _no * r : . <accionSll >
<accion S12>
acci ón S 2>
i.u mí v < í< \ vwwau í >V> VVA:V/ im \ i A.- vAv - nuvm I . AVV A -nAvnW
< '
.
fin~si
• r: * r : • '
. • ill .» : • • ' ’ . ’ 1 ‘
!
Pseudocódigo en inglés
. i
<acci ón S 2n>
i Ú hv íS
^ if <condicion> then
<accion SI
si_ _no
<a
•
a c c i o n S2 i > . .
..
f £»
- -
n
.. . .
“T
..
i /
<accion S 22>
« «. > lVr ¿;
else *
Wí ' inq ¡o Bosu6S9(ífi9?¿ obubsl Iti IOCJ ¿ojub 3b cbtnlfo B! üibnoqu¿ o • um'jldoiq L nH
f ' BÍ Ifelu jffi'J 616S.. W - 0« 13 i I 3Un » 0 .O / ilag OIMTtbl
¿»
t . / > ii n n '
;» • Hr
^- I ! -A v, . » u : lab tlV '' j í !
•
c)
. fí .J ULMflAV
Obsérvese que en el pseudocódigo las acciones que dependen de entonces y si _no están
indentadas ( sangradas) en relaci ó n con las palabras si y f in_ si; este procedimiento aumenta la
legibilidad de la estructura y es el medio más id ó neo para representar algoritmos.
grado.
Resolución de una ecuación de primer
datos, y las posibl es soluciones s o n: . t:. 3. >.
Si la ecuación es ax + b = 0, a y b son los
; ,‘fc
«solución indeterminada»
a= 0 b = 0 entonces
Ot '/J ’ ’ VJ[9 Ur mñmmvtfriZ
» «
á:
El algoritmo correspondiente ser
algoritmo RESOL1
*
var
real: a, b, x c •
on le .
u \ Q \ Du ; r :/ y
inicio
leer í a, b )
,s r 5 5 ICV
I ^
si a < > 0 entonces r* !
x <— - b / a 1
non
u•J
Ic now.;:
escribir( x ) Ve i ^ " *
i L
— — T~ .
si _ no i
si b < > 0 entonces
escribir ( 'soluci ón imposible 'T
W - THBN)
si_ no .4 V r .
\
I 1 #%
.
/
fin_ si
fin
.
• AIV; /.u:» ’ V » 4 »¡.\Yt‘41ú > » ‘i é\ Ott »\WV¿ srj : . 1
v’ ííSSOTWISrl 1 ^
/
¿ torzorí no < n xa
t
Ejemplo 4.5
f %
Or
i
^ ^ ^^ ^ ^
n úmero n tiv M^ nS T cakuK. 1 1 introduzca el Prinier
” aritm
” ética^ *
n úmeros se han introducido hasta llegar a -99 - na
’ P Ci
*utlllzará un contadse necesita saber cuántos
lavará la
ontadoorr C que llevar
cuenta del n úmero de datos introducidos ° Se mip
VARIABLES:
s ( suma ): real
n (contador de números): entera
m (media): real
i : U í .NM M .t * fin a
1 P
> .*' - LA.
t* • prjv
:* M
*
M i * ifJ i‘
( /(1
'
algoritmo Media
inicio i\ > ;: .
s < 0
n < 0
-- //
inicializacion de s y n , d' •; t ¿
l ;
*
ni
? v ;v *
VJt !
iUt'rl '.r > K; ! •,
T
i
t i*
datos: i . ,
*
V .1 ; i
leer( x ) / /calculo el primer numero ha de ser mayor que cero
si x < 0 entonces
ir_a media * Y* •*
.
si_no i
n4 n + 1 -
s 4 s + x
—
ir_a datos
i ? I rr i'
fin_si
3G J Ü v JIJO
*
1 . 13
media: .
—
m 4 s/n / /media de los números positivos
escribir(m)
• vi
fin ; X . 6. * -
, r Y 7 «.
i -
^
1; ¿ ili
En este ejemplo se observa una bifurcaci ón hacia un punto referenciado por una etiqueta alfa
-
numérica denominada(media)y otro punto referenciado por(datos) .
Trate el alumno de simplificar este algoritmo de modo que sólo contenga un punto de bifurca-
IB
ción . t
C ~í II
rr i f
( [ t l *
l a n i*
Ejemplo 4.6 .
« 41 *I - «i
cuyo trabajo
Se desea obtener la nómina semanal — salario neto— de los empleados de una empresa1.1
C ~
se paga por horas y del modo siguiente:
, * ill .
las horas inferiores o iguales a 35 horas (normales) se pagan a una tarifa determinada que
se
debe introducir por teclado al igual que el número de horas y el nombre del trabaja
las horas superiores a 35 se pagarán como extras al precio de 1.5 horas normales,
dor ’
^
los impuestos a deducir a los trabajadores varían en función de su sueldo mensual:
— sueldo <= 20.000, libre de impuestos ,
nsj
Análisis
1I .1
i
1? w
* <
.•
» ;;>J : ,¡
. <
sm JK. i ; * ¿r I
> or -
v w
1. Inicio.
2. Leer nombre , horas
. .
trabaja das , tarifa. -
* *•
- *: »«
(
__
4. Calculo de impuestos
si salario bruto < = 20.000 , entonces impuestos = 0 *
si salario bruto < = 35.000 entonce s
_
.
-
impuestos = (salario bruto - 20.000) * 0.20 ,
_
si salario bruto > 35.000 entonces _
impuestos = (salario bruto 35.000) * 0.30 + < 15. -
'‘ 000 * 0.20)
_
5. Calcul o del salari
_o _ neto:
salario neto = salario bruto - impuestos.
_
6. Fin.
var
cadena: nombre
real: horas, impuestos , sbruto, sneto
inicio t.
Ieer(nombre , horas, tarifa) ni *
.si horas < = 35 entonces
sbruto <r- horas * tarifa A 1
ai _ no !. . i».
iir!ÍV,
sbruto <r- 35 * tarifa + (horas - 35 ) * 1.5 * tarifa
fin_si
(
ÍS ; B í sbruto ' < = 20;000 entonces ¡ tt 'O'/í N i finü BWUHdo 3 OÍqíTTOjo *»J2‘ o3 - *
!
'
*
•
impuestos <- o i • .
8i
¡° ehniM
¡
>qobsijíioialsi OJíHK{ cUo y; < fe .cbfc ) «bfinimonafo fjDhbmun
mlhos ÍB SíA'J ’
iBuBiíq n
- ,
^ ai onrauifi Í 3 3JBIT
'
si (sbruto
( . y (, .
nnn )
20.000
•
'
/ )
> sbruto < = 35.000) entonces
impuestos (sbruto - 20.000) * 0.20 .H
si _no
impuestos ( 15.000 * 0.20 )
•-
fin_si
+ ( sbruto - 35.000 ) * 0.30
fin si a. o!qr(¡i,¡
.
- sneto <- sbruto - impuestos a l b l l «hull
— • . . .. .“ '" . , ,: ^
scriMrtnombre. sbruto . impuestos , neto ) ' t j i/
'
fin
1 9Jií!(ii> i
’
tj iK
" ' •
' 1 • >» •>
' ' Mi V ¿VjAOl\
•
& q<< :.
-
JV
diagrama NS o
'
-Í—
rinicio i > ? ob
,. .. ~
,u ,
¿ -,J, Itrji
inicin '
"‘ 1i
'
' V / ii' ,,
AJ / V i ,f ¡. ;
“,
•
^. .
i jCJilr. ’,‘iiOf í ?£ Í
leer nombre, horas, tarifas
f
- -
* f •. •
pit » « .i
* >
•
i
°f »i - > Ob
- • fiOqOWK'T" JaoiugteÍ0?i//J2 —
horas < = 35
^ ¡ t \ luq { £ fo
í
^ ^7 ^
s/
no
ío
—
*»»**
sbruto f- horas * tarifa sbruto 35 * tarifa +
lhoras-35) *
15 * tarifa
,J
sbruto < = 20.000
' '
í; aanobííiüao ¿í. I
si / » i
no .o
sbruto > 20.000 y . c
i
>
i ,
' i v V !.1 '
-
sbruto < = 35.000 '
'^puestos *- o ,
SI c i •«
-- .(
- -______JJsbruto-20.000
no
— mPuestos - f
)*
—
o 20
Apuestos
15.000 * 0.20 +
®to 000) * o.30
^
r — . >&
! i
*
"J
~ r’ ‘ *'<
-
T5 C
ij:
---£ *
.
V. J -T' I
-
I j a r..
f’
"
^J
’ C:
•
'
1
'' ¡n¡c¡0 '• .
uv ircV , ' ; jy « > * » . >? v. uVMmy ' ,
.
‘- /
ewrtr pk» . 'i S
r (
1/;
;: O
- i r
r: r '
:
' 'r
*
1/.
'
1 /
-
\ niiv n
leer NOMBRE * -* t\ :
C: V : • HORAS, TARIFA
I
* v
f ! ' oiemur: J* ‘
lit * í ir r
*; :
t
* «
' . »i«U
< a ;i
* '• » . I
¡ ’
A .V • • •
, ;: 1; MI . i
. . .J J 'SMi'T.t i > ‘ •' * - • »
o lo í J ir si
HORAS
no n¡ > " > % ;/ i / ‘¿farola
< 35 K
. . - ,
U r<
SBRUTO <-
Vil i•
I I1 ; - V. .* 'i
!Deni ’S
ni 2
SBRUTO
HORAS * TARIFA 35 * TARIFA + ( HORAS
- 35 ) * 1.5 * TARIFA
i
¡o l
8.£ c!qrnéi3
>.
! .u',i.ovt\’\ OH. .
twvv i' i» yt. -ir.HpVwJt» mr » \ Dvh2 )i (AUtitnUla . ^
SI no
I SBRUTO <= 20.000 o ? v:> iz - £ liOTalü
s
l
1AV i
: 019 JH9
IMPUESTOS <- 0 si no cioini
* SBRUTO <= 35.000 i
(o.Ir ¿ ir.al
v-s
O «K • - <
A ' N O 0 <> TN/ I
üs i e i d ’
"
oft £ i
* ° IMPUESTOS
••
1
2 IMPUESTOS <- ° • »
(
í ( SBRUTO - 20.000
,
) 15.000 * 0.20 + -if i
<
: 03 E 0 Mid es ( oa; yofi ñ ( SBRUTO 2- 35.000) 0.30
»*
.
* 0.20 .
- i
i
\
flinch'.roer
NOMBRE, SBRUTO ¿
: Í 63‘
T 5V
-
i IMPUESTOS, SNETO
olein ¿
I * * *1
'
i1
:> 4
4«
C )
i
cf JOWL (3 %
í
*
O.
fin d * » -> q »
( o < q > Y (d < q ) Y i f i *
^ \ (D
q) * (d - q) #
(G -
q ) * qí S’s i t í
^
- » GO > T. tdl on»
^
Ií: f * f. - i
í ’ olbBhfcVt i
. í: J *
en
.c,. _ r> > i • *•
i{ A ^ ¿:
r Otf din fe! n r »>,‘
, '
.<
. 1
var
real : n 3 Flc; MOH .\
inicio ,
\ /v1lflA í 3 AH OH '
,
leer( n )
si n = trunc(n) entonces fra a . \
~
T
*
-
V v
iA
&:;ü V!
si no ’
H- V 2I *S>
í
:escribir ; ÜW
_
fin si
( El año t, año, • no es
^
1
*
u bisiesto
-—
fin
T t
T" y
Ejemplo 4.9
- OT3UI 8
\ 0TU!)fi;;^,M8,Vl0n\
*
^»
real : a, b, c, p, area
inicio
t
escribir é Deme los lados •)
ieer( a, b, c )
P *«- ( a + b + cC ) / 2
-X.
! ni!
si (P > a ) y ( p > b) y ,
CriPirt :
area 4- raiz2 ( p * ( D _
<P - *> / ent°nces
, ,
^
fin
^si"
.
_no
-
eacrihl r
«IMrCNo
i
es un tcian3ulol )
* (< P
- b ) •* (B. c )
p
— —
Con frecuencia en la práctica , es necesario que existan más de dos elecciones posibles ( por
ejemplo, en la resolución de la ecuación de segundo grado existen tres posibles alternativas o
caminos a seguir, segú n que el discriminante sea negativo, nulo o positivo). Este problema, como se
verá más adelante, se podr ía resolver por estructuras alternativas simples o dobles, anidadas o en
cascada; sin embargo, este método si el nú mero de alternativas es grande puede plantear serios pro-
blemas de escritura del algoritmo y naturalmente de legibilidad.
r - - La estructura de decisión múltiple evaluará una expresión que podrá tomar n valores distintos, 1,
2, 3, 4, n. Seg ú n que elija uno de estos valores en la condición,’ se realizará una de las n ácciones,
o lo qtie es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles:' J
g ‘ r
»•
* * ~1
^rfH
-
*
segun_sea e x p r e s iion
ón ( E ) hacer
. loilp i r\
opcion G de
i
í: ¡ (>
caso_de E hacer
byiiíyjoV im' .
acci ón S2 b
i , . -. p:
t'. vrqvi - ^olqtiljjrn r?o ¿ :
•
V 'í - irv , . o
• ; tú
>u ?.ac! . v V .
;
I
>v '
*J
; Jtt rCS C<
cu.® en :, , acci ón S 31
lo noiee' jcpce
. fin _hacer
Uto nolis . * y j
tv ... „ rr .
acci ón S32
' % >: r i , i
Modelo 5 ( simplificado ) :
acci ón S 3 p ; noirV o
¿Cu: si-no: acciion
ón Sx e pUCttecoatov-. si
\
« i
Bi E es n i hacer
.!
ualvl iffW
í
fin_segun '
i 1 :
vcrros í:CIV> H• !. C ran < x« i v / . .
' *
v, "
6
w
•
i -
¿¿ 9.
.
•. ecAjerié ' ; * •
*
«
» 1
í . :: » nu u •
> r
;¿i¿nnoi
g i»
v. ’
d
^
f u
"
j i i j s n q "ó
1u h 3 1 n E ^
t tbboobuoacj^ñ5-5i itItim nóizbsb t> b BiuíotnJ a cj
b omf » ?.Vu \mY¿ , 319 ve 13 KMloiXM «sit»2 *ob í wihu .^ .
I
h
v« ' t
-
.20) i;miol J í I ?oloboiri ?a!uoiijnilj -
nombres sí? ¡os días < k u sa *Ui \
'
- . ;
.
*
fin según
. -- -
— ^
o ¡ i • O' :
•
:
— . Ü rü¿ •^
‘Rgura 4,10 — —.
u í' n /; - MO ) . jze alobioluv
"
i . ;q aup pawi
•
<
a±. ^
Fundamentos de programación
y i
112
•
•;
1
i ••
*
v .*
.* . .
- VJ > MTI < > • '
Í 191 * l > V « Mi
( » / ->
/
condición
II *
ni <
<\
Í, U 3 ‘ r. nfr no
tor i ' ln > i
i :i í
. - i [ . olqimp
ri i * Mi Ai - i
#
(
KJ 3* il - j u\ : vjf
¡\ \ «i >. . i» fob -
-
ob > y¡
- Ii
3
r
*í
-
« t
i 4 h r obOJ m
^
rr .
^nr ? 4
• . . . ( ; IV
:
L '
/ , .
J , , v nrrMhosJ /: bb cti.Jnoo or
» ' : 4 tn j íd
.
r
f
-i
¿4tJlbm n6 ¿i - ' •• •
nu c
—*
,
1 ^
acci
"r
ón J
t
- *acci
*
S1
ón \ - acción
S2
r/ ‘ . /
í T; J
acció n
S3 n
S4
•
^
i i b ^ Sn
Ot i ciiigil j
Diagrama N - S
‘
:
- Jn3 ^ olt rtfimi i ólebob b nuJoinltio
al 9b *»
^3 : , : í : •
‘- J
Modelo 1 — - Modelo 2
condición condición I
n= 1 2 3 n otros
>c • . ; con a:;r _ I
' r r> : i
r •
X < - Fs
I
S1 S2 S3 Sn Sx S1 S2 Sn Sx
no. r.c/c nl ?<
I
c
- •
.
-N
•>
-
• ..
. .
I
I¡
<
} .*
J . > -'i
*» < » 'k , »
í.l .' ’
» • i ?C2 n 3i '•
•* . 1
Pseudocódigo
T -> J * : i eb o a íro
»
En inglés la estructura de decisión múltiple se representa: d> á fvO Tr O V
•i '
« • i
o bien : i
[ e n ] : acci ón S n [ e n ] : acci ón Sn
:: ¡
otherwise else i* L- toa - Ir. *
acci ón S x acci ón Sx
end__case
enclocase
^^^ fl í “""PP“
11
pudi ndo er la acciones'í « e diS° « P<*d é representar de diversas formas,
siguientes modelos de formatos. " ° ° " * caso ,erior °
m ” C e C an compuestas como en los
NOTAS: I
i
^
^
an
.
2. Los valores que toman las expresiones
( ’
( E) no tienen por qué ser consecutivos ni únicos; se
c s r u J ) iidiioiai»
*
¿Cuál de los anteriores modelos se puede considerar representativo? En pseu- realidad, como el
docódigo es un lenguaje algorítmico universal , cualquiera de los modelos se podr
ía ajustar a su pre
sentación; sin embargo, nosotros consideramos como más está ndar los modelos 1, 2 y 4. En esta otra
-
seguiremos normalmente el modelo 1, aunque en ocasiones, y para familiarizar al lector en su uso,
podremos utilizar los modelos citados 2 y 4. J ¡: I
Ejemplo 4.10
\
Se desea diseñaran algoritmo que escriba los nombres de los días de la semana en función del valor
de una variable D I A introducida por teclado, que representa su posición dentro de la semana.
Los días de la semana son 7 ; por consiguiente, el rango de valores de DIA será 1 . . . 7 ; y caso
de que DIA tome un valor fuera de este rango se deberá producir un mensaje de error advirtiendo la
situaci ó n an ómala. : ;> t í r; r 7 tr. . .
mr* nii
2: escribir( ' MARTES ')
3: escribir( MIERCOLES )
1 1
7: escribir('DOMINGO ’ ) 0101n1 :
si_no -J J
(
escribir (' ERROR') 4
*
I noiLOi>
Él _
fin segun
fin
» »
'
C . i
r
Leúiíi una fecha, decir el d ía de la semana , suponiendo que el día 1 de dicho mes fue lunes. !
algoritmo Dia_semana
var
entero : dia
— rríí ~ ~
Oió i fíi>":T3
I t
I
inicio
escribir('Diga el día ’ )
leer( dia)
segun_sea dia MOD 7 hacer r. Jt jfe t órtola ' '
1: ítLc © s c:ll # _
escribir( ’ Lunes ' )
i W Slip lOCj < fl ( 3} * O f j r H X*J fcfil ílfimoi Slip ?3lOlj5V oJ . £
*
'
2:
escribir('Martes.* )«ILOGICO Ao ?Q¿hirriun fcoJnui&no' job ¿ogrtfii ungbtenoo nsbauq
3:
escribir('Miércoles') secad 3 *>& O5BO _
4* i t* sidl/tcea ; .
- ? xl 1
escribir( 'Jueves')
escribir( 'Viernes')
lit
-í trov.o
;
• »' . j ,b f ¡ j * » :
V • J í i O6 2Q
escribir 11 í liiinv;? ' . ifjvi ; ai+ bt iutj r'Á yji¡<
'
' .
\ -ó tete » ui •/iohoJMfi ¿ o! sb IhuO
Am ?o\ '-JAí*J ^» • riv/- iji ;.. <;-j» uuv¿ ,, Ui.}.* r: • / n u: » , ) tm _ ^
• n* • »
VJ » ,
•
(( SaÍDac 0
• ? •
^; ! '' 1 :',í!omu'
’
• i
jZüfMrob
)ho
* í UJJ
'
Ti ; \!
Mc; gt &usiff
ó l ou < o ostib
¡V!f03 2011020(1 «OgUxjfft ItlZ ;n6Í3BJ03 í
ó’job
i íxi
i
i !
eecrlblr( ’ Domingo ’ ) »
_
£ in segün ¡ í : í ICIIIíUL í iva í J / , 9ííO í ?ííJ'J« J 'II3 - jupti íji ; . i r»í *»bofti ! .- íasf í ilfeitnon zofnsiiugdz
^
< .
^
fin ( •
, » « '
•
' ‘." .y i í >!'jfx/ííi r ol -
iiu xorutofroq
t. vi
> i » s.
cou i > ( i\
Preguntar qué día de la semana fil é é l día 1 del mes actual y calcular qix
^-
‘
día de la semana es toy
^
. ñWWMnm&to , . ií .
) - i" .
.T
entero : dia,di
'
V«
inicio
t
o í ? ini
escribir( ' El dia 1 fue ( L, M, X , J , v , S, D) • )
leer( dial )
segun_ sea dial hacer
r» » o íú set
t: f
'L ‘ : V
i » i « ’
die- 0 ;
•M : 1
die- 1 -
•X *:
die- 2
idlioae
un i R -
•J ‘:
die- 3
rll
* v‘ : . -
die^ 4 i íí L J !* 2Fití) nuicjínolftoo 32 oí
^ibooobuM[ b n
• *
s,;
• r .
) ,J / aa omoD
‘ ‘ ’
l' h oliü ilrl rn sop fibdfirf 3«u1 te« u ;—efionsmi/n ¿sJofi (
^ i 0 .
die
S
/
- 5c i ¿
’D : .
1
“ seo '.' A ’
c *> r. i7 ¿" A
fr
die- 6 |>
— » HO ? F: A’
_ no
si.
die- - 40
C
.>
—*
-.» -
é >
r
fin_ segun 7
ft
— t n
n
f. 1 *
-J
«
* t: i
segun_ sea dia MOD 7 hacer
t
1;
* / $ _ . N'> O r v
f *
•
escribir( ‘ Lunes ’ ) ' • • '
• ; i¡ t . • > . » , \ .
1 •
ion i .r Otfttno •'. / >
"
'
, > • •
í- 1
5:
escribir( ‘ Viernes ‘ )
6:
! n únví tf
:
• " r !-
ve.
iOC: I 5 '
: • Wí í, .V
V
* *
¡
- U/
c l 4
escribir( ‘ Sabado ‘ )
0:
oi oín i
escribir( ‘ Domingo ‘ )
"; ' ; J
fin_segun
fin A •
2D nx/v >*
< . .. . *
: “1 id
Ejemplo 4.13
i i'4 !. V;P í
• é rtJir
** ?
^ valores de A, B, C, M, D y E se representarán por* la* variable
*
- •
algoritmo Calificaciones
var
<! f > al < 4 jnai:J
1 V. ) 0\ .
carácter: LETRA iU\h \ \ i i\\\ MW ^ A
entero: CALIFICACIONES ^ r \ > > < vi ’
*
• D ': calificación 4 - 7
• E * : calificación 4 - 8
si-no
escribir( ' ERROR ' )
— Ib
fin_ segun
fin
/ i.
C
V
-
otras posibles calificaciones por ejemplo,
Como se ve, en el pseudocódigo no se contemplan
segun_ sea
—
ía que modificarlo en el siguiente sentido
0, resto notas numéricas ; si así fuese, habr
LETRA hacer
.
: *C
rr ,
calificación 4- 4
• A ':
calificación < 5
• B ':
* C ': calificación 4- 6
— í
Ci7 ia
\ I, í L i'é bt i
' ;
si_no: calificación 4- 0 fsi í; iiaal
fin_segun L?. - o r £) —* ti .L i í
inicio :0
leer( n ) ( OT> rtJ. jrioG jlidllOttV
segun_ sea n hacer
-9 .. 9: ai i
escribir( ‘ Tiene 1 digito' )
-99 .. 99:
escribir ( ' Tiene 2 ' )
Zt .b olqrtioi
*
•
* 5 -
-».1 » 999
"
V¡
..
r
999:
i P ,
escribir ( ' Tiene tres '
I n -
r,
' ' 1
..
'íYIIVí'MJ
^
v ú
- Vv &
•) >
si _ no
*
Vn’ / iuyj iyyv >
escribir ( 'Tiene mas de tres ' ) ,8 < V -
-• 1
7
*
«•
fin _ segun »1 ¡ , . ? , •
toq .
nj ifi) n32!¥iqvt en 3 tf a ,M ,D ,a
_. ^cmab tsiotavtabzainvhftí
Ejemplo 4.15
, >
^ qiq
‘
, . oa 3
' '
n
1 ; )
! v ';
te ohfiutu lü IBJ í Cííí O/ ob
•
) * 1 ¿inufi
'
, .
"J : L -
'
/1 « CMtí íí lf
* - si (numero > -1) y (numero
- <= • 10 ) entonces > ! > '
•
'
CUfl ünO’j .
J O •
.» ,, r , n
-
•
«» »
fin_ segun * <* » «* >
*
fin
. si
fin . ‘ 1
JATOT n .) \*
^ f * ••*
U . >1 %
•"> J -*W I. 1 .. I ,. s
ñ i\
oiotnt
v r i
*
!’|
i •
Las computadoras están especialmente diseñadas para todas aquellas aplicaciones en las cuales una
operación o conjunto de ellas deben repetirse muchas veces. Un tipo muy importante de estructura
es el algoritmo necesario para repetir una o varias acciones un número determinado de veces. Un
programa que lee una lista de números puede repetir la misma secuencia de mensajes al usuario e
instrucciones de lectura hasta que se lean todos los números de un fichero.
Las estructuras
. . .. . , que repiten una secuencia de instrucciones un número determinado de veces se
í atrtUpi Ü i Oiií Wfü u rjllifnu . , IL ÍF ím tltLl íil rj íM J ü O r.
iteraci ó n ^al hecho de repetir la ejecución de una secuencia de acciones.
• »
denominan bucles , y se llama
* i
a l g o r i t m o Suma zl
var id * k
. • ?i - í ‘ ’ i ^ i < 4v
rp ; i. ¡o• ».
*.v* íl . * -
. *
-
entero : suma , numero ;o . 3 i : iic:* ni c . t zi í
inicio * ." J
SUMA 0
leer ( numero ) . . ..
—
. .. . . .
-
Jui / SUMA <r SUMA* numer ó ; íl '• lOmlHfi OtfilíílOl b H3 fiOlüfll Rui R¿ 5u nOlOÍIXlOV A Mlpílü A
A
leer numero
( ) Ábsuy> u\ uup luf ínofl ol # 1 ^!n % í n / > 0 ", r / UJ nOfldilflOQ &l U& W|) op . trjíisi
,,
.
,.
v
-
< ‘ + n\m e oU : ( j n i ; r j j: u ; ú J j rjiJ ü3T] runabtttlO 3 ! ltt
* ^ > ? -
V ú» o\<VOIÚ\V\ - <
in^^ si Ll (i¿ : víu iinov . í W ú J Í: < O í S,: i '-
:V
así sucesivamente para cada numero de la lista. En otras palabras, el algoritmo
, í ¡w ) i* * -
las acciones. .
»
l e e r ( numero ) * i* *
•
^ » - « VLU' T *
“ “crsíETíC conocer
TJ:ííSZL,
de sumar. Para ello necesitaremos ^
algún medio para detener el bucle. En el ejemplo_ sigm te
usaremos la técnica de solicitar al usuario el número que desea, por ejemplo
mientos para contar el número de iteraciones, usar una variable TOTAL
, N. Existen dos prccedt-
que se metaliza a la cantidad de .
números que se desea y a continuación se decrementa en uno cada vez
cedimiento añade una acción más al cueipo del bucle: TOTAL <- TOTAL - 1
que el bucle se repite (este pro-
), o bien imc al zar la vana-
numero deseado.
..
ble TOTAL en 0 o en 1, e ir incrementando en uno a cada iteración hasta llegar al
algoritmo
_
Suma numero
> •
i ff : i
i.a nil
var nn
entero: N, TOTAL
- - : NUMERO, SUMA
real
inicio
leer( N )
TOTAL f- N
SUMA <- 0 aAVITST3c!3R £ ARUT0 UnT33 .B .b
u
\ leer
—
mientras TOTAL > 0 hacer
“ ( NUMERO ) ; jfiq ü r i II > fips esbof isiiiq f i A A A i : \ b aifrcmfiMOdq ) tt&U S t i lObt
SUMA <- SUMA + NUMERO
—
TOTAL < TOTAL - 1 Bftofi íí i MH 1 DCJ 31 fltrf
'
, , ¿ ..
í lüqOIOO 2BJ
fill ü Ot íí UjOOO O ílOiOClíKJO
^ *
lU lti / O LflIJ ip í in rj < jhl¿*3:j3f( OfflIriO Ifi
'
te
’ f in_mientras 23
^ ^
1
escribir ( ’ La . suma de los < . , N , V, números es ' , SUMA ) f f i ú A *;) 2 Í l BflU üp B íflBigOiq
fin f *J ; ¿ ” J í Li
^
' #
‘ * ¡ i ''
Oí ^ l í^r n i ' ? f * ; ;f » j !k, J
01 i p UJ ? »f • ' ’> * Ul; !
« !
. El pseudocódigo de
— - . .i '
oiolnl
^
IeneuaTefau nfcn0
! ^ “ nd¡ “ el
1
“ ««¡or » el interior del bucle -y existen
Í Ca
,a condición se <%* final o al
f TOl
pri
g
^ o del bucle asUelmT " "
generaless y una
iterar
mientras
aue llld
V
particular
que denonunaremos
b
n mai 58 16
i
0
,
eS qUe
0
'
repetir ( repeat )
. KJC' Í I ui ‘it » i :» friiiri i:L»íi i ciftti) 'tJlnoru í. / jr > > i -
*
. ' . 7
desde I para ( for )
vonob jC '
- 11
i
Modula-2 y QuickBASIC/QBasic, entre . .•
otros. i
z
- - >\
'• J
i
I inicio V
•< :. í t i 3 !T ¿ i í; ti I
leer ( N ) I
TOTAL 4 N - oa
r- . i'. » : 1 i
SUMA 4- 0
i
repetir
leer ( NUMERO )
SUMA 4 SUMA + NUMERO - .c
« I
I
í
f
TOTAL 4- TOTAL
_
hasta que TOTAL = 0
- 1
aoaoiD'jQ
*
*
i
1
I
escribir ( VLa . s üma es * ', * SUMA ) ¿* \ *
I
’
I
fin
ot .c i r .: ©.CJ ífw
;
-
Los tres casos generales de estructuras repetitivas dependen de la situación y modo de la con-
( w
1 J
dición. La condición se eval úa tan pronto se encuentra en el algoritmo y su resultado producirá los
tres tipos de estructuras citadas. r as
).
n - . bi d £ i;iWo£> i • I *
algoritmo SUMA1
asno i o o ñ
inicio
i Cite i J; *
/ / Inicializar K , S a cero 1
K 4- 0 eL ÜuTO
(
S 4 0
Ieer ( n )
— j .•
.. j
mientras K < n hacer
t ;ojuf í ©to emsiQBib ( st :
K ( 4r? ’ Kj + - luéaq ( í t'á luí:
ó *
. IT '•
s 4 s + K
fin mientras
_- . f í - l/* crn ? iiRB ? to í o
escribir ( S )
f 9 dimito y/ > mjí oJ ir í wob o 0 £ iiíw 2 ‘> bni ir;
j txr / i
•
.
> - gmja JüJSO 1
- Wns/ wí DUfiJ . nói'jibcov tbcninrottb MUI s> iq«Tt/? «. ¿fciinaim sbud !: ¡J oqiout» i o up
Se ejecuta el bucle mientras se verifica una condición ( K < r i ), . J; j ; ? r , ,, ¿5noio
2. La
,
U)
condición de salida se origina al final del bucle;vel bucle se ejecuta fhasta que se verifica
: í f f jíf i t , ; j r j/ ' vJflI íl , V .~ U > \
• • i ‘ l l O O O V )l ¿ Híf U ) • * flD
' ¿ * • *
una cierta condici ó n . ifn ;, , iv M
,
.
,
j j x.;. . ?
, ¿: , - ¡ : A ' , . , tn < r 10 « M I «4 «
*
, - •
; . , ; r/
•
j wiiyAuon • i iu . iiu
« 1
* IJ ü noujtfiJi ' uigi *
< ir *
-
.
fin desde
_
s 4- s + i m im nu A / ;« . • •
• / w hli u
^ /
.
* " 1 " » * 1
^ 1 1 'í 4 1
i es un contador que cuenta desde el valor inicial ( v i ) hasta el valor final ( v f ) con los
incrementos que se consideren.
Pseudocódigo en castellano 4
m i e n t r a s condici
n ó hacer i i « fj# .r
no acci ón SI
condición acci ón S2 f
la '-'i
si
, ..
. . t'
acci ón Sn * »«
_
f i n m i e n t r ais _ .
iH '
ij < ’i * 4
^ 1 /'
*
*
v
c.Mt
_
< acciones>¿.au AIXJf
? sb zóunsnog o?.uo
' ¿
: nsbnoq b iliísqoi « í
finiiluirt z
ni . > BUIí* : ob Zfi /
^ oíncnq nal cútevs M nóforbnoo¡ BJ n /01
* / lí ) J t í sfa ofaom / . ótoii
; U¡í { omí hoglB b ns fiittwirare
> O Í ¿i n endwhi1e , ,;i; ;)i'> zmUtOUVZO * b sOqil
o bien . .. .. . r
mientras condici ón • inq |n í jsihaOi CJ ? ' fowl hb L\> í I
.
sb nombnoj uJ .1
( BB 71 T i J :’ »I
dowhile condici ón
< acciones> i\
t
/ V.\ :
acciones o 2 r.li i
.J í T. KZ c
• TP. xoinJW
enddo 3 a
c)
. -
>
que el cuerpo del bucle se repite mientras se cumple una determinada condició n. Las representa -
. ¡ inoibnou r. nn noitn^/ o«t cii í rmn oloua it> uluoois *
,/ , . • ¿ 9
ciones graneas son las anteriores
Cuando se ejecuta la instrucción mientras, la primera cosa que sucede es que se eval ú a la con -
dicion (una expresión booleana ). Si se eval ú a falsa , ninguna acci ó n se toma y el programa prosigue
en la siguiente instrucci ón del bucle. Si la expresi ó n booleana es verdadera, entonces se ejecuta el
cuerpo del bucle, después de lo cual se eval ú a de nuevo la expresión booleana. Este proceso se repi -
te una y otra vez mientras la expresi ón booleana (condición ) sea verdadera.
- #
Ejemplo 4.16
• !
?’.• u ' > * 'i!;:-;. / í \
'
. • •
1* < • *
Contar los números enteros positivos introducidos por teclado . Se consideran dos variables enteras
NUMERO y CONTADOR ( contará el n úmero de enteros positivos ). Se supone que se leen números
positivos y se detiene el bucle cuando se lee un número negativo o cero.
algoritmo
_
Cuenta enteros
Jlt Í
¡v : vA
10 inicio .
!
contador 4- 0
;Vi
- •
^ v: *. •
' , •; p '
on
leer(numero)
i» \\ M i"Vi - •f * r* / • i
leer (numero)
fin mientras
_ rl
escribir { ' El numero de enteros positivos es , contador) 1
< r : * -y Í
fin
-
íí si lar.n i l
í. 1 i
inicio
¡ r. v ]. ; r: o!qmop i - j .ai
* *-
f
¡
.
:i ! v
> ¡{M K’ .* > • F
V
contador 4 contador
l e e r numero — + 1
enr n ^ i /H
escribir ( ' números enteros ' , contador)
< i' > ~ J í7 KJ
:
i
o ^ c
j; f» i.
i . - : r lenl
4 •
i fin % r,l 2¡:o } rt ¿ u ? .
Paso Pseudocódigo ~
Significado
; ~
V ,7
y
* ./ ; 7/ . ¿V r7
' '
• -
>
^
'
? ^
•
- - »
•
. .
.
— •
contadora 0 ^
• • • f f /N
icializcir
contador ^" ^
4
C'ínun v - p
, g{ sjqrnifd 33 \
Ü
^ ¿
i
f
2 í: ^ ' leer ( numero )
nqrt
°*
uuio oadab n6 » .>
* Eicq buyorj no ¿ eobaaok> n 3tni
ioia ’
•
•'
y. . . 5ci/
vM
’
continuar
7 C 7 rrmtiminr con
rnn el
» - iit I if
paso
P! nnsn
,,*
4
4
;, »
ci no
si
-w v r- con
continuar
nn , rnntinun
¿ l
/ «
. ?
e]/ npaso 7
/3 7
/i r n
/
i • ; .• t •
/
- '
-- ‘
« fr •,
iqt >
4 . contador <- contador + 1 incrementar contador
í
'
*
:.•
. 0X - 7 :t j¡»“ A::<) i fi?
tiaT y .
5 leer ( numero ) leer siguiente número Q * , .. - > .
- i
: . / ll dito a*
fin_mientras
- - y .f '
Obsérvese que los pasos 3 a 6 se ejecutará n mientras los n ú meros de entrada sean positivos.
falso y se
Cuando se lea -15 (despu és de 4 pasos), la expresión numero > 0 produce un' resultado
transfiere el control a la acci ó n escribir y el valor del contador será 4.
5
, :
P °" -, f
.»1 *
’
¡.
Ejecución de un bucle cero veces < , . i ¡ :: ¿ t .í u . ;
^ ; IHí •• -.
J
-- , . ; . ' . ninn íi » outi < 1 JIóI IQX J ’ criinilftjuiVKw sljud 13 J\.A i '.
'
Obsé rvese que en una estructura mientras la *primera cosa que sucede es la evaluación de la
• f -
expresi ón booleana ; si se eval ú a falsa en ese punto, entonces el cuerpo del bucle nunca se ejecuta.
cero
— ya « P*
ÍA
tendrá efecto en
y i ;í
ningún valor
' **
,
. '1
jll *
.
*
.
'
í
1
- I
¿ ti
n< ^
Ejemplo 4.17
o cero.
, iV -
negativo
-
leer(numero)
:>
— f
Algunos bucles no exigen fin y otros no encuentran el fin por error en su diseño. Por ejemplo, un sis-
tema de reservas de líneas aéreas puede repetir un bucle que permita al usuario añadir o borrar reser-
vas. El programa y el bucle corren siempre, o al menos hasta que la computadora se apaga. En otras
ocasiones un bucle no se termina nunca porque nunca se cumple la condición.
Un bucle que nunca se termina se denomina bucle infinito o sin fin. Los bucles sin fin no
intencionados son perjudiciales para la programación y se deben evitar siempre.
Consideremos el siguiente bucle que visualiza el interés producido por un capital a las tasas de
interés comprendidas en el rango desde 10 a 20 por 100.
s*
2eer(capital)
tasa 10 ) * \ ¡; u -> iCO.C [
mientras tasa o 20 hacer Ib
tasa + 2
' , Ínteres)
- b'xynBi íí n.. i ()
fin_mientras «
escribir(' continuación ’ )
Los sucesivos valores de la tasa ser ,
án 10 12 14 16 is on A* rao AoquMtomar
^ elvalor
P
19, 22, ..). El buclere Mnitt
¡ jntasa < 20
*
. obien--
ODten
la
tasa >« 20
^ J
P
^
te terminar al bucle ser#
0 J,
á:
13' 16’
JP ^ • * - "J
nó i ü ffiq / *
*** (
Regla práctica: Las pruebas o tests en las expresiones booleanas es conveniente que sean
mayor o menor que en lugar de pruebas de igualdad o desigualdad. En el caso de la codificación en
un lenguaje de programación, esta regla debe seguirse í rgidamente en el caso de comparación de
números reales , ya que como esos valores se almacenan en cantidades aproximadas las compara-
ciones de igualdad de valores reales normalmente plantean problemas. Siempre que realice compa
raciones de n ú meros reales, use las relaciones < , < = , > o > .
-
= nv . , i ,
O'tob 01'ií
_ .
ü'í l J i ,i
,
1 , 11 H Í >
i. *
-
i: .
J: "
; JU II '!( '! \b fv!» ; ! , *)V) - ni . ‘ i! .eii
•
'
i >i , i ; , ! . ' ¡ ¡
•
,
* ' •
Si su algoritmo o programa está leyendo una lista de valores con un bucle mientr ,
as se debe
incluir algú n tipo de mecanismo para terminar el bucle. Existen cuatro métodos típicos para tenr
íi-
narun bucle de entrada: • ' 1 - or> ' :
° °
'
•
*
^ WQ • n \ » \ ’ » %*
'
0 * * i 11 / ) . 1‘ » (. i' . • ¿
r la lista con su valor de entrada, ’ I > > ‘ >
# i ftbnftuaaup
r
Este método a veces es aceptable y es muy ú til en ciertas ocasiones, pero suele ser
tedioso para
listas grandes; en este caso, es preferible incluir una se ñal de parada. 1 : {' in*
El método de conocer en la cabecera del bucle el tamaño o el n ú mero de iteracio
nes ya ha sido
visto en ejemplos anteriores. r . t v!qn13 [ íi
Tal vez el método más correcto para terminar un bucle que lee una lista de valores -es
tinela. Un valor centinela es un valor especial usado para indicar el final de con un cen-
una lista de datos. Por
ejemplo, supongamos que se tienen unas calificaciones de unos tests (cada
da entre 0 y 100); un valor centinela en esta lista puede ser -999, ya que
calific ación comprendi-
válida y cuando aparezca este valor se terminará el bucle. Si la nunca será una calificación
lista de datos son n ú meros positivos,
un valor centinela puede ser un nú mero negativo que indique el final de la
lista. El siguiente ejemplo
realiza la suma de todos los n ú meros positivos introducidos desde el
terminal. .
surrta 0 -»
leer(numero)
mientras numero > «= 0 hacer 1ST? '
,
^
—
suma < suma numero
leer(numero)
iV í finvlm n i
f in__mi entras
41 L i
negativo, ya que se
Obsérvese que el último número leído de la lista no se añade a la suma si es , e usuario
sale fuera del bucle. Si se desea sumar los números 1, 2 , 3 , 4 y 5 con el buc e anterior
debe introducir, por ejemplo:
i <
1 2 3 4 5 -1 - r • ‘ f' I
r
ir* l ' » ! JT
un valor cen-
el valor final -1 se lee, pero no se añade a la suma. Nótese también que cuando se usa
centinela , este debe
tinela se invierte el orden de las instrucciones de lectura y suma con un valor
leerse al final del bucle, por lo que se debe poner la instrucción leer al final del mismo ,
. . ,
Yj
El último método de agotamiento de datos de entrada es comprobar simplemente que no existen
más datos de entrada. Este sistema suele depender del tipo de lenguaje; por ejemplo, Pascal puede
detectar el final de una línea; en los archivos secuenciales se puede detectar el fin físico de archivo
. wu > . > *jh
: t.u ;
( eof , end of file ). ra '
Ejemplo 4.18
‘ .J •, _ .! ob >* ; ; r:: . r . inugoiq . ! .
r
Considerar los siguientes algoritmos. ¿ Qué visualizará y cuántas veces
- . se ejecuta C
el bucle ? 7
- , r f
1 T f * » ’ r>
1 i 0
* hbnmi - rJj < . > !.:» / v\ .! j • •
La salida es el valor de la variable de control i al principio de cada ejecución del cuerpo del
bucle: 0, 1 , 2, 3 , 4 y 5 . El bucle se ejecuta seis veces. -o
- •
’
-• -* > A K i‘ ' ' ~ >'
*
i* 9
** *J* ‘r
2. i «— o ni c e "
’ 3£ rr :
mientras i < 6 hacer
i
*
)i i 'í : « v
i <r i + 1 - • 3i
escribir( i ) V i r
f in__mientras I * .
)
;1;
> > , .« • • j <
La salida será entonces 1 , 2, 3 , 4, 5 y 6. El cuerpo del bucle se ejecuta también seis veces. C>
Ejemplo 4.19
)
‘ ^ aboboí
^ n 13oJ i
fn
. .i . . .
inicio .b >JHIU fivnaii
^ aup aorniignoquz
'
oíqrnats *
.
total < o “ - '
’ ) no chnimeo
J¡
iota nu ; (00 l ¿ Oeilfrcsb
r
'
n
- 0 / / numero de alumnos
leerlnota
)
fí
¡‘ " ' * 7 O BVXtryjfjf
/ / la primera nota debe ser
; pbniiU‘7 / ' : 7 '
distinta de - 99
'
!v “ :'\ > ÍL
*
. <V >
Z n «* •
*
1
: «« »<
"
media
n
escribir
1
leer ( nota )
f injmientras
4
n +
- [ total / n
L»a media es 1
, media )
>.
*
** •
0
» .
*
—
.
IT .
c ~
il
.
fin ni tttoi-
\
4.6.2. Estructura repetir ("repeat ") -.u\ um
iW ) » *\. vy\ v y
i
Existen- muchas situaciones en las que se desea que un bucle se ejecute al menos una vez antes de
comprobar la condición de repetición. En la estructura mientras si el valor de la expresió n boo-
leana es inicialmente falso, el cuerpo del bucle no se ejecutará; por ello, se necesitan otros tipos de
estructuras repetitivas. - 1 llC \ . ií
I >
*
•.
“» rv
Pseudocódigo
repetir repeat do until < condicion>
<acciones> < acciones > < acciones>
.
Diagrama de flujo
i i b i
Diagrama N S - OLp
; y
acciones
acciones uLii(Í í .:b iqioi / t- ^r » rr
>' >
.
bnr;i0 S/ *
?
r. o * i 3r,
i íí I ?
• rep
repetir condiciones o? > au
:> . r dLlVjffV'
.' Ir , i - ' í l j' i i, i tlit huAii' V ¡
r¿
Uu > u!oo : i .it *
fjmi
.‘ ¡ : <r" condici ón
falsa ; fUJ íU » Si; / í; íJfr; .* ! r • ¿O . •' /1 '[ / O . / \} ) { ({ c
i Vv ‘ ”4 i
? ’
J 't J
-.
i
^
' lo I !í . /
u oort
t; ¿ ;'j! u«.t , • [ / i' 11
*
J íJ’ J
verdadera t ?i jrj'jtrJstn tiu .. i' * *
Figura 4.12. Estructura repetir: pseudoc ódigo, diagrama de flujo, diagrama N-S.
Sfr . .*
—
|* 4
F *'
; .
.
¿himno! IUO:MJ
bibri :
> * < . f íhma í
La estructura se ejecuta hasta
repetir ( repeat ) que se cumpla una condición determinada
que se comprueba al final del bucle.
'
i * ro ..
It El bucle repetir hasta que se repite - mientras el valor de _
la expresió n booleana de la con -
dición sea /a /.«z, justo la opuesta de la sentencia mientras. , (
var
real: numero fS t» ciqf* » oj3
entero: contador
inicio t - • • '
\\ m .
• 1 a\ n ! tui •
w/ ro*\ ivnVujüq
contador <
repetir
—1 » v. \ > \ \ ; yj> \
leer(numero)
‘
Ejemplo 4.20
factorial de un número N que responda a lafór
Desarrollar el algoritmo necesario para calcular el
muía: i | j ,| • * ' « | . i i
\ : í U H' jl 'tix ;
\ ' ¡¿ Í
) •
'
+• * <
- - - - ... - -
N! =i N ( N I ) ( N- 2 ), ^ ,*3 2. 1
; #
1 . • ^
» 77 % * A . ••
. JU
( » í MTl >
' t
J wi I
.0 vi t
'
i • r {
^oinrni
viii .. >
/n
•
algoritmo Factorial
var
entero: I, N
real: Factorial
inicio i. ¿ J ? r. oc3 : i
= 0
//N >
ieer( N)
Factorial 4-1
14 1 - t. í iJ íTI/ > '
; ; » > » LTp. slunrí
repetir
ólrmi nnciluidi / j { v)
Factorial - 4 '
Factorial * I
I 4 I + - 1
hasta _que I = N + 1
escribir é El factorial
*
V/ '
del numero ’ , N,
- *
'es' , Factorial)
u \yA\ ftmivtftMU
» i
fin
j i í I r x ; i - ‘
Con una estructura repetir el cuerpo del bucle se ejecuta siempre al menos una vez . Cuando
una instrucción repetir se ejecuta, lo primero que sucede es la ejecución del bucle y, a con -
tinuació n , se eval ú a la expresi ó n booleana resultante de la condici ó n . Si se eval ú a como falsa, el
cuerpo del bucle se repite y la expresi ón booleana se eval ú a una vez. Despu és de cada iteración del
cuerpo del bucle, la expresión booleana se eval ú a; si es verdadera, el bucle termina y el programa
sigue en la siguiente instrucci ó n a hasta_ que.
-
%
•
- - . ílü dfii d
Diferencias de las estructuras mientras y repetir !
c
' íf ; ,‘F,
• La estructura mientras termina cuando la condición es falsa, mientras que repetir ter-
mina cuando la condici ó n es verdadera. U saqeij i. I deqei m /tomfc *
• , * /. # .
,
^ rt • i t
fjmlqm íílítT
i •
suma a 0.
3. Repecir las acciones
siguientes hasta que > •
_
algoritmo Mas pequeño
- '
’¡‘JfHtJn I .: • , ' U'ib
, r.
var '
kb . .
- i
leer(limite)
num 0
‘ i r
_» {
•
•
- ! , Í If ,¡ J • ;; f
suma 0
crepetir
• t - V 15 J ílftíf ’ *• <
— k
i. mn ’ ojirjns ' ruu í r» f •
-
.
* 2!num <
° —— num +. 1i
suma < suma + num
¡ - 4
. ; oJneirt 'todb
c
hasta _que suma > limite
—
suma < suma - num
—
num < num - 1
escribir(num , suma) ni *
i
fin I
* , b 1 «, - , t
Ejemplo 4.22 \ ib
1
Escribir los números 1 a 100. o ¿ '2::» b tnv. omV*! ,*VV . tuntrui íñU
'
-
algoritmo Uno cien __ LJUí i r.J 'r,;í ;v
•
J 5 f; i
var V
1
‘
num: entero
inicio
eh^ sL i ll ?
—
'
num < 1 i
/» Tí v f
repetir
<
y « >v >w > m u‘¿ ^
escribir(num ) ^ **^ .
, /1 .
— ...
— .
—
num < num + 1
hasta _que num = 101
V!
i *
J ’ r
s & ü Sb siUiv n-. - fi > -> n\iá \ A> iivr wv s A \
'
fin
r mlu .Mso
Ifiioin : IU!BV
. . <
» r * tr , v •
o'i íí > nl
inicio
. ?{ i
escribir('Introducir numero de mes.' )
repetir t
leer ( mes) i
í £i* JO Í n
si (mes < 1 ) o (mes > 12 ) entonces
escribir( ’ Valor entre 1 y 12 ' )
fin—si ó T‘ -. i
if
hasta _que ( mes > = 1 ) y (mes < = 12 )f > ( >
%
i v,
fin
fin_desde finjpara
v : variable indice
r"
i. . na
vi vf : valores inicial y
/ final de la variable :¡ t
a ) modelo 1
a ) modelo 2 0 } qfn 9 ¡;
-
Diagrama N S, estructura desde
? o\ > rU '
desde V <- vi hasta vf [incremento Idecremento
<valor> hacer
.13 i1C t I L
<acciones> :BV
fin_desde
oiú ja V
b ) modelo 3 --
vi
- V 'X
‘i
4
Diagrama de flujo estructura
desde fI i
calcular
valor inicial
. ii
¿
y valor final
(
>
i\
V
r
* . }• lt <
r
fijarla ,
\
' ^ ’
' ‘ .
oiqmcj.**
‘ •
variable índice
al valor inicial
; t ;r .
variable
**
‘ vf !> f .
•
índice > valor verdadero i » t
f ft V
•
final
fe /so a ? n ;:
» i
i
-
'ncrementar
variable índice
}( ) V ,
)
Otras representaciones de estructuras repetitivas desde / para ( for
ón mediante un con-
Un bucle desde ( for ) se representa con los símbolos de proceso y de decisi
tratar de calcular
tador. Así, por ejemplo, en el caso de un bucle de lectura de cincuenta n ú meros para
su suma: - . i
¡
I i *
U
\ <r- 1 inicíalizaci ón
. del contador
\
i i •
i í ü MvJ 3
'
<
\ t
O * *3 hlf * U
\
\
.
2 -: J
* £ i
i • * /1 o* ' l
proceso o acciones i +
del bucle
i . }
r rrt v -
14- 1 + 1 ;j J .'. Í UI' Í )
b r 3
no
i )£ _ » I > 50
¿‘ t
a yi í , T
si
. di: f
M , w • . Mi : i
USM S’X • 1 *
‘
* *
'
’n
'‘ ' 1
• » *' * • -10 O f :í i' í — > : bz :‘b
Es posible representar el bucle con símbolos propios:
t . r* i ,* .*
I
i i- T
Ib . •
=
* ) T. V li j. I wtJS*
— ni i
—
I 4- vi I 4 VI
ooíbr
i > vf
i <- VI
< » >
si
oh i ü i jim ioír / VJ no . irjTrr^
!
+ X , ¡ > v .;in uri ¿ Iaivi 11 10 ríi . Lnvl +
. *
.. . . n i i
i
acciones ' t
- / ;
Oii íritr:
• *i
\\
a. - . . ..
if . I ' j' iqmi ^ 1i . }
1> 11 * ~J * 1 4 » J íO í ..
.
J*
i>
bÍL«
00,1 o
- -, v -
ib i oi
¡ '
10
113/i 1
^
- o;. lis b nyJi nbc HA HTíKH y Dl Ü Afl .olqruojs bA .ovil
í ioq ,
.
1 1116 iant® este otro
J5> °nl
un !' .
; ... .: - í¡s - ' t ,
' j ¡ r:
^.
,
¡ .
¡wj
I
—repetir
0f1(S|riC|< , ,; u 0 ¿otnaí naioni yiimbe
,
¿OV Ó
!
:
\ . r . ' >.
_
•
| • .
^ .
• «
•
—¡ -M. ' variable = ) • h U íl ) ’ l i
a
.
m 1 m 2, m 3
# .tol afuvivobs oviisqyn naicí
!;
t* - -
It'
f íf í J irpi . / ( loi ’
•
. j f/ > .
-
l
i <- 1 - M í. 1 • b ( i' j olrjm ¡ :í
*
f
i>N :m.v íJ ,
S/
i <- I + 1
no
escribir
’ Suma = \ S
S «- S + I • 3 7T
ioi
Q )
I
9 ljud
'
1
fin
r + i
I
equivale a i
I
.
j
algoritmo Suma
var
on
Oí < I
entero: T, N , S
inicio
S < O
— i
desde I <— 1 hasta N hacer
S S + I :? oiqmq / olodrn ^ nou lo
fin_desde ^ Idistocj ¿H
escribir( ' Suma = ' , S)
r-
fin "
i iV
/ <
( La estructura desde comienza con un valor inicial de la variable índice y las acciones especi-
ficadas se ejecutan a menos que el valor inicial sea mayor que el valor finalALa variable índice se
incrementa en uno y si este nuevo valor no excede al final , se ejecutan de nuevo las acciones. Por
consiguiente, las acciones específicas en el bucle se ejecutan para cada valor de la variable índice
desde el valor inicial hasta el valor final con el incremento de uno en uno.
El incremento de la variable índice siempre es 1 si no se indica expresamente lo contrario.
Dependiendo del tipo de lenguaje, es posible que el incremento sea distinto de uno, positivo nega
tivo. Así, por ejemplo, BASIC y FORTRAN admiten diferentes valores positivos
o -
o negativos del
incremento, y Pascal sólo admite incrementos cuyo tamaño es la unidad:
bien positivos, bien nega-
tivos.
La variable índice o de control normalmente será de tipo entero
bres las letras I, J, K.
y es normal emplear como nom -
El formato de la estructura desde varía si se desea un
incremento distinto a 1, bien positivo,
bien negativo (decremento). ' t; r ,.
i i
—— — J
fin_deade t
i
ae
!
fin_
ccio reS2
° *“ *“
< acciones >
desde
10 aeotem nto 1 h cer
* * •! : Hí . - cris!!; • „\
ii32W38W* i Unm /Jointe*» (ibiwnsTgonq 11 ab 8«Dí?.í d zmuJatr a
abonJrra > 3 tuiafii a* on ; ipnuA
o í ...: . OÍ M
, ¿¡ i*
- ' " .
H < - ti Otauq tiu ra Bbilfi? ni
ít i^
Glinnv] :up ;; vil ¿ ) v. jji
i . nu ob iw ; : h obiviovi
'
Bí B .V.;. J ¿ -
' _
Realización de una estructura desde con estruct
i oL G ÍT¿l¿rfi3rt
‘ " '
ura mientras
ófibfiisqatB x9di oiiltsa omaninimonab
fil ü aooñto» ísnoia n
J
*
:J i
—
noioqo ul > :in innmi on sup « omubiiwtiousi o. l . orn / Vn
fil «b r,« moq*Í b O bvilBfrWik filK) filma on obnfiUD
'
-
< acciones >
: fin_mientras
v < — v - decremento
olC;íT!S{3
.
wn -uA> A» w \ * > ? VA su iwyy» n \ ? m sA > A > cun
iv / » i ; < u ,
^ v’ mi -As nov > Jw » \ < \n nn'O
* .
‘
*
* '
*
a ) inicio
í
“ • ' b ) inicio • •
« . . • • •
*
no ; of r,M j\ í u :i - .ooo i* í
i <- 1
.
-n
i <
mientras i > 0 hacer
.
mientras .
i <= n. .hacer
• •
i 1» « \
ni '± ni . ex/ p i
< acciones > < acciones >
i ~
_Tienh traf ^ ‘
ftfc’Mf óiowrnolniobtirmi si )
i + 1.
íomiho n aol ii3
.« ^ .. -\
= finin 8
lab I £ in ^ -
m miiq «¡I ov; q
. 0 330tq M í - i ;. . '
c ) inicio
11 i
d ) inicio
i 1 ¡
•
'
•
O í ifJ I í .^ 0 / jJ Í ” ;
< acciones> Í i
hasta que i
—_ i + i
> n / i bob
i < i + 1
-
haatasque i = n fin
fin
f ) inicio
e ) inicio
i <— n + 1
i i n
repetir
— i : ». t ‘ r>.. ni
‘
' -
i <r i * “ 1 *, i
hasta que i < 1
hasta__que i = 1 fin •
'
fin
1
i rt > * rf r<
o J rr - r"‘
repetir
< acciones>
..
i i \\
•\ } AJ / OV . o^'iVM Ú U ’ Ob RVi^ lV \ V/,A.
si < condicion> entonces
salir_ bucle
fin_ si t?« Lí i . i í
< acciones>
fin_repetir
Ejemplo 4.24 * t
nr. -. rtn - Irr ni rj
Algoritmo 2
1eer( informacion) Oj ’ ití iL 'jir > ¿J uo ¿
repetir 1eer( informacion )
procesar informaci ón * ~ -
r i mientras_.no fin de lectura
leer ( informaci ón ) procesar informaci
ón
oiv .tr: l
hastanque fin leer informaci ón )
(
de lectura
fin_ mientras *• • » *4
!
pendiente proceso (wroUipimera
ctura tá
^^ lfiiera del
bucle todas las lecturas de información si se posee una estructura salir ( exit ) . Un ejemplo de
ello es la estructura siguiente: T
repetir
leer( información )
si fin de lectura entonces
«
salir bucle
fin_ si ti V is *
Algoritmo para calcular el salario de una serie de trabajadores, cuyos datos serán introducidos por
teclado. Sabiendo que las horas normales se pagan a 2.000 pts. y las extraordinarias a 2.500 mien -
tras no excedan de 10. Si las horas extraordinarias sobrepasaran las 10, el exceso se pagar
ía a 2.350.
La introducción de datos terminará cuando se escriba '*’ como nombre para un trabajador.
_
algoritmo Calcular salario le nil
var
.
r tl
cadena : nombre
real : hnormales , hextraordinarias , salario
VS . í » ofqrrisjüi
inicio
UobftJno:) ioq obf oTlnoo
^
;;'\wi\ ¿V :\ v >n\>< y \ V» u > A
^v.. A *
*
vr escribir('Deme nombre (* para fin)
leer(nombre) : \ . *
.* r.¿ ? c.” i i r; v1
escribir( ' Deme n° de horas normales ' ) :z.v
*
- 10) * 2350 - T * -
salario
®
fin si
4 salario + 10 * 2500+(hextraordina
. :• -
escribiri nombre, salario)
. t
, V ir- /
rias
•
'
.
* '
-
_
:
— v -
. •
n»t
.
f V»
t r* r.. * i ‘1 ; J i ' '
Algoritmo que nos determine si un n ú mero entero leído de teclado es o no primo Un número es
compuesto en cuanto que tiene alg ún divisor distinto de si mismo o la unidad .
Vamos probando con todos los divisores posibles del n ú mero (2 a n div 2 y en cuanto que detec
) -
temos un divisor ya podremos decir que no es pnmo. , , nu
_
algoritmo Eo _ o _no _primo 31 :c t
var 'V «
entero : n , divisor
logico : primo
.; ;r , . fT * i « *J > i/(ffrioftfrno!ni ¿*
'
! JUfl
; ' ;
inicio í j
’
? i • •
1
< . ¡ ir
i 'joII ';
escribir( ' Deme numero )
leer( n ) . •
jf ,f
-
primo 4 verdad > «
-
t
divisor 4 2 . if!
primo 4 falso
si_ no
-
-
divisor < divisor + 1 .
OÍJHÍ3)2*¿.A Olq í M:
"
fin si
fin_ mientras
/
.
.
.\
o m V n m\K
• «
v w w
««
^
* **
•
»*
• v
v'4V .. v ‘o\ 1
• / / otra parte del programa
*
si
*
. no M
.M - Y.; \ )\\ . • .. i .
vAi v » ** 1 ' * • . •
1
• •
fin ! > v .i i 1 •
var
’"‘ •I
* -
'
i. •
; fi i ' ;
n «n ‘ -lidiioue
entero : contalumnos, contsuspensos i &9 l ; ;J * ~ M
.
nil
si n < 5 entonces i • Í V*: « •
contsuspensos 4 contsuspensos + 1
fin_ si
— v:l ildiioGe.
. ¿
i uit í.irc i
fin_ mientras —
contalumnos < contalumnos + 1
nil
z ^ ' - --^sO.«
fin
^
se puede ejecutar de 0 a N veces)
bn8dflo‘
'
' ” b;
- iv y»
‘ .
* fiwj oonnd .Mi]?ouivi /
¡
-iin> jr.\‘» vnv!./
^
tv > v>\r »MC\w/í
' '
•
algoritmo Descomponer
órés priinók
orrjlio
'!OT
-'
ia
var
entero : n , divisor »» .
l ^
v rx rC #Y;
I
V V
14 : / V i -
inicio fz.b ol
escribir( ' Deme un numero ' )
leer( n ) WtlUt *V, / i'
* A% W •
*
...
\ W IUI Ot mi *
lrtn *
si _no
—
n < n div divisor
c om 3 Í iCT;.Í6 '
— _-
divisor < divisor + 1 í.7
fin _ si i . x : o 17
fin_mientras ieb nu/n ,e : fr,o í %
escribir( )
fin O 13 i[i i
7
( • X 1. ' 'l ídil'ii f»
i
Ejemplo 4.29
Pseudocódigo que lea un número entero positivo y lo escriba invertido.
í -
k
algoritmo Invertir
var 1 * X «
i .*
i .
‘ jr*
•
entero : n, resto
i * nsb —* ns*r>
inicio X ¿ :
escribir( Deme numero ’ )
1
rreb \ mua o &
ni i
resto n mod 10 l ?n
»
escribir(resto)
—
n < n div 10
fin_ mientras
SS.Í Oír - . -
—— f
oia .
j »» *
^i ^ í d
C v - í oo
- '
i
leer(cinicial) ( { h¿ir,:
’
bó) .i
i í
'
.cí X O i -C
’ i
—
c < cinicial
años < 0 — Oí i o *0 < > cox aoM foe )
i&í
Y ( 0 ..
^ i O t S71
* - a OH
N
w• 1)”
ie
'
.
'
'
repetir
c c + c * i / 100
-
años 4 años + 1
hastanque c > *» 2 * cinicial
*f
•'
ft i » O\i
<
n * ‘A
Qu .
1
c b ln
v *
- - *
fc
v'
*
UJ i\l $ -
KÍ V '
Ejemplo 4.31
puede aproximar por
Dado que el valor de e A x ( exí se + x n
,
1 + x + j r A 2 / 2 / + x ^ d /ü .
expuesto y
un
, de
calor n* x
escribir un algoritmo que tome hasta que x n / n! sea menor q
-
vvy calcule e ' x ( e lJ , mediante
el m é todo
rminos necesarios
lar téérminos
empleando los
'n
algoritmo
__
E_elevado a x
.
k v:i v
> i *
la
var
entero : x, i a i x:jnola a
real : e, num, den i 2 i d i v r' *
inicio
escribir( ' Dame el valor de x . ' ) CS.f oiqrnsp
Ieer( x )
e 4— 1 Bvip o$sW>ooV>u«H
num 4— 1 OI . ; , cr\ wt V, r . nu ü
den 4- 1 .v. v
i 4- 1 ^ j
repetir i
num x num
den -4 den * i iJ i o1 ~ i
i 4- i + 1 i ti ¡ í .f
• tnarj
e 4— e + num / den
; •
. *
. -iO/ \
_
hasta que ( num / den ) < 0.01
escribir( ' e elevado a ', x, ’ es ', e) ioo t r! 0 < r. 3 ¿vi 21 .3
'
;
-
fin — #
^ 1 3 í. i ) l i l i toas»
Ejemplo 4.32 01 V Í b /!
— *
Algoritmo que lea día , mes y año, así como el día de la semana que fue el 1 de enero de dicho año
y nos saque por pantalla el día de la semana que corresponde a la fecha que le hemos dado.
Deben considerarse los años bisiestos y depurar mes y día .
OS. Jv c!qrn 3Í3
algoritmo Dia _semana
var ItiíMtt ' A •
• *’ v v t
:a . vn\\ . > ,\ boQ
entero : dd, mm , aa , contm , dtotal , di
carácter : día
logico : correcta, bisiesto
- * 1
. , V:í '
v.ru l to .. 1 » *
rav
inicio
repetir / /comienzo de repetir
:,D % ;u i o i n i o : j ¿v i -
bisiesto 4- falso ololnl
correcta 4- verdad o v ‘ v> r7 ' * i \ UJrivmt» .
escribirDeme fecha (dd mm aaaa) ’ ) * ¿ i> i » n¿ , i r.
Ieer(dd , mm , aa ) >
si (aa MOD 4 = 0) Y (aa MOD 100 <> 0) O (aa MOD 400 = 0) entonces
_
bisiesto *- verdad
fin si * }
'
c .- í .
1
BOVi í rtJ, r. > I Í1 3‘\ íf
_
segun sea mm hacer » ft
•
' 10 > i ‘
nil
4, 7, 9 , lis » fs jo : b — 1 f i k/
> 28 entonces
si dd i' .v Jiidbxoa*
correcta 4 falso
fin si _ - ( ’
of - . *
í e1 í TOO ?>
‘
l
I b * t¡ v , i ó V IUKI serr é ur % %
si no .
_ * • l. 1 M .. . u»
Ui I i . • • . » . v •
-- óle n i 3
Tir'
• •
* • -.
correcta 4 falso '
_ «í r* ; ido * modo C K íSVí " • uvwV ¿iara ¡ a c:i o ~
-
"
fin segun
_
hasta que correcta / / fin de repetir mee
a v i no nil
i
i
i i \ •:* » tr Ifií rtia v. a o(r. ^ X >¡ ;X ; oS ? r IL .
ii
dtotal 4 0 - . • . *
. u * s
AHUT0UíTf33 X
desde contm < 1
_ hasta mm
segun sea contm hacer ;
1, 3 , 5 , 6 , 8
-
12: . 10, . v .xa nontis so ttnujouil aeJ
í
*
O i , ; » :. ¡í 1
dtotal ¥ at olaí ’ ? f Vj > onodn
' e xa coono dno - - *
•
¿
4 , ^7V - 9 , :ÍT:i! •; a «utosaaiani oí tsxifii
u í io / drn ?;? sldi/oq ¿3 .üB /iir>msiÍ£ ¿ob i>b cnu
d t o t a l t <- dtotal ¿f ,(3fe¡ms[ s io3 .ZBViJSfmJÍiJ «ob J!J
mj nsínoo ';:¿ p íidÍ 0DSÍ S¿ -
•• t ,
dtota
r$ h
l + 29 * '
*
fin_segun l
fin desde a !jo ñolati .no s o i r « i to o 1 e
• .
I»
{
i i
: * íidlraos i
-
'
dtotal e dtotal + dd
escribir( Deme d í a de la semana que fue el
1 de ENERO ( 1/m /x/j/v/s/d) ' )
leer(dia )
_
segun sea dia hacer, ntfqraoqvb,**/ ¿ B ¿CTül3UIl29 /«1)0 « <fS10ÍTSlnÍ ¿0 KímrtOUlíZS » 1
'1':
di 0 saono ^n3 i c r. nc ; ia >
di 1
x :
di f 2
* j* s
- V. :. n - Í . " iV, V .
di « 3
'v : 1
- ¿ ü. nil
- ' I; * - ,
di < 4
• s': íflqiiiurn ;. J O < -j b'
í wrj óslo, ' .
;
¿niJ
di 4 5
'd : 1
— :o / fcnnoi 5.Vo noo is inujouii / o t;nu obnax
C v ’/ T í ! 11 . 1 ' V’í vi." I } . vit.»~ í íJ . » L : •
t v .
" ' '' -
_ di 4 6 - .
f \ :V
^ .; iv .
> *
“ <
fin segun
4 .
-v
fin_si
fin_ si
7 IJ p <“» i! i
si _no .
si condicion 2 entonces
< acciones > t
si _no oxoini
si condicion 3 entonces
< acciones > oo >r j o1r. < A ie
si _ no r > 4 A
A i«
on _ lr
,
• - T*
¡
fin _ si ia i
fin_ si
MÍÍ O.1 '3!
0\ i»-«
la
_
fin _ si
»
Una estructura selectiva m últiple constará de una serie de estructuras si, unas interiores a
,
otras. Como las estructuras si pueden volverse bastante complejas para que el algoritmo sea claro
será preciso utilizar indentation (sangr
ía o sangrado), de modo que exista una correspondencia entre
las palabras reservadas si y f in_ si, por un lado, y entonces y si no, por otro.
_
La escritura de las estructuras puede variar de unos lenguajes a otros, por ejemplo, una estructura
si admite tambié n los siguientes formatos: olqrnsjS t
v . QT . tw
^
< acciones >
4 wui "
- W!
>.V,
'
r \\ .
- ' . > =: i v . .‘ i W W ) \ ' A
B l no
si expresi ón booleana 2 entonces
• 1 ' tv . 1¿ I C Q l *
< acciones> i
11V
si _.no
si expresi ón booleana 3 entonces o i. r * n i
< acciones >
o i -..v:;/ ¡ r
l er»’ \- ; *
? i id i i
si _no
< acciones >
( *. . . J , ¿dieoL
. :iq í . : c::us lebic . iOJ
* '
aeonod /xe d , £a
fin_si *
fin_ si
fin_si r
•d 93 /jO Í *T £ ) * • •
i! *
i TO “ J
, , J ) t x driovi »
•on _ i •
t
L o r* J r 6! 'b \
i e .. r: + '
< acciones>
ia . «t i .
fin_ si
on. . le .
teoflo í fl ® > ia
( i .
en . ü
fin si
eavriojnu *
i ft
Ejemplo 4.33 on f a
lea tres n úmeros A, B, C y visualice
en pantalla el valor del más grande.
Diseñar un algoritmo que
Se supone que los tres valores son diferentes. xe nil
var
real: A , B , C , Mayor
inicio
leer( A, B , C)
si A > B entonces on
si A > C entonces
/ / A > B, A > C
Mayor
si _no
-
« A
Mayor <
_
fin si
C
— //C > = A > B i K n2
i 8 ni*
si _no v¡
si B > C entonces
A
-
i
|
t
#
Mayor < B
si_no
— / /B > = A , B > C
ni i ‘, , .
jb rjP ‘ :;n ' ' - HWWJ ¿/ / iKj& bc :JHí >irn< o
Mayor « Cc- r
/ / c
C = B >=
>=
,
= , A.
1
..
. yt. . (
• 1
; ¿fil «fflO J (
, )( r .í •
í i / *
. í «: > ft
'
escribir ' Mayor.:' , Mayor) .i nil -- & { &
fin ^ .
t
)*jW | ííTIillWlí W lA A) i
.
i,:! -
t fjj
_ _*• »
i*
..
*
-
•
1 (
-
-.
.
/ * 1
* ’ *
.'. .
Í» f¡;í ojiml r í
«i.
/ jínms ji? col i!í»K i
/ (
‘
Li T io t ' '
Ejemplo 4.34
El siguiente algoritmo lee tres números diferentes, A, B y C, e imprime los valores máximo y mí nimo.
El procedimiento consistirá en comparaciones sucesivas de parejas de números.
v' 4 » •
* » •
^ .
algoritmo Ordenar •
i '
9
var 1’a
real : a , b ,c !
CíOílO :£ 1
,, ,4 *r *
•
.
>
inicio
escribir( ' Deme 3 números ' )
leerla, b , c)
V
I
c.x iu
_ ' ‘ 1
* • **
* * ‘ •.* ,:ti' ' J b'
•
.ilnú'.y - , . ,}‘
( { -. . íí >.J ctn -omiHi f. d
i -a K oAr v or
gAClATO': * orrvr t v I l l* -* , r\ " * fy
Ejemplo 4.35
«* •» '•»
> * f *• / **• *» /1 *
~ UAJrs - < * 3 ^
* . .
Pseudocódigo que, nos permita calcular las soluciones de una ecuación de segundo grado, inclu-
yendo los miares mag ,nanos.
algoritmo Sóluciones_ecuacion
, . , , |, •
í büd
y. *> ¡
f
’y
.
.
,
yj > \ *
.
.
.j '
jr
.
var . i;¿. bni o
^
real : a , b, c ,d ,xl ,x2,r,i
• V* f '
; ; •
£0flfit2 nómlaoM iqyi eJ . oJfioffuBq '
Inicio
escribir( ’ Deme los coeficientes ’ )
leer í a, b, c) i
si a = 0 entonces i i
_
escribir( ’ No es ecuación de segundo grado ’ )
si no »
—
d < b * ’; b 4 * a * c
si d = 0 entonces .. •
-
- , — 1 I
xl 4- b ( -
/ 2 * a) »
x2 < xl — I
si no
_
escribir(xl ,x2)
i .
i
I
.
t
i
si d > 0 entonces r
- -
xl f ( b + raiz2(d))‘ / ¡(2 * a ) I
- -
x2 < ( b - raiz2(d)) / (2 * a) i
si no _
escribir(xl, x2)
I
——
r < ( -b) / (2 * a)
i < raiz2(abs(d)) / .(2 * a)
escribir { r , ’ + i, ’ i ’ j
J
__
escribir(r, i" ’ i * ) '
fin si
_
fin si
fin si
V " Id
-
fin hártf',(l y‘.í$#o»8lWCWVf<?Y'ysfcíwM :
•
. . . .
! . 1 • t
, M .4> vuaR
var
entero : hh,mm,ss
O'- frff
—
nun < mm + 1
si mm = 60 entonces .
ui'jñ ivoiq cbrotnuq 6ftii • n -.;
.
^ H
«OloUlV OWIOIlnií»7 Ol ÍIO! ^ .UI«jVWy¿U -
•
ss)
'
eecribir ( hh ,
fin_ei
fin
i '
^^ ' . • ; Ir
ni •
*
nw lis ^ imo »
. C3& I
C ~ • r-> f n
* t . A f *«
oa_ i
{ f>
JNR
¿8
* I
•- 1
Ni ' j' í
ia r
*
^ i - .'
i a) b) c)
T
d)
*
3
ua
Figura 4.14. Bucles anidados: a ) y b ) , correctos; c ) y d ) , incorrectos.
) £ . £ olqms ;:!
Las variables índices o de control de los bucles toman valores de modo tal que por cada valor de
la variable índice del ciclo externo se debe ejecutar totalmente el bucle intemo.
Es posible anidar cualquier tipo de estructura repetitiva con tal que cumpla las condiciones de la
Figura 4.14.
1BV
Ejemplo 4.37
i Se conoce la poblaci ón de cada una de las veinticinco ciudades más grandes de las ocho provincias
tsJtni
de Andaluc ía y se desea identificar y visualizar la población de la ciudad más grande de cada pro-
0 0
m
• «
vincia .M
'/ t i I d = - i2 'v
El procedimiento para deducir la ciudad más grande de entre las veinticinco de una provincia
nmvinria se
—
consigue creando una variable auxiliar MAYOR inicialmente de valor n- qUe
sucesivamente con los veinticinco valores de cada ciudad d e moH * 1
n se va comparando
comparaci ón , se intercambian valores de l i1
° *"* (
/
*.
oi r ’
MAYOR < 0
1
•
hl tidl'ioae -
’
_
‘ 3
^
mientras j < = 25 hacer
ic : í i
leer(CIUDAD)
ni
cM
*
i si CIUDAD > MAYOR entonces
. ' LMAYOR < CIUDAD -
"j <
'fin_ si
j + 1
— .. MÓ!33Uf?T8Mi AJ e*
fin_ mientras .. í ** O3 O O > ) 1IX •
'
; « ¡ *b :oonoo i. / ciuíotrüza
Ejemplo 4.38
. ( odo\ ¡) note > tn¡ / u ¡ sí t v . n 32 olte mqr ;23lsnoioibnoofli ¿onoiramñkl issilfim orna
leídos del ttpfff&smddorq ohi ¿ ef ¡ ajqmsi* nóbomt ni r.iz3
in aol cien (cioibiirwo v ¿jacten onio j cien g&pouifgni si pbcri -a *
en realiza r una estruct ura repetiti va de n iteracio nes del algontmo del pro
El consistirá
blema ya conoci do del calcul o del factonal de un entero. aonun í K - n i u , s¡ on ..Jnrí ,-n . ,Xfiv n , , ^ 4 %
) s_ -xx í "
. ¿ . • *
.
v %
d wpnuA
•
• T
. . í zapo
*
«nugnino ¿x ^oq fisilHu aupoínoca rraid urmn oiqnu oapi:/.:; f:b 1.5
^
f i / dtii : : : ono ó i nLf . is T i übteatnií/ii snuantn ,ituloni
í X Ííí
;f '
/
^
fci; v -: j ¿¿( ny ri:
-^
'
^
íoqi; desde i l hasta . n^ hacerA í - U atil ACV Í1 . A olf í
O HO* «_xl c-3rfiO. > LS;ií.>nÍ 8t í 83ítotefiUlÍ8
'
inicio
desde i <- 2 hasta 100 hacer
primo <- verdad
divisor «- 2 . „ hacer
mientras (divisor < = raiz2( i ) ) Y Prim
si i mod divisor = 0 entonces
primo <— falso
si _ no
divisor *- divisor + 1
fin_ si
fin_mientra8
Bí primo entonces
escribir ( ir '
fin_si
fin—desde
fin
.
fm i s»
_
ir a ( «goto» )
4.9. LA INSTRUCCIÓ N
,, ex epto cuandojas estructuras de contra ,
B flujo da con* de un a gontmo
estructuras ya
ó conocidas :
es siempre secuenci
secuenciales , selectivas
^^
f áciIes Ieg¡bIeS UtÍ I Í Zand laS
y repetitivas. Sin embargo,
n
*
( goto_ s
; es; nece
engastone )
-
.
°
^
ir
; para ello se recurre a la instrucció
sario realiz bifurcaciones incondicionales
Esta instrucción siempre ha sido problemática
y prestigiosos inform á ticos, como Dij stra , han
los programadores y recomiendan no
tachado la instrucción goto como nefasta y perjudicial para
Pascal huyen de esta instrucción
utilizarla en sus algoritmos y programas. Por ello, lenguajes como
y prácticamente no la utilizan nunca.
_
Aunque la instrucción ir a ( goto ) la tienen todos los lenguajes de programación en su
juego de instrucciones, existen algunos que dependen más de ella que otros, como BASIC y FOR-
TRAN. En general, no existe ninguna necesidad de utilizar instrucciones ir a. Cualquier algorit-_
_
mo o programa que se escriba con instrucciones ir a se puede reescribir para hacer lo mismo y no
_
incluir ninmirm instrucci ón i r a Tin nrnarama rmp utiliza mnr* hoc A « ar m A o /t í fí
_
situaciones las instrucciones ir a son ú tiles; tal vez, las únicas razonables son diferentes tipos
de situaciones de salida de bucles. Cuando se encuentra un error u otra condición de terminación,
compito
Cr P
"^
directamente al f a> un bucle, subprograma
'"
' tmeradasprograma
potan rftetTquTsi
que estén
algoritmo Error
Tnr
o
ser ^ puede diseñado para terminar con una
f
” realizarse a instrucciones
36
detección de un error.
nil
•
'
olr ííT
ti
^
fin_ si
” '
ti
lOOrfin
4 .
*
= N • (N - 1) • (N - 2 ) N - 3 ) •... • 3 • 2 • 1
A »
N! •(
.! / >2
otrial
El algoritmo desde supone conocer el n ú mero de iteraciones: >
n ^sn .U nisa
1 escribir ( ‘ E l factorial d e , N,, 1
'es 1 , FACTORIAL )
01 no; . »: í - /no
*
>
-
* mi / /inb oilman .
b ;íJIV ? í;IP «
,
M J.J i .
Vf ¿ f f - Or f; ¡ j (í t
. i '
> t
4.2 Imprimir las treinta primeras potencias de 4* es decir, 4 elevado a 1? 4 elevado a 2, etc. r fj
algoritmo Potencias 4
F. = 3 n ¿ tr «• -
var b í . 3up íonam l ( or.
< ¿SVKMKMI ílasd «si flftifiniandt ^ . ri i
£ /
^^^ eátéror Irf ~ LJJOS í gf
s i n g a o s I J i tul*; : .*b wstnu'U
~
inicio '
desde n -1
4 hasta 30 hacer :»J /7 > sjiTri ? b >;v ¡< cmJ Úo vi fo h .\ r\ .
escribir { 4 A n)
f in_desde * 0 2 c- o i _ v _s 3 n s ¿ rv. o r . Vic$I «
*sv
fin
C ‘v C t .1 u * * í O O . * , d , £> : : 7 3 X í .c»
4.3. Calcular la suma de los n primeros n úmeros enteros utilizando la estructura desde.
“
,
( 11 » *19
.S = l + 2 + 3 + ... + « i w > a¿
' vii
J
: % Í 6 l'xoae
^i
C -> 3
M
- i f: i r o o
— >
t: o¿ií ;* - c- :: ó i o ?de 1 x
algoritmo SumaNenteros ií • 37
var l , .» .
' **
> ireo 'i
. o
entero : i , n
real : suma ctO ) iidt x
^ .oill?
*
( or :m , '
inicio
leer( n )
suma -
4 0
r
suma 4- suma
n-
• •
. ...
lBta n" hacer
desde i 4- 1 hasta
< -* * * - I ^
• l ' -
i
J
- ahsnsídoBieqomihoala tousilad|
} ó.l .
fin_desde A vV^wvAA
suma
/ / e s c r i b i r el resultado de
escribir su m a ( )
í lni }! ,¡i . . o fO . .
r» H ¡c,
.
fin . rO A
= "C. j
.
4.4 Dise ñar el algoritmo para imprimir la suma de los nú meros impares menores o iguales que n. > :•\
—
S 4 S + i
fin_desde 4 : c ;; 1
ZT
escribir(S)
fin
i. * v
_ ’ 'vr
%
-
'*
. i
4.5. Dados dos nú meros enteros, realizar el algoritmo que calcule su cociente y su resto.
ZSJ jfr ú Ví ñ íivczl : -> :Vr -
Sean los nú meros M y N. El método para obtener el cociente y el resto es por restas sucesivás; el método
seria restar sucesivamente el divisor del dividendo hasta obtener un resultado menor que el divisor, que
será el resto de la división; el n ú mero de restas efectuadas será el cociente:
50
11
113
3
j . __
50 - 13 = 37
13 24 ”
,
'
C=1
C 2 **
1 '
^ »' '
•*
SVJ '. II ». i
^ tf * mi . ! J ííI
"
• .. . *¿
f
.
24 - 13 = 11 C=3
Como 11 es menor que el divisor, 13, se terminarán las restas sucesivas y entonces 11 será el resto, y 3
(n ú mero de restas) el cociente.
Por consiguiente, el algoritmo será el siguiente:
__
c ^
‘ » zriri .Yl °
algoritmo Cociente y resto : í *L
%
var J
/ * , » •t <
entero : a,b, cociente,resto
^
in
« triwr
2eer( M )
( ’ Deme dividendo ' ) 'HÍW * m
"!l < » > # / $
escribir( ' Deme divisor ' ) \\ 4 ... 4 £ 4 r4 *
l :?/
leer( N )
resto 4 M- '
*
•
íi ír • rio í
cociente 4 0 —
mientras resto > = N hacer
!\ ‘ • i Zt
| • 0..
'
—-
resto 4 resto - N
cociente 4 cociente + 1
fin_mientras
F.o::
* j A J» .£
V . i * i:
> C. OíU ) :IOIJ La
v
.c
y,7
^
1
fin * oinl
7 ' : if.ol
.
4.6 Realizar el algoritmo para obtener la suma de los n ú meros pares hasta 1000 inclusive.
»
\ nbBst r\ ': Tf
S
Método 1: M E 'M f £. ' i . T
\
S = 2 + 4 + 6 + 8 + ... + 1000
í .. : : : nici •. :u .
- iM1 *
var
real: NUMERO, SUMA
Ot
ó 11 ^«-"^ *
inicio
SUMA 4 2 - u í. *
r. ..
NUMERO 4 4 - li t& q * í
mientras NUMERO < = 1000 hacer r 11*1 0
SUMA 4- SUMA + NUMERO
•r í V: ) * " "
^-
NUMERO 4 NUMERO + 2
_
fin mientras
- > c- t p r; » £ri
{/» . . '
1 * t i di iOuS»
fin Í li í
V i
C r í j1
i.’
^
*
^
SUMA 4 2 - q: ; T < * .f .
NUMERO 4 4
repetir
- oiolni
? /. í:
SUMA 4 SUMA + NUMERO - ('V5\n leen cinco ;
'*
.7. “»
_
NUMERO 4 NUMERO + 2
hasta que NUMERO > 1000
- %
( ’ Vi * * i -. i se . ' rja í i ) - o / *
r: e r ?
*
/ ¿/ i - •
;
4
i st/p _
* fHk 1
sic /id '
fin nil
_ ¿v rUf obihp a q r n oiamirn iiji i smos atiü alead ,obcboJ lab eopmlm oJfisma rizoon*
g '
^
4.7. Buscar y escribir la primera vocal leída del teclado. (Se supone que se leen, uno a uno, caracteres desde
•
tr r. 1
_ -JGV
tr? o ¿: >
algoritmo Buscar vocal
var
— il.o
cioiul
* •
* :
carácter: p
inicio
repetir
( ‘ C v ; 't
ón ©
'^ >
U ::
:
Y - *<
or. . '* 1
. •. , isfi í
. » :? . 1 » s i. :1
-
ieer(p) *
_
hasta que ( p. = ' a ' )o(p = ' e ')o(p = ' i ' )o(p *,
1
o )o(p
1
= j
/' u')? r i. h • i r* •~v ) •
'
^ .
escribir( ' Primero ' , p) ni":
fin:
¿ obí5iaí3 IB «Mnílalib «obolim üOONCNAMIIN nu al taiBÍi/ tUO .£!.
/1 ti
*
4.8. Leer dos números y deducir si están en orden creciente.
1 > i ;v , . • i/ - 1 r
- <.
:i > '!• ?3 .
- -
‘
- • .
inicio \
l a \\
escribir( ' dar dos números ' )
leer í a , b) urri s.tnot.r -u.ÁUluyj uuM
si a < = b entonces
si no
_
escribir('orden creciente' ) : _
I í I,
• iT. -
i.
^1i
r< **
ii * » •>
- i
fin si
_
escribir( ' orden decreciente ' )
»• •/ *
U + n>
fin
f
/ *
•i
*»
leer(respuesta) y o o i . 0r
- * -" TI • Fyjx> :
K ‘ zk
hastanque( respuesta = ’ S' ) o (respuesta = ' N' ) aii
fin
k dJJestá £
,
.
4.12 Calcular el factorial de un número n con métodos diferentes al Ejercicio 4.1
-
n! = « x ( n \ ) x ( n - 2 ) x ... x 3 x 2 x 1.amaba» uvteo n&Ma fe ibubcti % anamim zob w í
es decir:
" 1 ' ' ' t !uuy >
* í »n{ ) K » fiy ,ú v n .?oi 3(iui íi ?.;>U
51 = 5 x 4 x 3 x 2 x 1 = 120
4! = 4 x 3 x 2 x ] = 24 ' J*
l *
• ;mo ’ i ora . t i
*
i¿
31= 3 x 2 x1 =6 \r nv
21 = 2 x 1 =2 ( . -
* 4 «. Vi ¿
// = 1 ¿iolcJ
=1 5 í
- . ,l JoV* ir i* , . )* ildl*iD
Para codificar estas operaciones, basta pensar que **
( n + 1 )! = ( n + I ) x n x ( n - l ) x ( n - 2 ) x . .. x 3 x 2 x \
- . H
. ’ •J ti! v>
*-
1 * "
• i j
cu , i * ,
mt '* *5 lv‘4
l£ Í11\
( n + 1 )! = ( n + l ) X n! kl\
Por consiguiente, para calcular el factorial FACTORIAL de un número, necesitaremos un contador i que
cuente de uno en uno y aplicar la fórmula
FACTORIAL = FACTORIAL * I
: y n i u xr n ,f.nvsf :vnf¡ si*' > io / 1 í . t /1
' * '
.fOlJfujj/l ?O J ¡4
^
inicializando los valores de FACTORIAL e I a 1 y realizando ün bucle en el que I se incremente en 1 a
cada iteración, es decir, • "
-
IIFJ i¿nu hi . vi;; o ! ; ir ¡ 1. r$ h ¿ ¿ obi í i Oí ' . • *
x >uú ju.>r \
Algori tmo 1 de Factorial de n:
<07 *
FACTORIAL < 1
í 4- 1 0 *1 OTTirn r.
repetir
FACTORIAL 4 - FACTORIAL * i n t ; ¡: r _ > 1fiSÜ£9I fcldi OOTlhogl* fob OÓfoOft 3Jfl3ÍUJJt IÜ
-
i
i 4 i + 1 1
, p ( ni ; jftjpfov fo nao *
—
•
J
Algoritmo 2^ de Factorial de n: , ; ; ,
UU «: o
¿; ( í u ¡ y j í n nib's h JUU t .oUcimi .1
, , •
o ronolm ¿5 r > i i
I !
Alpor tino i ¿fe Factorial de n:
cu /. ;
**
, oí 9 r ;n
{ ovi' Tun
* n : o 7£ * . "
ole? i el
FACTORIAL * 1 -a .. turret y í 0
.
-
i « O - 07 0 í; * ' : r. * x *
repetir .'i 71 r £ ¿ . 7
-
FACTORIAL < FACTORIAL * ( i + 1 ) / - n r
i < i + i
—
hastanque i > n 1
*
;
- ssonoína ónix * :;
( O J 9.TU/n } 7 fr
*
— * o. u x ^
*
.
*l
ie -
'
I Algoritmo 4 de factorial de n:
GTU
-
FACTORIAL < FACTORIAL * ( i + 1
) .yvuñ : i ¿vQ
fin_desde
•U UCDUO
ía ser el siguiente: - :
Un algoritmo completo con lectura del número n por teclado
algoritmo Factorial
var
podr
A
[ C X
: ;>
XA
o ’, ote i
,
j
^
entero : i , n í r- 1 n > .. •'
real : f
inicio -
f i
í
—
*-
1
1
O
r
1
i *• ; » ; - 1 c-
\
^
’
//n >
-
*
leer( n ) ; ¿ > f , h• / . C v V-
•" /
¿ , » \i ' A
4 *.
repetir
f <- f * i
-_
i * i + 1
1
; »r '
Of •
haeta <jue i = n +
:i
' , n,
«
es ‘ , f ) ' Sí 1 >: > <>
escribir { ' F a c t o r i a l d e
fin
• *
•: ¡ í t • }
i i/ < * * :.
Para resolver este problema, necesitaremos un contador que cuente de 1 a 100, para contabilizar los suce-
sivos n ú meros.
El algoritmo que calcula el valor máximo será repetido y partiremos considerando que el primer n ú me-
ro leído es el valor máximo, por lo cual se realizará una primera asignación del n úmero 1 a la variable
máximo.
leer(numero)
n = 1
máximo = numero *
5 [' J
- * *
-
T
algoritmo Maximo
var i ? s.i
entero: n, numero, máximo
inicio \ v . 1 V.» v ll oí *
I l •v '
I
leer(numero) " > .:AI / " . :
n 4- 1 .V
máximo* 4 numero
repetir
— .. X
\
~ ¿ »
-
w r* -
n -
4 n + 1
leer(numero)
I
*
i : * »
hasta_Que n = 100
escribir( 'Numero mayor o máximo máximo)
fin a •? , '
t *r , i . >
.. - ) - ‘ , "" •• •
1 . Algoritmo Otromaximo ‘ ‘ .* f ’ ;
var #•»
!, IOS
entero: n, numero, máximo
inicio
ieer(numero)
n «
——
2
—
máximo < numero
repetir
n « n + 1
leer(numero)
^:
*
f
si numero > máximo entonces
_
-
máximo « numero
fin si « r - A - / *
hasta _ que n > 100mayor o máximo ' , máximo)
eBcribir { Numero
fin
2. algoritmo Otromaximo . : .
í í'-J: h •
, JI '1
« 1 > :' '
•0
9h
*
var
entero: n, numero, máximo 1
' i .* .i * ; /» » 1.441
inicio ~ ti j ~v .r
^
leer(numero)
máximo 4 numero-
repetir _para n = 2 a 100
( r: ;; . iMlioaa
fin si
_
máximo 4 numero - mcqfribmídoo noioointem ¿onion i<
^
fin_repetir
escribir( ’ Maximo, ' , máximo)
fin ;
; si se desea
NOTA: Los programas anteriores suponen que los números pueden ser positivos o negativos
comparar sólo números positivos, los programas correspondientes serían:
l
i r
1. algoritmo Otromaximo ir <
i
var
l
entero: n, numero, máximo r*
>
inicio
-
n 4 0 i v/
máximo
repetir
4 0
—
leer(numero)
—
n 4 n + 1
si numero > máximo entonces
0
i
w\
máximo 4 numero
fin_si
hastanque n = 100
— íiiBq zubü jim; zzhuil . í * clq*YK? j3
í r * J. » , i , ’ ioq , i } ildinoze
Q ü G sbjxi í
2. algoritmo Otromaximo
obcab ni 3
var
entero: n, numero, máximo » t , í i ,; » ' ,
i
' . \ ‘ .
¿Siolü S ,.( >J
inicio
*
i ,[ .1 Á) é‘
— —
n 4 0
máximo 4 0
í L X X
1 y f
* J í !f | í ~ X
fin_si
—
máximo 4 numero A i o: » r
i
fin_desde
r ji
)
escribir( ’ Máximo numero = ’ , máximo
v
<
t
i f*
i r
fin /v
A t
4 *
La anidación puede ser:
repetir,
bucles repetir dentro de bucles repetir, etc .
) dentro de bucles
bucles para (desde
\
fe-
-
Scanned with CamScanner
152 Fundamentos de programación
repetir -hasta_que: — «
Ejemplo !. Bucle para en el interior de un bucle
'
repetir c"
leer( n) lili.
desde i 4- 1 hasta 5 hacer
escribir( n * n ) f
19*1
i »
fin_desde : V . i
hasta _ que n = 0
escribir ( * Fin ) 1 C' íiojc , > i*• • ¿
—
á para: i
Si ejecutamos estas instrucciones, se obtendr tili
5 resultados 25 v , ) itdlioae
*
25 n 1
25
;¿ í i .
ovrv : ai>'*
t íí Ji
,
25
25
í * »íTt ¿/ fl *
•
I >upfram
) i • soJ ,KT07
t • o)rr;.* OT .. ;
- run20
- ¿ i j * n( . ' . í;^ j ? ' 'ííüH o í ')í ’Mf rno J
^
n = 2 resultados 4
4
4
r• . á , . 30 or:¿ -:
c ;. >
v /
4 ami •
£ ,.' n ,n :0703:19
4 OÍ D
.%.
»¿
O
n 0 resultados 0 n I T
/ . /.1J
'"
I
^
0
;¿u r.
0
0 : J i *r . * * r>I
:) i
fin
0
ú jDnolio
'
Qy \ * i
i
o .r ,
- n
A
n
j = 4 í * j = 1 x 4 ‘ iJ I > J.
= 4
Bsoaosnp CB;S :r - In
;> ' c.>,- -4
10 i -Di 1 X 10 a 10
i
-
O U 'WuTi
í u lili
2 :
,
i
j
= i
= 2
i * 3 = 2
i * j = 2
x 1 = 2
( o il r v .«.
vh irh_nl1 .
j
j = 4
= 3 1 * j = 2
x 2
x 3
= 4
= 6
^
‘ • -f• i- a/ i
* , oit
*
- ni ;
i * j = 2 x 4 = 8
10 l * j = 2 x 10 = 20 bin; / ol - I J ' ‘
.
,
.. I
- -
fX i i t* J
*
i = 3 : *
3 = 2
1
= 1
w *t
!
•
i
i *
* J -
=' 3 X i = 3 '
j s 3 x 2 s j
'
Ifibinc íTsbauq l.: ¡ op ,
. i. , . t _ L1 . . .. .
. . .
3 i V .M - '
^
Di
“
*
=
j = 10
4
i * j = 3 x 3 = 9
i
-í =
í * ]
^
*
3 .x 4- = 12
- _
j = 3 x l0 = 3 0
.
. - ... •
J A 1 r O l y jH w n\ • .. - V
„
-
-
. i. . .
•í* '
.
r/ínsbinij •
< nlf * ;
‘
•
¡- ( A /y - .
* . w ,
mi
,
•
Ejemplo 3. La codificaci ón completa para obtener la popular tabla de multiplicar de los escolares ser ía
la siguiente: \ f f
var i
i r*
entero: i , j, producto ;
inicio
-
para 4 1 hasta 9 hacer
escribir( ' Tabla del ' , i) í C
VA ) V * a t i e) :f
. «i
—
#
__
eacrlblrd , ' por ' , j, = , producto) 1 i
fin para
3!
le. ni *
fin_para vi viM •
fin oíii
( XA:i v trixe . -X c
-
4.15. Se dispone de una lista de N números. Se desea calcular el valor del número mayor.
algoritmo
var
entero: I
real: NUM , MAX
i
V * on nijnv rn •. hi ; —i /
v i. i *:xt
- tyj i twuc ? ,lji
'í r Tint V íJ non? ' I
: •
e n t e r o: N * ¿ i i:.- . ; .
*
.< ¡ofqd&ri :.
f
’
ir " vv.:íl v - J:r » £ ;. /7 » »*
- /
>
inicio MUí.
• -¡ mimingv
' ' ¡
Jub áb bíVüiT. i Ti i
1 '
- --*/ .
^ - *•>
! Sí ernema on >aramún sb / .
'
—
desde 1 4 2 hasta 1 0 0 hacer
leer(NUM)
.
‘ rv Vil í / 1
si NUM > MAX entonces . í;H -•
_ -
MAX 4 NUM
. ¿ situsi 'to-’ i> *
,rni') ao
_
fin si
fin desde ;£
'
- v
* /
*
. v >
. oic :j i : s on !
i jJcorvIiS - ro i> *
fin
:us- A"3 mui ) da» ir.LnhUu íó
>* tbttúl r.l nixilil» « matriz j J u q u í uolt. o ü ftq « ú o ¡ i rr n Jf
;
-
4.16. Determinar simultáneamente los valores máximo y mínimo de una lista de 100 números. .
inicio
*•'n t
-
r s •*
• ^ ^1
X
leer(NUMERO)
t ill
-
MAX 4 NUMERO OO
- -
MIN 4 NUMERO
desde I < 2 hasta 100 hacer 'i ? rv!
* 'J { .: i
*
leer( NUMERO) VI y íi i c v j í a i'
ei NUMERO > MAX entonces BWTNO 3 no rr * -
• is
si no
_
MAX 4 NUMERO - :
•> > • t
~>
r
Á
»
3
l ''
I I O i: * .. K •
'
U
__ _
si NUMERO < MIN entonces O'
" ;
MIN 4 NUMERO
fin si
- V T >
fin si ‘r , ni
fin desde , MIN) t f <"j '\ p? i ;y 2
escribir!' Máximo , MAX , ‘ Mínimo
1
1
fin
4.17. Se dispone de un cierto número de valores de los cuales el último es el 999 (no se
procesa: es final de
lista) y se desea determinar el valor máximo de las medias correspondientes a parejas de valores sucesivos.
-
algoritmo
var
* I •.
• i, *
Media _ parejas'
1•• '
. * * | ‘
1* ’
'
’
I .’ / .J r :- r , .. » ! '• . í 1
--
U M Mipi
1VW‘? W. L\
entero: NI , N2 • vi uml r 11
real: M ,MAX Z L' J
inicio ' "
. :
leer(NI , N2) oioini
MAX 4- (NI + N2)/2 -r •
MAX 4 M - ( cor
. \ -i- V . ilciL'toa ^
fin _si
leer (Ni , N2)
JLi 'Xfi - l . .l l c
ac ni 1 _
fin_ mientras nil
escribir ( ' Media maxima = ’ , MAX)
*v ru entrona í L ioiu 7 \ ij IGIUOIBO í> > «b
^ ¿oidoitm V-, oh cf
ói í enu ob onoq * ib .51!
«
Análisis 'T A .
Esta subrutina es una aplicación sencilla de «interruptor ». Se sit ú a el valor inicial del interruptor
( SW = 0 ) antes de recibir la entrada de datos. o ID ¿ai
La detección de números no enteros se realizará con una estructura repetitiva mientras, que se realizará
si SW = 0 . La instrucción aue
que detecta si un n ú mero leído desde el disnositivn
dispositivo de entradle
entradas es entern:-
ec entero
. .r i — « u«
leer( N ) - - osrí
£? -* I íí l) 3 S? fc
Mwilfieol
realizará la comparación de N y parte entera de N: aaor. - jjr.s . ’ . r, . te
Pseudocódigo rí t v :.a *
c m 2 iioij í '*
*
!DV
algoritmo Error
var OX
•
XAM
entero:SW oloial
real:N
inicio
SW -o
4
mientras SW = 0 hacer
OZHIVCV, > XA>'
- -
* .
• . í'* — .* « » -
r \r *
* s/
* : 0 b**b
»• — *
•
*
.
leer ( ' dato de entrada ' , N ) • ÍJ -
si N < > ent ( N ) entonces cssnccí n ** i !; ln jn
-
*
*
i*
.
4.19 Calcular el factorial de un n ú mero dado (otro nuevo método).
Análisis r. . C /i 3
' 'i * ' ll £
-
N! = N * ( N \ ) * ( N - 2 ) * ( N - 3 ) * ... * 3 * 2 * 1
r •' , T
i
» t
1 .
' s»
L* ? ) ro.Vi *
> n 1
Los factoriales de los primeros n ú meros son: r, i * V T »*• f.•* .
1! = 1 -
neonodnfl
2 ! = 2 * 1 = 2 * 1!
•
ri ¿ L * . *
7
'
.* .t : 1 j O ií
3! = 3 * 2 * 1 = 3 * 2!
*
* ; * *
.
41 = 4 * 3 * 2 * 1 = 4 * 3! r
:f * c\: nil
i
•j í x
*
;*
i
M = W * (N - 1) * (W - 2) * ... * 2 * 1 = W * (W - 1)! n i1
Los cálculos anteriores significan que el factorial de un n ú mero se obtiene con el producto del n úmero N
por el factorial de ( N - 1)!
Como comienzan los productos en i, un sistema de cá lculo puede ser asignar a la variable factorial el
•
valor 1. Se necesita otra variable '1 que tome los valores sucesivos de l a N para poder ir efectuando los
productos sucesivos. t ¿ »6 & nnl íoq oiasiq 13.001 loq .OC lot
Dado que en los n ú meros negativos no se puede definir el factorial, se deberá incluir en el algoritmo una
condición para verificación de error, caso de que se introduzcan n ú meros negativos desde el terminal de
entrada ( N < 0 ) .
La solución del problema se realiza por dos métodos: ( , , .. .. .
• > ¿p
.(: .f.
2. Con la estructura desde (for), notzeiub rO
*?
í .•
. .C
--
e13 i 1 ó ; AU’ ¡
Pseudocódigo n ,t
t
r. » :¡MU6
I • 1% I 1
t
•
i
.
.
• - • • .
!f f •
w i.
;
J
M étodo 1 (estructura repetir):
' i.
•r*» :
:h
\
"
“ •
*
' * *
'TO X O b J i ’ ó
l -
* • * * -
v
•
0 ’ •>
;i
oi
f; 7 0 7 o : _ *
•I
algoritmo FACTORIAL . N i
i "
var
r entero: I, N
real: factorial L: .
inicio I üV
repetir '
4 • t . i ;•
Ieer( N ) »
‘
-
*
hasta _que N > 0 oi Jlrl
factorial
1 -4 1
-
4
— 1
. ’»
» •
i < j i
i „ ; .i i
repetir tí ñ' j i x z j n a ; v 1 2
factorial * I
factorial
-
,1 4 1 + 1
4 oo. o¿ • * Tí - -i
% .r. r 1
haeta _ que I = N
escribir ( factorial )
+ 1
- V
^
í
4
í,
< j; " » : 0- . “ v ó . . i . ' Tí »
¿ "
nil
fin
ón
156 Fundamentos de programaci »
SU 1
):
•
' íl
/) OJ
var
. . n]j v ormino; i t
entero: K , N *
r k \
A
inicio
leer( N ) i )( I
si n < 0 entonces positivo )
escribir( ' El numero sera
si _no
rV
—
factorial < 1
si N > 1 entonces
— I
-. -
^ i
I
r
-
pf
factorial 4 factorial * K
-
fin_desde
fin_si
factorial )
escribir( ' Factorial de ’ , N, =
'
y\ ) * i I \\\' V\ r VA
fin_ si
fin
.
Vi » \/
*
r. r
t
- \
<
vh 4o í ? f .' ir
ti i .» CLp íU
1 p.
O í:- ", ?.lv.: ofrabov 1- * i : , o :v ovjf ü sjn nts
ft r - A\ ob isnói j/:í tt?:ocj
¿
no ; • v. tv
. . /I# .
il & 'l ü ft T
-
. ' u; V
cu
i
- i s< dup t>b•
}>?. \iü ¿v
•
o jorí >
Mri » . «"/-
iu¿ íl / 1 I rt uoibnoj
y
•
•
s 3
2. Comprobar si distancia > 800 km y duración > 7 dias. *• • >
r v * •v*
• si distancia < 800 km o duración < 7 dias
precio total = distancia * 2.5
• si distancia > 800 km y duración > 7 dias
precio total = (distancia * 2.5) - 30/100 (precio totaij1^0^10'
- • : Le i &03 ÍÍOt[ -
Pseudocódigo
; .. ' i e
algoritmo
•> * : •
'
o
Billete j o in i
.
var
xí3 '
^
entero: E
real: D , PT > f -tSOt
inicio Ó I4 Ü LT
•»
i
leer(E)
—
PT < 2.5 * D
v 5:
r
k :
i
si ( D > 800 )y ( E > 7 )entonces
PT 4 PT- -
PT * 30 / 100
«i
'
r * . , u .
fin_ si
-
4
.
4.21 Se tienen las calificaciones de los alumnos de un curso de informática correspondiente á lás asignaturas
C++/C, Pascal, FORTRAN. Dise ñar un algoritmo que calcule la media de cada alumno.
I r. i o L 0:1 rJllOQtr
Análisis '¡ . M
.
o nuT , í ifl . i b n* í' £ Z
AH O *j r or n . J V> i v I i. C ri i / '
In
TH * 01 V Ir ^ rí oL
Pseudoc ódigo
TH * (H ' J : :r - rioL
a l g o r i t m o Media
...al 3
var
cadena : nombre
( C / . Tjrc
ni *
real : media
real : COMAS , Pascal , FORTRAN
inicio
«9ldíffOa «OÍ iJnw Sü p fl iho Iü jf UlÍl/ll2íJO ) «££*fe
/ / entrada datos de ‘alumn'ds
leer ( nombre ) - . Al Tldeni. v t ! oinjfbfK *;
"
^
mientras nombre < > * * * * * hacer
l e e r ( CCmas , * Pascal , FORTRAN )
media < —
( C + Pascal + FORTRAN ) / 3
e s c r i b i r nombre , media )
(
ú iMiui
leer ( nombre )
lOD BOBm
. . M r
1 3D t »*
ób 00831
. .
í Ü3 GltWenOO
. . óm 13
HJJgtt E obof
,
fin mientras *
fin
cs'-nu . f
83TÍLAM . T
4,22. Los empleados de una fábrica trabajan en dos tumos: diurno y nocturno. Se desea calcular el jornal dia-
rio de acuerdo con los siguientes puntos:
*
'A . r
~ V . c1
f
*
OGAEAS , d
1. la tarifa de las horas diurnas es de 500 pesetas, O:::MOO . v
2. la tarifa de las horas nocturnas es de 800 pesetas,
3. caso de ser domingo b , la tarifa
se incrementará en 200 pesetas el tumo diurno y 300 pesetas el tumo
¡¿
T« !t »rl r>o \ <
. -<’ ' AiiU
' :
•' : -
(
1» i . \ ¡*
t - ° , :
‘ •
y
.
- - r ; ííTc ia uutMiui9 isl oK oqo n < ; ¡
jr»i < n •.s KA
¿
wo s
¡ nvr ab afeitaifef to iZ
¡boa
- .
. c >?
( - ; otrgbH OT » jlc« - ? :: i obotdm \ttnon
Análisis obo) V; ¿ ;
-
’
-
•
j IJ íí UU ; OLD . J
4 i»
^ J ! ' IIIJJ í I . :.u
) M C !i |¡ ,r ) '( ' f .' /
algoritmo Jornal
var
cadena: Dia, Turno
real: HT, Jornal
J t
f. .M
) •
-r ¿ iniM í l / /
inicio •
*
í
2eer(HT, Dia , Turno)
si Dia <> ' Domingo ' entonces
si Turno = 'diurno' entonces .‘ 1» / A I>!I TI /< 1» * Y* . 7»
/
* / i
l í i J rnrCf
,
l* •
-
Jornal < 500 * HT
si_no
.
-
Jornal < 800 * HT
_ .. ti ) . ; rjrf K¡ !C> y j( ; i VOVJ 1 ;
hb i L;.’ i no si
fin . . •: I, I .
;rJ.L . o /iri jio
si ' i. '
' diurno ‘ entonces
¡¡•‘'
•'
•
I l . 7 *
'
si Turno
Jornal 700 * HT
si_no
Jornal 1100 * HT
«
^ikiv>ouufiA
f in_ _ si 1
líenle
fin_si 2 SV
escribir(Jorna1) ft i tir ó n :
fin sebern : í SJI
'
? •
i V •
.
4.23 Construir un algoritmo que escriba los nombres de los días de la semana, en función de la entrada corres-
-
:> r O ir; ?> ,
Ii
' t
/ 3?
T r* I i , >? *
Análisis l T - • J
')
|
— W 4\ '•
i .' ;.
T iir"
- ;
a- rve
•i '. í í TVeO
% I.
El método a seguir consistirá en clasificar cada día de la semana con un número de orden: %
J 15
:
1. LUNES
2. MARTES
6. SABADO
7. DOMINGO
‘
, ' K'
* '‘
: v ; 01 :
•
'
- > • >»
" Íí'í tt ;! ,
-• * .<
r,
•'
,u í i
*
' n \
'1 *
o
L .M ; UII &1 í
h ctiifij ti! .
'.
- ‘
f IIvi : ,,
IT
C > lt í - JIJ murj
'
* (V
‘
“
' ji • *1 •
iUW
Si el lenguaje de programación soporta sólo la nn\ » .\::í
& C n d mét d 1; Cas de
estructu ra si entonces si_no (if -then else), - - .
-
método 2 ° °° soPorta r la estructura segun_sea (case), la codificación será el
°
hu í "
Pseudocódigo
,, .
•
i; o.Mj inib ^ n - ] 1 H - '
í I » »• « • <•
'
• «I!
, f
« ni i i in : ki f
..
; /
• •
,.
•
M étodo 1:
algoritmo Dias_semanal
a í
'
“ '«HU t . 1•
i
:
.omm # . i** omits h «? .£
.
v ; » í H;I » > » ,!> , . rp ., i \ , ¿ ¿
var * |f ^ / 31 (¡A . « .1 * *
. V ’ óV . C.V1 T TV a -
inicio ,
,
leer ( Dia ) '
' •‘
• • I j
s i Dia = 1 entonces
escribir ( LUNES ‘T - ’ K 1
. • r . , r\: , í :'j í • *
^ ÍV
j
_
«
s i no
i .? s i Dia = 2 entonces
escribir ( ’ MARTES ) 1
s i no _ Pí . iV ) Í ’
)V . Y / < - . - , r. .
7
. ‘
vn
4 . U. s i Dia = 3 entonces . \ t • > S f t A \ l Z / * jV. . • - V :
v Í , JV,V « n i
# ’
"
, . i 5. escribir ( ’ MIERCOLES ’ ) ,
*
s i _no
s i Dia = 4 entonces - " Y SV AYA a • V - V n > i\ . /A r
* ' *
escribir ( ’ JUEVES ’ )
®i no [i
- v ,l
> '
• •
, ' . A J
s
,
i Dia = 5 - entonces
• . • V» . • . ,
* I *
• %
» 4
* •• # f *
1
: : "
escribir ({ ’ DOMINGO .’ v)
- íYu> . . ; ;; :r: •>> > . . r, * •
> u* : • >
s i no _
'
escribir ( ’ error ’ ) 5
'
;, v
: ^ '
; •
:-/ ! XX
escribir é rango 1 - 7 ' ) .o b l i g o»:,, ; ,;
_
fin si ti - 0( Xl. I ( ¿ sDnseotnrn lan un *J soboic , 97 i <iuÍ 3í
. . .
••• 1
.c.u
) .
' £ uJUls T ñlooo v i jiiL .
’ í . i ; tu ; ‘ Jj ¿ 13 vb ó e Hite c - .. 2 .rt.í-
' S B MU tsno .
* * íO 1
\ .
j *
i n_s
ffin
r fllli
*
*
« 2 »P . . . «noli
.
i el - z A
.( t > f i n s i fte» M Ü aü pc « íí;bo! ibiibeb / fioiiiimólnl <
XX
¿¿si* sb iitom ti v ?.o riji^oq /.o\ rmah fl . ot niun * X)|
f i n_¡ü
^ ^
f i n_s i
s i^üft70í / ibE / f>lrt¿Sbnoqa írno4 riort ns zolujins db «í KJ ü ¿ob ; ü Moqaiboiowmoo r¡ ’ J
^ .QX
fin
' .? i <i .. * 0 :< onrn;o / oinoiati
.
^ ^
1 * ? A oiin'ms I i o; ribf » :
, OIíJ'¿I )U * jb ohc í inti- oiotnq «
^
225 .?uluJins ab crraaifjíi
^
M é tbdo 2:
> .
^Y f algoritmo Y . :r v ‘ ;; / / . ^b o/ ubw f
ib wJofl ills sj
—
*
BíI
^
var
«M A ni
Dias —
._ semana
- - = 2O
» r » » ftiw I » «
• * inicio * **
nf ,
l e e r ( Dí a )
« .
í fffXÍ » lfiq
|fí»l obl í •' iní ishicqoi
úq Üü ; - nono* nj : Y*.
s e g u n d e a Dia hacer .
a
^ • f*
; fcir¿g!¿s. ! . H.
,
• 1 : escribir ( ' LUNES ’ ) j ioqcnq : t . : -
^
.
, : f /. ? . •
‘
.
y se genera de acuerdo a la ley,
NOTA: La serie ( Fibonacci es 1 , 1 , 2, 3 , 4, 8, 13, . . .
^
eeoiiocjuv .
Fibonacci 1 ) = 7
-*
( : :t \ • '.
k
- j
Fibonacci( 2 ) = 7 on. ¿ n
Fibonacci( 3 ) = 2 = Fibonacci( 2 ) + Fibonacci 1 ) - iO
Fibonacci( 4 ) = 3 = Fibonacci( 2 ) + Fibonacci( 3 )
•
eorno
on. la ,
C ¿s
FibonacciN . para N > 1 ) = Fibonacci( N - 1 ) + Fibonacci( N - 2 ) rojmv
/ .ifij; . ‘ib. 'noa*
!
alumno. ca- in
MOTA: La realizaci ón del pseudocódigo se deja como tarea al
pf ono ns *a
)
{ ’ ¿¿¡ L/ia
^í V ^ t
on i. 3
EJERCICIOS aoono^ r: *) :* - r' i
número negativo.
4.1. Determinar la media de una lista indefinida de números positivos , termirtádós con un
4.2. Dado el nombre o número de un mes y si el año es o no bisiesto, deducir el nú mero de d ías del mes.
4.3. Sumar los números enteros de 1 a 100 mediante: a) estructura repetir ; b) estructura mientras ;
"I 2.7J UOBU
c) estructura desde .
4.4. Determinar la media de una lista de números positivos terminada con un número no positivo después del
último número válido. >
4.5. Imprimir todos los números primos entre 2 y 1.000 inclusive^ . - ¡ nr
^
4.6. Se desea leer las calificaciones de una clase de informática y contar el¡número total de aprobados
tn
4.7. Leer las notas de una clase de Informática y deducir todas aquellas que sean NOTABLES ( > = 7 y < 9 ) .
4.8. Leer 100 números . Determinar la media de los números positivos y la media de los números negativos.
4.9. Un comercio dispone de dos tipos de art ículos en fichas correspondientes a diversas sucursales con los
siguientes campos: . .
nil
• código del artículo A o B,
• precio unitario del artículo,
• número de artículos.
.S.
•
La última ficha del archivo de artículos tiene un código de artículo, una letra X. Se pide:
1 '
’ ) ;
__ . v .
' ‘
2 n
X Ti A K;
E =
( x ) 1 + X H h ... + i ^
2! n\ t
*• -
‘
• llcAbiaa * : ”
"
K > -] ic* ) llrv. 3 ií ;í en ¿ c
nup9.2 L1
a) Para N que es un entero le ído por teclado. .!
-4 rtM
b ) Hasta que N sea tal que x"/n < E ( por ejemplo, E = 10 ) .
j
Scanned with CamScanner
Introducción a la programación estructurada
161
4.13. Se pretende leer todos los empleados de una empresa — situados en un archivo EMPRESA— y a la ter-
minación de la lectura del archivo se debe visualizar un mensaje «existen trabajadores mayores de 65
años en un número de . . . » y el número de t trabajadores mayores de 65 años.
4.14. Un capital C está situado a un tipo de interés R, ¿al término de cuántos años se doblará?
4.15. Los empleados de una fábrica trabajan en dos tumos, diurno y nocturno. Se desea calcular el jornal dia-
rio de acuerdo con los siguientes puntos:
4.16. Averiguar si dados dos números leídos del teclado, uno es divisor de otro.
4.17. Se introduce la hora del día en horas , minutos y segundos . Se desea escribir la hora correspondiente al
siguiente segundo .
4.18. Se desea conocer una serie de datos de una empresa con 50 empleados: a) ¿Cuántos empleados ganan
más de 300.000 pesetas al mes (salarios altos); b) entre 100.000 y 300.000 pesetas (salarios medios), y
c ) menos de 100.000 pesetas ( salarios bajos y empleados a tiempo parcial )?
4.19. Imprimir una tabla de multiplicar como
1 2 3 4 15
** ** ** ** ** ••• **
1* 1 2 3 4 15
2* 2 4 6 8 30
3* 3 6 9 12 ... 45
4* 4 8 12 16 .. . 60
•
•
•
15 * 15 30 45 60 . .. 225
REFERENCIAS BIBLIOGRáFICAS
. •
‘' •
- ' : ’ t '•
‘ p
Harmful » , Communications of the
• •
• w' (: .?' Í i/ f *•
(1) DIJKSTRA , E. W. : «Goto Statement Considered ACM , vol. II ,
núm . 3, marzo 1968 , págs . 147- 148 , 538 541
, .
( 2) KNUTH , D.E. : «Structured Programming with goto Statements» , Computing Surveys , vol . 6, núm . 4,
diciembre 1974, págs. 261 - 298.
- W.. - ^
« VSilW * f *. . ; í *
*' » ; .
!
. * 4 .N .-
.
i t
Y- OX C
*
• V *i f V4 " • •
*
'
. «'
:•
v t
Uf é *’* 1 O
^"
" *
K'
-
1 ,
i ! •• / .
"
i < ¡ •: ' . • U\ r .- ,
. ,
r r HYi '
' ** If i
JU
SiBnOebVHCVS
U* 12 30 t2 W 32
*
T< 1 « 13 10 (Mi
. Yi • &: *
0 Jj 12
3 ’ 1 H 30
4 '5 1 , 5 ^ 4 ¡2
-
°
**
• -
in' * * !
i .
» -* *
.
**
V
. ? . - t]
NJH
**
*
*
ic i -
; ¿¿ *
:
<y -.
u
4
'7; \ ‘ i.. r -
<
- -
f *r : - -
* < ’T * L i k.v ¿ > •.* )
'
r
v r''
’
•
'
• • •
' •
" . t i >.
i
••
• .• •
r; "
i
- íIíK
;i« » '
'
. .
J
.' c o i
.
.
'»
,
.
.
>.
'
. •
¡t eta .
• , ,r
// u- •
- ih JO
¡ y /• :J ); i 't - tit ; í U .- . ú ; • .• r
'
> , „ ¿c qr>
< ;-; - wj o ^../ü'ü.qyu : ', rj•
«
L iKfJJUJO'
4 ero re *a ;sr jjíü VJ ; ¿ . » YJOT / *; : ;; •
; q :Y n / v < LL o, , a *
i:o qs criGiqo - ;o -;
:2 • W / ':r
' '
• ; •
• uo . jwpsl ü u ;u
• •
r íT ¡ u r jbiiTT] 7 - - -
unt ; • y w r.; í qr uu ^ r. »
4 * ? !
: *
^
'
^ GU .*] . i rtr - - _ - iC
! (
if M *
/ ¡ unaj >
iy * *
. vi *
-
—
UJllJi Cl HJ • : i • -
*
• I ; 2Clacfcuqt ;• •
- '
¿ b|QfC|( - qc ti - v ' * ' "
’
1 - 1 ’
ri ; * B
\ +svi - 1J
*
J
> .* Vi >- n *
-> •' * iC ¿
^ • , • <
« V
I iI *
ov or IS 2 Oh 3 Uq r y >.
V * « 1
:iu)iqf.o 3?-i* r : .7
p
<
. cl ^ c:o > • z -r. \ f
x»*
r l»* » «1 I
n
"r.CAP ÍTULO
! ir n
’
HOOUiO - J í ¡
SUBPROGRAMAS (SUBALGORITMOS):
PROCEDIMIENTOS3Y FUNCIONES
AivA: U I iH i * r
< ! , •
hi '
'
J' tn 'v v vb r. .inv.- j ni. i .rj /!'Vj; vt» .livid r . & v ' ;> ' { * n i >iq ¿nl
! f
•
. '
* <
¿•
* * I
.. \ ' • ? \yi t */ ' / •• ¡W. i. nifi ; r iv ^ • •
' -
i
¡
' .
<
. - r »~• . *. » - '
£; ::v /J r r
- : t í!? tV » tj V • -' h,
CONTENIDO 4 - .
fik * « . .. f .
;. *M. . V >
ir • *
o _> «!!. I •1> . . ) •
;
r,* n* : fia V üO -
5.1. Introducción a los subalgoritmos o subprogramas.
gm 5.2. Funciones. , t* .
5.3 . Procedimientos
_ . ' ,. ( subrutinas ). . . . .. • .
. . . . , OfT! /if? I <
: variables locales y globales. I
. |
I
5.4. Ambito • ^ L >.
5.5. Comunicación con subprogramas: paso de pará metros.
>
, •
'
5.6. Funciones y procedimientos como pará metros.
5.7. Los efectos laterales. ' ‘
. ü ^ - J y iKqionnq cmeigonq
> -
9t 5.8. Recursión (recursiví dad). >bi : >IUDü:O lob wnsldorq '
-
EJERCICIOS. . ' i *: » !. .u i- \ >r.' , . ;V. V - . „
ti n >' v í o L - i . >li; „
. * 'JIíIIL,: vi r»i> &;* &?. • < . sy.uVs rvyW?, A
* ^
La resolución de problemas complejos se facilita considerablemente si se
dividen en problemas má s pequeños ( subproblemas). La solución de
estos subproblemas se realiza con
subalgoritmos. El uso de subalgoritmos
permite al programador desarrollar soluciones de problemas complejos
utilizando el método descendente introducido en los cap ítulos anterio-
res. Los subalgoritmos ( subprogramas ) pueden ser de dos tipos: funciones
y procedimientos o subrutinas . Los subalgoritmos son unidades de pro-
i
aim « v í: J . . grama o módulos que est á n dise ñ ados para ejecutar alguna tarea especí-
fcrsi*..» -i? iv-.dK *. •
'
fica. Estas funciones y procedimientos se escriben solamente una vez,
pero pueden ser referenciados en diferentes puntos de un programa, de
\ ’¿ HM . r; ' ’
* i
modo que se puede evitar la duplicaci ó n innecesaria del código.
El uso de unidades de programas en el estilo de programaci ón modu-
»<
ti > .!
;
¡ lar son independientes ; el programador puede escribir cada m ódulo y
la detalles de
verificarlo sin preocuparse de los otros m ó dulos. Esto facilita
, considerablemente la localizaciónmodo de un error cuando se produce. Los
son normalmente también má s
programas desarrollados de este
que la estructura de cada unidad de programa
'* ! ' >; fáciles de comprender, ya
163
i
“5
w
i»
_
,
Oí ?, ] !mroCduceeP a mbién el
"Teste
.
,
concepto de recurs V/dad como
0una
.
capítulo se
-*
:
*
. V . v* .^ .'
.
V > *i
£ *
nueva
£«
herra-
- . ; A
.• £ *• Ir
r r » *
- k> w; y
'
M . J >
*
r , I ' .
¿ n
#
*
* «
V - '‘
^
^
’ ’
.
'
area
escribir r bre
, / ( base*, al
,
tura
altura, area ) n
flcV / calculo de la superficies
/ / salida de resultados
-- . *
" ' 1
• v ', i •
V ; •>*
* * » * #
*
* f •
# 1 *
C t\ 0 K •v , . t m
^
8 ® m ,. e denominan tamtnein¡¡KSjoriímOTr~
Un subprograms Duede realiza, li
! q *
?deSv resTaL rrecibe >
^, ,La ^
pr0gr ma: 1 aceptar dat0S 21
realizar alguno cálculos, y 3 «
programa para un propósito específico. El subprograma
ve resultados. Haciendo un símil con una oficina el oroblema «
-
desrf
desde
ííen
.dl
barg0
' se
programa
uti iza
y le
P°
'
r
devuel ^ dLt
“
¡ ! f-
a sus subordinados subprogramas ; cuando a '
se -
t ñí
Problema ;
? *
*
;* '
»
Algoritmo
- ''Y »
i -» **
principal *
principal
I/O’ ' ¿
fJW
"
;i'
í i' » • ' ?í
" • jii'ii * it
J .i . ...
/.y4
i v< 'jJm U í \ ¿uutv' jUi í A
nó rjnui .
W
1
'
• 1,
~ ^
bfi
^
'
v Ó .rumonoí / « i » vrju /;o ;q v
;
,
<
I Subproblema 1' m\&
: r: jr <ol / c í jrí l
—* '
Subproblema
SubDroblema Subproblema
1 2 r
' * / * «• _
3
j
mí 7 •'ikjí rj'ji; l |
/
• •
} .
i . t
í
í V
•! * ~
*;
¿7 < Subalgoritmo , Subalgoritmo Subalgoritmo
, 1: rr
/
PV
• ¡3 í r .
t J?íí V ni - ' í J .
2 : í ; i» i,
3
< ? y 4
* ' 'ü > L
I .» . A i
‘ - 1* Jj 1
rv.O o
1
. oroil , , i r
-.- — 5.1
C! i PL " l/
ij
Figura
. . ' _
Dise
" - o descendente.
ñ
.
' ¡ ír f 1 \ - >¡1 . * \ ., - * . <t , .
' •
• , 1 [ > í Í ff /J jjf ‘
J<
:>J ! UJftJltfjI/'; \vq . <¡ - t. ' o ' i.- < v : .. ¡vi í OL •
Retorno 1
Llamada 2
i i ] , j uóivmjl n r'j .
í .i no -j i hokü oxt ti nn \ iJZ . * l ^XLs ^ , < initaujií: A
.
(
í ú J
' Retorno 2
vi ;br.b ¿cnol * . ;b tcq ts iupÍ Girj ¡/inq
r
omoo
^. t '
-
-- Q-. y f Y ; V ' -T^.í - -: f r , -
/
f U 9Db /Oln niU I
í i /
•
i ^ I '
'
•
.
non .>1üíí obnoid -
1
I
/
-
ri» vf
.
«xonoina csilitu v v 'ye
1
h dtlf .' / o ov. noi^iqx*j el o!x »v / >
• ; » n \ yubprogra
'
afl 1.1 '
¡'
'
«
-. •
^ .
.thnrnnram Vi '
°
'
/lt cbsO
ehiO
.
^
Í;V! O JÍ
< ‘ SL iO *
' i
Z—
i
J ¡C .
’
•; UilO I ÍJM 1 J '.'IIO ir *; J
^ — .. — .
~~ . : Em !^I;: b; Z.L ^. J' Oíluf EíJ .
• ;I ?
V U&Vtti I'. S O ?.ivn ¿\ s« í :' \; y yr \ :
«rnt}?.'fi o '.'/K.bíU :-''/ ' > ;>:!•
'
'
- «n ittiví w» » >
. ro
Subprograma 2 b otfroüb. -
nitti \ ohfiiRu h mq zabintl ^h witotamA .
< .i. - brtul ' i.- \ : :
;,nu OH ’ if »3m ohsifí ti [ *; >q
oqií fs Ktsffim ntkürmdq
btnrh b nobauq
^
n ú
' ” ' "
.
4
> <i
I i • * i *
i
-
11
• ;b tl¿
. ¡ jo - - •
- rfii 1 il iufu antdmoft
,
-
5.2. FUNCIONES
res4temados-¿zz Mm£«ro s
iv rn á~ sjv
^ ^ — >
1r
^
í o. As por e entp o:
/ w = TW
**
. •onsOLV
o t . ionise* n - .
t ' * • ^
valor específico se — -» v .•
. Obsérvese que ningún
•
. vr ¿ .1 u .> . ¿ . i ' . 1. . 4
•'
.
»r
«
' « ti
/( 3) = 0.3
• .
t '
'•
* i * i
; v:-
1
» I t . / I i.
' '
> <•
* w ?i
* * 4.
i
i l . . .Ü . !i ' J
. -•
i
• i . -
y .'. . < • .
< i > í y<
\ 1
/ (3) =
JK
’ —1 +3 9 = —103 = 0.3 *
* /
.. . ;
. * « » J M
\
i
»
t
' .v
4
"
i
"
^ 1
t { »s 1 •’>I
4 t
\ f .
i
nx , y) ~
x-y v. rr r.- »
- *
i . '
' C
- y. . .. \ v
* i
es una función con dos argumentos . Sin embargo, solamente un único valor se asocia con la funci ón
para cualquier par de valores dados a los argumentos . *
Cada lenguaje de programación tiene sus propias funciones incorporadas, que se utilizan escri-
biendo sus nombres con los argumentos adecuados en expresiones tales como
rr í " ’ _
“ : " * ’ '
:
+ vsipvt ’ d v no ’
, +ru', v vnq . ¡ U ,£ , ~ tifugH ; *
raiz 2 ( A
*' • 5
v'. Í . Oi - P « f - ii :• i I
l e s p“éntes !sZandal°sistema
“ “ **"" " U aeXpreSÍÓ
" COnlos^11108 acluales 0"*
fundones
—
Las incorporadas se
denominan funciones internas o intrínsecas y las
é oTntemas
funciones definidas por el usuano. funciones externas . Cuando las funciones est
ánd s no
^
-- - -
permiten realizar el upo de calculo deseado es necesario recurrir a las que
q
funciones externas ,
pueden ser definidas por el usuano mediante una declaración de función
.Jr",
asmtnw El ,
o pfogram llama o invoca o la fanciún con el nombre
de cala dltima en aro
— Ua-
^—
especificas: tomar una lista de valores
mados argumentos (parámetros de entradaa - b) y devolver un único valor. »
^n i&írnt 'r
'
3 sin
;i •
noónol ¿tú no¿ { s.)too (xVr32 sbnob
Declaració
52 1 declaraci ón de funciones tñhnui / 1 nób^bsb ^
La declaración de una función requiere una cPrip A - -- ' :
5 . »
Una fund6n C0m0 tal
'
_de_fesult!ááo _
k
- *
- * •
/ / cuerdo de la función . . ..
tuV , m
, , ir
vfo )
fc un;rnori2íb •' nfin_funcion »í; ii I ’ : ;
^
de*olv* r (
• vi í U 20 J flÓÍ '
; . fii 3¡J OOtPUZ hb oilfreb
|- ;.TJí oh •: . i - . $ iqy.3 . zsfdstiBV . süiiRirno'
¡ , jnabina « »up ,i*u»uV)&
. . ,
-: JJ ' .f t •>
- rcrunon O *!9n
lista de
par ámetros:
{ E|S|E / S > tipo de datoB : parametro x [ , __
lista de parámetros formales o argumentos, con uno o más argumentos de la siguiente forma:
parametro
; E / S : Entrada / Salida
_
( { E|S|E / S > tipo de datoA : par ámetro 'l'[v / parametrOQSjJj^gj
_ y ] . . . )
\
*
- ^
• n' > - ' •! *
E : Entrada ; S: Salida • i ¿l 65 f &s tu .
*
•
nombre _func: - • , - nombre asociado con la función, que será un nombre de identifícador válido
. .• . . . . I : t; • *
> » «
instrucciones que constituyen la definición de la función y que deben contener una única
< acciones > )
instrucción: devolver ( < expresion >
tj ; . “
( » aoionri.
i ; *[
f ( x,y ) =
• '
, - •• , n gimarrihieq oup - *
•
'
real función F ( x )
rtjwiouifü BSITOI nob jt; tú) íxpsuo b ftlUD3( 3 .r?. '
^ . L
_
llt í ‘
lnlcl °
devolver ( x/ ( l + . *
#
* v ,) , .
x '
•
„ i 3Tt
í'rK *íi - lu o í ul fil #h toíiiv Is svbjmb
íá
^ s? .
^^ a funcion
</ - . ít
Ilió- ’ • >1 > '. ‘ ' i - . i J
!’ ' ’ ' ' * •
.-
1 • • •
)
sen(x
v ,
: MOl ' L J 11 ‘
.J
v
tai(x) = — .' '• ¡ ISiJtq ) V I ' 11
cos(x) '
’
i iT- j fi !‘
*
’> ;'f . VVO * .J . ;
i .
*
Í . , i *
rro- í >: i •I ’
4 ,
Observe que se incluye un comentario para descri , lo que representan sus pará metros o cual -
función
mentación que describa brevemente lo que hace la ó n. En aquellos lenguajes de progra -
inform aci ó n que expliq ue la definic i ó n de la funci
quier otra
— —
mación como Pascal que exigen sección de declaracione
s, éstas se situarán al principio del -
programa. ón sean ejecutadas, se necesita que éste
Para que las acciones descritas en un subprograma funci
subprogramas a fin de proporcionarle los
sea invocado desde un programa principal o desde otros
argumentos de entrada necesarios para realizar esas acciones
.
parámetros formales , ficticios o
Los argumentos de la declaración de la función se denominan
o procedimientos y sólo se utilizan
mudos ( dummy )', son nombres de variables, de otras funciones
dentro del cuerpo de la función. Los argumentos utilizados
en llamada á la función se denominan
parámetros actuales, que a su vez pueden ser constantes, variables
, expresiones, valores de funcio -
nes o nombres de funciones o procedimientos.
A í\J ¿o: ' \’ v. . * • .
< ; t íV . . A: • > v \\ nr *. >\ ,v ni%mh
•
ó: . itell 9C b 3 '¿ -1
- .
5.2.2. Invocación a las funciones
^
i UliCH
Una función puede ser llamada de la formasigujente;
( ,1 ' . t i r ' s* t :
:br* i rJjsTOfnon
.
r: >
F i. v
nombre _ funcion Elista de par á metros actuales )
" '
]
- Z'J
'
Cada vez que se llama a una función desde el algoritmo principal se establece áutomáticamente
-
una correspondencia entre los pará metros formales y los pará metros actuales. Debe haber exactala
de
mente el mismo n ú mero de pará metros actuales que de pará metros formales en la declaración
funci ón y se presupone una correspondencia uno a uno de izquierda a derecha entre los parámetros
formales y los actuales. :
Una llamada a la función implica los siguientes pasos: -W I M *
1. A cada pará metro formal se le asigna el valor real de su correspondiente pará metro, actuad
*
-
'’ •.
> -
>j o r t u n c g l i
- . * • 1
t ; > joal < J loq bblbono > , tr orno
ó )
entero: i, y
¡ .A ¡n:o: » r
T A T
. 30 “ A *
no1 onul *
-
if *
inicio ' ^ ’ • I. •
«•
5SV
*
•y i •
V j ; r?:»
desde i 4— 1 hasta abs( n )[ hacer • Í U8 M I .« : .
y, <- y * x . , í flu$ 98 , CJ
O loi /ti
fin_desde
si n
y .«r
< 0 entonces
i /y
< ¡
•
J5
j / Mt ,
.
:r i n *:í n r rf
i
A
r
>
• *
< •*•"
X
obnob
r ? ' /
*
2
i • *
fin_si
devolver ( y ) i : - oo tcrru 7 jvXoveb
.
I;; jiL&nisli i: :\ v < O í OO y fin tb teriotoul bh olnoí ra vb f :u/vi *í rnqdu< nu Oí IO í J íK 'J onp ornlifuy í n 1; y . .
abs ( n ) es la función valor absoluto de n a fin de considerar exponentes positivos o negativos
; V. i 7 ; ^O : i
_ íV.; Í ' D L l t I'IG
Cí * * IL
Invocación de la función: ojorurr »y . *
• ; o? 3 ir‘ TSV
. cril \ i o lo liliV
z 4- potencia ( 2.5, - 3 ) v ov1ooq y o i e - a:» oí o:n'jr: n j
*
0 . i ir ^ n op * ex * '
i
( C l - rr ; ; i JO 1 *
x,
.•
s
i
•
2*5
*
n -3
{ n :o Jno /1 ) í L r iojor 3 ac .oc ;
i : oi
- '
.o 7 Ií V
oiolcl
/
z 0.064 A "
7 c* oi5 r f - n a l 8£d r
i
— * .i
* .
i ü
leer( n ) i *
M- r oí o l t z i
escribir { ' Deme exponente ')
fin . i . all
o loin 1
inicio . :*\
devolver ( exp( a * ln( n )) ) íX * . é
rv ;.* * :: ú!J ‘ ni :
fin_ funcion
f < f
fin_desde
- í
i
devolver ( f ) . T.a¡Y Í cy . í j
fin_ funcion
y el algoritmo que contiene un subprograma de cálculo del factorial de un número y una llamada al
: - ti> i >
; bi2no:> VJ í : nTr n ab oídío^dé lo n J * íi *
*
mismo: ° .
_
algoritmo Funcion factorial
y> > \ r- W :t
\ \ *
.4
* i t•.
escribirs{ x , y)
fin
.ores ]
’
. « •
.
- —
desde i < 1 hasta n hacer
f 4 f * i
fin_ desde
devolver( f ) S.2 oí qmaíi
m _funcion
fin .. . . ... .
£unclon
' ’ 1 1
vs \>i ' • S3 s\s :
.
H tmx|
•
En este caso los parámetros actuales son: una variable (numero) y una constante (5).
: -t
1
?
‘
-
inicio //Programa principal -
N cubo(2) ;
í :. ./* .* ''' *
s a' jS • j V.j í v ;(
escribir ( ' 3 al cubo es ' , cubo(3)) * ¡J . o b r / v J ci i j itidiV
fin ai5
entero función cubo( E entero: x)
inicio
*
-' A - o ’ í *> i }• ; no i O f!1/ 5
.. . . oio
devolver(x * x * x)
finJEuncion •
MÍ * ; . ! it> vl5V . &
¡<
.•. 1. » Í. í , íT i jn 'ri
?
. .
. U
,
f
•
-- - •
-
v t
3 al cubo es 27
!í 7 . V - » ir*
de la fun -
Las funciones pueden tener muchos argumentos, pero solamente un resultado: el valor
ficos. Un concepto
ción . Esto limita su uso, aunque se encuentran con frecuencia en cálculos cientí en el siguiente
más potente es el proporcionado por el subprograma procedimiento que se examina
apartado.
tV.i 7.
Ejercicio 5.5 “V.,'b < Vil n
pasar el
Algoritmo que contiene y utiliza unas funciones ( seno y coseno ) a las que les podemos
ángulo en grados .
_ __ _
algoritmo Sen cos en grados i! \ til oby * » ) f - ’
var real : g
. ';» b liwmyi ;;;p Oír i; *Gí J f:ni; y > iq *
Oi ttPíib
'
Inicio
escribir( Deme 1
ángulo en grados ’ )
/; / :.v .¿ , £¿ ií;7 iliiii VJP , x ^
¿dofj
- Knr :
i t óh r n m u s
jup
ob
leer( g ) noun i b r:s .
r ¿ í í, i oí . ¿ O í i í ». '
o f >r r .'i n be
escribir {seno( g ) ) > J
escribir(coseno( g ) ) uJ.jN
fin t
i cn• :r - i * » r
y *
rav
i
1 *! i i *
real función coseno (E real : g )
inicio
devolver(eos(g * 2 * 3.141592 / 360))
I i
:1
fin_funcion ^ r v* i
’ ' L ‘ ** 1 I. ' 1
V -
•
1
real función seno (E real g) , ) C ‘r ,- íd .V
inicio
V • ¿
;. 0 i 1 4"
^v
^evOfj
. . ,
'
7 [ iJ : '
•
.'L
•
inicio
escribir( ’ Deme numerador )
1
rr i
leer(n)
escribir( * Deme denominador ' )
leer( d )
escribirin , ' / ’ , d , n div mcd(n, d),'/ ' , d div mcd(n, d )) s ;
t
fin
entero función med ( E entero: n, d )
^; .: .
v« *•
i •
var i
Fundamentos de programación
172
mientras r
n 4- d
<> O hacer
. C . ÜÍ K . . I ' .bilí s j;J
'
.
d 4- r
r 4 n MOD d -
\
,\
fin_mientras
devolver(d) •
fin_funcion
•,
_ * .)>
•
¿bn3UX*
'
ft W
'
J
•
V
ffCllfJÍ>U ifI3
- - *
»> Uf >
3
*
’
Supuesto que nuestro compilador no tiene la función seno. Podrí amos calcular el seno de xr median -
‘“ >
te la siguiente serie:
1 » V.V Vi' • . -..t .MX j X X i .-X s y , ; r mm ) tvVnrof * vimt mw ( wwimn
v
‘
cwufwtl /
sen(x)= x + + ... (hasta 17 términ
3!
<
5! 7!
v.oVji : n*i '
x (á ngulo en radianes).
I
ne •
i
- .
i .TC>X?ir
1AV
El programa nos tiene que permitir el cálculo del seno de ángulos en grados, mediante el diseño
ana
de una
_-
función seno ( x ) , que utilizará, a su vez, las funciones potencia ( x , n ) y facto-
.
rial ( n ) , que también deberá n ser implementadas en el algoritmo.
l / \ • A 1 * /. 1 1 / 1 , 1 1 1 *
r
Se terminará cuando respondamos N (no) a la petición de otro á ngulo. icinu ^
/.; r.’
algoritmo Calcular_seno
** 1
;.* •
ni ít
var real : gr
carácter : resp .. ono : ao i o n r»o
J • i •
o tolnf
^
inicio
repetir
»
..J í ; í . f. 4
t . •
-lovlovob
coÍDnz/5 r:ii
_
escribir( Deme 1
ángulo en grados ' )
leer(gr) (r its i Z : ::?c nolcnri
: .
f 4 1 - • i - o m s l s c o i*
desde i 1 hasta n hacer 13*/
f f ;
i
_ , b ,n : OMJ í 3
fin desde
devolver ( f ) o l o i r.l
fin_funcion \
^ • ót tema sx* i’ iLtii xo ¿v *
'n i
real función potencia ( E real: x ;
var real : pot
E enteroin) * '
• • • CK " • ’ -i:
i f ? 1*0 *
entero : i
inicio
j . ,i v \ \ r .5 " , \ 4
.íTinid í lO ' -
pot 4 1
— —
desde i 4 1 hasta n hacer 7 > Ú7* • nol>cjr/l *
. • • •.
rl ^
’
pOt 4 - pot * X
fin_ desde *N ; 'i *.• '
(* .
devolver ( pot )
fin función f.v boni r í
r e a l función s e n o ( E r e a l i g r ) . \ I . .. * v u n r v
var r e a l : x , s
entero : i, n '
inicio
s < x
desde i
——
x i gr * 3.141592 / 180
n i 2 * i - 1 —
r• si _ i mod 2 < > .0 entonces . . ob
s .<- sc - ^ . Sip »
, ,
b noittí) aslf rmoin oibmt q acJ
,
.
p o t e n c i a ( x , n ) ' / f a* c t o r i a l ( n )
—-
^
>
c nu r . * Bi no
* _ '
' -i
•
• l . ( : : *
.
oií n J a > *
¿
, , .
;nfí• . )
• • ••
.
•
. f i f O s «- s + p o t e n c i a ( x , * 1 1 ) / ' f a c t o r i a l ( n ) ;
q . i / i > fi. r j f i /0 7 .. ü t
'
*
N
*
fin_ desde
devolver ( s )
Ti ; -
>rfrl >ni I ‘ nsib?m cmfilf 32 oiusiniibsixnq 10
¡ j)
fin_funcion t
J .7\
> «
-
£
Aunque las funciones son herramientas de programación muy útiles para la resolución de problemas,
su alcance está muy limitado. Con frecuencia, se requieren subprogramas que calculen varios resul
tados en vez de uno solo, o que realicen la ordenación de una serie de n ú meros, etc. En estas situa-
-
ciones la función no es apropiada y se necesita disponer del r>trn tipn de subprograms - el pmrpr í i-
mieñio o subrutinar. ; O *
.
U i t. V í' fi* ‘ " . ‘s
J i . * •
»
i *' • ' -
'Vi;
' .. .• •• . •
~
« » H in V
. Í
r - fr* . r -rrtili - i i f /í t 5 i ty , ? : AO M r\ U
. ,» * c:
" (
i
RAN, la subrutina representa el mismo concepto que procedimiento. Sin embargo, en BASIC )as subrutinas
. EnTORTIlAM
metro! . En el resto de los lenguajes el término general para definir un subprógrama es procedimiento
no podrán pasarr parámetros
° simplemente subprograma
c
) ]
procedimiento nombre [(lista de parámetros formales
< acciones> 4
Los pará metros formales tienen el mismo significado que en las funciones; los parámetros
—
variables en aquellos lenguajes que los soportan, por ejemplo, Pascal están precedidos cada uno
de ellos por la palabra var para designar que ellos obtendrán resultados del procedimiento en lugar
—
de los valores actuales asociados a ellos.
El procedimiento se llama mediante la instrucción Z ) 13V .[ C
_ 0O Í 9fXJü - i 1
[llamarla] nombre [ { lista de parametros actuales ) ]
i »
v ; \ í> (
•
M
La palabra llamar a ( callV es-oncional v su existencia depende del lenguajede progra -
mación. El ejemplo siguiente ilustra la definición y uso de un procedimiento para realizarTa división
de dos nú meros y obtener el cociente y el resto.
•Í Ur /!* j i j jiip ; i / ti' jTziiiKví :>? r.O ócJ iil ( tstn ktr* aant ^l
Variables enteras: DIVIDENDO ' nu ntni íü 'ji sup o .otoa onu ob sav na > <
•
•
\V. -5 .i. UiODjnrrshT
DIVISOR* ovo tab u'itoqaib Biteí iyan a? / pbniqoiqj; «o on nii'nmftBl ?on
COCIENTE Sffú uV< U:.; J '
suplí-
’
, nrfraoa .u 2 thnoidnagsfimuilss oiriaimibsaoiq nU .odwaiqxs
«
inicio
, -
;í f : : ¡c i'OJfioy fo avlou / ab a? HÓionuniinov B y naJuowo 32 nonflsb ni
'
Resto
—
Cociente < Dividendo div Divisor
Dividendo - Cociente * Divisor
fin _ procedimiento
escribir(S, T) . al #
fin »k ‘
! ti
procedimiento demo «
r\ > > » i )
-
o ; ./iSsed
í
. i . V1 , / -í ; :J
*
• '. '
tOM J 7
fin
. procedimiento ' i'izr * . . ;* r/ • > obasfi
'
í iid ti cae
o bien:
' f 1r COI r / f . #
;r f . .r boar ;
procedimiento demo (lista de parametros formales)
y la instrucción llamadora
, * » '. & ia
1i v i.O'fl
x
- :*
Cí . i M
llamar
. a demo (lista de parametros actuales)
Si . ' í
r»
v
4
. v?
o
-- /a
:
. ]• '
- i . laoAf! -l J
Cuando se llama al procedimiento, cada pará metro formal toma como valor inicial « •
el valor del
é “» '
co í vrt íí ,lai5xf I -»
'
»> •
•
oa ia
'
_-
2)
entero: años ( 0 } i VdlTief :
real: números, tasa ni i
inicio
•••
llamar
. a calculo(numero, años, tasa) Cli . ni *
t
•• 4
C .1 v i f t i oj .rib
fin t. • ; .
Ci fy icr v
aeonoirra <•
procedimiento calculo(S real: pl ; E entero: p2; E real: p3)
o 3 LI r r ?.
» ’ X linee
inicio
c;i.¿i o
p3 .... pl ... p2 ... p2
f in_ _procedimiento
ewaoliL* u <
• 1*
[ \ I ’ ) txd 110 1 *
-zszzd ¿ ^
- o j i & i k sisar! i —» r afcaefc
Las acciones sucesivas a realizar son las siguientes:
» ,
-
teefc ni 5
ó
iiioas
_
1. Los pará metros reales sustituyen a los pará metros formales. :,i o::
2. El cuerpo de la declaración del procedimiento se sustituye por la llamada del procedimiento.
3. Por último, se ejecutan las acciones escritas por el código resultante. n
_
i itofsrf 6 iafv;í í ->
‘ Jiidx 'xoee
"
Ejemplo 5.8 i
T O
Algoritmo que transforma un número introducido por teclado en notación decimal a romana. El
número será entero y positivo y no excederá de 3.000. ilii
algoritmo Romanos * , . . . •
"rtn >
1 -
ebe ^ b .A: xi
1 VI
_
hasta que (n >= 0) Y (n <= 3000)
—
r < n
digito <- r div 1000
•
- • . . t
si_ no J i l
si digito > 4 entonces
escribir('D ')
desde j 1 hasta digito - 5 hacer
escribir( '0'} . ..
bü T !fi / ¡
£in_desde
.
; • fj tfitooTO 1« :emirfl 3Z obnctO
i;
'
M'i.v • ol'jnv -, ! '
1
J .\L'jr¿c vrn . ¡ •jfiuiL. x - « . . •
' si _no .
si digito = 4 entonces
escribiri 'C', D * ) 1
-
.OÍ rVTT)J JO! »0 i .
'
si_no 1 t
escribir( 'C )
-
desde j f 1 hasta digito hacer *
*i
£in_desde ; *•
-
fin_si o ioini
f in__si
"• V
fin_si i
si _no Oioial
* .. <.
si digito > 4 entonces
- i. ..ii
v
• V
escribiri ' L ’ )
desde j <— 1 hasta digito - 5 hacer
escribiri ' X' ) : :5 v:i’r : **
•
*
}
r« t v! . •
$\ - rM.* v * » .. 1
fin_desde
si-no :.rnV{ . í a VUÍÜ<?U¿ POl&fl ?fn¡ ,
* si digito =4 entonces *
... / ‘IXV ’ , fL
escribiri ( ITI ,-
’)
<
01 lOUV » i r
‘ v / iv' ^ ’
r'
Olí
i . v ,i. ).~
¡r í:
^
\i t
si_ no • rj ’o'
'
> .
h )l .:t í ’’ :
''
• < ín > / > •)’». ¿i ru 10*1
desde j *- 1 hasta digito hacer
escribiri ' X ‘ )
fin_desde
e.d 0*q^«P
VJ i ' I
|
l
. *
* Jv.*
» v .v *: ,\ k iV \ M r
fin_si
fin_si
digito < r - vu
^rAnSotn uhVeia«\r, t^oiq \evA\ iu *
,
- 4
si digito = 9 entonces
escribiri 'I', * X ‘ ) c k
si _ no .. » a •%
& >/
i
fin_desde > ¡ vSVJ
fin_si > ’
kn: v . v ,-tv/í
fin_si
-- ^ ’ b'P l i j b
! ; #
V I ; K> ¿ ' >0 r p \\ . A . A.
1
v j' J
t - . .¡j
r
'
• '
ó '
> ,:• • • •: a .
. p* el . , . m :
j*
1 ' .ludorii ia '
'ni'tyi} I'J )
Í
Mediante
•
A
programación modular:
» r*
jo f
algoritmo Romanos ; » \ r. : ;L iv ¿ ¡ ¡" Vi r r j :
T ';
1
''
* 'y. i O .! ' '
* f \; •
* ; •
" J A f í? * I. .* ’ ;
var n,r,digito: entero * V *
^ tf.J
I
>jfjjÍ
',
inicio
'
f í iifj Of.- T í n j
repetir
; í « í,i:.v
•.( ^
escribir( • Deme numero') tn;{:>;,
• .
* *
.
. . .it J
l
. * .
.í JVíí.LJJ
m
-
.
•
¿iJ. .
ni v :jí f‘ jf/ i * » i;«
’
,
^
VJJ
.
,
,
í,:
v-
y
LI;J
'
.
•*
<
.
: .V./;
>
:
•
•'
jrplu ^
-
.
V.» f
í»' ~
.< »
i
*
i
ó>
-
f.
ni j
.jahn'
•
;rJ
-J rJj
' i.
I ! "
ieer(n)
hastanque (n >= 0) Y (n <= 3000) fjp ;r ,; . V - ;r. v
~
. . . f •tl . á
yy ¡ - '
• !!
ir í
-
J
-
dígito 4- r div 1000 f
‘
j
•
J
‘ ; ; mua noioiivinurnoo ní inoo 2 ?Jft 0 tbfi9q1
T ’r < r mód
-
calecífrarom(dígito. 'M' i
i U *;J > if?rí YN ;¡ yl
* ¿Óí ' . . ¿U i :[* Yir/.m. f - *
SUJO . -rtaUdt » V W ü
'
•) > Ut
. .'. -
' •
f
’ '
. .
dígito ""
r # * 9
' x : v I
* ’ • ' » »
r div ‘
100 h>
L\ vUr.'v.*) u TJ "f •
r mod 100
r ‘
dígito 4 r div 10
r
" 4
' r mod -
calccifrarom
I
10
*”*
— ~
T . .
4 • wl
t :
*»•
V
•
’ ! V
-
.''
i
>
:
0M 3Q erfisiQoiS ¡
»
- a
“
'
f“
..
"
ry
'
V ,
v ' „•
r '
l
»‘*.
.
1
í '
*
?
calccifrarom í digito, !
AoinairnibesotTI I
.
•
fin
^ \ I \ • ... Ycao ¡ . JY ^ «
fl ojnoim¡h93 o ,i<1
i
inicio
si dígito = 9 entonces I r t r\r- ii *
ir . f-
f ,.t
if
escribir( vl 7 v3) i i
si no ú:
\ U ?
? :C
' J ~
i
si dígito > 4 entonces
1 oh oivá mtK
escribir ( v 2) -
desde j 4- 1 hasta díigito
1
5 _ hacer 1 _
*
escribir(vi)
ú r
fin.
sino
_ desde
i
i
- 1«
f »
4
si dígito *= 4 entonces ,* i D oinoimiboootS
escribir vi
(
_ , v 2 ) (
... , W oq\1
¡
rw %
si no
desde j 4 1 hasta dígito hacer- ii i
escribir(vi)
fin .desde
_ j \yJ oV> oSVirr. f- .
finsi f
fin_si
fin_si
rin si
_ I, , . ; (r .i 0
.i . * . . ::
.- .3V S1U
•
'
'
I
f in _ procedimiento ^
variables locales,
\
- V.
'
; -
la .ni 5
variables globales.
y definida dentrodejtn SU.bprograma, en gl jen- -
i r r.
_
Una variable local es aquella que está declarada
! 3Istinta-de-las-3¿¿5ábles. .corLfil. nu$mo nornbrejjgcla-
i
^
tido dé muTestá deiltffijl¿iseIIuBp gK5na yIH
raHas en cualquier parte del programa principal. El significa
do de una variable se confina al pro-
utiliza el mismo nombre se refiere a
cedimiento en el que está declarada. Cuando otro subprograma locales al subprograma en el que
'
subprogra
“ «i
mas inde
dos
.. .
-
pendientes, con la comunicación entre el programa principal y los subprogramas manipula
os
estructuralmente a través de la lista de pará metros. Para utilizar un procedimiento sólo necesitam
conocer lo que hace y no tenemos que estar preocupados por su diseño, es decir, cómo están pro-
gramados. v íi -> .
ñ or ton - i >
* y. , ’ c o , or i p ih ) wiot i i xzo í to
'
%
' 1 "
I Programa DEMO
tipo X, X1, . .. Ambito de X >
u• v io
-
_ n '
r — > i
) ’ *
. X *
Procedimiento A al 2
..
tipo Y, Y1, .
Ámbito de Y ? nr' br r hoZO'iZ
-
: o s ' í n j IíV
Procedimiento B
.
tipo Z , Z1, .. B&OItC Í Cr' i ' ;' i . •
c;i.¿ o
a#o¿K>:te» £ • ¿ L*
Ambito de Z f AV : 3 i
—
'
? ,
* *
OJ ú S.:j I * e»JE> Ofl> &
t w :í t * ü> a 9
*» £*
on .is _
Procedimiento C ort s ; - r ' •
Esta característica hace posible dividir grandes proyectos en piezas más pequeñas indepen-
dientes. uan o i eren es programadores están implicados, ellos pueden trabajar independiente-
A pesar del hecho importante de los subprogramas independientes y las variables locales, la
mayoría de los lenguajes proporcionan algún método para tratar ambos tipos de variables. j
Una variable local a un subprograma no tiene ning ú n significado en otros subprogramas. Si un
subprograma asigna un valor a una de sus variables locales, este valor no es accesible a otros pro-
gramas, es decir, no pueden utilizar este valor. A veces, también es necesario que una variable tenga
el mismo nombre en diferentes subprogramas.
Por el contrario, las variables globales tienen la ventaja de compartir información de diferentes
subprogramas sin una correspondiente entrada en la lista de pará metros.
En un programa sencillo con un subprograma, cada variable u otro identificador es o bien local
al procedimiento o global al programa completo. Sin embargo, si el programa incluye procedi-
mientos que engloban a otros procedimientos procedimientos
'
global/local es algo más complicado de entender. < , • / —
anidados , entonces la noci
nu í ;
ón de —
F¿ dfnhitn de unJdentifiendor (v áí r ahlpg prestantes, prnredimifíntn ^ es la parte del programa^
donde se conoce el identificador. Si un procedimiento está definido localmente a otro procedi-
miefitó, tendrá significado sólo dentro del ámbito de ese procedimiento. A las variables les sucede lo
mismo; si están definidas localmente dentro de un procedimiento, su significado o uso se confina a
cualquier función o procedimiento que pertenezca a esa definición.
La Figura 5.5 muestra un esquema de un programa con diferentes procedimientos, algunas
variables son locales y otras globales. En la citada figura se muestra el á mbito de cada definición.
Los lenguajes que admiten variables locales y globales suelen tener la posibilidad explícita de
definir dichas variables como tales en el cuerpo del programa o, lo que es lo mismo, definir su ámbi-
to de actuación, para ello se utilizan las cabeceras de programas y subprogramas, con lo que se defi-
nen los ámbitos.
á mbito son accesibles en el
,.
mismo , es
_
. , en todos los' proce-
decir
Las variables definidas en un
dimientos interiores.
í insiuai
¿ol mmífdo w ,orm . •' . SIUO . < . s* i 2 *>
'vonlcv *
»• ^. . , . » M i • »
,
t i
• * f
' • -
í #
*
/t1 I
•;
> ,1 W ^
* *
UWIf M
;
MA
1
f e.»
A / I
, í ¡o! , ’ b •* ' *
/ , * i
B i
A A , B , C , D , E , Fi jcv
1 f •
, G . . . ,'i j
bonii í !
IAJ
B B C §
D C c i f fer - jr t í i. U
E D D, E, F , G
F, G
F 1 E
F p' or.. qmiP
G
•V .X .A i v* '
-
• J IÍ
•
G oi
:
- 0’ { ->
. N. »
*
. .. .*
variables.
i* M- t r •
ra í
de definició n de
\ 4
M f'
r
>/ h - I ! ioijr nvT .;/ ncD #
n 1}
Ejemplo 5.9 i
'1
> UL '-'± ¿K : í . t
'j *
(E
*
real
;
:
^
x
•
)
• ,i' . ^
•
,
r
* ^4*
. t /• i
t
var entero:
Trar pnfprnrss . i! ,ir r. > i • >
) f ) idf ¡C! , *V / : 1
‘ • inicio *7 • * I
//valores de signo : + 1 , 0 , 1 n: jv . . í
- ' »
^
• '
* » » • f
%
f *
* V '
#
si x = 0 entonces s 4 0 , * -
tú V > » } : / . ( / 0 . ‘jif' j . i •« ; / v .Or»i- •
* .
**
.
si x > 0 entonces s/ .4ti J-7: 1. . - , í» b ei Ulft r» ! i t> nr, - >' > jai
'
:
si x < 0 entonces s 4 : .r . —
q ' ; :
m ú h g c v K i t í » •
.
_
f
:uí:iibo¿b » q ' lB
• *
1 . . ) tu IfJfiTl
- ilifin función ¿
JO * *
.. - ‘W - . ..
WWW - «oliwiinttoxan
dentro del
.
subprograma
. . .
í « * - ¿ ¿Qi/ ioiríj
, es local
'
entero : a , b , c . nói úin taf:* í$ ¿:í¡ JB h,c.v\sr¿: noq r¿bú ojítairnitrí joiq d fiOrbnüT istdpisúa
'
. . .. é
. a . <- signo ( x ) , o ¡ ,| <¡¡¡ fifíbu t SÍfidoIt: ./ C ¿9slIDüSOi tlSliaibfi
<r j fó.:: IL / IlvMll V . i J r.íJJt Jl
’ aoJ
.
*
KlUlti SUD )( C»:
Üi 2U
U0
So «. A
^ KM CJrJDl
r > iru o! o aup ol ,ó mneiaoiq lab ornsijo Is n*# «alfil ocios i&ldfihfiv asrfsib dnifiel
*
b 4
- U -JiL ¿' ¿l'''signo
(y)
7 V8975
— V i ;' '
'
'
,
: «¡rtimgoiq s íí msoodüs «ei turuliiu n¿ olio CICí .nóioBi iDCiñ as oobí oí
/ Jos
^
c <- signo ( z - 9 ) .? DJ ÍCÍ flÍ ¿ol f íSi í
{ j
' yy \ . escribir ( ' Las - respuestas . sori :. r í a ‘¿ fdiV.ü Obi > tJoá OíclrfJU 0 )1 na • X . í rui r í ?9ldfihBV
•
fin ^ • /
b =
signo(O)
z = 7 897!> 51
,
,, , b l o m a e l valordeO
» •. un \ ti Ní
,r
i
r. t 3J
<
0 -1
8.
A
¡
r
i i
—a— r
i
t i
1l
3
Ejemplo 5.10 -? I
Jj i
i
i
algoritmo DEMOX i * I
2]
t I
var entero: A , X , Y * 1 ..
V t
inicio i
l
x4 5 - >
_ *
A 4 10
y 4 F(x)
-- I
» i
*
i
vi
escribir (x, A, y) f
A <— 5
X «- 12 i
i
devolver( N + A )
fin_ _funcion " IMM yA V
( ' i* ' V J< J II i r; <ot rí : • y) - rr v . f rJ /
A la variable global A se puede acceder desde el algoritmo y desde la funció n . Sin embargo, X
identifica a dos variables distintas: una local al algoritmo y sólo se puede acceder desde él y otra
local a la función. ,. < . ..
Al ejecutar el algoritmo se obtendrían los siguientes resultados: «, . J . J ,
I \l k
X = 5 , ,
i: , í :
1
. . •
f •
.
A = 1nU
, •? r
i
Y = F ( 5 ) '• invocació n a la función F ( N ) se realiza un paso del parámetro actual X al pará metro formal N
A = 5 se modifica el valor de A en el algoritmo principal por ser A global
x = 12 n se modifica el valor de X en el algoritmo principal porque X es local
se° pasa el valor del argumento X ( 5 ) a través del pará metro N
*
F = 5 + 5 = 10
Y = 10 .’ *!
V ' • tyic :b . ¡ '.i *:: :
* ' cpia , * *, *
•
•
•
5 5 10 •' '
. ! Or > .v
; '
í :!, . í ! i . V i OÍ 1
* «
^, la informaci
* «
’ * ; <
* , < '•
utfvixS
Cuando un programa llama a un subprograma se comunica a través de la lista de
parámetros y se establece una correspondencia automática entre los parámetros formales y
actuales:
Los parámetros actuales son « sustituidos » o « utilizados » en luear de los parámetros formales
-
Lacleclaraüóttdel subproKiaiiia~sg~hace~CPfi
* ! f i n.t í »
”
. .
' ¡
ftiLfl í
^ 1
¿J n i
Fl .
>í ¿ ;
, •
Oí'
! '! - clase tipo_de_ dato: » F2 ;u •
(3)
» «á *
íT) o b I -
i i i A
J tJSfHtl ülut I
'
.
clase tipo_ _ de_ dato :Fn )
o zr> jjn t b ;n f r t iü§o íq d i i i > b A 'SU í í II/ C J J w l u y y f j
iV' > r¡ •
<
fí M í V!I ii >q ‘V i !ü7 nu svfcwj sfr
'
*
¿ ) á Jíóí ¿n úl afiu ÍH )
- b . ;• /
ai. / / ; m fin procedimien to í noiaiiL : r f \ m> D íip
^
'
' ^ .
( E) Entrada
o » : "T ;
>
( S ) Salida
( E / S ) Entrada / Salida
que hace corresponder el parámetro actual B con el formal Y, y el parámetro actual 3 0 con el
formal X durante la llamada de SUB.
• jr,u . : . o !
5.5.1. Paso de parámetros a A ;v¿ AH £508 1808 MOD fAdlDA OIMU& OD .3.5
* .
.V \ f íí i ífit ; :‘>'
í j • V s j: i • \> J . . .
/LJ ' / I f l
í J
'
v
!' . i i '!
>
>
•jfi
. • :>?b
>.
’’
•
El_ paso por valor se utiliza en muchos lenguaie&.de programacion; por ejemplo, C, Modula-2, Pas-
caTTAlgol y Snobol . La razón de su popularidad es la analog ía con ló argüméñtos de una3unción,
^
^
v .El mecamsmo de . paso .se resume así: / cbrle NabmJrra ab noz ¿miimknsq ¿
^ ol of Mita :> : . 3
. v 'ji ó vnw .
r. zl ValoT-prinier parámetro: A .= 5 . un íbb nsfou?. tu akisiiev ¿athmbtBq v ; ;!*; > - n Ñraq <u\ . • .
grama no producen cambios en los argumentos originales y, por consiguiente, no se pueden pasar
valores de retomo al punto de llamada: es decir, todos los parámetros son sólo de entrada . El
parámetro actual no puede modificarse por el subprograma. Cualquier cambio realizado en los
valores de los parámetros formales durante la ejecución del subprograma se destruye cuando se ter-
mina el subprograma.
r valor no devuelve información al programa que llama .
-
A < 5 . ir 9
i
-
B 4 7
llamara PR0C1 * (A, 18 , B * 3 + 4)
. r. rfo
! ’• 5 18 25
I
*01 *
\ 1 <\
\ 71 B9C i
-
~ nr/ . > '
* kOiS'ifxúmq r u \ sup v f . í t rrji, ! Í C¡
fftt . l . 1
b (d
' ¿ú procedimiento * *
PROCl * - '(
E1 enteroi XV » Y , 98 z ) ’ '
• I >> M * *1 >
'
1 ' '
> f• _
y .*
•
"<> • .i \s ii
184
rencia al correspondiente pará metro formal se trata comauna.referencia ala posición de memoria,
cuya dirección-se-ha.pasado. Entonces una variable pasada como pará metro real es compartida, es
*
_ ^
decir, se puede modificar directamente por el subprograma. .
Este método existe en FORTRAN, COBOL, Modula-2, Pascal, PL/ l y Algol 68. La caracterís-
tica de este método se debe a su simplicidad y su analogía directa con la idea de que las variables tie-
nen una posición de memoria asignada desde la cual se pueden obtener o actualizar sus valores.
El área de almacenamiento (direcciones de memoria) se utiliza para pasar información de entra-
da y/o salida; en ambas direcciones. on - jtnhii j . ; uoo o ¿ . , ei:; ai
En este método los pará metros son de entrada/salida y los parámetros se denominan parámetros
variables.
Los parámetros valor y parámetros variable se suelen definir en la cabecera del subprograma. En
el caso de lenguajes como Pascal , los parámetros variables deben ir precedidos por la palabra
clave var; -
- £ noi > >7q . -. ‘ :t*rtz,inh !uq ibor t lol;: -.' . j '
- •
/ program , muestra ;, ;. , ,
- .
X ífcmwn&Kíq ¿OÍ 03 rtomiotgOClI V '
/ / parametros actuales a y b , c y d paso por referencia
procedure pruebafvar x , y : integer ) ; <:
8 ~ ¿ytO¡;; / • « I
íTIfOOOf/lfl í D C JlJ
:. -
begin / / procedimiento j , ; ' hl
* J ; í i B / í li SflvfJ
' ,
c J \ic\ , bfipflliA
/ / proceso de los valores ^de x e y trfl n , , fina
7. gi ii¿
*
- • áünt
; vbt !
-
n nbbu o í nú ?
. begin " 'Ln ; ubtSlJWll Sb OltlUq ii ; OflTOlíT Sb /.370Í6V
• á ¡
I ' 1 l , ] " fiborn absuq on ínulas oiío/nüiüq
- '
,,
‘ 1 (
' 1
‘
'
) , 9 vmu ,i > , , ,.
> !! ¡J ¡b | ui
«¡
J
\
i# Takr.’ f f '? ‘ • .«
end .
u i •; i * r• ,* •: i
*
i
La primera llamada en ( 1 ) produce que los parámetros a y
c sean sustituidos por x e y si 1<>S
valores de x e y se modificaran dentro de a y c en el algoritmo
principal. De igual modo, b y d son
sustituidos por x e y, y cualquier modificación de x o y en el procedimiento
afectará también al pro-
grama principal.
i ¿j . aM .- M
Notas:
•• T . *
7 7 ' r-~ * r srr\
<
; . ,
••
• . tv~
*
>
,
l ; , v -»
1 I <|«V r - • •
r -ü . .
t(
— --- -
. i ,.
-
.•
’
- -
*»• f ' r »
C ‘\ l
' ••y r
y¿ Oft
1
i Ambos métodos de paso de parámetros se aplican
.
)lican tanto a
la llamada de funciones
.
funci como a las deofproce
i í \>
-
dimientos: * . . '
i- • /
.% / 1
Yí ;
>
•
v1
' f Y
^
t ',
f "
" ' *
. "
J
1 . Una función tiene la posibilidad de devolver los valores al programa principal de dos formas: a)
J.
como valor de la función, b) por medio de argumentos gobernados por la llamada de referencia en >
la correspondencia parámetro actual-parámetro formal .
2. Un procedimiento sólo puede devolver valores por el método de devoluci ón de resultados .
; ;
• ' * “ : - $ ¡ ¿¿-¿- * ** r '
_ 1
'
rs
*** **•* * -.
“* ¿¿ 1¿w ;
'«
* * * *•* *-** *>
« i . X* ¿¿i*** ¿v„ v. JülCilSfiííCi Lc ~ é M£S íí iI J
•
. •
. •
• . ,-. ¿¡ r '
í ,
' - ¿ ¡
11 c
; , OJr; - J io' í i
- 4 *
"
i
•
begin
i := i + 10 ;
j :« j + 10; .> r \ i
*
_-
:nV
.
¿ r'. . 0-
i : - S
”
*
'AioV.
write(i , j) . 1 \ . i . i . v / - j ' » * ?\ t ' ' * ¿Z
end;
oh : f -. ’
( . -. jl . r \. e v .
J ?
lebr .&iicrn * fr .
> -3 b cnom^m
•
Los parámetross formales son i , j , donde i se pasa por valor y j por referencia.
c m M Q t i
, t i
« .,
lidlnrrirmfí . t ’ ^
' “
j • •
f ^T •
y i’
^ veamos
Para examinar de modo práctico los diferentes métodos, consideremos un ejemplo único
—
t
un procedí -
los diferentes valores que toman los parámetros. El algoritmo correspondiente con
, - L-.
miento SUBR: • • . !- • 7T - • ¡v • .
- i
I f ' ir,
'
i • ri % % •2 '* * / t# '
r
*
9 w 1*
L * 1
'
algoritmo DEMO
var i » •
. #
* •
; 1
1 I . .
*
A <
B < —
- 517
3
y
'
. VuiAo\" í ViAvVnv;
* ?' > ó. í itt
C < -
llamar_ a SUBR(A , A, A + B , C)
‘
W:
¡V
-. t: - miSii . C’ V: 1 o» >
escribir(C) Cl , ; - cv
fill // DEMO * * . ..\ i mnV tí *
o in ¿ a i
. < Modo> entero: v)
E entero:,z; .
a
v
: x v
y• ^ p ....V s
Procedimiento SUBR (< Modo> entero
/ *
v *
- » *
inicio lo)
x< x
v y
- +
+
1
z '
r " ni i
í d
fin « procedimiento
C novar ía C = 17
•f * /; » • • .ir. ; ; j »; * / *• ? \
b ) valorjresultado: *
X A 3 :
- • ,>
i* f 14 /
V >
i . y = A = 3 7 .
A = 3 i ’ z
= A +; B = 8 .
pasa al procedimiento/
i »
= 5 •
;
B •
‘
v = C = 17 'i *
C = 17 Al : '
w '. • 7
t /* j
< •< ? ; *
.
?oTiaor } jenf>Q í?Qnu. ,j' < ic goiqd
•-
m .
el parámetro llamado v pasa el valor del resultado v a su parámetro actual correspondiente , C.
Por / ..
tanto = 1 1.
D - - tontn, C _ 11
"'
-• V .. ' * :
'
; 0i *
Modo por referencia: r
( . i * o d l i v-
•
7r •
Posiciones de la Posiciones de la i
7< :
i r • 4 ' tn< o . i - noter. :/ . ) toi
: HSU 3 Plnyffl
:« - »
'M ':T oídl
\
TI . y
c *- 17
_
llamar a SUBR V nnjidn*'. pv : . Sl:> í 7 •
escribir ( c ) '
fin
ftí í«*ctar# tsnI¡ “
oir.^ lr. i 1
procedimiento SUBR
inicio
— V) 4
1 u* » v
a
— a '
4 + * .\ *
c f ci + el + t)
fin _ procedimiento A
u i ü IJOCí ? > ni i
* t
í
r n.
( véase 5.7).
< -ní j . : . na
•
: 1 ) 11 01 • ‘
’ - : :; L
'
‘
’ •
nu ¿tíDnoJmi /jldnriK / cnu ^3 ífi üloc OT’íHfii'nf q b *
'"duu; t».í p ¿ ; / , '- uiob rn ttrniM .v *
5.5.5. Síntesis de la transmisión de parámetros
¡
w
lo r,‘, v Irw nu no ¿ j
' 1
.
,
* —.
o . o
•
.
<oi y^ BDibíiiol noíO jvub ’roq oií3m¿x;q TU lilim nnu ton
^ ’
> íú oibni íncSÍ
Losmétodos de transmisión de pará metros más utilizados-son por.voinr y -
pnj referencia. ;
El paso de un parámetro por valor significa que el valor del argumento parámetro actual o
—
real se asigna al parámetro formal. En otras palabras, antes de que el subprograma comience a eje-
— i
cutarse, el argumento se eval úa a un valor específico (por ejemplo, 8 o 12). Este valor se copia
entonces en el correspondiente parámetro formal dentro del subprograma.
Una vez que el procedimiento arranca, cualquier cambio del valor de tal parámetro formal no se
refleja en un cambio en el correspondiente argumento. Esto es, cuando el subprograma se termine, el
argumento actual tendrá exactamente el mismo valor que cuando el subprograma comenzó, con inde-
pendencia de lo que haya sucedido al pará metro formal. Este mé todo es el método por defecto en
Pascal si no se indica explícitamente otro. Estos parámetros de entrada se denominan parámetros
valor. En los algoritmos indicaremos como < modo > E (entrada). El paso de un parámetro por refe -
rencia o dirección se llama parámetro variable , en oposición al parámetro por valor. En este caso, la
. . lurnJtr i : - ?n j ‘ . tsq
.Ol J . ’ t •:
*
V -
'
J S bn
- . oJ
- .' n >
constante o i
n
’
expresión )
Programa principal Xi.:V
No permite la
=4=
i
comunicación en
este sentido
Par á metro formal
o.in ; • , • n; t i
Subprograma i
' ¡
. •
H * {(
‘ I
’ *T
. ¿v ) Í K J
rrrn nhJf '
í
Parámetro formal
Subprograma ! jf ' y.' ii' j i M j • ’ íOI ¿ » ^ (parámetro var ) . ,y
-
,
r
L * -• J :• i :-
J
i ?
\•
•
*
. ' •\ 3 BV
í
'
— ncia.
refere
* *
• : i -i IOU
— —
•
, • "
~
•
1O0 ¿ ; ’ i * • •
'
; •
, , .
^ r -í
* | r
'* * > O J
*
' <; j
^
posición o dirección (no el valor) del argumento o par
en Pascal con la palabra reservada
parámetro formal se le da el atributo de parámetro variable —
en el parámetro formal se refle-
var— y si el parámetro actual es una variable , entonces un cambio
tienen la misma posición de
ja en un cambio en el correspondiente parámetro actual , ya que ambos
memoria. m - ¡i5f ?u b odt <5Í ITU ;u. ú i - l 3 »:- Tí . o '
: '
con la palabr a
Para indicar que deseamos transmitir un parámetro por dirección, lo indicaremos
parámetro variable — en Pascal se indica con la palabra reservada var— y especificarem
os como
<modo> E/ S ( entrada/salida ) o S ( salida ) . . 5Up bfiln ii TO ÍBV ioq oiJomi teq rw í > o?Jsq 3
•
?«
* ' 1 ,- íáí » . - f t r y .¡ ; .!* 'im. ü ’ - í u* ; / wo n .
•
>
- * rr. fi w , j ^ '
Se trata de realizar el cálculo del área de un círculo y la longitud de laí.'circunf erencia en función del
' • ' ri / uODO'
iq fe sup ? 11 ’
’ > ^ r . . íü ' ; l í
longitud de la
Recordemos las fórmulas del área del círculo y de la longitud
it. * í - . - ía circun
vrju . . • .
' • o
ia:-
nrSa
ferenc
rirrnnferp
b , r. r . . . •
• i i jiii
'
• > / >{ • ‘ .
fi '
maq
'
C
;; 2 P1 X r •2 xpi X P donrfcp¡ = 3.141592 m > ,
'
, .. •
„ .
,
<
¿:: ptzr¿T ^^' ^ ^^«iz; y^
esson:
1 ' r 1 "Jf i f|
fldiWtt»
«
'' " BidmtiD -M a
ti? rimú
' '
programa nrinrinal
/ nrnarama
/ /{ principal oiiarni
•
bh' ’ ' ' * "" '
••
//
inicio : n< tu << L¿
// llamada al procedimiento
llamar_a circulo(6, A , C)
fin
;
{ , , v ! ' *' } sbiaiq 32 rbidm . óbrttiru Y < ú óbií iq 'j íl i /
'
-
//parametros valor:radio
//parametros variable: area , longitud
inicio
pi <- 3.141592
area e pi'* radio \*.ía
longitud 4 2 * pi * radio
- —
'á >0"' R IOS SOT¡/l3IM¡ÜHOOfíc¡Y 2HKOIOMU ? .6.3 -
fin_procedimiento . , , , ,
-.. i
*
»
l Ul1
•
SQLlZPpJ!:}. :; * ív "
' •
. . '
‘
« ' - b.:¡ l./• * • £'
r
. ^ tii> \¿ ¿ ónrin
f ? v
jemp O .
t v n f j /ü { MI ;>
'
o * ni o!,: í . ¿ J < -t n hv
por valor, y j, por
/; • ío * j;
-
Consideremos un subprograma N con dos parámetros formales: i, transmitido
variable. - . ^ ' .: v oinsimiMooiq b no cbihft
.
•
.
- » un o ó
Tuf » stouq it » p *
5 ndbritn i;! >upo'/ i
nn:> uL" , T Í >r r
ao ..v á i . / tur; í; :í
algoritmo .M ,,. j „ . -
//variables A , B enteras
g r ;i y* i J i ,ttJ ^ i íJTJF« nwn; : . i ¡
a ;- iib,\ ti ,i‘ / <;.
« v W . v/;r . t r v\ . U .u ; . .
•
-
^
.- .
- ’
var
entero: A , B U tip > real v- ‘s - •
. - ’
- - veb\qTifj\B
inicio
A < 2
B 4- 3
_
_
llamar a N( A , B).
, .
/ .x
i .
:
:
<*
- :
•
-1 . '
-• u -
- 1
nolonuí-
‘mi:.»
o.n . -
escribir(A , B).
fin 1. { t,//algoritmo M
.
,
1
.Pt .
, .
-- '
1
l
v,<,/* ;;í bl
Y
,'
;
v ún b^O|
. . boniíl <rt
«
v
- •*
,
'
’
Vi
,
.* u-íú - 1 U
.
-
.
inici b:
° .. •
^ol] í x. J .
. 1 ' 1* J
5» cr¿; lo,^
*;
£ 0U / vAO
:
t- viJ . nii ; d
,,^ TibMMu
' r *
ir ( i j)
' j 2# ^ ^ Ji *
M «»». 5! se íescribir
i !Í ¡* án: ' v ^ ^
cJ ÍT3
^^ |f
^ ¿ ti
* *
-Procedimiento , . , >1 *
; - ¡ lo v. : ib
*
m. x resultados , >
Si se ejecuta el procedimiento N,
|
, fl 3 ‘
veam
^
7
,q r . . . , . u;: , .
- j sd orno» ¿olirminidt»
íAl r:
y B son pará metros actuales
'
. *
_ ,
* - y j son parámetros formales.,
h . ) ,
nr
, ’
, : -
de A a i es decir
,
,
r
1
, i
r
= ^2 . Cuando=
,
i se modi
A -
A
. • ,
A *
¡
-
Como i es por valor, se transmite el ,vai consiguiente, a la terminaci ón de N, A
ft por defecto de i « i + 1 0 a l 2 A
*
Slgue valiendo 2 . — . - h- '
12 y 13 í
5.6. FUNCIONES .
Y PROCEDIMIENTOS COMO PARAMETROS
' V * J i ' —>
*
, |
' ' '
Hasta ahora los subprogramas que hemos considerado implicaban dos tipos de parámetros formales:
parámetros valor y parámetros variable . Sin embargo, en ocasiones se requiere que un procedi-
miento o funci ón dado invoque a otro procedimiento o funci ón que ha sido definido fuera del
ámbito de ese procedimiento o funci ón . Por ejemplo, se puede necesitar que un procedimiento P
invoque la funci ón F que puede estar o no definida en el procedimiento P; esto puede conseguirse
transfiriendo como parámetro el procedimiento o funci ón externa ( F ) o procedimiento o funci ón
dado ( por ejemplo, el P ) . En resumen , algunos lenguajes de programaci ón — entre ellos Pascal —
admiten parámetros procedimiento y parámetros función . J
: (L! I
,
Ejemplos:
procedimiento P( E fuñe: Fl ; E real : x , y)
real función F( E fuñe: F1 , F2; E entero:x,y)
r ^ Ji
- .12i V II-
‘ T
Los parámetros formales del proopdimienta-P <;nn la funci ón Fl y las variables X e Y, y los pará-
metros formales de la funci ón F enn la <; funciones Fl y F 2 , y las variables x
.
Procedimientos función
Para ilustrar el uso de los pará metros funci ón consideremos la función integral para calcular el área
,
I
bajo una curva f ( x ) para un intervalo a < = x < = b.
Enotécnica conocida para el cálculo del área es subdividir la regi ón en rectángulos , como se
muestra en la Figuiu y sumar las árt:as~de~los~rectángulos— Estos-reetángulos-sc construyen sub-
dividiendo el intervalo [a , b] en m subintervalos iguales y formando rectángulos con estos
subintervalos como bases y alturas dadas por los valores de f en los puntos medios de los subin -
tervalos.
La funci ón integral debe tener los parámetros formales a , b v_n , Que son parámetros valor ord *
.
'
narí os~actuales de tipo real ; se asocian con los parámetros formales a y b; un parámetro actual
—
tipo entero las subdivisiones se asocia con el parámetro formal n y una funci ón actual se asocia
con el parámetro formal f .
j
-ü*
. ora
nc i. Av i
1 > IJ i S
'
TU
*;
rLr ,vr:- D
n ’ iotTiii ni. ¡i
r f .
1X0 / Oflil Ül
K = nx) isv
: ci -
X <
d r.i \ nf ,rt
r• * x
Figura 5.9. Cá lculo del á rea bajo la curva f (x).
xr-ofi .' t
• : *
L * 2 '\A í -
--- 1 »
ÍU
Los pará metros función se designan como tale* rnn una rahprpra HP fnnrinn dpnfrp dp. la lista de
parámetros formales. La función integral podrá definirse por . »
f¡
..
. , v )Viove»«
uwi . • ' }
real funclonUnrpnr^l / F fnnr f ; E real: a , b; E entero: n ) »
; ‘ ' C Ó fit
í* í‘
el tipo func-tipo real funci ón ( E real:x ) : func -
aquí la funci ón fu ñe : F especifica que f es una función parámetro que denota una función cuyo
rs ó ramf*tm ínrmal \ r \ ra 1r* r enn r\ f* rP íll F?1 onrrPCnrmHipntP nará mptrn fiinr í nn flrtll íll HPHP RPT linfl
. .YJ
V ÍÍ 'J
.
eo nsiml í; : -roí o rc3 ^ '
.
Diseñar un algoritmo que utilice la funció n Integral para calcular el área bajo el gráfico de las jun-
ción es f l" ( x ) = x3 - 6 x + lOx e Integrado por Integrado ( x ) = x + 3x + 2 para 0 < = x < = 4:
2
0? !; t ; i i , í , MI «t
ti ¡
2
oYo
_
OU \W
í nstff - 1 ^ . *: > * » ' v>‘ ‘r. ‘ í i . ni
UUitty ) tii i : , wy . )I .. 1 i':, - . * 'jt
xr*o J : ^ yvS\ w . IV * on » « ú
:
•
' i
•
•
- • . . ’
"1
‘ 1
» ¿ »¡ '
;
Of íl) Ht
'
:
fcireai
var
. xVi) :. fuñe
^ =1 : :
función( E xeaiL
.
0 - l i / wm u iboóm oínaimibíiooigaM i?
i
± ^1
* '
t < M'
'
'
J ’*
'
,
entero n ¿ . : JH <
inicio ' » IK
l ( i bCun
‘ -
ÜIK»:»
. . unitairj n < n
escribir( ' ¿ Entre que limites ? ’ )
i»; i M
vb
r /; ; í ;; i
.
.11
•
i
!•'
. ¡ , .
' > n í t-
‘
i
-
*;
.
't
ti y
M leerla , b ) ^ •
i J :. •1 ’ I irjt o3
. eacribir ( ' ¿ Subintervalos ? ' ) ; it . ;
*í •>
n* : ; yy -j
jjn
^
i •
* i
< M
r ,i
2 eer( n ) tT 5
• • •*
Y rt : ' r
escribir( integral ( f 1 a, b, n ) ) #
ih ííf -jit.' h - ¡ U
-, ^-
j
eBcribiriintegral ( integrado, a , b, n ) ) I
¡w
fin
) i Ci ; "
j
-* i :i n ;oin rn
192
i
i
: x)
real función fl (E real i
inicio * x * x + 10 * x)
devolver( x * x * x 6 - t
( real : x )
real función integrado E '
»
*
*•
inicio + 2 )
devolver( x * x + 3 * x t
fin_función . .
_ <
, b;'.E .entero : n)
i
(E fuñ e : f ; E real : a * -
t
. •: *
var.
J
V*
,x,s
•. . • •
inicio c,
—
baserectangulo < (b a) / n
——
-
x i a + baserectangulo/2! s. fil i r i f oluoffiO
S < 0 ^y
-
desde i < 1 hasta n hacer
altura 4 f(x) -
^
.s s + baserectangulo * altura
—
x 4 x + baserectangulo
. ' U: M J f i. yj -
m / i ..o > i .
v . fi ó hnut
-- TT 7
fe rnol .
IOUWU
;
'
íWI
,
'
v:p*íi!&i¿q
1I Un í :2 : -
*
fin_desde » .* j ¡ : r í‘ *
.
* •
«
•
• '
devolver( s )
fin_funcion ¿ ’ t í . rit
-:
I* f
Á ó Í n:L»
i
* ;
i K í
. L> - i
i
-
í< !
;• : 1
. C' *
Ah í A -
' ÍC SvptUIMi
^: . K fí 1 :
^
:
^
Las modificaciones que se produzcan mediante una función o
procedimiento en los elementos
situados fuera del subprograma (funci ón o procedimiento se denominan
) efectos laterales . Aunque
en afgunos casos los efectos laterales pueden ser beneficiosos en la programación, es conveniente no
recurrir a ellos de modo general. Consideramos a continuación los efectos laterales en funciones y en
procedimientos.
x ó bm/l r íibil ü v fiiomrjTjt jjr: u ¿3 .
.
V’
•
^ ’
' .' " V »\
i; .' ' X l V.
"
í '
^
La comunicaci ón del procedimiento con el resto del programa-^e-debe-realizannonnalmente a través
de pará metros. Cualquier otra comunicación entr£ eLprocedimientQ-y el resto del-programa se _ -
conoce como efectos laterales . Como ya se ha comentado, los efectos laterales son perjudiciales en
la mayor ía de los casos, como se indica en la Figura 5.10.
!, éste es un
. Si un procedimiento modifica una variable global ( distinta de un pará metro actual
efecto lateral. Por ello, excepto en contadas ocasiones, no debe aparecer en la declaración del pr
cedimiento. Si se necesita una variable temporal en un procedimiento, utilice una variable local, no °‘
una variable global. Si se desea que el programa modifique el valor de una variable global, utilice un
pará metro formal variable en la declaración del procedimiento y a continuación utilice la variable
global como el parámetro actual en una llamada al procedimiento.
En general, se debe seguir la regla de « ninguna variable global en procedimientos» , aunque esta
prohibición no significa que los procedimientos no puedan manipular variables globales. De hecho,
-
^
el cambio de variables globales se debe pasaraT proced í miento como pará metros actuales. Las varia
bles globales no se deben utilizar directamente en las instrucciones en el cuerpo de un procedi
miento; en su lugar, utilice un pará metro formal o variable local. ~
-
^
Scanned with CamScanner
Subprogramas ( subalgoritmos ): procedimientos y funciones 193
- liTVyt '
¿évrtfB vu.
’ " AJ ) ?!
•
'"
•
' f i íjftj
í
.?f 5í runri
U V’ U , ñ,V * /sino :: ojoolo xJ "
;
4
dsb OfTOfapitf
¿ " •
-- ‘ - 1
i «
f
usu J:í nboT procedimientos *
i A
-
r . { > i r > uq'jb ' U . r nonno •- i xhauiL am - ' OíIMEX
: II > lubóffi no ó rb * 1 1
V
nsa ..
.tifl Ú Mc ) IrtOI8BU 33H 8 S
^
Mi <
•
,oiln «
í
vvv
J . bouq
cmci -Oiqdus
Tsbim r . ;
'
«• V W f
¡O ' IJpD . Uj ...
V* O
nmcll otouqemeis iqtfiw na »ofioa 92 onioD
,i
o í 'f’JJPJIf ® ,;f otíoab orbib jaiiwrafivioMiw
•
t
Ü C, '
.
£ rl « i í C i :r s « 3 ¿r
_ 4
—
ICIO ‘ O 1 . 0:0 1 0200
En aquellos lenguajes en que es posible declarar constantes como Pascal se pueden utilizar
constantes globales en una declaración de procedimiento; la razón reside en el hecho de que las cons-
—
tantes no pueden ser modificadas por el procedimiento y, por consiguiente, no existe peligro de que
se puedan modificar inadvertidamerite?' b -" ‘0U'j3¿ cnu ob ¿ iinotoenqdu ' íirtobooué 3W0á ’
¡
A i huí 11 A
5.7.2. En funciones
:rjoid o *•
Una función toma lns valores de los argumentos y de\ueh/£ un únieo v¿ilor. Sin embargo, al igual - - -
que los procedimientos, una función en algunos lenguajes de programación puede hacer cosas
similares a un procedimiento o subrutina. Una función puede tener parámetros variables además de
— —
parámetros valor en Olleta dp pará metros formales. Una funci ón puede cambiar el contenido de una
variable-global y ejecutar-instrucciones de-entrada/sahda (escribir un mensaje en la pantalla, leer un
.
válor del teclado,' etc.) Estas operaciones
r. ! oí' ; j b obol ~
. : , í iioqor fioloui í es u ub
‘ “
se conocen como parámetros laterales y se deben evitar,
"
¡
~
, jb
:
¡v í « nif : ' . : .' o or roo . LuxittJv J ;S OUS¿í.*; nb; -..í uooi
-
2 nbir is fal ah o> u 13
b
- "
— -— . — — — — -.
u >; OLqj :. . íí jl j.oiq ¿olbupi» of » nó tor » ' . 1 o ^ • 4 * 4J á
( par á metros 1.2 devuelto por , u \ fvqit .' /io ífiocrp.o zirtu )
- .
' T i
—
rr . \: ) i ¡ n:l . ( U olm'tqr.O '
-
• .
Ü • .2O0Í2Ü í áoiqi asió noo ¿ (y. n.- Hn < uno r;;; n i T beb í / R ( coot ob oícraonoo lo no
:
r
Funci ó n er .n cb
. ^ rtejH
iV. - -
;u 1 . ’ bv. -
•
nvj’ ' A \ \o i i ¿
* • ’ i' v
1 ' • . lJ % % r: •
w?
. ~ iK
Figura 5.11 . Efectos laterales en una funci ó n . n mwvy CTI íí A:W
i 4
j | I
^
cesoxesultante serái —
LM. »
¿ q M í . r - jiffi. i ji í )
. '. j|f í i ¿oq
•• • ' .
y. 3 5tip, no ,: 3 jBü v / í t» F /olbupí ; n3
. D retornar a - C,
_ - - r e t o r n a r l a-
B A . ‘
i . :
v. rrvj T ' fC¡* ,v iv nubjsí . J íICI
^
^-
tí Uf i M
^
ía si dos subprogramas
¿Qué suceder de^ una secuencia son 1los mismos?
• 1
• >
_ A
A llamarla A
e&neianu) í « 3 .S. V
o bien:
I i .- - _
• % '< Tj; n: . . •: \
_
\\\ :. j ; < -.
: :.•! 9b - y. 'ley ¿ o í ani.oJ ¡ ¡iú|; * J
.
t
í A llamar a B , B llamar a A .
• . . ; .. jni íi - ' 1 * Uu
) ci « i - riiLv >OU ( aq í v, ,
: ;
i as
- -
-
En primera instancia, parece incorrecta. Sin embargo, existen lenguajes de programación Pas-
.
—
cal, C, entre otros en que un subprograma puede llamarse a sí mismo. . . . v *
_
¡ , r
.
• I > 1 •
—
.
'
—
* '
Ejemplo 5.13
Muchas funciones matemáticas se definen recursivamente. Un ejemplo de ello es el factorial de un
número entero n. > rt \ *;
k
< n > x i 11' 1 ) x ( n 2 ) X ... X 3 X 2 X 1 si n > 0 n. ( n-l ) . ( n-2 ) ....3.2.1
“
omolí
5! = 5 x 4x 3 x 2 xl = 120 “
4!
3!
2!
11
=
= 3x2x
= 2 x1
= lxl
4x3x2x1
l
-
= 24
=
=
r A.
b
- -- - I—
2
-tUI *
.
.
r
- /*•
’ M1
•
2222?íü
'
'
•*
0! = 1
i IFk T J \ ?
»
<* .vw i ¿I
f i,
«• id i ) I’
.
1
n! =
i n ~. 0 TKüí
si
i . . m n
'
>
• v \ ' tc\ uv3i? o
• *
n (n - 1 , u
-°
. | JAlROTOA -1 i
> V; * ,¡ f
La función FACTORIAL de N expresada en t é rminos recursivos ser
ía:
Ai:.
' ' • ' '
*! »
•
b t S E * Í U Í JAIfiOTOA - .
^ r: ( EUAinOTDA
^ í JAIflO 1 Al
‘
- 1
entero funci ón factorial( E entero: n)
//calculo recursivo del factorial
fTÍ - ~
1
inicio
. C - c
si n = 0 entonces MAtf íOT JA « ( S ) JAIROTDA
- ^ ^ • JAIMOT i
devolver ( 1 )
si _no devolver (n * factorial( n - 1)) M i
- e “
fin_si
’
Para demostrar cómo esta versión recursiva de FACTORIAL calcula el valor de n 1 , considere-
mos el caso de n = 3. Un proceso gr áfico se representa en la Figura 5.12. ' j
FACTORIALS
C f
I i r V'y 1 ¡r »
^
FACT
* 0 - n
N es 3 (2)
FACTORIAL <- 3 * FACTORIAL
Retorno x í .
- Ti y < 1 1,
)
(
t *. < i¿
b ' . u' j v n >U ¡ L tluirnof id
1. !: f o : JfJi :
I N 2
es ,' 1
N es 1
v x <y y
FACTORIAL <- 1 * FACTORIAL (0) • x í x y
Retorno
N es 0
FACTORIAL <- 1
Retorno .
r r j X-í - -- L-. / üí Tí nutmq •;<
Figura 5.12. Cálculo recursivo de FACTORIAL de
3
\ i
f
» r*
f
X í- *
Los pasos sucesivos extraídos de la Figura 5.12 son: ! C > c ;
.
I
I
X V
3
Como n no es 0
:o > r
FACTORIAL
se genera otra
operación 2
í 'ítb .- tyn'; -
. «oninnSt n T
;
FACTORIAL ;
Como FACTORIAL de 0
T1 es siempre 7 , este valor
se asignará a la variable
> -- :n
FACTORIAL
TQ FACTORIAL, y ahora se
; i.nv * . Ü i LL; t ;, ;
realizará el proceso en ’
.
‘
‘ 1
.
FACTORIAL sentido ascendente #, V. fi V ,
I ,v
3
lí
FACTORIAL
6
FACTORIAL( 3 ) = FACTORIAL ( 2 )
1
. !•' r í ol.ifM/ t ¡¡
* 3 = 2.3 = 6
>[ > fl
*
n* i
^
?
iujnilob ' -
; .f c ? : • ¿i ; í.o¿prüi “ * t* .
ü
.
’,
2 2 • * '
ri
!I
• r y. '
1
*
FACTORIAL FACTORIAL( 2) = FACTORIALS * 2 = 2 ,t; , i 1
* ÍK
1
J7 i I4 J « i$viOVP5 o /; ir
la ni *
.
FACTORIAL FACTORIALS = FACTORIAL( O) * 1 = 1
J
4
i
’ j :v t v f j , Yá J » * Wl7
i
:)b t . / f ' diC. )' » f ^ fr r / r 3), .- > írtdJ.C U :
'
Ar f j
>
.
§
FACTORIAL I r i ;> »
t
íi) ':5?;r n <V. J
9
Ejemplo 5.14 .. -
t 'Xi
*
wjp. • í j
; i * r •
: *V í / í < ' • *
.i » - r»!- / . n n » , ?
Otro ejemplo tí pico de una función recursiva es la
nalmente como modelo para el crecimiento de una granjaFibonacci. Esta serie fue concebida origi -
serie
.de conejos ( multiplicación de conejos ) por
el matemático italiano del siglo xvi, Fibonacci. , ¡ , r , '
fib( 2 )‘ 1 -
fib( n ) = fib( n - 1 ) + f i b( n
d ** ¿
* a — _
- 2 ) paran > 2 cr/ / a
* - d d
Una función recursiva que calcula el elemento enésimo de la serie - • • •
_
‘ devolver ( fibonacci(n - 2) + fibonacci í n - 1)
fin si
.JOíBV
fin funci ón
— v i ;. , c o osr* í IC¡T¿ i a -
‘ . .: v *» 1.GV
Aunque es f ácil de escribir la funci ó n de Fibonac ci, no es muy eficaz definida de esta forma, ya
que cada paso recursivo genera otras dos llamadas a la misma función.
OI —* X
ar
—* .
•i
*• ; >, n
'
«
r?
.
5.1 Dise ñ ar el algoritmo que calcule el factorial de un n ú mero entero.
L i V, *
• o:: n no locrol c T -J :
> ’ JJX ; f . - ’ : v; .
* •
i "> d ? ' 0
• V3
M* . * f *
«. » *
• / • » • \l 3 : “ i
entero funció n factorial(E entero: n) < * a ü « *x 3tfr 1
*
var entero: f , i a *, ia
inicio rt
- a « j'j
si n = O entonces C íT
_
devolver (1 ) - d -> d
n
si no Jfcrj i
^
_- —
desde i < 1 hasta n hacer 8 fYX 3 í’. 0:;r jill
f < f * i ;L ;
fin desde all
__
devolver (f ) notomil ntl
fin si
fin funcion Y % K 9b v . - IfiV «oí fliftfdfcxn '( i { 6 »9fmrno) fill HI |ítoJ
.
5.2 Dise ñ ar un algoritmo que calcule el m á ximo com ú n divisor de dos n ú meros mediante el algoritmo de
Euclides.
Sean los dos n úmeros A y B. El método para hallar el máximo com ú n divisor ( mcd) de dos n ú meros A y
B por el método de Euclides es:
. . V» n \ i ‘ , 5 *. ! v .-: « ' y \'\\\ '
'
t
V .U • '. \)
* '
' • i ••
*
• , f
*
Algoritmo
OM r.-j ' • •imr : ; t i -
. .i ' .\ i JA :¿ ¿ ¿ ‘SA , ¡
O í IIO J js í rnmfcbiij í vi vum ’imrj
í,!; ( . |M i ir?? r;- í» - ;J fí
y n u 3 ir
entero función mcd(E entero: a , b)
inicio ur u . ' j* < <‘Á ) ' WC. & ! ri 3 b O Í VJK t:J
mientras a < > b hacer
si a > b entonces
a <- a b-
V =
si_no r < u /.,'iiiC
] v - u ) v\:\ + \\ - n')dí\
1
=
-
b 4 b - a
fin _si
tú
fin mientras
devolver( a )
‘ J Oln
^rri^lO h O U p noiofiül cnU
fin_funcion •
j i i noloaui . * 1 •
?
r • • • «
^
5.3. Para calcular el máximo común divisor (mcd) de dos números se recurre a una o to l !Zl
función espec ífica defi-
nida con un subprograma . Se desea calcular la salida del programa principal
con dos números Ay B,
cuyos valores son 10 y 25 , es decir, el mcd(A, B) y comprobar el mé
todo de paso de parámetros por
valor. » - • . } > *
/ .
: ' *
.
•
Toviovr í *
1 n nti
algoritmo Maxcomdiv
var
i .< entero: N, x / Y • jfio K . uríodfl nonnul el ab Ibfcl 5 tUipnuA
inicio / /programa principal
x < 10 — m ., .
i n rl »: / ijíjrtmll ot> y tn
V o' fü '
/ *
j!OÜECI DUO
, to *
y 4- 25
n 4- mcd(x, y)
escribir ( x , y , n ) £ AT. J £ J 23 I/IOIOAM A A0On 3Q clCAQJVITOA
fi
fin
fUnClonmcd ( E enter : a b)
° ' 4
t pt tA . 1 , ,, , .. ^
inicio
mientras a < > b hacer
1 1.8 .
si a > b entonces
a
* ñ • í noiontrS rz' * 3¡i+ i 1
a - b
_
si no
i s*
' . G oioifti
b 4— b - a ^
_
fin B Í
f in_jnientras
devolver ( a )
c o o n o
*
J ; ll
• >
r> ‘i r r v c V rí . -/
IB vloveb
¡
o:i
_
> r ehaab
fin
fin_ funcion
j * 4
»
'
a ii
levlcvob
Los parámetros formales son a y b y recibirán » í
los valores de X e Y no i 1
--
''
• a 10 n i\ < . ,
b 25 -' n u 1 ¡jlaKS .s .
Las variables locales a la función son A y B y no modificarán los valores de las variables X t Y del algo-
ritmo principal . ’
' '
, '
i '. • f
• iT
'
*
/
'
- ^\ la
, •
, - . i
caorroá r * - *
•
#
KF\ ’
= 10
' *
a b = 25 4 4« » V '
^ »i .
ifi *i 7
^ •
a = 5 b = 5 med í a , b) = 5 í : m x
2 , Y
*
Como los valores A y B no se pasan al algoritmo principal , el resultado de su ejecución será:
10 25 5
.y < >: í cí , F, ) ( í d, ;r. oi^ lnx cJnsimrliODov; Fu í,bnrm:n n:¿nin S. .
'
. ^
\ d Lisa « ! n . í .] suno
¿ oij ’
jM t
5.4. Escribir un algoritmo que permita ordenar tres números mediante un procedimiento de intercambio en
. r
¿
El algoritmo que permite realizar el intercambio de( los valores de variables numéricas es el siguiente:
iu;7 Y í !\ -. b 0Up 8 \ A ul « » H id i l Miin iftnb v - w ¡; .
'« '
^
'
. i
* , . •
’ • •
• • -
AUXI A
:fir:b» i,v tj' ju ú ;Y o >1
A B 4
B AUXI C1
inicio
-- -
auxi < a
a 4 b \ '. í f n S i f n :» / *
L uU.m ' 11 ¿' V i .* '
si x > y entonces -r
3
intercambio ( x, y)
fin_si ; rx orr í hogL fob ¿ vnobnaqo nü.
•
si y z entonces
>
intercambio (y, z )
fin_si
— w i
si x > y entonces
intercambio (x, y ) . d d nó bmaqo al fcifirilcyi s < í t .1
fin_si
r« r pe -roffiv -
,
I farj'no d . wnsiugiznoo i ] ,y
) ¡ »
X = 132
c (J , b ) t ~ :;: c « d
Y = 45
Z * 15
r,:y M ;. : •
j
-
OH ¿ ' ; J 7 b J ; ; q í on : iq omthogtfc Ir; nwcq fin 8 y A asnokv ¿o í orroO
- 2. Primera llamada al procedimiento intercambio ( a , b ) x > y.
La correspondencia entre pará metros será la siguiente: ¡2 I
= 1327 Z
Parámetros actuales Parámetros formales ' b i eJnl i
O rW31MI J 3 *i
'
Í XUA : i r ‘- i tfiV
Y A
Z B
Antes llamada al procedimiento Y = 132, Z = 15. s —>
Después terminaci ón del procedimiento Z < 0 132, Y
i —
= 15, ya que A y B han intercambiado los
valores recibidos, 132 y 15. 03 Cl . Iü
4. Los valores actuales de X, Y, z son 45, 15, 132; por consiguiente, X > Y, y habrá que hacer otra
nueva llamada al procedimiento intercambio. | •'
X ( 45 ) A ( 45 )
Y (15 ) B (15)
'1 -»
.
5.5 Diseñar un algoritmo que llame a; laufunci
’ üJ i ¡
ón signo ( X ) y calcule: a ) el signo de un n ú mero, b) el signo
. i /:- > ; < ) . 1
de lá función coseno.
i .
.£
^
nijr, •
"' -.' I
• . •
iVmu:» .b ..
ft nu 'Wn ob nrn ü d fui 3Up » rttá Oub*j'jOiq lu
• '
-
• -
( / i
Pseudocódigo UJ .!0 V 1 V/ l l v
4
r
algoritmo Signos
var entero: y, z
real: P orí!'/; iv o.. - ,C - X v 30! fo!, /• : » vtc\
inicio
leer(P)
Y <- signo( p) y : .*
Z «- signo(eos (p))
r \ V> L
^Oif .7 iiii
escribir(Y, Z)
fin O
if - H
inicio J Vi
si x > 0 entonces
devolver ( 1 )
si _no I
si x < 0 entonces
i ’•
devolver ( - 1 )
‘i si _no . *
. .i _ devolver (0 ) i
;» •' *!ic i *
t
*
.* • :
j / •
i
f
* ov
1C
* .
i
•
.*
’!
‘
* !D ‘ n’ j ./
>
-
\yhsi :
* C ‘: .
fin_ si , / tli 4 V
r'
> ' 1 ‘Y t .l U
’
fsr l * ;
i •jh o f i f / • *. J iv - o . .v i
» , , i. 1
• >
’ -1.3
fin_ funcion
Notas de ejecución
\
P X
'se asasignar.
constituye por el pará
^ ^
34
El parámetro formal X se "
signo que gn án a las variables Y, Z son:
funcón
- 1 45 Los valores devueltos por la i t . i to v :\\
resultando
Y = -1 '
' . t ti
. .
* e n n id ru
ú
.
ó um « Mr •
. •
• oiniiffiib
oinw •• -.
>
>i 1 í » nbbu
j
1 '
, ’ "
'
1
lo i iq )l U “ '*
•
ten z = i na t* nf
3 r V f
- - *' X
EJERCICIOS
le ídos del teclado y poner un ejemplo de su
5.1. Diseñar una función que calcule la media de tres n úmeros
entero en el rango 100 a 1 ,000.000
5.2. Diseñar la función FACTORIAL que calcule el factorial de un número
números basado en un subalgo-
5.3. Diseñar un algoritmo para calcular el máximo común divisor de cuatro
ritmo funci ón mcd (máximo común divisor de dos números).
A y B. . rj /
5.4. Diseñar un procedimiento que realice el intercambio de valores de dos variables
5.5. Diseñar una funci ón que encuentre el mayor de dos n úmeros enteros . j j ¡ ¡ > 5b
. Jri .. .
SOlIQiTí OSlí ll .- . 1 “ ..
d d / it u n / a a
» I . -
J 1 -l ü V
.
Por ejemplo, los valores 1 9 , 0 9 , 1 9 8 7 se visualizarían como
19 /9/87 . • 1o ’ » I
*
(q ^ onois ->
y para los valores 3 , 9 y 1905 IQ ) cc/ i cncin ---* "
3 / 9/ 05 ri 5
5.8. Realizar un procedimiento que realice la conversión de coordenadas polares ( r , ;0 ) a coordenadas car-
tesianas ( x, y ) r
. •^rcJnp u
'"
v .. .
X = ]T
•C O S ( J )
rl .
y = r.sen (J ) on
S ív
^no U i *
'
.* P
, ,
Sarioto P > un mimen, dado de horas
^ íT **
" La * Sa arios de un rabajador
un s ¿SC
trabajadas 40 »» semanales se pagarán como extras con
5.1«. Escnbir una funerdn booleana Digi to que determine si un
carácter es uno de los d ígitos 0 al 9.
tí o t o n j ¿
\x ~
lUH ':ViWi :• ' to
Y* •
f
vt\ * T \ . *
»% .• Ji ! !
# ' •* n
w: *
»
i n. I J > A -
11 6
CAPITULO
.
* i . ? )
* lUr .. ‘- ' J j 't
/!
I •\ . •.
\ • . I
i!
i
*
s ) ^\U \í¿ ^ r ;^
4
l
:
.
’"
< .'M vif ) < . A
1
V: T oVnif 1 •
•/
l> i
Muum ) o j r n u n o >»
i -A » <
*•
’ * *= > *
•
uuds
.' V , ‘
/\ V (
CONTENIDO 4
I
)
i
6.1. Introducción a las estructuras de datos. Mi iunrr»
6.2. Arrays unidimensionales: los vectores.
6.3. Operaciones con vectores.
6.4. Arrays de varias dimensiones. i Mi >:ii t • J ¿ -i 5 i •* ‘< s i : *
(
EJERCICIOS. !oduí
o'lLILi . i
uítii• »
f
. ; fA
t
r.
í
i real o un car ácter. En muchas situaciones se necesita, sin embargo
, pro -
t* ¿ Y¡’; .V ' . • >. ; » ;l; el
t
cesar una colecci ón de valores que est á n relacionados entre sí por
algú n \
método, por ejemplo, una lista de calificacio nes, una serie de temperatu - 5»
que la
de estructuras de datos. Las estructuras de datos bá sicas soportan
' •i t • S
* i
* ' U A - ¡
203