Está en la página 1de 47

INTRODUCCIÓN A LA SOLUCIÓN DE PROBLEMAS POR COMPUTADOR

CONCEPTOS BÁSICOS DE ALGORITMOS Y PROGRAMACIÓN

CONTENIDO

1. UN POCO DE HISTORIA
2. EL PAPEL DE LOS ALGORITMOS EN LA SOLUCIÓ N DE PROBLEMAS
2.1 EL CONCEPTO DE ALGORITMO
2.2 IMPORTANCIA DE LOS ALGORITMOS
2.3 PASOS PARA RESOLVER UN PROBLEMA POR COMPUTADOR
2.4 METODOLOGÍA PARA LA ELABORACIÓ N DE ALGORITMOS
3. INTRODUCCIÓ N A LA PROGRAMACIÓ N DE COMPUTADORES
3.1 LOS PROGRAMAS DE COMPUTADOR Y LOS LENGUAJES DE PROGRAMACIÓ N
3.2 TIPOS DE LENGUAJES DE PROGRAMACIÓ N
3.3 PARADIGMAS DE PROGRAMACIÓ N
3.3.1 Programació n Estructurada
3.3.2 Programació n Modular
3.3.3 Programació n Orientada a Objetos ( POO)
3.3.4 Programació n Orientada a Componentes 
3.3.5 Programació n Orientada a Aspectos 
3.3.6 Programació n Funcional 
4. ELEMENTOS GENERALES DE UN PROGRAMA
4.1 ESTRUCTURA BÁ SICA DE UN PROGRAMA
4.2 ELEMENTOS BÁ SICOS DE UN LENGUAJE DE PROGRAMACIÓ N
4.2.1 Identificadores
4.2.2 Variables
4.2.3 Constantes
4.2.4 Tipos de datos
4.2.5 Operadores
4.2.6 Expresiones
4.2.7 Comentarios
4.3 INSTRUCCIONES BÁ SICAS DE UN LENGUAJE DE PROGRAMACIÓ N
4.3.1 Estructura secuencial
4.3.2 Estructura alternativa (condicional a de decisió n)
4.3.3 Estructura repetitiva (bucles o ciclos)
4.4 USO DE VARIABLES CONTADORES, ACUMULADORES E INTERRUPTORES
1. UN POCO DE HISTORIA

La noció n de algoritmo se ha manejado a lo largo de la historia de manera totalmente


informal e intuitiva. La idea de algoritmo como secuencia de instrucciones
elementales ha parecido siempre tan obvia que nadie se había planteado, hasta finales
del siglo XIX, dar una definició n formal del mismo. Es muy claro cuá ndo un problema
se resuelve algorítmicamente: basta con encontrar un procedimiento mecá nico que
pueda ser considerado como tal. Sin embargo, para probar que un problema no es
resoluble algorítmicamente se necesita saber con rigor qué es un algoritmo. La
cuestió n de sí todo problema es resoluble algorítmicamente está implícita en el
programa finistista de Hilbert y, en 1936, A.

Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje


específico conocido como có digo má quina, el cual la má quina comprende fá cilmente,
pero que lo hace excesivamente complicado para las personas. De hecho só lo consiste
en cadenas extensas de nú meros 0 y 1.

Para facilitar el trabajo, los primeros operadores de computadoras decidieron hacer


un traductor para reemplazar los 0 y 1 por palabras o abstracció n de palabras y letras
provenientes del inglés; éste se conoce como lenguaje ensamblador. Por ejemplo, para
sumar se usa la letra A de la palabra inglesa add (sumar). El lenguaje ensamblador
sigue la misma estructura del lenguaje má quina, pero las letras y palabras son má s
fá ciles de recordar y entender que los nú meros.

La necesidad de recordar secuencias de programació n para las acciones usuales llevó


a denominarlas con nombres fá ciles de memorizar y asociar:
ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta
secuencia de posiciones se le denominó "instrucciones", y a este conjunto de
instrucciones se le llamó  lenguaje ensamblador. Posteriormente aparecieron
diferentes lenguajes de programació n, los cuales reciben su denominació n porque
tienen una estructura sintá ctica similar a los lenguajes escritos por los humanos,
denominados también lenguajes de alto nivel.

La primera programadora de computadora conocida fue Ada Lovelace, hija


de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemá ticas a
Ada quien, después de conocer a Charles Babbage, tradujo y amplió una descripció n
de su má quina analítica. Incluso aunque Babbage nunca completó la construcció n de
cualquiera de sus má quinas, el trabajo que Ada realizó con éstas le hizo ganarse el
título de primera programadora de computadoras del mundo. El nombre del lenguaje
de programació n Ada fue escogido como homenaje a esta programadora.

Luego de jugar un papel primordial en la enseñ anza de las matemá ticas, los
algoritmos han pasado a ser un objeto no considerado o poco estudiado en la
Educació n Matemá tica. Sin embargo, su existencia en matemá ticas es clara y el papel
que juegan en el aprendizaje de las mismas, puede favorecer u obstaculizar el
desarrollo del pensamiento matemá tico. Particularmente el rol que desempeñ an en la
resolució n de problemas, permite al resolutor identificar nuevas regularidades o
informaciones que el problema por sí mismo no proporciona. Por otro lado, las
isometrías en el plano como un objeto a estudiar desde la Educació n Bá sica, son
fundamentales en el desarrollo del pensamiento espacial y, en muchos de los
problemas que se relacionan con geometría, las isometrías emergen instantá neamente
y las regularidades que de ellas se deducen, proporcionan informació n importante
para solucionar dicho problema. Así, la identificació n de algoritmos en la resolució n
de problemas sobre isometrías del plano proporciona nuevas herramientas a
considerar en el amplio estudio de la resolució n de problemas y amplía la mirada
sobre el papel que los algoritmos juegan en la Educació n Matemá tica – “Uso de
algoritmos en la resolució n de problemas sobre isometrías; autores: Brigitte”.

2. EL PAPEL DE LOS ALGORITMOS EN LA SOLUCIÓ N DE PROBLEMAS

En la prá ctica, para poder solucionar un problema por medio del computador, se
necesita que nos pongamos en el lugar del computador, y analizar que es necesario
que me ordenen y en que secuencia, para poder producir los resultados esperados. En
general, el computador se utiliza para automatizar tareas, por lo tanto, también da
buenos resultados hacer similitudes con la labor de un empleado que hace el mismo
trabajo que deseamos programarle al computador. 

Aprendiendo a elaborar algoritmos se aprender a ponernos en el lugar del


computador, es decir, entendemos como el hace las cosas, y por lo tanto, aprendemos
a darle instrucciones por medio de un lenguaje de programació n.

Cuando logremos habilidad para desarrollar programas, es posible que no elaboremos


el diagrama de flujo; en su lugar podremos hacer directamente el pseudocó digo del
programa.

2.1 EL CONCEPTO DE ALGORITMO

En matemá ticas, ciencias de la computació n y disciplinas relacionadas,


un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemá tico
persa Al-Juarismi) es un conjunto prescrito de instrucciones o reglas bien definidas,
precisas, ordenadas y finitas que permite realizar una actividad (método para resolver
un determinado problema) mediante pasos sucesivos que no generen dudas a quien
deba realizar dicha actividad.

Características bá sicas de los algoritmos:

 Si un problema es resoluble algorítmicamente existen distintos algoritmos que lo


resuelven (es má s, existen infinitos algoritmos). Así pues, existen problemas para
los que no hay ningú n algoritmo que lo resuelva.
 Todo algoritmo puede traducirse en un programa escrito en un lenguaje de
programació n y todo programa es un algoritmo. Todo problema resoluble
algorítmicamente puede ser resuelto mecá nicamente por un ordenador.

2.2 IMPORTANCIA DE LOS ALGORITMOS

 Los algoritmos poseen hoy una gran importancia tanto para informá tica , robó tica
y ciencias de la computació n , por medio de algoritmos se llega a un orden de ideas
y un  proceso correcto en la elaboració n de maquinarias y robots lo que conlleva a
un avance en la tecnología y un mayor progreso a nivel mundial. 
 Los algoritmos conllevan a llevar un proceso y un orden de ideas en todos los
aspectos , pues cada actividad por mínima que sea requiere un orden que se da por
medio de los grandes algoritmos que creamos así sean mentales.
 Los algoritmos son necesarios para pasar el programa de tu mente, a la má quina, y
el pensamiento sistemá tico, para adelantarse a los errores que se puedan producir
mientras realizas tu programa, ver las partes del todo si dejar de fijarse en el todo.
 El algoritmo es el paso que le precede (ya sea en papel o en la mente) a la
programació n de computadores. La programació n es importante porque permite
automatizar todo tipo de tareas. Cuando un trabajo se hace manualmente, el
tiempo empleado para realizar un trabajo suele ser directamente proporcional a la
cantidad de trabajo.
 Si tenemos en cuenta la revolució n de las nuevas tecnologías de la informació n y si
éstas han de tener una incidencia en la enseñ anza, parece que los algoritmos
vuelven a adquirir un papel relevante.

2.3 PASOS PARA RESOLVER UN PROBLEMA POR COMPUTADOR

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 misma. Generalmente los programadores deben
realizar los pasos (etapas) siguientes:

1) Planteamiento del problema. El problema se define especificando todo tipo de


requerimientos, cá lculos, restricciones, condiciones y de procesos repetitivos
(sí los hay). Es importante que conozcamos exactamente que se desea del
computador; mientras qué esto no se comprenda, no tiene caso pasar a la
siguiente etapa. 
2) Entender el problema. Consiste en analizar la situació n con el propó sito de
determinar los requerimientos y seleccionar la mejor alternativa. Para esto la
persona deberá plantear un modelo de entrada-proceso-salida del problema
planteado; este es el primer paso para solucionar el problema utilizando un
computador.
Entendido el problema (que se desea obtener del computador), para resolverlo
es preciso analizar:
 Los datos o resultados que se esperan. 
 Los datos de entrada que nos suministran. 
 El proceso al que se requiere someter esos datos a fin de obtener los
resultados esperados. 
 Á reas de trabajo, fó rmulas y otros recursos necesarios. 
3) Elaborar el algoritmo que muestra lo ló gica y secuencia de la solució n del
problema. Existen tres (3) técnicas para elaborar algoritmos, estas son los
diagramas de flujos, los diagramas Nassi-Schneiderman y el seudocó digo. Este
paso debe terminar realizando una prueba de escritorio para cerciorarnos de
que el diagrama (y/o el pseudocó digo) está bien, y, para garantizar que el
programa que codifiquemos luego también funcione correctamente. Esta
solució n al problema la entiende el ser humano, má s no el lenguaje de
programació n ni la má quina. NOTA: los programadores experimentados
obvian este paso y prefieren elaborar la codificació n directamente.
4) Codificació n o elaboració n del có digo fuente.  El algoritmo se trascribe
utilizando la sintaxis y simbología del lenguaje de programació n seleccionado.
Esta es una copia del algoritmo planteado en el paso anterior, la entiende el ser
humano y el lenguaje de programació n, má s no la má quina.
5) Traducció n del có digo fuente o elaboració n del có digo binario. Esta se puede
realizar de manera compilada o interpretada dependiendo del lenguaje de
programació n seleccionado. Esta es una copia del có digo fuente creado en el
paso anterior, se le denomina có digo má quina o ejecutable, la entiende la
má quina, má s no el ser humano ni el lenguaje de programació n utilizado.
6) Pruebas del programa elaborado. Al ejecutar un programa podemos encontrar
errores debido a fallas ló gicas, captura de datos y al mal uso de los tipos de
datos utilizados en las expresiones, entre otros. En este paso se deben realizar
todas las pruebas necesarias para garantizar el funcionamiento efectivo del
programa ejecutable creado en la etapa anterior. Se recomienda dar diferentes
datos de entrada y considerar todos los posibles casos, aun los de excepció n o
no esperados, para asegurarnos de que el programa no producirá errores en
ejecució n cuando se presenten estos casos. 
7) Documentació n interna y externa del programa. Esta actividad se debe realizar
paralelamente con los pasos anteriores. Esta etapa es la que garantiza un
excelente mantenimiento o soporte al programa después de puesto en marcha.
8) Puesta en marcha del programa. El programa se pone en funcionamiento y al
servicio de los usuarios que requieran utilizarlo.

