Está en la página 1de 50

‘

‘
Primer Ciclo Fundamentos de Programación

~ ~ 
6a materia de Fundamentos de Programación, tiene una duración de 80 horas y se encuadra
en el primer Ciclo Formativo de Grado Superior del título de ¬   
x

6a presente materia se dictara aplicando la temática señalada en el sílabo y plan curricular


cabe resaltar que contara con 5 evaluaciones de acuerdo a las unidadesx

El § §
 del ciclo formativo es la inserción de los alumnos en el mundo laboral por
lo que la orientación del presente módulo se basa en ese propósitox 6a rápida evolución del
sistema productivo relacionado con este ciclo formativo hace necesaria una adaptación
permanente de los contenidos del mismo que, si bien no tiene por qué afectar necesariamente
a los contenidos básicos, sí afecta notablemente a las técnicas o herramientas utilizadas, que
deben adaptarse a las nuevas realidadesx

6as capacidades terminales a conseguir, son las siguientes:

© Elegir y definir las estructuras de datos adecuadas, para resolver un problema con
lenguajes orientados a objetosx
© Aplicar la metodología de desarrollo estructurado para el desarrollo de algoritmosx
© Codificar programas en lenguajes orientados a objetos de cuarta generaciónx

‘ ‘

a
Primer Ciclo Fundamentos de Programación

M      M





 §

6as computadoras so herramientas esenciales en muchas áreas de la vida: profesional,


industrial, empresarial, académica, etcx, en la actualidad en casi todos los campos de la
sociedadx 6as computadoras funcionan correctamente mediante instrucciones a base de
programas, ya que sin esto sería virtualmente inútilx 6os programas se escriben mediante
lenguajes de programación que previamente se han escrito en algoritmos u otras herramientas,
como son los diagramas de flujox

En esta unidad se tratará sobre la organización de una computadora y sus diferentes partes
junto con los conceptos de programa y lenguajes de programación se tratará la historia de los
mismos los más relevantes y las diferencias entre ellosx

 


M§


Desde el punto de vista simple según Joyanes: ³una computadora procesa datos y los
convierte en información significativa´, Además hace ver una diferencia grande entre lo que es
datos e información ya los primeros constan de hechos en bruto y figuras, y la segunda en
cambio son ya los datos procesadosx

6a Figx 1x Muestra como los datos se convierten en información, en donde los datos ingresar a
la computadora (por una parte llamada entrada), la computadora procesa esos datos y la
información significativa es el resultado (se presentan en una parte llamada salida)x

De esta manera se observa que los datos por si solos no nos sirven de nada y no son de
utilidad para las personas que los manipulan y toman decisiones con ellosx

ñ ‘   ‘
   ‘

   ‘‘   ‘   ‘
Õ   §§

§  § 


M§§

© Programax Fuerza conductora de cualquier tarea que hace una computadorax
© Computadora: Procesa datos y los convierte en informaciónx
© Información: Datos procesadosx
© Dato: Constan de hechos en bruto (puede entenderse como materia prima para obtener
información)

Una computadora consta de dos partes bien diferenciadas, hardware y softwarex

El hardware, es la parte(s) física, palpable de una computadora, el software consta de


programas también llamados aplicaciones, que contienen instrucciones que la computadora
ejecuta o correx Estas dos partes son necesarias para que una computadora sea usada de
forma real y prácticax Según Joyanes ³la computadora sin el hardware es como si se tuviera un
libro con páginas en blanco´x

 



Cuando un usuario interactúa con una computadora, proporciona una entrada; en respuesta la
computadora procesa la entrada devolviendo una salida valiosa al usuariox 6a entrada puede
ser en formato de órdenes o instrucciones dadas, textos, números o imágenes escaneadas la
salida entonces será el resultado; cálculos en una hoja de cálculo, una hoja impresa, o un auto
moviéndose por la pantallax

º‘
‘
Primer Ciclo Fundamentos de Programación

Una computadora necesita disponer de un conjunto de funcionalidades y proporcionar de:

1x Aceptar la entradax
2x Visualizar la salidax
3x Almacenar la información en un formato consistente lógicamente (tradicionalmente binario)x
4x Ejecutar operaciones aritméticas o lógicas bien sobre datos de entrada o bien sobre datos
de salidax
5x Monitorizar, controlar y dirigir las operaciones globales y de secuencia del sistemax

6a Figx 2 representa los componentes más importantes que soportan estas propiedades o
capacidadesx
    ‘
  ‘  ‘‘   ‘

‘
  ‘  ‘‘
 ‘

‘
   ‘   ‘‘   ‘   ‘

  ‘    ‘


   ‘
Õ 
     

   §
§ 
El procesador es el dispositivo interior de la computadora que ejecuta las instrucciones del
programax
Joyanes en su libro destaca algunos sinónimos utilizados para nombrar al procesador ³UCP
(Unidad Central de Proceso, en Inglés CPU, Centrl Processing Unit)´ o chipx En la actualidad
en el mercado existen muchos chips disponibles (Pentium, Athlob, etc)x El procesador solo
puede ejecutar instrucciones simples, tales como cálculos aritméticos sencillos o diferentes o
desplazamientos de números por diferentes posicionesx Sin embargo la velocidad a la que se
procesan estos cálculos debe ser muy grande y esta característica le permite ejecutar
instrucciones que realizan cálculos complejosx

6a UCP, dirige y controla el proceso de información realizado por la computadorax

‘
   ‘

  ‘
  ‘   ‘   ‘
ñ ‘
‘  ‘‘    ‘
  ‘
   ‘ ‘   ‘

Õ    

 

 ‘
‘
Primer Ciclo Fundamentos de Programación

  § §


§ 

Es un chip (circuito integrado) que controla y realiza las funciones y operaciones con los datosx
Representa a la UCP o procesadorx

6a velocidad de un microprocesador se mide en megahercios (MHz) y manipulan palabras de 4


a 64 bitsx 6os fabricantes más populares son los Pentium, Pentium MMX, Pentium II, con
velocidades de 233, 266, 300 y 450 MHzx

Queda recordar que el PC tal como se le conoce en la actualidad fue presentado por IBM el 12
de agosto de 1981 en Nueva York y otras ciudades norteamericanasx Sin embargo el PC no fue
la primera computadora personal, ya que le precedieron otras máquinas con
microprocesadores de 8 bits, muy populares en su tiempo, tales como Apple II, PET CBM,
Atari, TRS-80x, y el mítico ZX spectrucmx

 §§

!



Para que usuario pueda introducir la entrada la computadora tiene varios dispositivos de
entrada como parte de su hardware: el teclado y el ratón son los más popularesx 6a salida al
usuario se le proporciona mediante dispositivos de salida, tales como impresora o pantallax

Como se muestra en la Figx 4x Tanto los dispositivos de entrada y salida son los que permiten
la comunicación entre el usuario y el computadorx

‘
‘
‘ ‘
  ‘  ‘‘   ‘‘
  ‘    ‘
‘‘‘‘‘‘‘ ‘ ‘

ñ ‘ ‘

   ‘ ‘  ‘   ‘‘   ‘


‘   ‘ ‘
  ‘
‘   ‘ñ!"#‘ ‘ ‘
‘   ‘ñ$ñ‘
  ‘
‘
Õ     

"
§ 

# 
$
Con la finalidad de guardar datos, una computadora consta de pequeños circuitos electrónicos
capaces de almacenar un bitx Estos son como pequeños interruptores de luz que pueden estar
en dos estados: uno para encendido (on) y otro para apagado (off)x
Entonces cabe resaltar que un bit es ³un dígito que puede tener exactamente dos valores: cero
o uno´x
6as memorias actuales se clasifican en DRAM,SDRAM,EDRAM, etcx
6os programas y datos pueden almacenarse en RAM mientras se está utilizando la
computadora, esta puede ser estática o dinámica esto depende del proceso de fabricaciónx
6a memoria central de una computadora es una zona de almacenamiento organizada en
centenares o millares de unidades de almacenamiento individual o celdasx 6a memoria central

ԑ
‘
Primer Ciclo Fundamentos de Programación

consta de un conjunto de celdas de memoriax El número de celdas de la memoria central


dependiendo del tipo y modelo de computadora; hoy en día el número suele ser millos (32, 64,
128, etc)x Cada celda de memoria consta de un cierto número de bits (normalmente 8, byte)x
6a unidad de memoria se llama byte (octeto)x Un byte tiene la capacidad de almacenar un
carácter de información, y está formado por un conjunto de unidades más pequeñas de
almacenamiento denominadas bits, que son dígitos binarios (0 ó 1)x
El tamaño de la RAM de una computadora normalmente se especifica en bytes disponibles al
usuariox 6a memoria en un PC varía en el rango de 64/128 millones de bytes a 25/512 millos de
bytesx

% §§ 


Según Jayanes define dos conceptos importantes para celda o posición de memoria: su
dirección y su contenidox Cada celda o byte tiene asociada una dirección que indica su posición
relativa en memoria y mediante la cual se puede acceder a la posición para almacenar o
recuperar informaciónx

&!! §

6a memoria principal se divide en posiciones numeradas bytesx El número asociado con un


byte es su dirección en alusión a la técnica de identificar las casas de una ciudad por su
direcciónx

Un grupo de bytes consecutivos se utiliza como posición de un elemento de datos, tal como un
número o letrax 6a dirección del primer byte del grupo se utiliza como la dirección de eta
posición de memoria más altax

ñ   ‘‘ %%%‘
‘ ‘ ‘ ‘ %%&‘
‘ ‘ ‘ ‘ %%' 1100 1010 Contenido de la dirección
‘
‘ x
‘ x
‘ x
‘ ‘ ‘ ‘ º‘
‘ ‘ ‘ ‘ a‘
‘ ‘ ‘ ‘ (‘
‘ ‘ ‘ ‘ )‘
‘
Õ      

6a memoria principal es la encarga de almacenar los programas y datos que se están


ejecutando y su principal característica es que el acceso a los datos o instrucciones desde esta
memoria es muy rápidox

  §§


§§ 

6as unidades, periféricos o dispositivos de almacenamiento son dispositivos periféricos que
actúan como medio para almacenar los datos, temporal o permanentemente, que ha d
manipular la CPU durante el proceso en curso y que no puede contener la memoria principalx
6as tecnologías han evolucionado muy rápidamente y se han conseguido dispositivos de
almacenamiento que se clasifican en dos grandes grupos: discos y cintas magnéticasx

 §

