Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación - IQ
Unidad 1 - Antecedentes y algoritmos.
Competencia específica a desarrollar:
Emplear las tecnologías, ambientes operativos, diagramación y pruebas de escritorio en la solución de
problemas, mediante las tecnologías de información.
M@lonso - 2
| Programación - IQ | Unidad 1 |
M@lonso - 3
| Programación - IQ | Unidad 1 |
1.2.3 - Unix.
El inicio del desarrollo de este sistema operativo (que se cree es uno de los más influyentes en la historia
de la computación) fue muy particular, pues nadie habría predicho el éxito de UNIX después de su primera
aparición.
A finales de los años sesenta, en el Instituto Tecnológico de Massachusetts, los laboratorios Bell de AT&T
y General Electric trabajaban en un sistema operativo experimental llamado Multics (Multiplexed
Information and Computing System), desarrollado para ejecutarse en una computadora central (mainframe)
modelo GE-645. El objetivo del proyecto era desarrollar un sistema operativo interactivo que contase con
muchas innovaciones, entre ellas mejoras en las políticas de seguridad.
Ken Thompson escribió nuevamente el programa, con ayuda de Dennis Ritchie, en lenguaje ensamblador,
para que se ejecutara en una computadora DEC PDP-7.
Thompson y Ritchie lideraron un grupo de programadores, entre ellos a Rudd Canaday, en los laboratorios
Bell, para desarrollar tanto el sistema de archivos como el sistema operativo multitarea en sí. A lo anterior,
agregaron un intérprete de órdenes (o intérprete de comandos) y un pequeño conjunto de programas. El
proyecto fue bautizado UNICS, como acrónimo de Uniplexed Information and Computing System, pues
sólo prestaba servicios a dos usuarios. La autoría de esta sigla se le atribuye a Brian Kernighan, como un
chiste o hack relativo a Multics. Dada la popularidad que tuvo un juego de palabras que consideraba a
UNICS un sistema MULTICS castrado (pues eunuchs, en inglés, es un homófono de UNICS), se cambió el
nombre a UNIX, dando origen al legado que llega hasta nuestros días.
En 1973 se tomó la decisión de escribir nuevamente UNIX, pero esta vez en el lenguaje de programación
C. Este cambio significaba que UNIX podría ser fácilmente modificado para funcionar en otras
computadoras (de esta manera, se volvía portátil) y así otras variaciones podían ser desarrolladas por otros
programadores. Ahora, el código era más conciso y compacto, lo que se tradujo en un aumento en la
velocidad de desarrollo de UNIX. AT&T puso a UNIX a disposición de universidades y compañías.
1.3.4 - Linux.
Linux es un sistema operativo y un núcleo. Es uno de los paradigmas del desarrollo de software libre (y de
código abierto), donde el código fuente está disponible públicamente y cualquier persona puede libremente
usarlo, modificarlo y/o redistribuirlo
El término "Linux" estrictamente se refiere al núcleo Linux, pero es más comúnmente utilizado para
describir al sistema operativo tipo Unix, que utiliza primordialmente filosofía y metodologías libres, también
conocido como GNU/Linux, que está formado mediante la combinación del núcleo Linux con las bibliotecas
y herramientas del proyecto GNU y de muchos otros proyectos/grupos de software (libre o no).
Los sistemas Linux funcionan sobre más de 20 diferentes plataformas de hardware, entre ellas las más
comunes son las de los sistemas compatibles con PC, computadoras Macintosh, procesadores PowerPC,
Sparc y MIPS.
Una distribución Linux, o distribución GNU/Linux es un conjunto de aplicaciones reunidas por un grupo,
empresa o persona para permitir instalar fácilmente un sistema Linux (también llamado GNU/Linux).
Existen numerosas distribuciones Linux. Cada una de ellas puede incluir cualquier número de software
adicional (libre o no), como algunos que facilitan la instalación del sistema y una enorme variedad de
aplicaciones, entre ellos, entornos gráficos, suites ofimáticas, servidores web, servidores de correo,
servidores FTP, etcétera.
Algunos ejemplos de Sistemas Operativos (SO) son:
Familia Windows Familia Macintosh Familia UNIX Familia Linux
1. Windows 95 1. Mac OS 7 1. AIX 1. Debian
2. Windows 98 2. Mac OS 8 2. AMIX 2. Slackware
3. Windows NT 3. Mac OS 9 3. GNU/Linux 3. Fedora Core
4. Windows 2000 4. Mac OS X 4. GNU / Hurd 4. Ubuntu
M@lonso - 4
| Programación - IQ | Unidad 1 |
M@lonso - 5
| Programación - IQ | Unidad 1 |
Los pasos anteriores se pueden descomponer en otros pasos más simples en los que se denomina
refinamiento del algoritmo.
Ejemplo: Para determinar el mayor de tres números enteros.
1. Obtener el primer número (entrada), denominado NUM1
2. Obtener el segundo número (entrada), denominado NUM2
3. Compara NUM1 con NUM2 y seleccionar el mayor; si los dos enteros son iguales, seleccionar
NUM1. Llamar a este número MAYOR.
4. Obtener el tercer número (entrada), y se denomina NUM3.
5. Compara MAYOR con NUM3 y seleccionar el mayor; si los dos enteros son iguales, seleccionar
el MAYOR. Denominar a este número MAYOR.
6. Presentar el valor MAYOR (salida).
7. Fin
1.4 - Métodos para solución de problemas con algoritmos.
Qué se entiende por problema:
Según el diccionario, problema es: a) una cuestión que se trata de aclarar, b) proposición o dificultad de
solución dudosa y c) conjunto de hechos o circunstancias que dificultan la consecución de algún fin.
Según L. Doval y A. Gay problema es algo que preocupa; implica un interrogante cuya respuesta es
desconocida y que, en nuestro caso, se busca obtener.
Qué se entiende por método:
Según el diccionario método es: modo de decir o hacer con orden una cosa.
Según Quintanilla método es:
“Un método es un procedimiento –una sucesión de operaciones- para resolver un problema. Si el problema
es de tipo práctico, las operaciones necesarias serán en su mayoría acciones concretas sobre cosas
concretas, y el método constituirá una técnica en sentido estricto. Si el problema es puramente conceptual,
las operaciones pueden ser estrictamente conceptuales o abstractas.”
La solución de problemas:
Para la resolución de un problema es conveniente aplicar un método. Un método es, fundamentalmente,
una actitud, una estrategia, una filosofía, que frente a una situación problemática orienta en la búsqueda de
una solución.
A continuación se plantean las diferentes etapas de un método, aplicables a la solución de problemas
tecnológicos.
1. Reconocimiento del problema.
Las personas individualizan la situación problemática, vinculada al quehacer tecnológico, que despierta
su curiosidad o interés, destacando las implicaciones de orden técnico, científico, cultural, económico o
social presentes en el caso.
2. Formulación y análisis del problema.
Formulan en término de problema el caso individualizado en la etapa anterior. Esta formulación debe
ser clara: explicitando los aspectos tecnológicos del problema, precisando los objetivos a alcanzar,
buscando información y analizando el problema y las soluciones existentes. En este punto es
importante investigar las técnicas distintas que se han utilizado para resolver el mismo problema o
similares.
3. Búsquedas de alternativas de solución
Generar alternativas para solucionar el problema, partiendo de los conocimientos con que cuentan o
con los que pueden adquirir (nueva información, pruebas, contrastación de datos, etc.).
M@lonso - 6
| Programación - IQ | Unidad 1 |
4. Selección de la solución.
Seleccionan la solución que mejor se adapte a los objetivos planteados, teniendo en cuenta el marco
económico y social en el que está inserto el problema.
5. Evaluación de la solución.
Verificar el comportamiento de la solución en un contexto global y ajustar su funcionamiento,
optimizándola.
6. Presentación de la solución.
Detallan la solución, el proceso que siguieron para lograrla, sus características técnicas
(especificaciones, rendimiento, etc.) y justifican las ventajas que presenta.
El método presentado no se sigue siempre en forma lineal, sino que entre las etapas hay retroalimentación
que permite ir y venir entre cada una de ellas.
Los programas de computadora tienen como finalidad resolver problemas específicos y el primer paso
consiste en definir con precisión el problema hasta lograr la mejor comprensión posible. Una forma de
realizar esta actividad se basa en formular claramente el problema, especificar los resultados que se
desean obtener, identificar la información disponible (datos), determinar las restricciones y definir los
procesos necesarios para convertir los datos disponibles (materia prima) en la información requerida
(resultados).
M@lonso - 7
| Programación - IQ | Unidad 1 |
Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten
describir los pasos con mayor o menor detalle.
La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera:
1. Lenguaje Natural.
2. Lenguaje de Diagrama de Flujo.
3. Lenguaje Natural de Programación.
4. Lenguaje de Programación de Algoritmos.
Lenguaje Natural.- Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un
vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan términos especializados de
una determinada ciencia, profesión o grupo.
Lenguaje de Diagrama de Flujo.- Es aquél que se vale de diversos símbolos para representar las ideas o
acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de etapas
posteriores para implementarse en un sistema de cómputo.
Lenguaje Natural de Programación.- Son aquéllos que están orientados a la solución de problemas que
se definen de una manera precisa. Generalmente son aplicados para la elaboración de fórmulas o métodos
científicos.
Lenguaje de Programación de Algoritmos.- Es aquél que se utiliza para introducir en la computadora un
algoritmo específico. Se les conoce también como Lenguaje de Programación.
Lenguaje de Programación: Es un conjunto de palabras, símbolos y reglas sintácticas mediante los
cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.
Pseudocódigo: Es un lenguaje intermedio entre el lenguaje natural y cualquier lenguaje de programación
específico. No existe una notación formal o estándar de pseudocódigo, sino que, cada programador puede
utilizar la suya propia.
Los métodos de diseño presentados anteriormente, permiten un diseño global del algoritmo, pero
ocasionalmente pueden desatender detalles específicos de este, para lo cual se usan también algunas
técnicas de representación (formulación) para presentar los detalles específicos de un algoritmo.
Las tres técnicas de formulación de algoritmos más populares son:
1. Diagrama de flujo
2. Pseudocódigo
3. Diagramas estructurados
M@lonso - 8
| Programación - IQ | Unidad 1 |
1.6 - Diagramación.
Diagrama de flujo: Es la representación gráfica de un algoritmo y se le conoce también como
ordinogramas.
Los diagramas de flujo se utilizan principalmente en programación,
economía y procesos industriales, pasando también a partir de estas
disciplinas a formar parte fundamental de otras, como la psicología
cognitiva.
Se basan en la utilización de diversos símbolos para representar
operaciones específicas. Se les llama diagramas de flujo porque los
símbolos utilizados se conectan por medio de flechas para indicar la
secuencia de operación.
La simbología utilizada para la elaboración de diagramas de flujo es
variable y debe ajustarse a un patrón definido previamente.
Un ejemplo del uso de un diagrama de flujo se muestra en la figura 1.4.
Figura 1.4 - Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona.
Los símbolos o figuras que pueden ser utilizados en los diagramas de flujo son:
Terminal. Representa el Inicio y el Final de un programa. Puede representar
también una parada o interrupción programada que sea necesario realizar en
un programa.
Entrada/Salida. Utilizada para cualquier tipo de introducción de datos
M@lonso - 9
| Programación - IQ | Unidad 1 |
Ejemplo 1: Calcular el salario neto de un Ejemplo 2: Realizar un diagrama de flujo que permita mostrar
trabajador en función del número de horas en pantalla un mensaje de mayoría o minoría de edad según
trabajadas, precio de la hora de trabajo y sea el caso para un nombre específico.
considerando unos descuentos fijos al
salario bruto en concepto de impuestos
(20%).
M@lonso - 10
| Programación - IQ | Unidad 1 |
M@lonso - 11
| Programación - IQ | Unidad 1 |
Los números que se ven resaltados, son los que se generan en cada paso (3 y luego 4). Cada variable
tiene vigente solo el último valor. En este momento el paso 3 cambió el valor de C de 0 a 1, de igual forma
que el paso 4 cambio el de S de 0 a 1. Luego están vigentes los nuevos valores y se perdieron los
anteriores.
Prosiguiendo, en el paso 5 al evaluar el contenido de C que es 1 se deduce que la condición se cumple,
por lo que se va al paso 3 y se produce lo siguiente (nuevamente pasos 3 y 4):
Y así sucesivamente, hasta que el condicional que obliga a la repetición ya no cumpla la condición, luego
entonces ejecutar los pasos 6 y 7, para luego terminar.
En la prueba, se puede advertir que las sumas se van haciendo correctamente, por lo que se deduce que
se terminará con la suma correcta. Solo bastara verificar si termina apropiadamente.
Un punto a evaluar debe ser el verificar si la repetición se hace el numero esperado de veces, una vez
más, o una menos, que es lo que frecuentemente ocurre con los condicionales que hacen la repetición en
los algoritmos.
En la prueba de escritorio, si hay repeticiones, es suficiente probar un numero razonable de veces (5 o 10).
Así por ejemplo, si el ejercicio pide calcular el promedio de 1000 números leídos, no será necesario probar
con los 1000, será suficiente probar con 5 o 10.
La prueba de escritorio consistirá en 2 etapas:
La primera, en probar inicialmente que el programa funcione correctamente, para lo que se elegirán
algunos datos fáciles de probar, cosa que siempre es posible.
La segunda, si se prueba que ya funciona, se buscaran otros datos (si los hay) que hagan que falle
el algoritmo, en cuyo caso se habrán de detectar otros errores. Si el algoritmo no falla, podemos
concluir que el programa está terminado y revisado, por lo tanto correcto.
Otro ejemplo de prueba de escritorio seria:
Programa (Seudocódigo)
M@lonso - 12