2.4 METODOLOGÍAS PARA LA ELABORACIÓ N DE ALGORITMOS

Las tres (3) técnicas utilizadas comú nmente para diseñ ar algoritmos son:

 Los diagramas de flujos. Es la manera de poder visualizar un algoritmo


grá ficamente. En estos se utilizan símbolos conectados para dar a conocer un
flujo o una secuencia.
 Los diagramas estructurados (Nassi-Schneiderman). También se denominan
diagramas de Chapín. Son una herramienta de programació n que favorece la
programació n estructurada y reú ne características grá ficas propias de los
diagramas de flujo y lingü ísticas propias del seudocó digo. Consta de una serie
de cajas continuas, cada una de ellas con un significado ú nico que denota una
acció n y se leerá n siempre de arriba – abajo.
 El seudocó digo o pseudocó digo. Es la manera en la que se escribe un algoritmo
utilizando un lenguaje natural, de manera breve y detallada.

3. INTRODUCCIÓ N A LA PROGRAMACIÓ N DE COMPUTADORES

3.1 LOS PROGRAMAS DE COMPUTADOR Y LOS LENGUAJES DE PROGRAMACIÓ N

Un Programa de Computador o Informático es un conjunto de instrucciones que


una vez ejecutadas realizará n una o varias tareas en una computadora. Sin programas,
estas má quinas no pueden funcionar. Al conjunto general de programas, se le
denomina software, que má s genéricamente se refiere al equipamiento ló gico o
soporte ló gico de una computadora digital.

De acuerdo a sus funciones, los programas informáticos se clasifican en software de


sistema (los sistemas operativos, los compiladores o lenguajes de programació n, los
editores, etc) y software de aplicació n (los programas que crean los programadores de
computadores). En los computadores actuales, al hecho de ejecutar varios programas
de forma simultá nea y eficiente, se le conoce como multitarea.

Los programas de computador pueden ser interactivos o no interactivos. Los


programas interactivos son aquellos que durante su ejecució n necesitan interactuar
con el usuario (aceptan entradas de humanos, datos u ó rdenes); los programas de
aplicaciones comerciales como las nó minas, cuentas por cobrar, etcétera, son
ejemplos de este tipo de software. Los programas no interactivos, funcionan sin
contacto humano; ejemplos de estos incluyen compiladores, protocolos y aplicaciones
de procesamiento por lotes, entre otros.

Un Lenguaje de Programación es un software que se utiliza para elaborar


programas de computador. A estos lenguajes también se les denomina compiladores o
interpretes. Algunos lenguajes de programació n: Lisp, Perl, C, C#, Cobol, Java, Basic,
Visual Basic, Python, Ruby, Fortran, Pascal, Haskell, ML, Prolog, PHP, ASP, entre otros.

En síntesis, un lenguaje de programació n es un conjunto de símbolos, caracteres y


reglas que le permiten a las personas comunicarse con la computadora. Estos
lenguajes tienen un conjunto de instrucciones que nos permiten realizar operaciones
de entrada/salida, cá lculos, manipulació n de textos, ló gica/comparació n y
almacenamiento/recuperació n.

La programación de computadoras es el proceso iterativo de escribir o


editar có digo fuente. Dicha edició n de có digo fuente implica probar, analizar y
perfeccionar, y, a veces, coordinar con otros programadores, en el caso de un
programa desarrollado en conjunto. Una persona que practica esta técnica se la
conoce como programador de computadoras, desarrollador de software, o
codificador.
El código fuente de un programa informá tico (o software) es un conjunto de líneas de
texto que son las instrucciones que debe seguir la computadora para ejecutar dicho
programa. Por tanto, en el có digo fuente de un programa está escrito por completo su
funcionamiento.

El có digo fuente de un programa que está escrito por un programador en


algú n lenguaje de programació n, pero en este primer estado no es directamente
ejecutable por la computadora, sino que debe ser traducido a otro lenguaje
(el lenguaje má quina o có digo objeto) que sí pueda ser ejecutado por el hardware de
la computadora. Para esta traducció n se usan los
llamados compiladores, ensambladores, intérpretes y otros sistemas de traducció n.

El á rea de la informá tica que se dedica a la creació n de programas y, por tanto a la


creació n de su có digo fuente, es la programació n.

3.2 TIPOS DE LENGUAJES DE PROGRAMACIÓ N

La evolució n de los lenguajes de programació n se puede dividir en 5 etapas o


generaciones. 

 Primera generació n: lenguaje má quina.


 Segunda generació n: se crearon los primeros lenguajes ensambladores.
 Tercera generació n: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal,
Cobol, etc.
 Cuarta generació n. Son los lenguajes capaces de generar có digo por si solos,
son los llamados RAD (es el acró nimo de Rapid Application Development), con
los cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje.
Aquí también se encuentran los lenguajes orientados a objetos, haciendo
posible la reutilizació n de partes del có digo para otros programas. Ej. Visual,
Natural Adabes, etc.
 Quinta generació n: aquí se encuentran los lenguajes orientados a la inteligencia
artificial. Estos lenguajes todavía está n poco desarrollados. Ej. LISP

Existen varias clasificaciones de los tipos de lenguajes de programació n, por nombrar


algunas má s comunes:

 Lenguajes de bajo nivel y de alto nivel


 Lenguajes compilados e interpretados
 Lenguajes tipificados y no tipificados
 Lenguajes de propó sito general y de propó sito específico
 Lenguajes de aplicació n comercial y de aplicaciones científicas
Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y
los de alto nivel.

El ordenador só lo entiende un lenguaje conocido como có digo binario o có digo


má quina, consistente en ceros y unos. Es decir, só lo utiliza 0 y 1 para codificar
cualquier acció n.

Los lenguajes má s pró ximos a la arquitectura hardware se denominan lenguajes de


bajo nivel y los que se encuentran má s cercanos a los programadores y usuarios se
denominan lenguajes de alto nivel.

Lenguajes de bajo nivel

Son lenguajes totalmente dependientes de la má quina, es decir que el programa que


se realiza con este tipo de lenguajes no se puede migrar o utilizar en otras má quinas. 
Al estar prá cticamente diseñ ados a medida del hardware, aprovechan al má ximo las
características del mismo.

Dentro de este grupo se encuentran: 

 El lenguaje má quina: este lenguaje ordena a la má quina las operaciones


fundamentales para su funcionamiento. Consiste en la combinació n de 0's y 1's
para formar las ordenes entendibles por el hardware de la má quina. 
Este lenguaje es mucho má s rá pido que los lenguajes de alto nivel. 
La desventaja es que son bastantes difíciles de manejar y usar, ademá s de tener
có digos fuente enormes donde encontrar un fallo es casi imposible.
 El lenguaje ensamblador es un derivado del lenguaje má quina y esta formado
por abreviaturas de letras y nú meros llamadas mnemotécnicos. Con la
aparició n de este lenguaje se crearon los programas traductores para poder
pasar los programas escritos en lenguaje ensamblador a lenguaje má quina.
Como ventaja con respecto al có digo má quina es que los có digos fuentes eran
má s cortos y los programas creados ocupaban menos memoria. Las
desventajas de este lenguaje siguen siendo prá cticamente las mismas que las
del lenguaje ensamblador, añ adiendo la dificultad de tener que aprender un
nuevo lenguaje difícil de probar y mantener.
El lenguaje de máquina o código
máquina es el sistema de có digos
directamente interpretable por un circuito
microprogramable, como el
microprocesador de una computadora o el
microcontrolador de un autó mata. Este
lenguaje está compuesto por un conjunto de
instrucciones que determinan acciones al ser
tomadas por la má quina.

El hardware son las partes físicas que forman


la computadora.

El firmware es el software que viene de la


fá brica con el hardware.

El ensamblador es un lenguaje derivado del


lenguaje de má quina pero fá cil de entender y
programar. El có digo escrito en lenguaje
ensamblador necesita traductor.

Lenguajes de alto nivel

Son aquellos que se encuentran má s cercanos al lenguaje natural que al lenguaje


má quina. 

Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en


principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una
má quina a otra sin ningú n tipo de problema. 

Estos lenguajes permiten al programador olvidarse por completo del funcionamiento


interno de la (s) má quina (s) para la (s) que está n diseñ ado el programa. Tan solo
necesitan un traductor que entiendan el có digo fuente como las características de la
má quina. 

Suelen usar tipos de datos para la programació n y hay lenguajes de propó sito general
(cualquier tipo de aplicació n) y de propó sito específico (como FORTRAN para trabajos
científicos). 

Lenguajes de Medio nivel 

Se trata de un término no aceptado por todos, pero que seguramente usted habrá
oído. Estos lenguajes se encuentran en un punto medio entre los dos anteriores.
Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del
sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes
de bajo nivel y a la vez realizar operaciones de alto nivel.
Lenguajes compilados y lenguajes interpretados

El programa de ordenador que es capaz de convertir el programa fuente escrito por el


programador en el programa ejecutable que ejecuta el ordenador puede realizar esa
tarea de dos formas distintas:

en un lenguaje compilado, la tarea de conversió n se realiza una sola vez. El


compilador crea un fichero ejecutable a partir del có digo fuente del programa y a
partir de entonces el usuario ejecuta el fichero ejecutable tantas veces como
quiera, sin tener que volver a utilizar el có digo fuente.

en un lenguaje interpretado, la tarea de conversió n se realiza cada vez que se


quiere ejecutar el programa. El intérprete lee una instrucció n del programa fuente,
la convierte en có digo ejecutable, la ejecuta y pasa a la siguiente. En este caso, el
usuario necesita tener el programa fuente para poder ejecutarlo.

En principio, cualquier lenguaje de programació n puede ser compilado o interpretado,


aunque por tradició n hay lenguajes que suelen utilizar compiladores y otros que
suelen utilizar intérpretes.
Se solía decir que para un mismo programa fuente, la compilació n produce programas
ejecutables má s rá pidos que los programas interpretados, pero la tendencia es a que
esas diferencias se reduzcan.

Lenguajes tipificados y lenguajes no tipificados

En programació n, los elementos que pueden almacenar informació n se llaman