Son dispositivos formados por componentes electromagnéticos o por componentes ópticos que
permiten un acceso rápido a bloques físicos de datosx 6a información se registra en la
superficie del disco y se accede a ella a por medio de cabezas de lectura/escritura que se
mueven sobre la superficiex

Α
‘
Pi i l t P i

       
S tí ti  i i l  l    i
  l  i f i   l   t i   
i


 l  i t  i    i  ix L
i ti  l ifi 

i  t
i
 , l  ti    O Vx

1    
 
 
! # * ! , ! ! * ! l -".j /.t" ,& (%")%$*$! i .,i !(&.!$0l&! ($%$ 1/& l$
El2 "ft $%& '(%")%$ $ + , &l i t& $ & &
* 1/i .$ f/.-i".&; !& &."*i.$. t$*0i 3. (%")%$*$! ,&l !i!t&*$x E!t"! (%")%$*$! !".
02! - * . !! * 4 , ! ,& t&5t", l"! -"*(il$,"%&!/i .t&%(%&t&! 'l &.)/$j &!
, i $ &*t&-&l . i t& !$ "(&%$*ti ", ,l " & it"%&
, ,
& (%")%$ $ i 6 + 7 l " (%")%$ $! & /tili $ x
! # , !! * - * ., . ! !! * 4 ., #! 89
El "ft $%& &l i t& , $ " (%& &, & t%& "t%" , &l i t& $ "(&%$ti " 'Wi " /XP/VIS:A "
. 5 !- * ! .
Li / + 7 l " " (/t$ "%& & i t3%(%& t& ! ,& l&.)/$j&! ,& (%")%$*$-i 6.x
!! * 4 - .! , 4 ! -"*(".&.t&! i *("%t$.t&!x K&%.&l ,&l !i!t&*$,
El i t& $ "(&%$ti " " t$ & $%i "
-"*(".&.t& -&.t%$l ,&l !i !t&*$, !i !t&*$ ,& $,*i .i!t%$-i6. ,& *&*"%i $, $!i ).$ /. 2%&$ ,&
*&*"%i$ ($%$ -$,$ (%")%$*$ 1/& !& &!t2 &j &-/t$.,"; $,*i .i !t%$,"% ,&l !i !t&*$ ,& $%-;i 4" !,
1/& .i <$ 7 -".t%"l$ &l /!" ,& ,i!-"!, -".t%"l$,"%&! ,& ,i !("!iti 4"!, 1/& -".t%"l $. l" !
, ! "%)$
! 4 !, ,# - . - , ! 00 - ! , !! * - . . . , ! !
i (",iti " & ;$% , $%& ," ,& t$ " $l P,=, 7 i li "t& $ &l i t& ,$, 1/& " ti & & t" " l "
! * ! ! . * *
ti(" & (%")%$ $ & /tili $ 1/& & (/& & ll $ $% ("% (%")%$ $ & / /$%i "x
! !
, , , ,
>. ,(%")%$*$ &! /. -,".j/.t" & ,i .!t%/--i ".&! 1/& -".,t%"l $. ' i%i )&.+ $ /.$ P=; i -;", & "t%"
*" " /. (%")%$*$ & -"*(/t$ "%$ &! /. -".j /.t" & i .!t%/--i".&! i.t&%.$! /tili <$ $! ($%$
, , ,
&j &-/t$%!& &. /.$ -"*(/t$ "%$ 7 1/& (%" /<-$ /. %& !/lt$ " -".-%&t"x

‘
‘


‘  ‘  ‘

Õ K L
L
M   
M

N ON L

  
1 ? @  ABC,   D EB  F GA
 
! .
L" l & )/$
! * - .! 4 . !- 0
j & & (%")%$ $ i 6 i % & ($%$ & %i i % (%")%$
* ! * . - * .- - .
! * 2 . . ! * ! ! - ! * , !$ 1/&, -(&% !it$ -l$* " /, i $! i 6
/ /$%i"/ 1/i $x > " (%")%$ $ & (& i $l & ll$ $ " t%$ / t"%& ' " (il $ "%& "
. ! - .4
i t3%(%&t& + " i &%t&
. l$! i .!t%/--i ".&! &!-%it$! &. l&.)/$j&! ,& (%")%$*$-i6. &.
.! -- . ! !- ! . . 2
! * 1/i.$ 'H 7 I, 0it!+ 1/& 3!t$ (/&,$ &.t&.,&%x
i t%/ i " & & %it$ & l & )/$j &
! * !
L" (%")%$, $ 1/& %&$li <$ t$%&$
. ! -".-%&t$!, .6* i .$!, -".t$0ili,$,, &t-x, !& ,&."*i.$.
* ! -
(%")%$ $ & $(li $ i 6 x- .

‘‘ 
‘
‘
‘ ‘‘ J‘

Õ 

PQ 
P P
Q RQ
P
Q  Q 

Q RQ
P 
 

‘
Primer Ciclo Fundamentos de Programación

6os principales tipos de lenguajes utilizados en la actualidad son tres:


© 6enguajes máquinax
© 6enguajes de bajo nivel (ensamblador)x
© 6enguajes de alto nivelx

'
 §

§



6os 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 de máquina y bajo nivel, reservando la sentencia o proposición para los lenguajes
de alto nivel)x Por consiguiente, un programa consta de secuencia de instrucciones, cada una
de las cuales especifica ciertas operaciones que debe ejecutar la computadorax

6as instrucciones básicas y comunes a casi todos los lenguajes de programación se pueden
condensar en cuatro grupos:

© Instrucciones de entrada/salidax Instrucciones de transferencia de información y datos


entre dispositivos periféricos (teclado, impresora, unidad de disco, etcx) y la memoria
centralx
© Instrucciones aritmético-lógicasx Instrucciones que ejecutan operaciones aritméticas
(suma, resta, multiplicación, división, potenciación), lógicas (operaciones, and, or, not,
etcx)
© Instrucciones selectivasx Instrucciones que permiten la selección de tareas alternativas
en función de los resultados de diferentes expresiones condicionalesx
© Instrucciones repetitivasx Instrucciones que permiten la repetición de secuencias de
instrucciones un número determinado de vecesx

( 
§  

6os traductores de lenguaje son programas que traducen a su vez los programas fuente
escritos en lenguajes de alto nivel a código máquinax 6os traductores se dividen en:
© Compiladoresx
© Intérpretesx

(
)  
Un intérprete es un traductor que toma un programa fuente, lo traduce y a continuación
lo ejecutax

6os intérpretes han vuelto a renacer con la aparición de Java, ya que para entender el
código en bytes (bytecode) al que traduce un compilador Java se necesita un intérpretex

   ‘  ‘    ‘  ‘


  ‘‘   ‘

   ‘‘   ‘    ‘+‘
*  ‘ ‘*  ‘
Intérpretex 6a compilación de programasx


‘
Primer Ciclo Fundamentos de Programación

1x 6os datos son la entrada del programax


2x 6a salida es el resultado del programax

(M§
§ 

Después que se ha diseñado el algoritmo y escrito el programa en un papel, se debe


comenzar el proceso de introducir el programa en un archivo (fichero) en un disco duro de la
computadorax

Cuando se ejecuta un programa en lenguaje de alto nivel, tal como C, C++, Java, se está
ejecutando realmente una traducción de ese programa en un lenguaje de bajo nivelx Por
consiguiente, antes de que se ejecute un programa escrito en un lenguaje de alto nivel, se
debe ejecutar en primer lugar el compilador en el programax Cuando se ejecuta un compilador
sobre su programa se dice que se compila el programax

 

El programa escrito en un lenguaje de alto nivel se introduce en la máquina con el editor y se


llama código fuente: el compilador lo traduce en lenguaje máquina y almacena el resultado en
otro archivo llamado código objetox

El código objeto se puede cargar en la memoria principal de la computadora y se ejecuta por la


UCPx

§


Un compilador es un programa que traduce un programa en lenguaje tal como C, C++, Java,
en un programa de un lenguaje más sencillo que la computadora puede comprender más o
menos directamentex


§
!


6a compilación es el proceso de traducción de programas fuente a programas objetox El


programa objeto obtenido de la compilación ha sido traducido normalmente a código máquinax

El proceso de ejecución de un programa escrito en un lenguaje de programación (por ejemplo


Java) y mediante un compilador suele tener los siguientes pasos:

1x Escritura del programa fuente con un editor (programa que permite a una
computadora actuar de modo similar a una máquina de escribir a una electrónica) y
guardarlo en un dispositivo de almacenamiento (por ejemplo un disco)x
2x Introducir el programa fuente en memoriax
3x Compilar el programa con el compilador Cx
4x S
Verificar y corregir errores de compilación (listado de errores)x
5x btención del programa objetox
6x Enlazador (linker) obtiene el programa ejecutablex
7x Se ejecuta el programa y, si no existe errores, se tendrá la salida del programax

* § 
 § 
 §

 

6a historia de la informática y de la computación se ha caracterizado fundamentalmente en la


existía de centenares de lenguajes de programación, de forma tal que siempre se hablado de
<<la Babel de los lenguajes>>, que, aunque bien s cierto que son solo unas decenas escasas
los que han tenido un impacto significativo, y unos pocos los utilizan en la industria, los
negocios y la cienciax


‘
Primer Ciclo Fundamentos de Programación

Muchos de los lenguajes de programación actuales tienen sus raíces en los lenguajes que
nacieron a fines de los cincuenta y primeros años de los sesenta, tales como CTBT6 (1960),
FTRTRAN IV (1961), BASIC (1964), 6 G (1967)x Estos lenguajes representan a la primera
alternativa a los lenguajes ensambladoresx En la década de los setenta y primeros años de los
ochenta emergieron nuevos lenguajes, como Pascal (1971), C (1972) y Ada (1979), que se
convirtieron en dominantes, desplazando, por ejemplo a otros como A6G 6 y BASICx




1x Indique las partes fundamentales de una computadorax (explicación)x


2x ¿Qué es un bus del sistema de un PC?
3x Defina los siguientes conceptosx
ax UCP
bx Programa
cx 6enguaje de alto nivelx
dx Compiladorx
ex Intérpretex
fx 6enguaje máquinax
gx Bitx
4x Enumere y describa las principales jerarquías de memoria que conozca atendiendo a
tiempo de acceso y capacidadx
5x ¿Cómo influye el conocimiento del hardware en la formación del aprendizaje de la
programación?
6x ¿Por qué el procesador es una parte tan importante de una computadora?
7x ¿Qué funciones realiza la Unidad Central de Proceso?
8x ¿Cuál sería la configuración ideal de una computadora para aprender a programar en
la época actual?

  M
    M  M    
 
 M


 +

 §  § 


El proceso de resolución de un problema con una computadora conduce a la escritura de un


programa y a su ejecución en la mismax Aunque el proceso de diseñar programas es
esencialmente un proceso creativo, se puede considerar una serie de dos fases o pasos
comunes, que generalmente deben seguir todos los programadoresx

6as fases de resolución de un programa con computadora son:

© Análisis del problemax


© Diseño del algoritmox
© Codificaciónx
© Compilación y ejecución
© Verificación
© Depuración
© Mantenimientox
© Documentaciónx

Constituyen el ciclo de vida del software y las fases o etapas usuales son:

()‘
‘
Primer Ciclo Fundamentos de Programación

© , x El problema se analiza teniendo presente la especificación de los requisitos


dados por el cliente de la empresax
© -§: una vez analizado el problema, se diseña una solución que conducirá a un
algoritmo que resuelve el problemax
© M§
# 
$ 6a solución se escribe en la sintaxis del lenguaje de
alto nivel y se obtiene el programax
© 
!
§ El programa se actualiza y modifica cada vez que sea
necesario de modo que se cumplan todas las necesidades de cambio de usuariosx
© §
 Escritura de las diferentes fases del ciclo de vida del software,
esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y de
referencia, así como normas para el mantenimientox

M

 .

§ §

© Precisox
© Definidox
© Finitox

,   § 

Esta es la primea de las fases para dar solución a un problema con computadorax Esta fase
requiere de una clara definición, donde se contemple exactamente lo que debe hacer el
programa y el resultado o solución deseadax

6a figura muestra los requisitos que se deben definir en el análisisx

"  ‘‘
 ‘ + ‘

 ‘‘ ñ.‘‘ "  ‘ ‘


‘‘ ‘‘  + ‘  ‘
 + ‘  ‘   ‘
Õ     

Para poder definir bien el problema es conveniente responder a las siguientes preguntasx
© ¿Qué entradas se requieren? (tipo y cantidad)
© ¿cuál es la salida deseada? (tipo y cantidad)
© ¿Qué método produce la salida deseada?

©  § 


Se desea obtener una tabla con las depreciaciones acumuladas y dos valores reales de cada
año de un automóvil comprado en $20x000 dólares en el año 2001, en los años siguientes
suponiendo un valor de recuperación o rescate de 1x000x Realizar el análisis del problema,
conociendo la fórmula de la depreciación anual constante D para cada año de vida útilx

   

 

± 
  
   
± 
 
 

‘  ‘


   ‘ , ‘-‘
‘ ‘ ‘ $  ‘‘    ‘

((‘
‘
Primer Ciclo Fundamentos de Programación

ñ    ‘  ‘ ‘ .‘


  ‘‘ ‘     ‘   ‘ ‘  ‘ .‘
‘ ‘ ‘ $  ‘‘ ,‘ ‘  ‘ .‘
‘
Depreciación acumuladax
Proceso cálculo de la depreciación acumulada cada añox
Cálculo del valor del automóvil en cada añox

 -§ 
§ §

En la etapa de diseño se determina como hace el programa la terea solicitada los métodos más
eficaces para el proceso de diseño se basan en el conocido por divide y vencerásx Es decir la
solución de un problema complejo se realiza dividiendo el problema en subproblemas y a
continuación dividir estos subproblemas en otro nivel más bajo hasta que pueda ser
implementada una solución en la computadorax

Cualquier programa bien diseñado consta de un programa principal (el método de nivel más
alto) que llama a subprogramas (módulos de nivel más bajo) que a su vez pueden llamar a
otros subprogramasx 6os programas estructurados de esta forma se dice que tienen un diseño
modular y el método de romper el programa en módulos más pequeños se llama programación
modularx 6os módulos pueden ser planteados, codificados, comprobados y depurados
independientemente (incluso por diferentes programadores) y a continuación combinarlos entre
síx El proceso implica su ejecución hasta que el programa termina:

1x Programar un módulox
2x Comprobar el módulox
3x Si es necesario, depurar el módulox
4x Combinar el módulo con los módulos anterioresx

  

 §



6as dos herramientas más utilizadas comúnmente para diseñar algoritmos son: diagramas de
flujo y pseudocódigox




 §Un diagrama de flujo es una representación gráfica de un algoritmox 6os
símbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalización
(ANSI)x

§§  El pseudocódigo es una herramienta de programación en la que las


instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la
escritura como la lectura de programasx En esencia, el pseudocódigo se puede definir como un
lenguaje de especificaciones de algoritmos,


 /0 ‘   ‘
ñ  ‘‘
1‘‘

‘‘

‘
  ‘
   ‘
  ‘

(a‘
‘
Primer Ciclo Fundamentos de Programación

" M§
 §

 

Codificación es la escritura en un lenguaje de programación de la representación del algoritmo


desarrollada en las etapas precedentesx Dado que el diseño de un algoritmo es independiente
del lenguaje de programación utilizado para su implementación, el código puede ser escrito con
igual facilidad en un lenguaje o en otrox

Para realizar la conversión del algoritmo en programa se deben sustituir las palabras
reservadas en español por sus homónimos en inglés, y las operaciones/instrucciones indicadas
en lenguaje natural expresadas en lenguaje de programación correspondientex

% M§
! §

 

Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en


memoria mediante el teclado y almacenarlo posteriormente en un discox Esta operación se
realiza con un programa editor, posteriormente el programa fuente se convierte en un archivo
de programa que se guarda (graba) en discox

El programa fuente debe ser el lenguaje máquina, este proceso se realiza con el compilador y
el sistema operativo que se encarga prácticamente de la compilaciónx

Si tras la compilación se presentan errores (errores de compilación) en el programa fuente, es


preciso volver a editar el programa, corregir los errores y compilar de nuevox Este proceso se
repite hasta que no se producen errores, obteniéndose el programa objeto que todavía no es
ejecutable directamentex Suponiendo que no existe errores en el programa fuente, se debe
instruir el sistema operativo para que realice la fase de montaje o enlace (link), carga, del
programa objeto con sus librerías del programa del compiladorx El proceso de montaje produce
un programa ejecutablex

' / 
!
 §

 

6a verificación de un programa es el proceso de ejecución del programa con una amplia


variedad de datos de entrada, llamados datos de test o prueba, que determina si el programa
tiene errores (bugs)x

6a depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos
erroresx

Cuando se ejecuta un programa se pueden producir tres tipos de erroresx

1x Errores de compilaciónx Se producen normalmente por un uso incorrecto de las reglas


del lenguaje de programación y suelen ser errores de sintaxisx Si existe un error de
sintaxis, la computadora no puede comprender la instrucción, no se obtendrá el
programa objeto y el compilador imprimirá una lista de todos los errores encontrados
durante la compilaciónx
2x Errores de ejecuciónx Estos errores se producen por instrucciones que la computadora
puede comprender pero no ejecutarx Ejemplos típicos son: división por cero, y raíces
cuadradas de números negativosx En estos casos se detiene la ejecución del programa
y se imprime un mensaje de errorx
3x Errores lógicosx Se producen en la lógica del programa y la fuente del error suele ser el
diseño del algoritmox Estos errores son los más difíciles de detectar, ya que el
programa puede funcionar y no producir errores de compilación ni de ejecución, y solo
puede advertir el error por la obtención de resultados incorrectosx En este caso se debe
volver a la fase de diseño del algoritmo, modificar el algoritmo, cambiar el programa
fuente y compilar y ejecutar una vez másx

(º‘
‘
Primer Ciclo Fundamentos de Programación

( §
!
§

6a documentación de un problema consta de las descripciones de los pasos a dar en el


proceso de resolución de un problemax

6a documentación de un programa puede ser interna y externax 6a documentación interna es la


contenida en líneas de comentariosx 6a documentación externa incluye análisis, diagramas de
flujo y/o pseudocódigos, manuales de usuario con instrucciones para ejecutar el programa y
para interpretar los resultadosx

  §

§

6a programación modular es uno de los métodos más flexible y potentes para mejorar la
productividad de un programax Aquí el programa se divide en módulos (partes independientes),
cada una de las cuales ejecuta una actividad o tarea y se codifican independientemente de
otros módulosx

6os módulos son independientes en el sentido en que ningún módulo puede tener acceso
directo a cualquier otro módulo excepto el módulo que llama a sus propios submódulosx Sin
embargo, los resultados producidos por un módulo pueden ser utilizados por cualquier otro
módulo cuando se transfiera a ellos el controlx

" *2‘

‘(‘ ‘a‘ ‘º‘ ‘ ‘

‘((‘ ‘(a‘ ‘º(‘ ‘ (‘ ‘ a‘

‘a(‘ ‘aa‘

‘aa(‘ ‘aaa‘

Dado que los módulos son independientes, diferentes programadores pueden trabajar
simultáneamente en diferentes partes del mismo programax Esto reducirá el tiempo del diseño
del algoritmo y a otros módulos, incluso se puede modificar radicalmente sin afectar a otros
módulos, incluso sin alterar su función principalx

6a descomposición de un programa en módulos independientes más simples se conoce


también como el método de ³divide y vencerás´x Se diseña cada módulo con independencia de
los demás, y siguiendo un método ascendente o descendente se llegará hasta la
descomposición final del problema en módulos en forma jerárquicax

   §

 



6os términos À

  
 À

        À

  
 

se introdujeron en la segunda mitad de la década de los sesenta y a menudo sus términos se
utilizan como sinónimos aunque no significan lo mismox 6a programación modular y
ascendente ya se ha examinado anteriormentex 6a programación estructurada significa escribir
un programa de acuerdo a las siguientes reglas:

© El programa tiene un diseño modularx

( ‘
‘
Primer Ciclo Fundamentos de Programación

© 6os módulos son diseñados de modo descendentex


© Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia,
selección y repeticiónx

6a programación estructurada utiliza un número limitado de estructuras de control que


minimizan la complejidad de los programas y, por consiguiente, reducen los errores; hace los
programas más fáciles de escribir, verificar, leer y mantenerx 6os programas deben estar
dotados de una estructurax

6a programación estructurada es el conjunto de técnicas que incorporan:

© Recursos abstractosx
© Diseño descendente (top ± down)x
© Estructuras básicasx

 §

§Descomponer un programa en términos de recursos abstractos ±según
Dijstra- consiste en descomponer una determinada acción compleja en términos de un
número de acciones más simples capaces de ejecutarlas o que constituyen instrucciones de
computadoras disponiblesx

-§  #§ 0 §$ Es el proceso mediante el cual un problema se


descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise)x Esta
metodología en efectuar una relación entre las sucesivas etapas de estructuración de modo
que se relacionan en unas con otras mediante entradas y salidas de informaciónx Es decir se
descompone el problema en etapas o estructuras jerárquicas, de forma que se puede
considerar cada estructura desde los puntos de vista: ¿Qué hace? ¿Cómo hace?

 
  § §  6as estructuras de control de un lenguaje de programación son
métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutaránx El
orden de ejecución de las sentencias (lenguaje) o instrucciones

" M§§!

 .

§ §

El objetivo fundamental de este texto es enseñar a resolver problemas mediante una


computadorax

Un algoritmo es un método para resolver un problemax Aunque la popularización del término ha


llegado con el advenimiento de la era informática, algoritmo proviene de Mohammed al-
KhoU ariz-mi, matemático persa que vivió durante el siglo IXx

6a resolución de un problema exige el diseño de un algoritmo que resuelva el problema


propuestox
 + ‘ ñ.‘‘  ‘    ‘‘   ‘

6os pasos para la resolución de un problema son:

1x 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)x
2x Expresar el algoritmo como un programa en un lenguaje de programación adecuadox
(fase de codificación)x
3x Ejecución y validación del programa por la computadorax

Parra llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de


modo que sin algoritmo no pude existir un programax

"M

 .
 §
§ §

6as características fundamentales que debe cumplir un algoritmo son:

© Un algoritmo debe ser preciso e indicar el orden de realización de cada pasox

(ԑ
‘
Primer Ciclo Fundamentos de Programación

© Un algoritmo debe estar definidox Si se sigue un algoritmo dos veces, se debe obtener
el mismo resultado cada vezx
© Un algoritmo debe ser finitox Si se sigue un algoritmo, se debe determinar en algún
momento: o sea, debe tener un número finito de pasosx

6a definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salidax Ejx
Algoritmo de recta de cocinax Se tendrá:

Entrada: Ingredientes y utensilios empleadosx


Proceso: Elaboración de la receta en la cocinax
Salida: Terminación del plato (por ejemplo, cordero)

Ejemplo 1:
Un cliente ejecuta un pedido a una fábricax 6a fábrica examina en su banco de datos la ficha
del cliente, si el cliente es solvente entonces la empresa acepta el pedido: en caso contrario,
rechazará el pedidox Redactar el algoritmo correspondientex

6os pasos del algoritmo son:


1x Iniciox
2x 6eer el pedidox
3x Examinar la ficha del clientex
4x Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedidox
5x Finx

Ejemplos 2:
Se desea realizar un algoritmo que permita determinar la suma de tres números y presente su
resultadox

6os pasos del algoritmo son los siguientes:


1x Iniciox
2x 6eer los números a, b, cx
3x Sumar S = a + b + cx
4x Presentar Sx
5x Finx

Ejemplo 3x
Dada la calificación de un alumno en un examen, desarrollar un algoritmo y diagrama de flujo,
que imprima el mensaje de aprobado en caso de que la calificación sea mayor o igual a 8x

6os pasos del algoritmo son los siguientes:


1. Inicio
2. Leer nota.
4. si nota >=8 entonces
imprimir ³Aprobado´
5. Fin del condicional paso 4
6. Fin

Ejemplo 4x
Un número es primo si sólo puede dividirse por sí mismo y por la unidad (es decir, no tiene más
divisores que él mismo y la unidad)x Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etcx, no son primos, ya
que son divisibles por números distintos a ellos mismos y a la unidadx Así, 9 es divisible por 3,
8, lo es 2, etcx Etcx, El algoritmo de resolución del problema pasa por dividir sucesivamente el
número por 2, 3, 4« etcx

1x Iniciox
2x Poner X igual a 2 (X = 2, X variable que representa a los divisores del número que se
busca N)

(Α
‘
Primer Ciclo Fundamentos de Programación

3x Dividir N/X
4x Si el resultado de N/X es entero, entonces N no es un número primo y bifurcar al punto
7x En caso contrario continuar en el procesox
5x Suma X ¨ X+1x
6x Si X = N, entonces N es un número primo; en caso contrario bifurcar al punto 3x
7x Finx

%  



§ §

Como ya se ha comentado anteriormente, el sistema para describir (escribir) un algoritmo


consiste en realizar una descripción paso a paso con un lenguaje natural del citado algoritmox
Recordemos que un algoritmo es un método o conjunto de reglas para solucionar un problemax
En cálculos elementales estas reglas tienen las siguientes propiedades:

© Deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un
resultado coherente,
© Solo puede ejecutarse una operación a la vezx

El flujo de control usual de un algoritmo es secuencial; consideremos el algoritmo que responde


a la preguntax

% 
 ,
 §
§ §

Para representar un algoritmo se debe utilizar algún método que permita independizar dicho
algoritmo del lenguaje de programación elegidox

6os métodos usuales para representar un algoritmo:

1x Diagrama de flujox
2x Diagrama N-S (Nassi-Schneiderman)
3x 6enguaje de especificación de algoritmos: pseudocódigox
4x 6enguaje español, inglésx
5x Fórmulasx

%


 §

Un diagrama de flujo es una de las técnicas de representación de algoritmos más antigua y a


la vez más utilizadas, aunque su ejemplo ha disminuido considerablemente, sobre todo desde
la aparición de lenguajes de programación estructuradosx

Ejemplo:

 ‘


3+3 ‘

"4 5+5 ‘


 "‘


0 ‘


('‘
‘
Primer Ciclo Fundamentos de Programación




Desarrolles los algoritmos que resuelvan los siguientes problemasx

1x Ir al cinex

 ‘‘ + ‘
ñ#‘ñ‘
ñ6‘$ ‘ ‘*  ‘
ñ#‘ñ‘1"ñ6‘ + ‘‘ ‘*  3‘   ‘‘ ‘  3‘7 ‘‘   ‘
ñ#‘8

"6‘   3‘ - ‘‘  ‘

2x Comprar una entrada para ir a los torosx

 ‘‘ + ‘
ñ#‘ñ‘
ñ6‘$ ‘ ‘*  ‘
ñ#‘ñ‘1"ñ6‘ + ‘‘ ‘*  3‘   ‘‘ ‘  3‘7 ‘‘   ‘
ñ#‘8

"6‘   3‘ - ‘‘  ‘

3x Hacer una taza de téx


4x Hacer una llamada telefónicax Considerar los casos: a) llamada manual con operador;
b) llamada automática; c) llamada por cobrarx
5x Escribir un algoritmo que calcule la superficie de un triángulo en función de la base y la
alturax
6x Realizar un algoritmo que calcule la suma de los enteros entre 1 y 10x
7x Escribir un algoritmo que calcule la superficie de un triángulo en función de la base y la
alturax
8x Definir el algoritmo necesario para intercambiar los valores de dos variables numéricasx
9x Escribir un algoritmo que calcule y escriba el cuadrado de 243x
10x Determinar el área y volumen de un cilindro cuyas dimensiones radio y altura se leen
desde el tecladox
11x Diseñar un algoritmo que lea e imprima una serie de números distintos de cerox El
algoritmo debe terminar con un valor cero que no se debe imprimirx Visualizar el
número de valores leídosx
12x Escribir un algoritmo que lea cuatro números y a continuación imprima el mayor de los
cuatrox
13x Escribir un algoritmo que lea tres números y encuentre si uno de ellos es la suma de
los otros dosx

 M   

 M§§ §


Un programa de computadora es un conjunto de instrucciones ±órdenes dadas a la máquina-
que producirán la ejecución de una determinada tareax En esencia, un programa es un medio
para conseguir un finx El fin será probablemente definido como la información necesaria para
solucionar un problemax
El proceso de programación es por consiguiente, un proceso de solución de problemas y el
desarrollo de un programa requiere las siguientes fases:
 Definición y análisis del problemax
 Diseño del algoritmosx
© Diagrama de flujox
© Diagrama N-Sx
© Pseudocódigox
 Codificación del programax

(&‘
‘
Primer Ciclo Fundamentos de Programación

" Depuración y verificación del programax


% Documentaciónx
' Mantenimientox D M
Definición del
A
problemax C N
U T
Diseño del M E
algoritmox E N
N I

Codificación del T M
A I
programa
C E
I N
Depuración y
Ó T
verificaciónx N

 
§
 §



El programador debe establecer el conjunto de especificaciones que debe contener el


programa: entrada, salida y algoritmos de resolución, que incluirán las técnicas para obtener las
salidas a partir de las entradasx

   ‘    ‘  ‘‘   ‘   ‘

 
 §!§ §

El proceso de diseño del algoritmo o posteriormente de codificación del programa consiste en


definir las instrucciones que resolverán el problemax

6as acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el


mismo orden en que han de ejecutarse, es decir en secuenciax

Un programa puede ser lineal o no linealx Un programa es lineal si las instrucciones se ejecutan
secuencialmente, sin bifurcaciones, decisión ni comparacionesx

Instrucción 1
Instrucción 2
x
x
x
Instrucción n

 § §

6as instrucciones disponibles en un lenguaje de programación dependen del tipo de lenguajex


Dicho de otro modo las instrucciones básicas son independientes del lenguajex 6a clasificación
más usual desde el punto de vista anterior, es:

1x Instrucciones de inicio/finx
2x Instrucciones de asignaciónx
3x Instrucciones de lecturax
4x Instrucciones de escriturax
5x Instrucciones de bifurcaciónx

 

(%‘
‘
Primer Ciclo Fundamentos de Programación

"  § ,§ §





En programación se debe separar la diferencia entre el diseño del algoritmo y su


implementación en un lenguaje específicox Por ello, se debe distinguir claramente entre los
conceptos de programación y el medio en que ellos se implementan en un lenguaje específicox
Sin embargo, una vez que se comprendan los conceptos de programación cómo utilizarlos, la
enseñanza de un nuevo lenguaje es relativamente fácilx

6os lenguajes de programación tienen elementos básicos que se utilizan como bloques
constructivos, así como reglas para las que esos elementos se combinanx Estas reglas se
denominan sintaxis del lenguajex Solamente las instrucciones sintácticamente correctas
pueden ser interpretadas por la computadora y los programas que contengan errores de
sintaxis son rechazadas por la máquinax 6os elementos básicos constitutivos de un programa o
algoritmo son:

© Palabras reservadasx
© Identificadores
© Caracteres especiales (como, apostrofe)
© Constantesx
© Variablesx
© Expresionesx
© Instruccionesx

Además de estos elementos básicos, existen otros elementos que forman parte de los
programas cuya comprensión y funcionamiento será vital para el correcto diseño de un
algoritmo y naturalmente la codificación del programax Estos elementos son:

© Buclesx
© Contadoresx
© Acumuladoresx
© Interruptoresx
© Estructurasx
1x Secuencialesx
2x Selectivasx
3x Repetitivasx

% 
§1§
§!§
§ 


6os distintos tipos de datos se representan en diferentes formas en la computadorax A nivel de


máquina, un dato es un conjunto o secuencia de bits (dígitos 0 o 1)x 6os lenguajes de alto nivel
permiten basarse en abstracciones e ignorar los detalles de la representación internax Aparece
el concepto de tipo de datos, así como su representaciónx 6os tipos de datos simples son los
siguientes:

© Numéricos (integer, real)x


© 6ógicos (boolean)x
© Carácter (char, string)

%
§) §

El tipo numérico es el conjunto de los valores numéricosx Estos pueden representarse en dos
formas distintas:

© Tipo numérico entero (integer)


© Tipo numérico real (real)

‘
%
§ §# §§ 
§$

a)‘
‘
Primer Ciclo Fundamentos de Programación

El tipo lógico ±también denominado booleano- es aquel dato que sólo puede tomar uno de
dos valores:

Cierto o verdadero (true) y falso (false)x Utilizado para representar las alternativas (si/no) a
determinar condicionesx

% 
§§
, !§



El tipo carácter es el conjunto finito y ordenado de caracteres que la computadora reconocex


Un dato tipo carácter contiene un solo carácterx 6os caracteres que reconocen las diferentes
computadoras no son estándar; sin embargo la mayoría reconoce los siguientes caracteres
alfabéticos y numéricosx

© Caracteres alfabéticos (A, B, C, «x, Z) (a, b, c, «x, z)


© Caracteres numéricos (1, 2, «, 9, 0)
© Caracteres especiales (+, -, *, /, ^, x, ;, <, >, $, « )

Una cadena string de caracteres es una sucesión de caracteres que se encuentran delimitados
por una comilla (apóstrofe) o dobles comillas, según el tipo de lenguaje de programaciónx

' M§
!



6os programas de computadora contienen ciertos valores que no deben cambiar durante la
ejecución del programax Tales valores se llaman constantesx De igual forma existen otros
valores que cambiaran durante la ejecución del programa; a estos valores se les llama
variables

( 2 §

6as expresiones son combinaciones de constantes, variables, símbolos de operación,


paréntesis y nombres de funciones especialesx 6as mismas ideas son utilizadas en notación
matemática tradicional; por ejemplo:

a + (b + 3) + í

Aquí los paréntesis indican el orden de cálculo y í representa la función raíz cuadradax Una
expresión consta de operandos y operadoresx Según sea el tipo de objetos que manipulan, las
expresiones se clasifican en:

© Aritméticasx
© Relacionalesx
© 6ógicasx
© Carácterx

El resultado de la expresión aritmética es de tipo numérico; el resultado de la expresión


relacional y de una expresión lógica es de tipo lógico; el resultado de una expresión carácter es
de tipo carácterx

(2 §
)


6as expresiones aritméticas son análogas a las fórmulas matemáticasx 6as variables y
constantes son numéricas (real o entera) y las operaciones son aritméticasx

+ suma
- resta
* multiplicación
/ división
Ĺ, **, ^ exponenciación

a(‘
‘
Primer Ciclo Fundamentos de Programación

div división entera


mod modulo (resto)

6os símbolos + ,-, *, /, ^ (Ĺ o **) y las palabras clave div y mod se conocen como operadores
aritméticosx En la expresiónx

5+3
6os valores 5 y 3 se denominan operandosx El valor de la expresión 5 + 3 se conocen como
resultado de la expresiónx

* +§ 


6as operaciones que se requieren en los programas exigen en numerosas ocasiones, además
de las operaciones de las aritméticas básicas, ya tratadas, un número determinado de
operadores especiales que se denominan funciones internas, incorporadas o estándarx


3  M

M
 

6a operación de asignación es el modo de almacenar valores a una variablex 6a operación de


asignación se representa con el símbolo u operador ¨x 6a operación de asignación se conoce
como instrucción o sentencia de asignación cuando se refiere a un lenguaje de programaciónx
El formato general de una operación de asignación esx

‘
1+ ‘‘ ‘,  +‘¨ 9  ‘
9  ‘¨ 9  3‘,  +‘‘   ‘

aa‘
‘
Primer Ciclo Fundamentos de Programación

Ejemplo:
Asignación aritméticax
A ĸ 5 significa que la variable A se le ha asignado el valor 5x
Asignación lógicax
N ĸ 8 ” 5x
Asignación de cadenas de caracteresx
X ĸ ´12 de octubre de 1942´

4 

!

§ 


6os cálculos que realizan las computadoras requieren para ser útiles la entrada de los datos
necesarios para ejecutar las operaciones que posteriormente se convertirán en resultados, es
decir, salidax

6as operaciones de entrada permiten leer determinados valores y asignarlos a determinadas


variablesx Esta entrada se conoce como operación de lectura (read)x 6os datos de entrada se
introducen al procesador mediante dispositivos de entrada (teclado, tarjetas perforadas,
unidades de disco, etx)x 6a salida puede aparecer en un dispositivo de salida (pantalla,
impresora, etcx)x la operación de salida se denomina escritura (write)x

  



§ §5 §



6a escritura de un algoritmo mediante una herramienta de programación debe ser lo más clara
posible y estructurada, de modo que su lectura factible considerablemente el entendimiento del
algoritmo y su posterior codificación en un lenguaje de programaciónx

 §



Se tiene tres variables: A, B, Cx escribir las instrucciones necesarias para intercambiar entre sí
sus valores del modo siguiente:

© B toma el valor de Ax
© C toma el valor de B
© A toma el valor de C

Soluciónx
Utilizaremos una variable auxiliar auxx
6as instrucciones que resuelven el problema de intercambio son:
aux ¨ A
A¨
¨
 ¨ aux

 +  ‘‘‘,  ‘  ‘‘4‘Ô3‘:4()3‘4(Ô‘

   ‘ ‘ ,  ‘ 3‘a))ԑ



   & M    
§

1 A¨ 5 -- -- --
2 B ¨  -- 10 -- --
2 C ¨  -- -- 15 --
aux ¨  5 10 15 5
A¨ 15 10 15 5
M¨  15 10 10 5
B ¨  15 5 10 5


aº‘
‘
Primer Ciclo Fundamentos de Programación

bsérvese que la variable aux no modifica su valorx

‘a6‘
   ‘;‘  ‘‘  ‘< ‘ ‘ ‘  ‘
   ‘   ‘
Inicio

=< ‘ >‘     ‘ ‘  ‘

Fin
º6‘
ñ   ‘;‘ ‘+  ‘‘ * ‘‘ ‘      6‘

 ‘

 ‘4‘º( (Α

‘

‘¨‘a ‘

El perímetro es:
p

0 ‘‘
Ejemplo 4:

Estructura condicional simple:


Programa para determinar si un número es positivo y presente el respectivo mensaje:


 ‘

‘

‘
‘?‘)‘

El número
es positivo

0 ‘‘

a ‘
‘
Primer Ciclo Fundamentos de Programación

Estructura condicional doble:


Programa para determinar si un número es mayor a otro:


 ‘

3‘+‘

‘ ‘
 ‘?‘+‘

 El número El número
mayor es: a mayor es: b



0 ‘‘


Estructuras Repetitivas:

Mediante la estructura repetitiva F R realice un programa que imprima los 25 primeros


números enterosx


 ‘

‘4‘)@‘‘A‘aÔ@‘‘55‘

 6os números
naturales son: i


 0 ‘‘


aԑ
‘
Primer Ciclo Fundamentos de Programación

Estructura while:

Realice un programa presente los 10 primeros números paresx


 ‘

‘¨‘a‘



‘A‘a)‘


 ‘
0 ‘‘
 6os números son
p


 Ԭ
‘


M
/


6as presentes actividades sirven para reforzar y aplicar los conocimientos teóricos recibidos en
la presente unidad por lo que se debe realizar su respectivo análisis, desarrollo y soluciónx

1x Encontrar el valor de cada una de las siguientes expresiones o decir si no es una


expresión válida:
ax 9 ± 5 ± 3x
bx 2 div 3 + 3 / 5
cx 9 div 2/ 5
dx 7 mod 5 mod / 3
ex 7 mod (5 mod 3)
fx (7 mod 5) mod 3
gx (7 mod 5 mod 3)
hx ((12 + 3) div 2) / (8 ± 15 + 1)
ix 12 / 2 * 3
jx Raíz 2 (cuadrado (4))
kx Cuadrado (raíz 2 (4))

2x Introducir un número por teclado y decir si es par o imparx


3x
4x Calcular y visualizar la suma y el producto de los números pares comprendidos entre
20 y 400, ambos inclusivex
5x Hacer un programa que lea tres valores A, B y C, y los ordene e imprima en orden
creciente, e indique además si fueron introducidos ordenadosx
6x Sumar diez números introducidos por tecladox
7x ¿Cómo se intercambian los valores de dos variables
8x Imprimir y contar los números múltiplos de 3 que hay entre 1 y 100x
9x Realice se desea calcular independientemente la suma de los números pares e
impares comprendidos entre 1 y 200x

aΑ
‘
Primer Ciclo Fundamentos de Programación

10x Calcular la media de cincuenta números e imprimir sus resultadosx


11x Desarrollar un algoritmo que determine en un conjunto de cien números naturalesx
© ¿Cuántos son menores de 15?
© ¿Cuántos son mayores de 50?
© ¿Cuántos están comprendidos entre 25 y 45?

12x Elabore un diagrama de flujo que dado un entero n > 1, calcule e imprima los
elementos correspondientes a la conjetura de Ullman (en honor al matemático Sx
Ullman) que consiste en lo siguiente:

‡ Empiece con cualquier entero positivox


‡ Si es par, divídalo entre 2; si es impar multiplíquelo por 3 y agréguele 1x
‡ btenga enteros sucesivamente repitiendo el procesox
Al final se obtendrá el número 1, independientemente del entero inicialx Por ejemplo,
cuando el entero inicial es 26, la secuencia será:
26 13 40 20 10 5 16 8 4 2 1

13x Sean los datos:


1
1
11

donde:
n es un entero positivo, no necesariamente múltiplo de tres, que indica el número de
elementos que el usuario va a ingresar, a continuaciónx
ai números que el usuario ingresax
Haga un diagrama de flujo para calcular la siguiente suma:

14x Escribe un programa que calcule el área de un círculo de cualquier radiox


15x Dado como dato una calificación de un alumno en un examen, desarrollar un algoritmo
y diagrama de flujo, que imprima el mensaje de aprobado en caso de que la calificación
sea mayor o igual a 70x

16x Desarrollar un algoritmo y diagrama de flujo tal que dado como datos la categoría y el
sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la
siguiente tablax Se imprimirá la categoría del trabajador y su nuevo sueldox
Categoría Aumento
1 15%
2 10%
3 8%
4 7%

17x Dado el número del mes, indicar el nombre del mesx


18x Dado un año, determinar si en bisiesto o nox
19x Realizar un programa que permita realizar la preselección de los integrante del equipo
de baloncesto, cuyo requisito es tener más de 1x80 mts de estatura y pesar menos de
100 Kg
20x Dado la hora, minutos y segundos, determinar la nueva hora después de n segundosx
21x El siguiente diagrama de flujo tiene un fin específico:
a) Interprételo, es decir, diga qué hace en forma breve y concisax Pruébelo primero con
n = 10 y posteriormente con n = 456x
b) Marque en el diagrama las estructuras algorítmicas usadas, indicando cuáles sonx

a'‘
‘
Primer Ciclo Fundamentos de Programación

‘
"   
  M 

Muchos avances han ocurrido en los fundamentos teóricos de programación de los lenguajes
de alto nivel a finales de década de los cincuentax

Uno de los avances más importantes fue el reconocimiento a finales de los sesenta de que
cualquier algoritmo, no importa su complejidad, podía ser construido utilizando combinaciones
de tres estructuras de control de flujo estandarizadas (secuencial, selectiva, repetitiva o
iterativa) y una cuarta denominada, invocación o salto (³jump´)x

6as sentencias de selección son: si (if) y según ± sea (switch): las de repetición o iterativas son:
desde, para (for), mientras (while), hacer ± mientras (do-while) o repetir hasta que (repeat-until);
las sentencias de salto o bifurcación incluyen romper (break), continuar (continue), ir-a (goto),
volver (return) y lanzar (throw)x

El término flujo de control se refiere al orden en que se ejecutan las sentencias del programax
tros términos utilizados son secuenciación, y control de flujox El flujo normal de todos los
programas es secuencialx Esto quiere decir que las instrucciones se ejecutan en secuencia,
una después de otra, en el orden en que sitúan dentro del programax 6as estructuras de
selección, repetición e invocación permiten que el flujo secuencial del programa sea modificado
en un momento preciso y definido con anterioridadx Como se puede deducir fácilmente, las
estructuras de selección se utilizan para seleccionar cuáles sentencias se han de ejecutar a
continuación y las estructuras de repetición se utilizan para repetir un conjunto de sentenciasx

Una bifurcación (³brach´, en Inglés) es un segmento de programa construida con una sentencia
o un grupo de sentenciasx Una sentencia de bifurcación se utiliza para ejecutar una sentencia

a&‘
‘
Primer Ciclo Fundamentos de Programación

de entre varias o bien bloques de sentenciasx 6a elección se realiza dependiendo de una


condición dadax 6as sentencias de bifurcación se llaman también sentencias o sentencias de
alteración o alternativasx

"  





Una estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en
secuenciax 6as tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el final del procesox 6a estructura secuencial tiene una
entrada y una salidax Su representación gráfica es la siguiente:

 ‘(‘

 ‘a‘

 ‘ ‘

Figx Estructura secuencial

acción 1
acción 2
x
x
x
x
x
x
x
acción n
Figx Diagrama N-S de una estructura secuencialx

inicio

<acción 1>

<acción 2>

finx

Figx Pseudocódigo de una estructura secuencial

Ejemplo:

Cálculo de la suma y producto de dos númerosx

6a suma S de dos números es S = A ¼ B y el producto P es P = A Bx el pseudocódigo y el


diagrama de flujo correspondiente se muestran a continuaciónx

a%‘
‘
Primer Ciclo Fundamentos de Programación

"  


 


6a especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una
descripción más complicada que una lista de sencilla de instruccionesx Este es el caso cuando
existe un número de posibles alternativas resultantes de la evaluación de una determinada
condiciónx 6as estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se
suelan denominar también estructuras de decisión o alternativasx

En las estructuras selectivas se evalúan una condición y en función del resultado de la misma
se realiza una opción u otrax 6as condiciones se especifican usando expresiones lógicasx 6a
representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else
o bien en español si, entonces, si_no), con una figura geométrica en forma de rombo o bien con
un triangulo en el interior de una caja rectangularx 6as estructuras selectivas o alternativas
pueden ser:

© Simples
© Dobles
© Múltiples

6a estructura simple es si (if) con dos formatos: Formato Pascal, si-entonces (if-then) y en
formato C, si(if)x 6a estructura selectiva doble es igual que la estructura simple si al cual se le
añade la cláusula si-no (else)x 6a estructura selectiva múltiples según-sea(switch en lenguaje
C, case en pascal)x

"    

 #0§5
 $

6a estructura alternativa simple si-entonces (en ingles if-then) ejecuta una determinada acción
cuando se cumple una determinada condiciónx 6a selección si-entonces evalúa la condición y

º)‘
‘
Primer Ciclo Fundamentos de Programación

© Si la condición es verdadera, entonces ejecuta al condición si ( o acciones caso de ser


SI una acción compuesta y constar de varias acciones)x
© Si la condición es falsa, entonces no hacer nadax

6as representaciones graficas de la estructura condicional simple se muestra en la siguiente


figurax

 §

Construir un algoritmo tal, que dado como dato la calificación de un alumno en un examen,
escriba "Aprobado" en caso que esa calificación fuese mayor que 8x

Salidas: mensaje de aprobado si se cumple la condiciónx


Entradas: calificación

Datos adicionales: un alumno aprueba si la calificación es mayor que 8

‘
Variables:

Cal = calificación
Algoritmo:

Inicio
6eer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Fin_si
Fin

º(‘
‘
Primer Ciclo Fundamentos de Programación

bsérvese que las palabras de el pseudocódigo si y fin_si se alinean verticalmente indentando


(sangrado) la <acción> o bloque de acciones

"   

§ #0§0§50 0 $

6a estructura anterior es muy limitada y normalmente se ncesitará uns estructura que permita
elegir os opciones o alternativas porsibles, en función del cumplimiento o no de una
determinada condiciónx Si la condición c es verdadera, se ejecuta la acción S1 y, si es falsa, se
ejcuta la acción S2x

Representación pseudocodificadax


-§   
 )
Si <condición> entonces If <condición> then
<acción S1> <acción S1>
sino else
<acción S2> <acción S2>
Fin_Si End_if

ºa‘
‘
Primer Ciclo Fundamentos de Programación

Entonces, si una condición C es verdadera, se ejecuta la acción S1 y si es falsa, se ejecuta la


acción S2x

Ejemplo 1

Dado como dato la calificación de un


alumno en un examen, escriba "aprobado"
si su calificación es mayor que 8 y
"Reprobado" en caso contrariox

Algoritmo:
Inicio
6eer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Sino
Escribir ("reprobado")
Fin_si
Fin

Ejemplo 2x

Dado como dato el sueldo de un trabajador, aplicar un aumento del 15% si su sueldo es inferior
a $1000 y 12% en caso contrario, luego imprimir el nuevo sueldo del trabajadorx

 

ºº‘
‘
Primer Ciclo Fundamentos de Programación

""   

6  #67
1
§5
$

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)x Este problema, se
podría resolver con estructuras alternativas simples o dobles, anidadas o en cascada, sin
embargo, este método si es el número de alternativas es grande puede plantear serios
problemas de escritura del algoritmo y naturalmente de legibilidadx

6a estructura de decisión múltiple evaluará una expresión que podría tomar n valores distintos,
1, 2, 3, 4,«xnx según que elija uno de estos valores en la condición, se realizará una de las n
acciones, a lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n
posiblesx

º ‘
‘
Primer Ciclo Fundamentos de Programación

Figx Muestra la representación gráfica de la estructura múltiplex

ºÔ‘
‘
Primer Ciclo Fundamentos de Programación

Ejemplo:

Se desea diseñar un algoritmo que escriba los nombres de los días de la semana en función
del valor de un variable DÍA introducida por tecladox

6os días de la semana son 7, por consiguiente; el rango de valores de DÍA será 1«7, y caso de
que DÍA tome un valor fuera de este rango se deberá producir un mensaje de error advirtiendo
la situación anómalax

ºÎ‘
‘
Primer Ciclo Fundamentos de Programación

Ejemplo 2: (apara resolver)

Preguntar qué día de la semana fue el día 1 del mes actual y calcular que día de la semana es
hoyx

º'‘
‘
Primer Ciclo Fundamentos de Programación

"%  


 


Una de las situaciones más comunes que nos encontramos en el ámbito de la programación,
consiste en la necesidad de repetir dentro de un método un conjunto de instrucciones o repetir
varias veces la activación de un métodox Todo esto se puede realizar utilizando instrucciones
repetitivas llamadas ciclosx

Son operaciones que se deben ejecutar un número repetido de vecesx El conjunto de


instrucciones que se ejecuta repetidamente cierto número de veces, se llama Ciclo, Bucle o
6azox


 es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones
contenidas en el buclex

+
 §

M. §:
 Entrada de datos e instrucciones previasx
 6azo o buclex
 Instrucciones finales o resto del procesox
" 4x Salida de resultado


"% 

#  $

6a estructura respetiva mientras, es aquella en que el cuerpo del bucle se repite mientras se
cumple una determinada condiciónx Cuando se ejecuta la instrucción mientras, la primera cosa
que sucede es que se evalúa la condición (una expresión booleana)x Si se evalúa falsa, no se
toma ninguna acción y el programa en la siguiente instrucción del buclex Si la expresión
booleana es verdadera, entonces se ejecuta el cuerpo del bucle, después de los cual se evalúa
de nuevo la expresión booleanax Este proceso se repite una y otra vez mientras la expresión
booleana (condición) sea verdaderax Ejemplox

 

º&‘
‘
Primer Ciclo Fundamentos de Programación

 §  §





En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos está indicando
que hay que volver a evaluar la expresiónx En ese caso como el bucle es infinito, no se tiene
una condición para terminar y se estará haciendo siemprex En el siguiente ejemplo, ya se
agregó una condición, la cual nos permitirá finalizar la ejecución del bucle en el caso en que la
condición se cumplax

 §  § 

& §

A continuación, se muestran tres diseños de estructuras cíclicas: las independientes son


cuando los bucles se realiza uno primero hasta que se cumple la condición y solo en ese caso
se entra al bucle Bx

º%‘
‘
Primer Ciclo Fundamentos de Programación

En los ciclos anidados, al entrar a una estructura de repetición, dentro de ella se encuentra
otrax 6a más interna se termina de realizar y se continúa con la externa hasta que la condición
se cumplex

En los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un
bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras goto (saltos)
para pasar al bucle externo y se quedan entrelazadosx

Esto puede ocasionar que el programa pierda el control de cuál proceso se está ejecutando y
podamos obtener resultados erróneosx Veamos gráficamente el diseño de estas tres formas
cíclicas:



"'  

 
#§0  $

El bucle hacer mientras es análogo al bucle mientras y el cuerpo del bucle se ejecuta una y
otra vez mientras la condición (expresión booleana) es verdaderax Existe, sin embargo, una
gran diferencia y es que el cuerpo del bucle está encerrado entre las palabras reservadas
hacer y mientras, de modo que las sentencias de dicho cuerpo se ejecutan, al menos una
vez, antes de que se evalúe la expresión booleanax En otras palabras, el cuerpo del bucle
siempre se ejecuta, al menos una vez, incluso aunque la expresión booleana sea falsax

à 

El bucle hacer mientras se termina de ejecutar cuando el valor de la condición es falsax 6a


elección entre el bucle hacer mientras y un bucle hacer-mientras depende del problema de
cómputo a resolverx En la mayoría de los casos, la condición de entrada del bucle mientras
es la correctax Por ejemplo, si el bucle se utiliza para recorrer una lista de números (o una
lista de cualquier tipo de objetos), la lista puede estar vacía, en cuyo caso las sentencias
del bucle nunca se ejecutaránx Si se aplica un bucle hacer mientras nos conduce a un
código de erroresx

 )‘
‘
Primer Ciclo Fundamentos de Programación

"(  


5

#§ $

En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar


las acciones de un buclex En estos casos, en el que el número de iteraciones es fijo, se
debe usar la estructura desde o para (for, en inglés)x 6a estructura desde las acciones del
cuerpo del bucle un número especificado de veces y de modo automático controla el
número de iteraciones o pasos a través del cuerpo del buclex 6as herramientas de
programación de la estructura desde o para se muestran a continuaciónx

 §

1x ¿Qué se muestra en pantalla si se ejecutan las siguientes sentencias (suponiendo que el


resto del programa que no se presenta es correcto)?


 


À
  

 
!

2x ¿Qué se mostraría en pantalla si en el ejercicio anterior el signo > fuera reemplazado por
<?

 (‘
‘
Primer Ciclo Fundamentos de Programación

3x ¿Qué se mostraría en pantalla si se ejecutan las sentencias siguientes?


x=10;
hacer
{
À
  

 
š mientras (x>0);

4x ¿Qué se mostraría en pantalla si se ejecutan las sentencias siguientes?


x=-42;
hacer
{
À
  

 
š mientras(x>0);

5x Realizar un diagrama de flujo que permita obtener el factorial de un número ingresado por
tecladox
6x Algoritmo que permita obtener la potencia de un número ingresado por teclado, la base y
el exponente serán dados por el usuariox

7x Elabore un diagrama de flujo que dado un entero n > 1, calcule e imprima los elementos
correspondientes a la conjetura de Ullman (en honor al matemático Sx Ullman) que consiste
en lo siguiente:

‡ Empiece con cualquier entero positivox


‡ Si es par, divídalo entre 2; si es impar multiplíquelo por 3 y agréguele 1x
‡ btenga enteros sucesivamente repitiendo el procesox
Al final se obtendrá el número 1, independientemente del entero inicialx Por ejemplo,
cuando el entero inicial es 26, la secuencia será:
26 13 40 20 10 5 16 8 4 2 1

8x Elabore un diagrama de flujo, que imprima los primeros pares menores o iguales a nx

9x Elabore un diagrama de flujo para leer n enteros, calcular e imprimir su suma y su


promediox

10x 6os cubos de Nicómacox Considera la siguiente propiedad descubierta por Nicómaco de
Gerasa: Sumando el primer impar, se obtiene el primer cubox Sumando los dos siguientes
se obtiene el segundo cubox Sumando los tres siguientes, se obtiene el tercer cubo, etcx

Es decir: 1 = 13,
3 + 5 = 23 = 8,
7 + 9 + 11 = 33 = 27,
13 + 15 + 17 + 19 = 43 = 64x
Elabore un diagrama que dado un número n entero positivo, imprima los n primeros cubos
utilizando esta propiedadx

11x Dados los datos: a, b, c, d; Elabore un diagrama de flujo para cada uno de los siguientes
problemas:

 a‘
‘
Primer Ciclo Fundamentos de Programación

a) Hallar el mayorx
b) Hallar el menorx
c) Hallar el mayor y el menorx

12x Construya un diagrama de flujo que calcule e imprima los 150 primeros números de la serie
de Fibonaccix Recuerde que los dos primeros números de la serie son 0 y 1x El resto se
calcula como la suma de los dos números que lo precedenx
Ejemplo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, x x x

13x En una guardería hay 25 niños de 1, 2 y 3 añosx 6os niños de 1 año consumen 6 pañales al
día, los niños de 2 años consumen 3 pañales diarios y los niños de 3 años consumen 2
pañales diariosx Se desea conocer el consumo total de pañales diariosx
Datos: edad1
edad2
xxxxx
edad25

donde edadi representa la edad del i±enésimo niño en años cumplidos (1, 2 ó 3)x

%  M
 
 &   
% 89)
 §

 


 §:

6a programación orientada a objetos es algo más que una colección de lenguajes de


programación, tales como Small-talk, bject Pascal, C++, etcx

ñ  Un método de implementación en el que los programas se organizan como


colecciones cooperativas de objetos, cada uno de los cuales repre sentan una instancia de
alguna clase, y cuyas clases son todas miembros de una jerarquía de clases unidas mediante
relaciones de herenciax

Un programa puede parecer orientado a objetos 1) utiliza objetos, no algoritmos, como bloques
de construcción lógicos (jerarquía de objetos); 2) cada objeto es una instancia de una clase, 3)
las clases se relacionan unas con otras por medio de relaciones de herenciax

% § §

Conjunto complejo de datos y de funciones que pueden acceder a esos datos, dado de una
determinada estructura y que forma parte de una organización donde se relacionan con otros
objetosx

Un objeto es una entidad que contiene los atributos que describen el estado de un objeto del
mundo real y las acciones que se asocian con el objeto del mundo realx Se designa por un
nombre o identificador del objetox Dentro del contexto de un lenguaje orientado a objetos
(6 ), un objeto encapsula datos y las funciones (métodos) que manejan esos datosx 6a
notación gráfica de un objeto varía de unas metodologías a otrasx

‘
#+‘‘ 4‘ ‘ +‘ 5‘ ‘‘
‘‘ ‘ ‘  ‘ ‘ ‘   ‘+ ‘‘ ‘
‘

 º‘
‘
Primer Ciclo Fundamentos de Programación

‘
 §§ §

¿Qué clases de cosas pueden ser objetos en un programa orientado a objetos? 6a respuesta
está sólo limitada a su imaginaciónx Algunos ejemplos típicos pueden ser:

© Ú   "#
Aviones en un sistema de control de tráfico aéreox
Automóviles en un sistema de control de tráfico terrestrex
Casasx

© ë   
 
 
  À 
#
Ventanas, Menús, bjetos gráficos (cuadrados, triángulos, etcx), teclados, impresoras,
unidades de disco, cuadrados de diálogo, ratones, teléfonos celularesx

Π Datos o variables que caracterizan el estado de un objetox

 Procedimientos o acciones que cambian el estado de un objeto (operaciones o


servicios)

 
 
§ § 

 î ‘ "+‘  ‘

  +‘


 ‘


   M
     § §

%  §

6os atributos describen el estado del objetox Un atributo consta de dos partes: un nombre de
atributo y un valor de atributox

% )§§

6os métodos (operaciones o servicios) describen el comportamiento asociado a un objeto,


representan las acciones que pueden realizarse por un objeto o sobre un objetox 6a ejecución
de un método puede conducir a cambiar el estado del objeto o dato local del objetox

% M


Una clase es la descripción de un conjunto de objetos; consta de métodos y datos que resumen
características comunes de un conjunto de objetosx Se pueden definir muchos objetos de la
misma clase dicho de otro modo, una clase es la declaración de un tipo de objetox

6as clases son similares a los tipos de datos y equivalen a modelos o planillas que describen
como se construyen ciertos tipos de objetosx Cada vez que se construye un objeto a partir de
un clase, estamos creando lo que se llama una instancia de esa clasex Por siguiente, los
objetos no son más que instancias de una clasex Una instancia es una variable de tipo objeto
en general, instancia de una clase y objeto son términos intercambiables



§  


  ‘
‘
Primer Ciclo Fundamentos de Programación

class ‘ 
   
//declaración de atributosx
// declaración de constructores y métodosx
Fin clase
‘ 
    es un identificador válidox

%   


6a herencia permite que se pueden definir nuevas clases basadas en clases existentes, lo cual
facilita re-utilizar código previamente desarrolladox Si una clase deriva de otra ( )
hereda todas sus variables y métodosx 6a clase derivada puede  nuevas variables y
métodos y/o   las variables y métodos heredadosx
En , a diferencia de otros lenguajes orientados a objetos, una clase sólo puede derivar de
una única clase, con lo cual no es posible realizar       en base a clasesx Sin
embargo es posible ³simular´ la herencia múltiple en base a las   x

6a encapsulación es una característica muy potente, y junto con la ocultación de la información,
representan el concepto avanzado de objeto que adquiere su mayor revelación cuando
encapsula e integra datos, más las operaciones que manipulan los datos en dicha entidadx Sin
embargo, la orientación a objetos se caracteriza además de por las propiedades anteriores, por
incorporar la característica de herencia, propiedad que permita a los objetos ser construidos a
partir de otros objetosx Dicho de otro de modo, la capacidad de un objeto para utilizar las
estructuras de datos y métodos previstos en antepasados o ascendientesx El objetivo final es la
reutilizabilidad o reutilización (reusability), es decir, reutilizar código anteriormente ya
desarrolladox
6a herencia se apoya en el significado de ese concepto en la vida diariax Así, las clases
básicas o fundamentales se dividen en subclasesx 6os animales se dividen en mamíferos,
anfibios, insectos, pájaros, peces, etcx 6a clase vehículo se divide en subclase automóvil,
motocicleta, camión, autobús, etcx El principio en que se basa la división de clases es la
jerarquía compartiendo características comunesx Así todos los vehículos citados tienen un
motor y ruedas, que son características comunes; si bien los camines tienen una caja para
transportar mercancías, mientras que las motocicletas tienen un manillar en lugar de un
volantex
6a herencia supone una clase base y una jerarquía de clases que contienen las clases
derivadas de la clase basex 6as clases derivadas pueden heredar el código y los datos de su
clase base, añadiendo su propio código especial y datos a ellas incluso cambiar aquellos
elementos de la clase base que necesita sean diferentesx

Nota: una clase hereda sus características (datos y funciones) de otra clasex

%" M§
§ § § §


Ya se ha mencionado en ocasiones anteriores que los objetos realizan acciones cuando ellos
reciben mensajesx El mensaje es esencialmente una orden que se envía a un objeto para
indicarle que realice alguna acciónx Esta técnica de enviar mensajes a objetos se denomina
pasar mensajesx 6os objetos se comunican entre sí enviando mensajes, al igual que sucede
con las personasx

Consideremos el objeto ventana, supongamos que deseamos cambiar su tamaño, de modo


que le enviamos el mensajex

Reducir 3 columnas por la derechax

bserve que no le indicamos a la ventana cómo cambiar su tamaño, la ventana maneja la


operación por sí mismax De hecho, se puede enviar el mismo mensaje a diferentes clases de
ventanas y esperar a que cada una realice la misma acciónx

 Ô‘
‘
Primer Ciclo Fundamentos de Programación

6os mensajes pueden venir de otros objetos o desde fuentes externas, tales como un ratón o
un tecladox

%% §§§

Una de las características que hace a los mensajes ser muy potentes es que pueden contener
otros objetosx 6os objetos que contienen otros objetos se conocen como objetos compuestosx

En la mayoría de los sistemas, los objetos compuestos no ³contienen´ en el sentido otros


objetos, sino que contienen variables que se refiere a otros objetosx 6a referencia almacenada
en la variable se llama identificador del objetox (ID del objeto)

Esta característica ofrece dos ventajas importantes:

1x 6os objetos ³contenidos´ pueden cambiar en tamaño y composición, sin afectar al


objeto compuesto que los contienenx Esto hace que el mantenimiento de sistemas
complejos de objetos anidados sea más sencillo, que sería el caso contrariox

2x 6os objetos contenidos están libres para participar en cualquier número de objetos
compuestos, en lugar de estar bloqueado en un único objeto compuestox

Un objeto compuesto consta de una colección de datos o más objetos componentesx 6os
objetos componentes tienen una relación part-of (parte-de) o componentxof (componente-de)
con objeto compuestox Cuando un objeto compuesto se instancia para producir una instancia
del objeto, todos sus objetos componentes se deben instanciar al mismo tiempox Cada objeto
componente puede ser a su vez un objeto compuestox

 Î‘
‘
Primer Ciclo Fundamentos de Programación

6a relación parte ±de puede representarse también por has-a (tiene - un), que indica la relación
que une al objeto agregado o continentex En el caso del objeto compuesto C CHE se leerá:
C CHE tiene-un M T R, tiene-un SISTEMA_DE_FREN S, etcx

Relación de agregación

%' §
§

Java es un lenguaje fuertemente atipado, lo que hace que su manejo sea un tanto tedioso,
aunque evita la aparición de errores debido a un mal manejo de estos tiposx

Se puede distinguir grupos de tipos:

© Enterosx
© Coma flotantex
© Caracteresx

ë 

©  entero largo de 64 bits (desde 9x233x372x036x854x775x808 a


9x233x372x036x854x775x807)
©  ë
  $   %$#&'#&( #)&($#&'#&( #)&'
© *
Entero corto de 16 bits (de -32x768 a 32x767)
©  Entero de 8 bits (de -128 a 127)

  

©  §
: Decimal de 32 bits (de -3,40282347E+38 a 3,40282347E+38)
© § : Decimal de 64 bits (de -1,7976313486231570 E+308 a 1,7976313486231570
E+308)
© 6os tipos float y double disponen de tres valores especiales: infinito positivo, infinito
negativo y NaN (Not a Number)

 '‘
‘
Primer Ciclo Fundamentos de Programación

© Ejx: public class Rangos {


Public static void main (String[] args) {
Systemxoutxprintln(Mathxsqrt(-1));
Systemxoutxprintln(1x1e200*1x1e200);
Systemxoutxprintln(-1x1e200*1x1e200);
š
š

  

© 
: carácter de 8 bits, correspondiente al código ASCIIx En ocasiones es necesario
representar los caracteres en forma de constante, para lo que se emplean comillas
simplesx Ejx: µf¶x
© Existen combinaciones especiales para representar algunos caracteres:
§ µ\b¶ Retroceso
§ µ\t¶ Tabulador
§ µ\r¶ Retorno de carro
§ µ\n¶ Nueva línea
© 6a barra \ se emplea como carácter de escape:
§ \¶ comilla simple,
§ \´ comilla doble,
§ \\ barra invertida



© §§ 
: tipo especial de JAVA para representar valores lógicosx
© Puede tomar dos valores, representados por las palabras reservadas:
§  
§ 

© Se emplea en todas las estructuras condicionales y es el resultado de las operaciones
en las que intervienen operadores relacionalesx

ë 
6os tipos básicos no están encapsulados en clasesx Pero, en ocasiones, es necesario convertir
estos tipos básicos en objetosx

© Para ello se emplean:

§ int Ź Integer
§ long Ź 6ong
§ float Ź Float
§ double Ź Double
§ short Ź Short
§ byte Ź Byte
§ char Ź Character
§ boolean Ź Boolean
§ void Ź Void

© Estos envoltorios permiten utilizar las clases proporcionadas en la biblioteca de clases de


JAVA, que facilitan el trabajo de conversión de tipos y, en ocasiones, crear estructuras
definidas sobre los tipos básicos, por ejemplo, una pila de números realesx

© Por ejemplo, para convertir la cadena ³123´ en el número entero 123 podemos emplear:
int num = IntegerxparseInt(³123´);


/



 &‘
‘
Primer Ciclo Fundamentos de Programación

© Permiten almacenar datos temporales en la memoria principal del ordenadorx


Necesitan un nombre que las identifique y el tipo de datos asociadox Puede indicarse
un valor inicialx
tipo identificador[=valor]
[,identificador[=valor]«];
© En JAVA es obligatorio declarar una variable antes de poder utilizarlax

   

© En el tipo automático, JAVA es capaz de hacer la conversión de tiposx Deben darse las
circunstancias:
© 6os tipos de datos son compatibles
© El tipo destino es mayor que el tipo origen
© Todos los tipos numéricos son compatibles entre sí, el tipo char es compatible con int y
el tipo boolean no es compatible con ningún otro tipox
© En otras ocasiones, cuando se puede producir pérdida de información, el programador
debe indicar el castingx
double db = 123x67;
int dest = (int) db;

%( § § §

6a herencia está íntimamente ligada al § § §, que se define como la capacidad del
lenguaje para, en tiempo de ejecución, ensamblar con un código u otro, en función de cómo se
desarrolle la ejecución, sin que esté programado À

x

Es una de las propiedad importante de la programación orientada a objetos es el polimorfismox


Esta propiedad, en su concepción básica, se encuentra en casi todos los lenguajes de
programaciónx El polimorfismo, en su expresión más simple, es el uso de un nombre o un
símbolo ±por ejemplo un ordenador²para representar o significar más de una ocasiónx

El polimorfismo es la capacidad de asumir diferentes formasx En un lenguaje orientado a


objeto, el polimorfismo es la propiedad que permite que un mensaje pueda significar distintas
cosas dependiendo del objeto que lo recibax

El polimorfismo es un concepto natural que se aplica bien a los objetosx bjetos similares
aceptan a menudo los mismos mensajes, pero hacen cosas distintasx Por ejemplo, considere la
interfaz gráfica de una computadorax 6os objetos son iconos que representan archivosx Se usa
el ratón para enviar mensajes a estos objetosx Un mensaje típico es una doble pulsación, que
se envía al objeto colocando el ratón sobre su icono y pulsando el ratón dos vecesx Para un
archivo ejecutable, ese mensaje significa que debe ejecutar el archivo, mientras que para un
archivo de texto, la pulsación doble indica que debe arrancar el editor de texto y abrir el archivo
para editarlox


%* § 


  

6a evolución de la programación puede sintetizarse en tres modelos o paradigmas:


El significado de paradigma (paradigma en latín; paradeigma en griego) en su origen
significaba un ejemplo ilustrativo; en particular, enunciado modelo que mostraba todas las
inflexiones de una palabrax Un paradigma es una forma establecida de pensar acerca de cómo
hacer algox En el libro The Structure of Scientific Revolutions, el historiador Thomas Kuhn
describía un paradigma como un conjunto de teorías, estándares y métodos que juntos
representan un medio de organización del conocimiento: es decir, un medio de visualizar el
mundox
© 6a programación mediante procedimientos (procedural),
© 6a programación estructurada y
© 6a programación orientada a objetos

 %‘
‘
Primer Ciclo Fundamentos de Programación

%3 M

 § 
 

Como ya se ha comentado anteriormente, los lenguajes de programación orientados a objetos


son: Eiffel, 6isp, Prolog, Simula, Smalltalk, C++, bject, Pascal, etcxse entiende por lenguajes
orientadas a objetos aquellos que soportan las características de orientación a objetosx tros
lenguajes de programación tales como Ada, C, Cliper, pueden implementar algunas
características orientadas a objetos, utilizando ciertas técnicas de programación, pero no se
consideran orientadas a objetosx

6os principales lenguajes de programación utilizados actualmente para sistemas de tiempo real
son C y Ada fue diseñada específicamente para la implementación de sistemas en tiempo real,
especialmente empotradosx Aunque Ada (Ada-83) no cumple las propiedades importantes de
6P (por ejemplo herencia y ligadura dinámica), soporta un enfoque de diseño orientada a
objetos y se lo conoce usualmente como basado en objetosx

Ô)‘
‘

También podría gustarte