variables. Dependiendo del tipo de informació n (nú meros, letras, etc) que se almacena
se usan variables de un tipo o de otro. Una característica que diferencia unos lenguajes
de otros es la rigidez o permisividad con respecto a los tipos de variables.

 Los lenguajes tipificados (también llamados de tipado está tico) son aquellos


en los que una variable guarda siempre un mismo tipo de datos. En algunos
lenguajes tipificados se exige al programador que declare el tipo de cada
variable y en otros lo determina el compilador. En algunos lenguajes tipificados
se permite la conversió n entre tipos de variables y en otros no.
 Los lenguajes no tipificados (también llamados de tipado diná mico) no
requieren la declaració n de tipo de las variables y una misma variable puede
almacenar valores de tipos distintos a lo largo de la ejecució n del programa.

Algunas ventajas de los lenguajes tipificados es que permiten detectar errores de tipo
(cuando un dato de un tipo se guarda en una variable de otro tipo), que permiten a los
compiladores optimizar mejor el có digo ejecutable y, en el caso de exigir la
declaració n de tipo de las variables, que facilitan la comprensió n de los programas.
Algunas ventajas de los lenguajes no tipificados es la mayor flexibilidad de los
programas, y una serie de características que aunque no se derivan necesariamente de
la falta de tipificació n suelen presentar los lenguajes no tipificados: simplicidad,
mayor nú mero de tipos de datos, metaprogramació n (introspecció n, eval, etc.).

Lenguajes de aplicación comercial y de aplicaciones científicas

El avance en el desarrollo de "compiladores" e "intérpretes" (los dos tipos de


programas traductores) ha sido por lo tanto fundamental en el desarrollo de los
lenguajes de "3º generació n" cuyas ventajas ademá s de la facilidad de aprendizaje y
lectura/escritura son las facilidades de correcció n, transformació n y conversió n de un
lenguaje a otro.
Los má s antiguos son el FORTRAN (para aplicaciones matemá ticas y científicas); y
para aplicaciones comerciales, el COBOL (para aplicaciones de administració n y
contabilidad).

Lenguajes de propósito general y de propósito específico

Lenguajes de propó sito general son aptos para todo tipo de tareas: Ejemplo: C. Los
enguajes de propó sito específico, está n hechos para un objetivo muy concreto.
Ejemplo: Csound (para crear ficheros de audio).

3.3 PARADIGMAS DE PROGRAMACIÓ N

Un paradigma de programación es una propuesta tecnoló gica que es adoptada por


una comunidad de programadores cuyo nú cleo central es incuestionable en cuanto a
que ú nicamente trata de resolver uno o varios problemas claramente delimitados. Es
un estilo de programació n empleado. La resolució n de estos problemas debe suponer
consecuentemente un avance significativo en al menos un pará metro que afecte a la
ingeniería de software. Tiene una estrecha relació n con la formalizació n de
determinados lenguajes en su momento de definició n. Un paradigma de programació n
está delimitado en el tiempo en cuanto a aceptació n y uso ya que nuevos paradigmas
aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente.

El paradigma de programació n que actualmente es el má s usado es la orientació n a


objetos. El nú cleo central de este paradigma es la unió n de datos y procesamiento en
una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto".

Tradicionalmente datos y procesamiento se han separado en á reas diferente del


diseñ o y la implementació n de software. Esto provocó que grandes desarrollos
tuvieran problemas de fiabilidad, mantenimiento, adaptació n a los cambios y
escalabilidad. Con la orientació n a objetos y características como el encapsulado,
polimorfismo o la herencia se permitió un avance significativo en el desarrollo de
software a cualquier escala de producció n.
La orientació n a objeto parece estar ligada en sus orígenes con lenguajes como Lisp y
Simula aunque el primero que acuñ ó el título de programació n orientada a objetos fue
Smalltalk.

Los programas de ordenador se pueden clasificar segú n el paradigma del lenguaje de


programació n utilizado para producirlos. Dos de los principales paradigmas son
imperativos y declarativos.
Los programas escritos con un lenguaje imperativo especifican
un algoritmo utilizando declaraciones, expresiones e informes. Una declaració n asocia
un nombre de variable a un tipo de datos. Por ejemplo: var x: integer; . Una expresió n
produce un valor. Por ejemplo: 2 + 2 produce 4. Por ú ltimo, una declaració n puede
asignar una expresió n a una variable o usar el valor de una variable para alterar
las estructuras de control del programa. Por ejemplo: x := 2 + 2; if x = 4 then
hacer_algo(); Una crítica de los lenguajes imperativos es el efecto secundario de una
sentencia de asignació n en una clase de variables llamadas variables no locales.
Los programas escritos en un lenguaje declarativo especifican las propiedades que
tienen o que deben cumplirse para la salida. No especifican detalles expresados en
términos de flujo de control de la má quina de ejecució n pero sí de las relaciones
matemá ticas entre los objetos declarados y sus propiedades. Los lenguajes
funcionales y ló gicos son dos amplias categorías de lenguajes declarativos. El principio
detrá s de los lenguajes funcionales (como Haskell) es el de no permitir efectos
secundarios, lo que hace que sea má s fá cil para razonar sobre los programas como si
se tratasen de funciones matemá ticas. El principio detrá s de los lenguajes ló gicos
(como Prolog) es definir el problema a ser resuelto - la meta - y dejar la solució n
detallada al propio sistema Prolog. El objetivo se define proporcionando la lista de
sub-objetivos. Luego, cada subobjetivo se define má s arriba, proporcionando la lista
de sus sub-objetivos, etc. Si la ruta de sub-objetivos no encuentra una solució n,
entonces ese subobjetivo se retrocede y otra vía se intenta sistemá ticamente.
La forma en que se crea el programa puede ser textual o visual. En un programa de
lenguaje visual, los elementos en vez de ser textualmente especificados son
manipulados grá ficamente.

Tipos de paradigmas de programación más comunes

 Imperativo o por procedimientos: es considerado el má s comú n y está


representado, por ejemplo, por C, BASIC o Pascal.
 Funcional: está representado por Scheme o Haskell. Este es un caso del
paradigma declarativo.
 Ló gico: está representado por Prolog. Este es otro caso del paradigma
declarativo.
 Declarativo: por ejemplo la programació n funcional, la programació n ló gica, o
la combinació n ló gico-funcional.
 Orientado a objetos: está representado por Smalltalk, un lenguaje
completamente orientado a objetos.
 Programació n diná mica: está definida como el proceso de romper problemas
en partes pequeñ as para analizarlos.

Si bien puede seleccionarse la forma pura de estos paradigmas al momento de


programar, en la prá ctica es habitual que se mezclen, dando lugar a la programació n
multiparadigma.

Otros paradigmas de programació n:

 Programació n estructurada
 Programació n dirigida por eventos
 Programació n modular
 Programació n orientada a aspectos
 Programació n con restricciones
 Programació n orientada a componentes

3.3.1 Programación Estructurada 

La programación estructurada es un paradigma de programació n orientado a


mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora,
utilizando ú nicamente subrutinas y tres estructuras: secuencia, selecció n (if y switch)
e iteració n (bucles for y while), considerando innecesario y contraproducente el uso
de la instrucció n de transferencia incondicional (GOTO), que podría conducir a
"có digo espagueti", que es mucho má s difícil de seguir y de mantener, y era la causa de
muchos errores de programació n.

Surgió en la década de 1960, particularmente del trabajo de Bö hm y Jacopini, y una
famosa carta, La sentencia goto considerada perjudicial, de Edsger Dijkstra en 1968 —
y fue reforzado teó ricamente por el teorema del programa estructurado, y
prá cticamente por la aparició n de lenguajes como ALGOL con adecuadas y ricas
estructuras de control.

Orígenes de la programación estructurada

A finales de los añ os 1970 surgió una nueva forma de programar que no solamente
daba lugar a programas fiables y eficientes, sino que ademá s estaban escritos de
manera que facilitaba su mejor comprensió n, no só lo proveyendo ventajas durante la
fase de desarrollo, sino también posibilitando una má s sencilla modificació n posterior.
El teorema del programa estructurado, propuesto por Bö hm-Jacopini, demuestra que
todo programa puede escribirse utilizando ú nicamente las tres instrucciones de
control siguientes:

 Secuencia
 Instrucció n condicional.
 Iteració n (bucle de instrucciones) con condició n al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y
aplicaciones posibles. Si bien los lenguajes de programació n tienen un mayor
repertorio de estructuras de control, éstas pueden ser construidas mediante las tres
bá sicas citadas.

Ventajas de la programación estructurada

Ventajas de la programació n estructurada comparada con el modelo anterior (hoy


llamado despectivamente có digo espagueti).

 Los programas son má s fá ciles de entender, pueden ser leídos de forma


secuencial y no hay necesidad de hacer engorrosos seguimientos en saltos de
líneas (GOTO) dentro de los bloques de có digo para intentar entender la ló gica.
 La estructura de los programas es clara, puesto que las instrucciones está n má s
ligadas o relacionadas entre sí.
 Reducció n del esfuerzo en las pruebas y depuració n. El seguimiento de los
fallos o errores del programa ("debugging") se facilita debido a su estructura má s
sencilla y comprensible, por lo que los errores se pueden detectar y corregir má s
fá cilmente.
 Reducció n de los costos de mantenimiento. Aná logamente a la depuració n,
durante la fase de mantenimiento, modificar o extender los programas resulta má s
fá cil.
 Los programas son má s sencillos y má s rá pidos de confeccionar.
 Se incrementa el rendimiento de los programadores, comparado con la forma
anterior que utiliza GOTO.

Algunos de los lenguajes utilizados inicialmente para programació n estructurada


incluyen: ALGOL, Pascal, PL/I y Ada. 

El uso de los diagramas de flujos se asocia con la programació n no estructurada, es


decir con la programació n con goto; y el uso de los diagramas de Nassi-Schneiderman
y el seudocó digo se asocia con la programació n estructurada, es decir con la
programació n sin goto.

3.3.2 Programación Modular

La programació n modular es un paradigma de programació n que consiste en dividir


un programa en mó dulos o subprogramas con el fin de hacerlo má s legible y
manejable.

Se presenta histó ricamente como una evolució n de la programació n estructurada para


solucionar problemas de programació n má s grandes y complejos de lo que ésta puede
resolver.
Al aplicar la programació n modular, un problema complejo debe ser dividido en
varios subproblemas má s simples, y estos a su vez en otros subproblemas má s
simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples
como para poder ser resueltos fá cilmente con algú n lenguaje de programació n. É sta
técnica se llama refinamiento sucesivo, divide y vencerá s ó aná lisis descendente (Top-
Down).

Un 'mó dulo' es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos
mó dulos tiene una tarea bien definida y algunos necesitan de otros para poder operar.
En caso de que un mó dulo necesite de otro, puede comunicarse con éste mediante una
interfaz de comunicació n que también debe estar bien definida.

Si bien un mó dulo puede entenderse como una parte de un programa en cualquiera de


sus formas y variados contextos, en la prá ctica se los suele tomar como sinó nimos de
procedimientos y funciones. Pero no necesaria ni estrictamente un mó dulo es una
funció n o un procedimiento, ya que el mismo puede contener muchos de ellos. No
debe confundirse el término "mó dulo" (en el sentido de programació n modular) con
términos como "funció n" o "procedimiento", propios del lenguaje que lo soporte.

Los procedimientos y funciones nos lleva a dos (2) conceptos nuevos, que son:

 El de los pará metros. A los pará metros también se les conoce como
argumentos y tienen la misió n de comunicar al procedimiento con el programa
que lo llama. Por ejemplo, si quieres hacer un subprograma que multiplique
dos nú meros, lo má s có modo es que al llamar al procedimiento le pases los
valores que participará n en la operació n.
 Variables globales y locales. Se denominan así dependiendo sí la variable es
reconocida en todo el programa o solo en un bloque de instrucciones.

Nombres de lenguajes de programació n que soportan este


paradigma: C, BASIC o Pascal y Python, entre otros.

3.3.3 Programación Orientada a Objetos ( POO) 

La programación orientada a objetos o POO (OOP segú n sus siglas en inglés) es


un paradigma de programació n que usa los objetos en sus interacciones, para diseñ ar
aplicaciones y programas informá ticos. Está basado en varias técnicas,
incluyendo herencia, cohesió n, abstracció n, polimorfismo, acoplamiento y
encapsulamiento. Su uso se popularizó a principios de la década de los añ os 1990. En
la actualidad, existe una gran variedad de lenguajes de programació n que soportan la
orientació n a objetos.

Los objetos son entidades que tienen un determinado estado, comportamiento


(método) e identidad:
 El estado está compuesto de datos o informaciones; será n uno o varios
atributos a los que se habrá n asignado unos valores concretos (datos).
 El comportamiento está definido por los métodos o mensajes a los que sabe
responder dicho objeto, es decir, qué operaciones se pueden realizar con él.
 La identidad es una propiedad de un objeto que lo diferencia del resto; dicho
con otras palabras, es su identificador (concepto aná logo al de identificador de
una variable o una constante).

Un objeto contiene toda la informació n que permite definirlo e identificarlo frente a


otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma
clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos
disponen de mecanismos de interacció n llamados métodos, que favorecen la
comunicació n entre ellos. Esta comunicació n favorece a su vez el cambio de estado en
los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en
las que no se separa el estado y el comportamiento.

Los métodos (comportamiento) y atributos (estado) está n estrechamente


relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase
requiere de métodos para poder tratar los atributos con los que cuenta.
El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle
mayor importancia a alguno de ellos. Hacerlo podría producir el há bito erró neo de
crear clases contenedoras de informació n por un lado y clases con métodos que
manejen a las primeras por el otro. De esta manera se estaría realizando
una programación estructurada camuflada en un lenguaje de programació n
orientado a objetos.

La POO difiere de la programació n estructurada tradicional, en la que los datos y los


procedimientos está n separados y sin relació n, ya que lo ú nico que se busca es el
procesamiento de unos datos de entrada para obtener otros de salida. La
programació n estructurada anima al programador a pensar sobre todo en términos de
procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos
procedimientos manejan. En la programació n estructurada solo se escriben funciones
que procesan datos. Los programadores que emplean Programació n Orientada a
Objetos, en cambio, primero definen objetos para luego enviarles mensajes
solicitá ndoles que realicen sus métodos por sí mismos.

Lenguajes orientados a objetos

Simula (1967) es aceptado como el primer lenguaje que posee las características


principales de un lenguaje orientado a objetos. Fue creado para hacer programas de
simulació n, en donde los "objetos" son la representació n de la informació n má s
importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo canó nico, y con el
que gran parte de la teoría de la programació n orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a objetos se destacan los siguientes: Ada, C++, C#,
Object Pascal (Embarcadero Delphi), Eiffel, Fortran 90/95, Java, Perl, PHP,
PowerBuilder, Python, Ruby, Smalltalk, VB.NET y Scala.

3.3.4 Programación Orientada a Componentes 

La ingeniería de software basada en componentes (CBSE) (también conocida


como desarrollo basado en componentes (CBD)) es una rama de la ingeniería de
software que enfatiza la separació n de asuntos (separation of concerns (SoC)) por lo
que se refiere a la funcionalidad de amplio rango disponible a través de un sistema de
software dado. Es un acercamiento basado en la reutilizació n para definir,
implementar, y componer componentes débilmente acoplados en sistemas. Esta
prá ctica persigue un amplio grado de beneficios tanto en el corto como el largo plazo,
para el software en sí mismo y para las organizaciones que patrocinan tal software.

Los ingenieros de software consideran los componentes como parte de la plataforma


inicial para la orientació n a servicios. Los componentes juegan este rol, por ejemplo,
en servicios de web y, má s recientemente, en las arquitecturas orientadas a
servicios (SOA), por el que un componente es convertido por el servicio web en un
servicio y consiguientemente hereda otras características má s allá de las de un
componente ordinario.

Un componente de software individual es un paquete de software, un servicio web, o


un mó dulo que encapsula un conjunto de funciones relacionadas (o de datos).

Todos los procesos del sistema son colocados en componentes separados de tal
manera que todos los datos y funciones dentro de cada componente está n
semá nticamente relacionados (justo como con el contenimiento de clases). Debido a
este principio, con frecuencia se dice que los componentes son modulares y cohesivos.

Los componentes de software con frecuencia toman la forma de objetos (no clases) o


de colecciones de objetos (de la programació n orientada a objetos), en una cierta
forma binaria o textual, adhiriéndose a un cierto lenguaje de descripció n de
interface (IDL) de modo que el componente pueda existir autó nomo de otros
componentes en una computadora.

La reusabilidad es una importante característica de un componente de software de


alta calidad. Los programadores deben diseñ ar e implementar componentes de
software de una manera tal que diversos programas puedan reutilizarlos. Los
componentes que forman parte de un sistema de informació n por lo general se
codifican con lenguajes de programació n diferentes.

Un modelo de componentes es una definició n de está ndares para la implementació n,


documentació n y el despliegue de componentes. Ejemplos de modelos de
componentes son: el modelo Enterprise Java Beans (EJB), el
modelo COM+ (modelo .NET), el modelo de componentes Corba. El modelo de
componentes especifica como deben ser definidas las interfaces y los elementos que
deben ser incluidos en una definició n de interface.

3.3.5 Programación Orientada a Aspectos 

Problemas de otros paradigmas: muchas veces nos encontramos, a la hora


de programar, con problemas que no podemos resolver de una manera adecuada con
las técnicas habituales usadas en la programació n imperativa o en la programació n
orientada a objetos. Con éstas, nos vemos forzados a tomar decisiones de diseñ o que
repercuten de manera importante en el desarrollo de la aplicació n y que nos alejan
con frecuencia de otras posibilidades.

La Programación Orientada a Aspectos (P.O.A) es un paradigma de


programació n relativamente reciente cuya intenció n es permitir una adecuada
modularizació n de las aplicaciones y posibilitar una mejor separació n de
incumbencias. Gracias a la POA se pueden encapsular los diferentes conceptos que
componen una aplicació n en entidades bien definidas, eliminando las dependencias
entre cada uno de los mó dulos. De esta forma se consigue razonar mejor sobre los
conceptos, se elimina la dispersió n del có digo y las implementaciones resultan má s
comprensibles, adaptables y reusables.

Herramientas para desarrollo de aplicaciones en POA:

 AspectC++] es un compilador que permite desarrollar aspectos en C++.


 AspectJ es una extensió n Java del proyecto Eclipse para ayudar en el desarrollo
orientado a aspectos.
 Aspect, un mó dulo Perl disponible en CPAN para la Programació n Orientada a
Aspectos (en inglés).
 phpAspect es una extensió n PHP para implementar el paradigma de la POA,
que, mediante á rboles de decisió n XML, realiza el weaving del software para
ser ejecutado como PHP está ndar.
 AOP con SpringFramework 2.5 es un Framework de Java que permite
programar en el paradigma de Aspectos utilizando Anotació n Java
 Aspyct AOP es un mó dulo de Python que permite incluir Programació n
orientada a Aspectos a programas ya existentes escritos en Python o a nuevos
desarrollos.
 FLOW3 es un framework MVC de PHP incluye un mó dulo para poder realizar
Programació n orientada a Aspectos en nuevos desarrollos.

3.3.6 Programación Funcional 

La programació n funcional, o mejor dicho, los lenguajes de programació n funcionales,


son aquellos lenguajes donde las variables no tienen estado — no hay cambios en
éstas a lo largo del tiempo — y son inmutables — no pueden cambiarse los valores a
lo largo de la ejecució n. Ademá s los programas se estructuran componiendo
expresiones que se evalú an como funciones. Dentro de los lenguajes funcionales
tenemos Lisp, Scheme, Clojure, Haskell, OCaml y Standard ML, entre otros. Estos
lenguajes está n diversidad de tipificació n, donde se encuentran lenguajes diná micos,
está ticos y está ticos fuertes.

En los lenguajes funcionales las instrucciones cíclicas como for, while y do-while no
existen. Todo se procesa usando recursividad y funciones de alto orden.

Referencias[editar]

1. Volver arriba↑ Böhm, Jacopini. "Flow diagrams, turing machines and


languages with only two formation rules" Comm. ACM, 9(5):366-371, May
1966
2. Volver arriba↑ Edsger Dijkstra (March 1968). «Go To Statement
Considered Harmful» (PDF). Communications of the ACM 11 (3):  pp. 147–
148. doi:10.1145/362929.362947. «The unbridled use of the go to statement has as
an immediate consequence that it becomes terribly hard to find a
meaningful set of coordinates in which to describe the process progress. ...
The go to statement as it stands is just too primitive, it is too much an
invitation to make a mess of one's program.».
3. Volver arriba↑ Plauger, P. J. (12 de febrero de 1993). Programming
on Purpose, Essays on Software Design (1 edición). Prentice-Hall. p. 25 |
página= y |páginas= redundantes (ayuda). ISBN 978-0-13-721374-0.

LOZANO, Letvin R., ¨ Diagramación y programación ¨


Editorial McGraw Hill, México.
NORTON, Peter., ¨ Introducción a la computación ¨
Editorial McGraw Hill, México.

4. ELEMENTOS GENERALES DE UN PROGRAMA

En el momento de escribir un programa para luego ejecutarlo en una


computadora, el programador debe elegir el lenguaje de programació n que
utilizará para elaborarlo.
Los programas de computador de la mayoría de los lenguajes de programació n de
alto nivel, se compone de una serie de elementos que alimentan su estructura
bá sica. Estos elementos bá sicos son: los datos, las variables, constantes e
instrucciones del programa, las librerías (funciones y procedimiento) que se van a
utilizar y los comentarios, entre otros.

Cada lenguaje de programació n define un repertorio de instrucciones, que son con


los que dispone el programador para elaborar sus programas. También define un
conjunto de palabras que vienen con significado propio en el lenguaje y que el
programador no puede utilizarlas para definir cualquier identificador que necesite
para elaborar el có digo fuente del programa.

Sintaxis de un lenguaje: Conjunto de reglas que tenemos que seguir a la hora de


escribir un programa en un lenguaje tal que si no seguimos esas reglas de sintaxis
el traductor (compilador/interprete) nos da errores y no nos deja solucionar el
problema.

Palabras reservadas: Son un conjunto de palabras especiales que nos sirven para
definir la estructura del programa, y solo se pueden usar para el fin para el que
está n reservadas.

4.1 ESTRUCTURA BÁ SICA DE UN PROGRAMA

Cada lenguaje de programació n exige o no una estructura rígida para organizar los
elementos que conformará n el programa. A continuació n se muestran las estructuras
generales de un programa escrito en lenguaje C/C++, Java y Python.

Estructura general de un programa en lenguaje C/C++:

Un programa simple en C/C++ tiene la siguiente estructura:

Comentarios
Inclusión de archivos
main()
{
variables locales
flujo de sentencias (instrucciones)
}
Definición de funciones creadas por el programador utilizadas en main()

Los comentarios nos sirven para escribir informació n que nos referencie al programa
pero que no forme parte de él. Por ejemplo especificar que hace el programa, quien lo
elaboró , en que fecha, que versió n es, etc.
En C/C++, todo está constituido a base de funciones. El programa principal no es la
excepció n. main() indica la funció n principal del programa la cual se delimita con
llaves, esta es la primera que se ejecuta en el programa.

El Flujo de sentencias se refiere a todas las instrucciones que conforman el


programa, es decir, la secuencia de instrucciones que resuelven el problema.
Los conceptos de inclusió n de archivos, variables y funciones creadas por el
programador, se explicará n má s adelante.

Ejemplo. Con este ejemplo mostramos la estructura de una aplicació n C/C+


+ simple.

/*Programa que despliega un mensaje de bienvenida en la pantalla*/


#include<stdio.h>
#include<conio.h>
void main()
{
printf("BIENVENIDO AL CURSO DE C ESTANDAR");
}

Estructura general de un programa en lenguaje Java:

Un programa simple en Java tiene la siguiente estructura:

Donde Nombre de la clase es el nombre de la clase principal que contiene el có digo


fuente que deberá guardarse en la computadora con el sufijo .java (NombreClase.java).
Todas las aplicaciones Java tienen un método main que a su vez, contiene un conjunto
de instrucciones. En Java los conjuntos o bloques de sentencias se indican entre llaves
({ y }).

Ejemplo. Con este ejemplo mostramos la estructura de una aplicació n Java


simple. El nombre de la clase Saludo deberá guardarse como Saludo.java

public class Saludo


{
    public static void main(String[] args)
  {
        System.out.println("Hello World!"); 
    } // Fin del método main
}
// Fin de la clase Saludo

Estructura general de un programa en lenguaje Python:

El lenguaje Python no exige una estructura rígida en los có digos, pero se debe tener
presente que los mó dulos y funciones deben ser programados o cargados antes de ser
invocados en el có digo. La sintaxis se debe tener muy presente y poner especial
atenció n en los espacios o INDENTACION, ya que Python identifica los finales de
bloques con estos espacios.

Existen dos maneras de usar el intérprete de Python: en modo de comandos y en modo


de guión. En modo de comandos, se escriben sentencias en lenguaje Python en
el intérprete de comandos de Python y éste muestra el resultado inmediatamente; en
el modo guió n, alternativamente, se puede escribir el programa en un archivo y usar el
intérprete para ejecutar el contenido de dicho archivo.

Ejemplo. El mismo ejemplo del programa escrito en C/C++ y Java, en


lenguaje Python, para imprimir un mensaje de saludo en la pantalla, se
escribe tan solo:

print (“hola mundo”)

4.2 ELEMENTOS BÁ SICOS DE UN LENGUAJE DE PROGRAMACIÓ N

Estos elementos definen las entidades primitivas para el desarrollo de algoritmos y


elaboració n de cualquier programa de computador. Todos los lenguajes de
programació n tienen en cuenta o manejan un conjunto o todas estas entidades.

4.2.1 Datos y Tipos de datos

Los programas trabajan con datos, los leen o los generan, los procesan y los
transforman en informació n para la toma de decisiones.

Dato: es cualquier objeto de informació n con los que trabajan los programas.

Todos los datos tienen un tipo asociado a ellos. Esto nos sirve para poder conocer con
qué informació n se trabaja.

La asignació n (o mejor, el manejo) de tipos de datos tiene dos objetivos principales:


 Detectar errores de operaciones aritméticas en los programas. Ejemplos: el
resultado de operar variables reales y enteras nos da como resultado un dato
real; el resultado de operar variables reales nos da como resultado un dato
real; el resultado de operar variables enteras nos da como resultado un dato
entero; etc.
 Determinar como ejecutar las operaciones. Ejemplos: en una expresió n
aritmética solo debe utilizarse datos numéricos; y en una condició n se deben
comparar variables del mismo tipo.

Existen dos (2) tipos de datos de datos: los simples (primitivos) y los estructurados
(no primitivos).

Tipos de datos simples

Los tipos de datos simples son:

 Numéricos: incluye los reales y los enteros. Se utilizan en las expresiones


aritméticas y relacionales.
 Ló gicos: también denominados booleanos porque toman uno de dos valores,
verdadero (true) o falso (false).
 Caracter. Está n formados por una letra, digito o caracter especial. Este tipo de
dato no se puede utilizar en una expresió n aritmética.

Por definició n, un caracter es una representació n simbó lica. Los caracteres se


clasifican de la siguiente manera: a) las letras mayú scula y minú sculas; b) los
dígitos, compuestos por los nú meros enteros del cero (0) al nueves (9); y los
caracteres especiales, compuestos por los símbolos que no son ni letra ni
dígitos, por el ejemplo: el asterisco, el punto, los dos puntos, el signo de
interrogació n, el de admiració n, signo de subrayado, el espacio en blanco, las
letras con tilde, las comillas, etc. - ! " # $ % & ' ( ) * +, -. /

Tipos de datos estructurado o compuestos

Son aquellos que no está n considerados por el lenguaje y tendrá n que ser definidos
por el programador, empleando para ello los tipos de datos simples o bá sicos.

Los tipos de datos estructurados son:

 Arreglos (vectores y matrices). Un arreglo es una estructura de datos temporal


compuesta por un conjunto de datos homogéneos que deben ser tratados en
forma similar. Dato temporal significa que solo existen en la memoria
principal (RAM) del computador, una vez termina el programa o se apaga el
computador, estas de destruyen.
 Cadena. También denominada string, es una sucesió n de caracteres, es decir
está n formadas por uno o má s caracteres.
 Registro. Es una unidad completa de informació n. Técnicamente, está
compuestos por varios campos (datos).
 Archivo. Se considera una estructura de datos permanente. Ellos residen en
unidades de almacenamiento secundario como los discos, memorias USB,
cintas; la idea es poder utilizar estos datos en un futuro (es decir, después de
terminar el programa que los procesa, o después de apagar el computador).
 Apuntador. Con estos tipos de datos se puede hacer referencia directa a una
regió n o bloque de memoria, es decir, este tipo de dato contiene una direcció n
de memoria.

4.2.2 Variables

Una variable es un espacio en la memoria de la computadora que permite almacenar


temporalmente un dato/valor durante la ejecució n de un proceso, y su contenido
puede cambiar durante la ejecució n del programa.

Para que un programa pueda reconocer una variable se debe darle un nombre. Por lo
tanto, una variable tiene asociado un nombre y un valor.

Las variables se clasifican en dos grandes categorías, que son: a) por su contenido o
valor: numéricas, ló gicas, cará cter, etc; b) por su uso: de trabajo, contadores y
acumuladores.

Variables de trabajo: reciben el resultado de una expresió n aritmética, relacional o


ló gica y que se usan normalmente dentro de un programa ya sea para obtener otros
resultados o para realizar otros procesos. Por ejemplo, cuando calculamos el valor de
un descuento para poder obtener el valor total a pagar que es el resultado final que
nos piden, en este caso el descuento se considera una variable de trabajo.

Contadores: se utilizan para llevar el control del nú mero de ocasiones en que se


realiza una operació n o se cumple una condició n.

Acumuladores: Es una variable que sirve para llevar la suma acumulativa de una serie
de valores que se van leyendo o calculando progresivamente.

4.2.3 Constantes

Una constante es un dato numérico o alfanumérico que no puede cambiar durante la


ejecució n de un programa. Ejemplos: el valor de PI, el valor de la gravedad, el
porcentaje de un interés que se debe aplicar a una transacció n financiera o comercial,
etc.
A las constantes también se les denomina literales cuando se utilizan directamente en
una instrucció n de asignació n o en una expresió n o como pará metro (en una funció n o
en una instrucció n de salida), Ejemplos de literales:

 X = 1. El uno se considera un literal.


 Y = 3.5*X + W + 7. El 3.5 y el 7 se consideran un literales.
 cout “X * 2 = ” << X << “ *” << 2 << “=” << x*2. Se consideran literales: “X * 2 = ”,
“*”, 2 y el =.

4.2.4 Identificadores

Los identificadores representan los nombres de los objetos de un programa


(constantes, variables, estructuras de datos, registros y sus campos, procedimientos,
funciones y etiquetas, entre otros).

Un identificador es una secuencia de caracteres que sirve para identificar una posició n
de memoria que nos permite acceder a su contenido. En pocas palabras, un
identificador es el nombre que le damos a una posició n/direcció n de memoria. En este
sentido, en una posició n de memoria podemos guardar un valor o dato.

Cada lenguaje de programació n utiliza reglas que permiten al programador conocer


los caracteres que son permitidos y la cantidad mínima y má xima que se deben
utilizar en un identificador. Estas reglas que hay que seguir en un identificador, son:

 Nú mero má ximo y mínimo de caracteres a utilizar.


 Caracteres que son permitidos.
 Caracteres que no son permitidos.

4.2.5 Operadores

Los operadores son símbolos que se utilizan para definir las operaciones que el
computador puede realizar con los datos.

Los operadores son símbolos que relacionan de forma diferente los valores de una o
má s variables y/o constante. Los valores sobre los que actú an los operadores se
denominan operandos.

Tipos de operadores:

 Aritméticos. Estos permiten la realizació n de operaciones matemá ticas (suma,


resta, multiplicació n, divisió n y mó dulo) con los valores de las variables y las
constantes.
 Relacionales. Se utilizan en problemas donde se hace necesario comparar
valores para tomar decisiones.
 Lógicos. Se usan con valores ló gicos (verdadero y falso). También está n
pensados para construir instrucciones condicionales compuestas.
 Asignación. Se utilizan para la inicializació n de las variables y para guardar
resultados de operaciones aritméticas, relacionales y ló gicas.
 Concatenación. Se utiliza para unir datos alfanuméricos.

Para manejar estos operadores, cada uno de los lenguajes de programació n debe
definir los siguientes requerimientos:

 Utilizar símbolos diferentes para hacer referencia a cada operador en


particular. Esto evita la ambigü edad.
 Establecer la prioridad o precedencia entre ellos. Con esto se puede saber qué
operadores se ejecutan primero en una expresió n. Esto evita obtener
resultados erró neos.

La mayoría de los lenguajes de programació n tienen cinco operadores aritméticos


básicos cuyo significado se muestra en la tabla siguiente.

Operado
Nombre Ejemplo Algunos lenguajes de programació n tienen otros
r
operadores como el de divisió n entera (DIV),
+ Suma 7=3+4 potenciació n (^ ó **), entre otros.
Diferenci
- -1=3-4
a
* Producto 12=3*4
2.8=20/
/ Cociente Casi todos los lenguajes de programació n tienen
7
los siguientes operadores relacionales cuyo
% o MOD Mó dulo 6=20%7
significado se muestra en la tabla siguiente.

Operador Nombre ejemplo Significado


< menor que a<b a es menor que b
> mayor que a>b a es mayor que b
== igual a a==b a es igual a b
!= no igual a a!=b a no es igual a b
<= menor que o igual a a<=5 a es menor que o igual a b
>= mayor que o igual a a>=b a es menor que o igual a b

Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el
resultado de la comparació n es correcto la expresió n considerada es verdadera, en
caso contrario es falsa. Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se
representa por el valor true del tipo bá sico boolean, en cambio, 8<4 (ocho menor que
cuatro) es falsa, false. En la primera columna de la tabla anterior, se dan los símbolos
de los operadores relacionales, el la segunda, el nombre de dichos operadores, y a
continuació n su significado mediante un ejemplo.

Se debe tener especial cuidado en no confundir el operador asignació n con el


operador relacional igual a. Las asignaciones se realizan con el símbolo =, las
comparaciones con ==.

Los lenguajes de programació n también manejan operadores lógicos. Estos se


utilizan en los programas para implementar instrucciones condicionales compuestas.

Mientras que los operadores aritméticos se usan principalmente con nú meros, los


operadores ló gicos está n pensados para usarse con valores ló gicos (verdadero y
falso). Hay solo tres operadores ló gicos: y (AND), o (OR) y no (NOT).

Los operadores ló gicos son:

 AND (el resultado es verdadero si ambas expresiones son verdaderas)


 OR (el resultado es verdadero si alguna expresió n es verdadera)
 NOT (el resultado invierte la condició n de la expresió n)

AND y OR trabajan con dos operandos y retornan un valor ló gico basadas en las
denominadas tablas de verdad. El operador NOT actú a sobre un operando. Estas
tablas de verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo:
"si hace sol Y tengo tiempo, iré a la playa", "si NO hace sol, me quedaré en casa", "si
llueve O hace viento, iré al cine". Las tablas de verdad de los operadores AND, OR y
NOT se muestran en las tablas siguientes

El operador ló gico AND

X y resultado
True true true
True false false
False true false
False false false

El operador ló gico OR

X y resultado
True true true
True false true
false true true
false false false

El operador ló gico NOT

x Resultado
true False
false True

Existen lenguajes de programació n que también tienen en cuentan los siguientes


conceptos:

 La asignació n mú ltiple. Por ejemplo, inicializar en la misma línea varias


variables, así: c=a=b=321.
 Los operadores unarios. Estos actú an sobre un ú nico operando, por ejemplo:
o ++ Incremento. i++ equivale a i=i+1, que significa añ adir 1 a i . El resultado
se guarda en i.
o -- Decremento. I-- equivale a i=i-1, que significa quitar 1 a i. El resultado se
guarda en i.
o La sentencia j=i++ equivale a incrementar i en 1 y el resultado lo guarda en
j.
o La sentencia j=i-- equivale a decrementar (quitar 1 a i) i en 1 y el resultado
lo guarda en j.

4.2.6 Expresiones

El computador utiliza los operadores y las expresiones para poder ejecutar las
operaciones sobre los datos.

Una expresión es un conjunto de variables, constantes y literales de tipos


compatibles entre sí, estos elementos está n combinados mediante operadores vá lidos;
la expresió n má s simple está formada por un ú nico elemento (variable, literal o
constante) sin ningú n operador.
 
Toda expresió n tiene asociada un tipo que corresponde con el tipo del valor que
devuelve la expresió n cuando se evalú a, por lo que habrá tantos tipos de expresiones
como tipos de datos. Habrá expresiones numéricas y ló gicas.

A continuació n se muestran algunas expresiones típicas (aritméticas, relacionales y


ló gicas, alfanuméricas):

Expresiones aritméticas

Una expresió n aritmética es una combinació n de constantes y/o variables, unidas o


relacionadas con operadores aritméticos.

SIGNO SIGNIFICADO
+ Suma
- Resta
* Multiplicación
/ División
^ Potenciación
() Agrupa operaciones
 
El orden  de prioridad  en la evolución  de los operadores  aritméticos es el
siguiente:
 
1)    Paréntesis
2)    Potenciación
3)    Multiplicación y División
4)    Suma y Resta
Ejemplo: Si  a = 9; b =2;  c =5;  d = 3
                                  
Expresión Aritmética Resultado
a+b*c 19
(a+b)*c 55
((a + c – b) * b) / (c + d ) 3
(c + d) ^ b 64
 
Expresiones relacionales

Una expresió n relacional es una combinació n de constantes y/o variables, unidas o


relacionadas con operadores relacionales. Se utiliza para relacionar expresiones que
al ser evaluadas producen un valor booleano: verdadero o falso.

SIGNO SIGNIFICADO
< Menor que
> Mayor que
= Igual a
<= Menor o igual que
>= Mayor o igual que
<> Distinto de

No existen prioridades en el orden de evaluación de los operadores relacionales.


Si es necesario establecer alguna prioridad en el orden de evaluación, se deben
utilizar los paréntesis.
Ejemplo: si a = 9;  b = 2; c = 5;  d = 3

Expresión relacional Resultado


c  <  a Verdadero
a  >= c Verdadero
a –  b   >   d Falso
d  <=  c –  b Verdadero
d  <  c -  b Falso
 
También se puede comparar datos alfanuméricos (estos datos también son tipo
cadena o string). En este caso se comparan uno a uno los caracteres,
comenzando desde la izquierda. Si los datos tienen diferentes longitudes, pero son
exactamente iguales hasta el último carácter del más corto, entonces se considera
que el más largo  es el mayor. El único caso en que  los datos son iguales, es
cuando tienen la misma longitud  y los mismos caracteres, en el mismo orden. Las
letras minúsculas son mayores que las mayúsculas. Tenga en cuenta que el
espacio en blanco también es un carácter.
Ejemplo:                  

Expresión relacional Resultado


“E”   <    “F” Verdadero
“e”  <    “F” Falso
“NADAR”  =   “NADAR” Verdadero
“2”   <     “12” Falso
“B” >   “ASTRO” Verdadero
 
Expresiones lógicas

Una expresió n ló gica es una combinació n de constantes y/o variables y/o expresiones
matemá ticas o relacionales, unidas o relacionadas con operadores lógicos.

Permiten      realizar     operaciones    con    expresiones relacionales, efectuando


combinació n de condiciones que generan  un resultado booleano: verdadero o falso.

SIGNOS SIGNIFICADO
AND Producto ló gico (y)
OR Suma ló gica  (0)
NOT Negació n  (NO)
 

Orden de prioridad en la evaluació n de los operadores ló gicos:

1)    NOT
2)    AND
3)    OR
 
AND: es el operador ló gico de conjunció n. La expresió n que se evalú a  de có mo
resultado verdadero si y solo si todos las condiciones  son verdaderas. Dicho de otra
manera, es  suficiente que unas de las  condiciones sea falsa para que el resultado sea
falso.

Condició n 1 Condició n  2 Resultado


A B A   AND  B
Falso Falso Falso
Falso Verdadero Falso
Verdadero Falso Falso
Verdadero Verdadero Varadero
 

Ejemplo: si  a = 9;   b = 2;  c =5;   d = 3

Expresión Lógica Resultado


(a > b) AND (b<= c)
Verdadero
{V}         {V}
( c > d ) AND (c = a)
Falso
{V}     {F}
b = ( c – d ) AND ( a + b) > = ( c * d )
Verdadero
{V}    {V}
(c = 5) AND (c >b) AND (a <=  d)
Falso
{F}        {F}           {F}
(C = 5) AND (b < c) AND (a >= d)
Verdadero
{V}          {V}         {V}

OR: es el operador ló gico de disyunció n. La expresió n que se evalú a da como


resultado falso sí y solo sí todas las condiciones son falsas. Dicho de otra manera, es
suficiente que una de las condiciones sea verdadera para que el resultado sea
verdadero.

Condición1 Condición 2 Resultado


A B A OR B
Falso Falso Falso
Falso Verdadero Verdadero
Verdadero Falso Verdadero
Verdadero Verdadero Verdadero
 

            Ejemplo: si  a = 9;   b = 2;  c =5;   d = 3

Expresión Lógica Resultado


(a > b) OR (b<= c)
Verdadero
{V}        {V}
( C > d ) OR  (c = a)
Verdadero
{V}     {F}
b = ( c – d ) OR ( a + b) > = ( c * d )
Verdadero
{V}               {V}
(c > 5) OR  (c >b) OR  (a <=  d)
Verdadero
{F}        {V}          {F}
(C <> 5) OR   (b  < c) OR   (a >= d)
{F}         {V}             {V} Verdadero

                       

NOT: es  el operador ló gico de negació n. Afecta a una sola expresió n, a cambio su


estado ló gico: si era falso se convierte en verdadero y viceversa.

Condición 1 Resultado
A Not A

FALSO VERDADERO

VERDADERO FALSO

  EJEMPLOS: A =9, B: 2, C: 5, D: 3

Expresión  lógica Resultado


NOT (A < B)
VERDADERO
{F}
NOT   (( B  + D) < A)
FALSO
{V}
NOT ( C  = D )
VERDADERO
{F}
 

Expresiones alfanuméricas
Una expresió n alfanumérica se utilizan para unir datos alfanuméricos. Recuerde que
los datos alfanuméricos no pueden utilizarse en expresiones aritméticas

OPERADOR SIGNICADO

+ CONCATENACION

            EJEMPLOS: SI NOMBRE = “JUAN¨”  Y APELLIDO = “PEREZ”

EXPRESION ALFANUMERICA RESULTADO


NOMBRE + APELLIDO “JUANPEREZ”
“NOMBRE: +  “ ”  + APELLIDO “JUAN PEREZ”
“5 “  + “17” “517”

Como se pudo observar, para asignar un valor a una variable o constante


alfanumérica, dicho valor debe estar encerrado entre comilla.

En síntesis,

a) Estos cuatro (4) tipos de expresiones se pueden combinar para establecer las
condiciones y/o comparaciones en las en las sentencias condicionales.
b) Orden de evaluación (Reglas de prioridad). En el momento de establecer un
condició n combinando varios o todos los tipos de expresiones, se debe seguir y
respetar el siguiente orden de precedencia de los operadores.

1º.    Paréntesis (comenzando por lo mas internos)


2º.    Potencias
3º.    Productos y divisiones
4º.    Sumas y restas
5º.    Concatenació n
6º.    Relacionales
7º.    NOT
8º.    AND
9º.    OR

Ejercicios: Evalué las siguientes expresiones aritméticas, ló gicas y relacionales.


Describa paso a paso como se llega al resultado final en cada ejercicio.

1) (45 <= 7) OR (NOT (5>=7))

2) 2+8-1 mod 1
3) 3*2^5 mod 1
4) 7 mod (5 mod 3)
5) 7 mod 5 mod 3
6) NOT ((5 / 2 * 3 – 1) = 4 div 2 mod 2 OR (10 < = 3 + 3 - 2) AND (3 / 4) ^2 * (2 +
10 mod 3))
7) (3*2^5 mod 1 + 8*(3-5) < (2+8-1 mod 1)
8) A es verdadero; A OR (3+5*8) < 3 AND ((-6/3 div 4)*2 < 2)
9) B = -12; (-B*2 <> 8*3 mod 4) AND (“A”> “B”)

4.2.7 Comentarios

El có digo fuente de un programa no solo puede contener instrucciones propias del


programa. También puede incluir comentarios, estos son ignorados por los
compiladores e intérpretes, son notas que los programadores utilizan para poder
documentarlo y comprenderlo mejor. Por ejemplo, se pueden utilizar comentarios
para explicar un bloque de instrucciones, el uso de una variable o funció n en
particular, también se utilizan para la integració n con sistemas de control de
versiones, etc. Es decir, Los comentarios son añ adidos usualmente con el propó sito de
hacer el có digo fuente má s fá cil de entender con vistas a su mantenimiento o
reutilizació n.

Los comentarios pueden ser de dos tipos: de una sola línea o multi-línea y cada
lenguaje de programació n utilizan símbolos propios para poder expresarlos.

Los comentarios de una sola línea puede abarcar toda la línea o escribirse después
que termina una instrucció n, pero nunca abarcará má s de una línea, es decir, siempre
terminara en la misma línea donde empezó .

Los comentarios multi-línea pueden abarcar una o má s. Estos se delimitan con


caracteres especiales desde el comienzo hasta donde termina. Como se podrá
apreciar, este tipo de comentario lo utiliza el programador cuando considera
necesario ser má s explicativo.

Por ejemplo,

a) en lenguajes Java y C++, es igual…


 Los comentarios de una sola línea empiezan con los caracteres //
 Los comentarios multi-línea empiezan con los caracteres /* se escribe el
comentario y terminan con los caracteres */

b) en lenguaje Python…
 Los comentarios de una sola línea empiezan con el caracter #
 Los comentarios multi-línea empiezan con los caracteres """ se escribe el
comentario y terminan con los caracteres """

c) En lenguaje Ensamblador…
 Los comentarios son de una sola línea y empiezan con el caracter punto y
coma (;).

d) en lenguaje Ruby…

 Los comentarios de una sola línea empiezan con el caracter #


 Los comentarios multi-línea empiezan con la cadena =begin se escribe el
comentario y terminan con los caracteres =end

4.3 INSTRUCCIONES BÁ SICAS DE UN LENGUAJE DE PROGRAMACIÓ N

De acuerdo con el teorema del programa estructurado, todo programa puede


escribirse utilizando ú nicamente las tres instrucciones de control siguientes:

 Secuencia: Sucesió n simple de dos o má s operaciones. Secuencia es


simplemente la formalizació n de la idea de que las instrucciones de un
programa son ejecutadas en el mismo orden en que ellas aparecen en el
programa. Forman parte de esta categoría: las sentencias de asignación, de
captura e impresión de datos.
 Instrucción condicional o de Selección: bifurcació n condicional de una o mas
operaciones. Es la escogencia entre dos acciones tomando la decisió n en base al
resultado de evaluar un predicado. En esta categoría se encuentra la sentencia
sí…entonces...
 Iteración (bucle de instrucciones) con condició n o predicado al principio o al
final: Repetició n de una operació n mientras se cumple una condició n. Esta
estructura ló gica es utilizada para que se repita la ejecució n de un conjunto de
instrucciones mientras se cumpla una condició n o predicado. Forman parte de
esta categoría: las sentencias while (mientras que… haga…) y for (hacer para…)

Estos tres tipos de estructuras ló gicas de control pueden ser combinados para
producir programas que manejen cualquier tarea de procesamiento de informació n. El
resto de repertorio de estructuras de control que tienen los lenguajes de
programació n, pueden ser construidas mediante estas tres bá sicas citadas.

A lo largo de esta lecció n se presentará n las distintas estructuras de control, la forma


de representarlas en la notació n algorítmica y las correspondientes sentencias Python
para poder utilizarlas en nuestros programas.

4.3.1 Estructura secuencial

La estructura secuencial es la má s sencilla de todas,


simplemente indica al procesador que debe ejecutar de
forma consecutiva una lista de acciones (que pueden ser, a
su vez, otras estructuras de control); para construir una secuencia de acciones basta
con escribir cada acció n en una línea diferente.

Ejemplo: Elabore un algoritmo para convertir temperaturas en grados Fahrenheit a


Celsius.

Algoritmo en Pseudocódigo Programa Python


leer GradosFahrenheit GradosFahrenheit = int(input("Dígame la
GradosCelsius = ((GradosFahrenheit – 32)*5)/9 temperatura en Grados Fahrenheit: "))
Imprimir GradosCelsius GradosCelsius = ((GradosFahrenheit – 32)*5)/9
print(“Equivale a ”, GradosCelsius," Grados
Celsius ")

Existe una forma alternativa de expresar una estructura secuencial escribiendo varias
acciones en la misma línea pero utilizando el punto y coma, ;, como separador entre
una acció n y la que le sigue. Sin embargo, esta ú ltima notació n es no es aconsejable
puesto que puede llegar a hacer el có digo bastante difícil de leer.

Por ú ltimo, es necesario señ alar un aspecto importante de la composició n secuencial y


es que no es conmutativa. Esto quiere decir que no es lo mismo primero imprimir los
grados Celsius y después leer los grados Fahrenheit; observe que este ú ltimo se
necesita para calcular el primero.

4.3.2 Estructura alternativa (condicional a de decisión)

La estructura alternativa permite bifurcar el “flujo” del programa en funció n de una


expresió n ló gica; disponemos de tres estructuras alternativas diferentes: alternativa
simple, alternativa doble y alternativa mú ltiple.

La estructura alternativa simple:

Esta estructura permite evaluar una expresió n


ló gica y en funció n de dicha evaluació n ejecutar
una acció n (o composició n de acciones) o no
ejecutarla; también se la suele denominar SI-
ENTONCES. A continuació n se muestra la
notació n algorítmica y en Python para la
estructura alternativa simple.
En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es
positivo no nulo:

Algoritmo en Pseudocódigo Programa Python


Leer radio radio = int(input("Dígame el valor del radio en
si radio>0 entonces radianes: "))
if radio > 0:
longitud=2*3.1416* radio
longitud = 2*3.1416*radio
imprimir longitud print(“La longitud del circulo es: ”, longitud)
fin_si

Estructura alternativa doble:

La estructura alternativa doble es similar a la anterior


con la salvedad de que en este tipo de estructura se
indican acciones no só lo cuando la condició n es
“verdadera” sino también para cuando es “falsa”; es
decir, en caso de la expresió n ló gica evaluada sea cierta
se ejecutan una acció n o grupo de acciones y en caso de
que sea falsa se ejecuta un grupo diferente de acciones.
La sintaxis en la notació n algorítmica y en Python son
las que se muestran a continuació n:

En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es


positivo no nulo y, en caso contrario, se proporciona un mensaje de error:

Algoritmo en Pseudocódigo Programa Python


Leer radio radio = int(input("Dígame el valor del radio en
si radio>0 entonces radianes: "))
longitud=2*3.1416* radio if radio > 0:
imprimir longitud longitud = 2*3.1416*radio
sino print(“La longitud del circulo es: ”, longitud)
imprimir “Error: el radio debe ser mayor que cero” else:
fin_si print(“Error: el radio debe ser mayor que cero”)

Estructura multialternativa:

Esta estructura evalú a una


expresió n que pueda tomar n
valores (enteros, caracteres y ló gicos
pero nunca reales) y ejecuta una
acció n o grupo de acciones diferente en funció n del valor tomado por la expresió n
selectora.

La sintaxis de esta estructura es la siguiente:

En el siguiente ejemplo dado el nú mero correspondiente de un mes del añ o, se


proporciona como salida el nú mero de días de un mes dado:

Algoritmo en Pseudocódigo Programa Python


Leer mes mes = int(input("¿Cuá ntos añ os tiene? "))
segun mes if mes == 1 or mes == 3 or mes == 5 or mes == 7 or mes == 9 or mes == 11:
caso 1, 3, 5, 7, 9, 11: print("31 dias")
escribir “31 días” elif mes == 4 or mes == 6 or mes == 8 or mes == 10 or mes == 12:
print("30 dias")
caso 4, 6, 8, 10, 12:
elif mes == 2:
escribir “30 días” print("28 dias ")
caso 2: else:
escribir “28 días” print("ERROR: mes incorrecto ")
otro caso:
escribir “ERROR: mes incorrecto”
fin segun

Obsérvese que es posible que un caso conste de mú ltiples valores.

4.3.3 Estructura repetitiva (bucles o ciclos)

La estructura repetitiva o iterativa permite, como su propio nombre indica, repetir


una acció n (o grupo de acciones); dicha repetició n puede llevarse a cabo un nú mero
prefijado de veces o depender de la evaluació n de una expresió n ló gica. Existen tres
tipos de estructuras repetitivas: desde-hasta, mientras y repetir-hasta.

Estructura desde-hasta (hacer para o for)

Esta estructura permite repetir la ejecució n de una


acció n o de un grupo de acciones un nú mero
determinado de veces. Usa una variable contadora que
va desde un valor inicial hasta un valor final, realizando
una iteració n cada vez y modificando el contador segú n lo
indicado en paso; la sintaxis es la siguiente:

El funcionamiento de la estructura es el siguiente:

 En primer lugar, se asigna a la variable índice el


valor de inicio.
 El bucle se ejecuta mientras índice no alcance el valor final.
 En cada iteració n el valor de índice es incrementado segú n el paso indicado y
se ejecuta la acció n o grupo de acciones encerrados en el bucle.
 En caso de que no se indique ningú n paso el que se empleará será +1.

En términos pseudocó digo tendríamos esto: 

desde variable = valor_inicial hasta valor_final, [incremento|decremento] hacer: 


<sentencias_ciclo: grupo de acciones encerradas en el bucle> 
fin-desde 

O lo que es lo mismo:

para variable = valor_inicial hasta valor_final, [incremento|decremento] hacer: 


<sentencias_ciclo: grupo de acciones encerradas en el bucle> 
fin-para 

Cuando se está dentro del ciclo (entre el para y fin-para), cada vez que se llega (de
arriba hacia abajo) al fin-para, el programa salta hasta el para, y el mismo incrementa
o decrementa la variable contadora, y ejecuta las acciones del ciclo mientras no
sobrepase el valor final; de lo contrario salta (hacia abajo) a ejecutar las instrucciones
que está n debajo del fin-para.

Ejemplo No. 1: 


Algoritmo en Pseudocódigo Programa Python
suma = 0 suma = 0
desde i = 1 hasta 10 hacer:  for i in range(10):
suma = suma + i  suma = suma + i
fin desde print(suma)
Escribir suma

Ejemplo No. 2:
Algoritmo en Pseudocódigo Programa Python
producto = 1 #usando decremento en el ciclo for
para j = 5000 hasta 100, 10 hacer:  (5000, hasta 100, decremento 10)
producto = producto * j  producto =1
fin para for j in range(5000,99,-10):
producto = producto * j
print "j = ", j

En el primer ejemplo el FOR es ascendente siendo 1 el incremento. Por tanto el valor


de i será 1, 2, 3... 10. El segundo ejemplo es descendente y el decremento se ha
establecido en 10. En este caso j = 5000, 4990, 4980, .... 100. 

Estructura mientras que (hacer mientras o while)

El nú mero de repeticiones lo determina la


condició n escrita en la cabecera de la sentencia.
La acció n solo se ejecuta si se cumple la
condició n, es decir, si esta se evalú a como
verdadera; en caso contrario, se continú a en la
acció n situada fuera del bucle tras el fin mientras.

La condició n tiene una variable asociada. Esta


variable debe estar inicializada en un valor o
tener algú n valor asociado; ademá s dentro del
conjunto de acciones del ciclo, debe haber por lo
menos una donde se actualice dicha variable, de
lo contrario la condició n siempre será verdadera
y nunca se saldrá del ciclo (a esto se le llama ciclo
infinito).

Otro aspecto muy importante de esta estructura de control es que si la expresió n


ló gica es inicialmente falsa el bucle no se ejecuta ni una sola vez; es decir, la estructura
mientras supone que el bucle iterará 0 ó má s veces.

Sintaxis en seudocó digo:

Inicializar variable asociada a la condició n


mientras <Condició n> hacer // <Condició n es una expresió n ló gica
<Acció n> // conjunto de acciones a realizar repetidamente
fin mientras
... // el algoritmo continua aquí cuando sale del bucle

Ejemplo: Algoritmo que muestra los nú meros del 1 al 100 utilizando la sentencia
mientras.

Algoritmo en Pseudocódigo Programa Python


i=1 i=1
mientras i <= 100 hacer while i <= 100:
Escribir(i) print(i)
i=i+1 i +=1
fin mientras print("Final")

for i in range(2,101,2):
print(i)
print("Final")
Estructura repetir-hasta (repeat … until)

Esta estructura repite una acció n o grupo de acciones


hasta que una expresió n ló gica sea cierta; la sintaxis en
la notació n algorítmica es la siguiente (no existe
equivalente en FORTRAN y en otros lenguajes de
programació n pero sí en otros lenguajes de
programació n):

repetir
acció n // conjunto de acciones a ejecutar dentro del bucle
hasta expresió n ló gica

Un aspecto muy importante de la presente estructura de control es que la expresió n


ló gica no se evalú a hasta el final con lo cual el bucle se ejecuta al menos una vez por
contraposició n a la estructura anterior que podía no ejecutarse ninguna.

Dentro del ciclo también se debe actualice la variable asociada a la condició n, de lo


contrario la condició n siempre será verdadera y nunca se saldrá del ciclo (a esto se le
llama ciclo infinito).

Ejemplo: Algoritmo que muestra los nú meros del 1 al 100 utilizando la sentencia
repetir.

Algoritmo en Pseudocódigo Programa Python


i=1
repetir
Escribir i
i=i+1
hasta que i > 100

Bucles infinitos

Si la condició n del bucle se cumple siempre, el bucle no terminará nunca de ejecutarse


y tendremos lo que se denomina un bucle infinito.

Los bucles infinitos deben evitarse pues significan perder el control del programa.
Cada lenguaje de programació n utiliza una combinació n de teclas para interrumpir la
ejecució n de un bucle infinito: por ejemplo, en Python para interrumpir un bucle
infinito, hay que pulsar la combinació n de teclas Ctrl+C. 

Nadie está exento de cometer un error, es fá cil programar involuntariamente un bucle


infinito, por lo que es inevitable hacerlo de vez en cuando, sobre todo cuando se está
aprendiendo a programar.

A continuació n se muestran dos (2) ejemplos de bucles infinitos:

Ejemplo No. 1. El programador ha olvidado modificar la variable de control dentro del


bucle y el programa imprimirá nú meros 1 indefinidamente:

i=1
while i <= 10: Imprime infinitamente (nunca sale del ciclo)
print(i, "", end=") 1 1 1 1 1 1 1 1 ...

Ejemplo No. 2. El programador ha escrito una condició n que se cumplirá siempre y el


programa imprimirá nú meros consecutivos indefinidamente:

i=1
while i > 0:
print(i, "", end="") Imprime infinitamente (nunca sale del ciclo)
i += 1 1 2 3 4 5 6 7 8 9 10 11 ...

4.4 USO DE VARIABLES CONTADORES, ACUMULADORES E INTERRUPTORES

En muchos programas se necesitan variables que cuenten cuá ntas veces ha ocurrido
algo (contadores) o que acumulen valores (acumuladores).

En caso de necesitar las variables contadores y acumuladores, estas está n presenten


en programas que utilicen sentencias iterativas; mientras que las variables
interruptores (o switches), no necesariamente se utilizan con sentencias iterativas.
Las variables interruptores (o switches), también se pueden utilizar para controlar
ciclos en donde es desconocido el nú mero de veces que se repite un proceso. Un caso
muy comú n de uso de estos ciclos se presenta cuando el programa interactú a
directamente con el usuario, para que este decida sí se continua repitiendo o no con
algú n proceso. Las sentencias iterativas adecuadas son el mientras que (while) o el
repita hasta (repeat until). Por obvias razones, la sentencia for no sirve para controlar
ciclos con variables interruptores.
Las situaciones pueden ser muy diversas para necesitar usar estas variables, a
continuació n se muestran varios ejemplos para mostrar sus usos.
Variable Contador

Se entiende por contador una variable que lleva la cuenta del nú mero de veces que se
ha cumplido una condició n. El ejemplo siguiente es un ejemplo de programa con
contador.

Ejemplo: Elaborar un algoritmo que nos averigü e e imprimir cuá ntos nú meros
mú ltiplos de 7 hay en los 1000 primeros nú meros enteros positivos.

print("Comienzo")
cuenta = 0
for i in range(1, 1001):
if i % 7 == 0:
cuenta = cuenta + 1
print("Desde 1 hasta 1000 hay", cuenta, "mú ltiplos de 7")

Detalles importantes:

 En cada iteració n, el programa comprueba si i es mú ltiplo de 7.


 El contador se modifica só lo si la variable de control i es mú ltiplo de 7.
 El contador va aumentando de uno en uno.
 Antes del bucle se debe dar un valor inicial al contador (en este caso, 0)

Variable Acumulador

Se entiende por acumulador una variable que acumula el resultado de una operació n.
El ejemplo siguiente es un ejemplo de programa con contador El ejemplo siguiente es
un ejemplo de programa con contador.

Ejemplo: Elaborar un algoritmo que nos imprima la suma de los primeros 4 nú meros
enteros positivos.

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
suma = suma + i
print("La suma de los nú meros de 1 a 4 es", suma)

Detalles importantes:

 El acumulador se modifica en cada iteració n del bucle. (en este caso, el valor de
i se añ ade al acumulador suma).
 Antes del bucle se debe dar un valor inicial al acumulador (en este caso, 0)

Variable Interruptor o switch

También se les denomina conmutadores, indicador, centinelas y bandera (flag). Se


llama interruptor a una variable que ú nicamente toma dos valores (no
necesariamente booleano), los cuales se identifican con “abierto / cerrado”,
“verdadero / falso”, “on / off”, “start / stop”, “vá lido / no vá lido”, 10/20, “10/20”, etc.

El interruptor se usa para el control de flujo de los programas y para la toma de


decisiones. Por su naturaleza bipolar se asemejan a las variables booleanas,
ocurriendo muchas veces que el interruptor es una variable booleana. Sin embargo, ni
todos los interruptores son variables booleanas ni todas las variables booleanas son
interruptores. Vea los siguientes ejemplos de uso de variables.

Nombre de Valores Control


Función Booleana Interruptor
variable posibles flujo

Si continuar vale
Verdadero verdadero se repite
Continuar Sí Sí Sí
Falso un bucle y si vale
falso se sale de él

Si Control vale –100


- 100 se repite el bucle y si
Control No Sí Sí
+ 100 vale +100 se sale de
él

Almacena la
Verdadero
Opinion contestació n a una Sí No No
Falso
pregunta de un test

Segú n Valor valga –7


-7
ó 7 da lugar a la
Valor 0 No No Sí
ejecució n de distintas
7
ó rdenes
Un interruptor normalmente se puede sustituir por una evaluació n de una variable.
Sin embargo, son muy usados porque evitan tener que evaluar expresiones complejas
y porque aportan claridad para la escritura y lectura de programas.

Ejemplo: ESTADÍSTICAS DE LA POBLACIÓ N APTA PARA VOTAR EN UN PAIS

Elabore un programa de computador que lea los siguientes datos para un nú mero
desconocido de personas:

 Edad de la persona
 Sexo (1 si es masculino, 2 si es femenino)
 Estado civil (1 si es soltero, 2 si es casado)

Se desea saber:

 El nú mero de hombres que pueden votar.


 El nú mero de mujeres que pueden votar.
 El nú mero total de personas solteras que pueden votar.
 El nú mero total de personas casadas que pueden votar.
 El nú mero total de personas que pueden votar.
 El nú mero total de personas que no pueden votar.

Nota: Solo pueden votar los que tengan 18 añ os cumplidos ó má s.

Ejemplo: REGISTRO DE VENTAS DIARIAS EN UNA SUPERTIENDA

Elabore un programa de computador que permita registrar (capturar) los datos


correspondientes a cada una de ventas que se realizan en un día en una Supertienda
del barrio o conjunto residencial donde usted vive.

El nú mero de ventas diarias es desconocido. Esto es obvio porque ninguna tienda sabe
cuantas ventas va a realizar en un día cualquiera.

Para cada venta se debe registrar los siguientes datos:

 Có digo del artículo


 Costo unitario
 Cantidad vendida
 Tipo de artículo (1. Víveres; 2. Frutas y verduras; 3. Carnes y peces)

Al culminar el día de trabajo en la Supertienda, el dueñ o desea que el programa le


genere un reporte impreso con la siguiente informació n:
 La cantidad total de cada tipo de artículo vendido en el día.
 La cantidad total vendida en el día en la Supertienda
 ¿Cuá ntas ventas se hicieron durante el día en la Supertienda?
"1. Desarrolle un Algoritmo donde se calcule la velocidad de lanzamiento necesaria
para que un Angry Bird lanzado desde el piso con una inclinació n de 45° sobrepase un
objetivo dispuesto a 503 metros de distancia, tomando en cuenta que se rige mediante
el cá lculo del movimiento parabó lico. Tenga en cuenta lo siguiente: ● El cá lculo de la
velocidad no debe hacerse por despeje de formula. ● Usted debe probar con distintos
valores de velocidad hasta: ○ Lograr sobrepasar el objetivo de 503 metros ○ Lograr el
objetivo después de un X nú mero de intentos ○ o continuar probando distintos
valores de velocidad hasta que ya no quiera seguir con las pruebas"
import math

distancia_objeto=503
distancia_alcanzada=0
gravedad=9.8
angulo=45
velocidad=0
velocidad_inicial=0
velocidad_final=0
continuar="s"
while(continuar=="s"):
velocidad=float(input("digite velocidad"))
distancia_alcanzada=( ( velocidad* velocidad ) / gravedad ) * math.sin( 2 *
math.radians(angulo) )
print ("la distancia alcanzada fue de: ",distancia_alcanzada)
if distancia_alcanzada >= distancia_objeto:
print ("Se sobrepasó el objetivo, con una velocidad de ",velocidad)
else:
print ("NO se sobrepasó el objetivo")
continuar=input("desea continuar? s/n:")

También podría gustarte