SlideShare une entreprise Scribd logo
1  sur  63
FUNDAMENTOS DE
PROGRAMACIÓN
(Algoritmos, Diagramas de Flujo y Programas)
Apuntes elaborados por: M. C. JOSÉ NICOLÁS ZARAGOZA
En nuestras actividades cotidianas siempre están
presentes las computadoras ya sea en forma
directa o indirecta. Términos como "programable"
y "computarizado" se han vuelto tan comunes, que
incluso en nuestro hogar contamos con enseres
desarrollados con tecnología derivada de la
computación. Así mismo, en nuestras actividades
diarias utilizamos continuamente el concepto de
programación, en ocasiones de manera
inconsciente. Pero, ¿Qué son las computadoras?
¿Cómo nacen las computadoras? ¿Cuál fue su
desarrollo? ¿Cómo están constituidas? ¿Cómo
funcionan?
FUNDAMENTOS DE PROGRAMACIÓN .
Breve historia de la computadora.
• 4500 a. c. en Mesopotamia, se han encontrado tabletas de
arcilla con información acerca de ingresos, desembolsos,
inventarios, préstamos, compras, arrendamientos, formación
y disolución de sociedades y contratos.
• Aparece el ábaco, utilizado por los árabes y los chinos
desde hace poco más de 2000 años.
Los mayas descubrieron y utilizaron el concepto del cero, con
lo que pudieron construir un poderoso sistema numérico que
les permitió abordar problemas matemáticos y astronómicos
• Hace más de 500 años en Sudamérica, los Incas
desarrollaron sistemas de información bastante completos,
con bases de datos y modelos de procesamiento compuestos
por miles de cuerdas con nudos denominados quipus.
El 1642, el matemático y filósofo francés Blaise Pascal inventó una
máquina capaz de llevar la cuenta automática de sumas y restas
elementales. En esta máquina, conocida posteriormente como
’Pascalina’, existían ruedas dentadas que representaban las unidades,
decenas, centenas y así sucesivamente.
• En 1671, el alemán Gottfried W. Leibnitz mejoró el sistema de
Pascal y proyectó una máquina que podía sumar, restar, multiplicar,
dividir y extraer raíces.
• En 1804, el francés Joseph-Marie Jacquard puso en práctica la idea
de automatizar ciertas fases del funcionamiento de las máquinas de
tejido textil, las telas mostrarían un dibujo correspondiente a un
patrón registrado en una tarjeta perforada que la máquina podía
identificar.
• En 1822, el matemático inglés Charles Babbage ideó su máquina
diferencial que podía realizar automáticamente operaciones
aritméticas en secuencias diferentes.
• En 1887, el experto en
estadística Herman Hollerith
inventó un sistema para
representar los datos
esenciales de cada ciudadano
bajo la forma de agujeros
hechos en una tarjeta de cartón
que podía ser contada
(procesada) por una máquina.
• En 1936, el alemán Konrad
Zuse de 26 años construyó un
calculador electromecánico, el
Z1.
• El primer prototipo de computadora electrónica se concibió en el
invierno de 1937-1938 por el doctor John Vincent Atanasoff, profesor
de física y matemáticas en Iowa State College.
• En 1944 el profesor Howard H. Aiken, de la Universidad de Harvard
en los Estados Unidos, desarrolló después de siete años de estudio un
calculador automático llamado Mark I, el cual funcionaba con
instrucciones que se leían en una cinta de papel perforada.
• En febrero de 1946 comenzó a funcionar la ENIAC (Electronic
Numerical Integrator And Calculador), desarrollada en la Universidad
de Pensilvania por J. P. Eckert, J. W. Mauchly y H. H. Goldstine.
El científico de origen húngaro, John Von Neumann proyectó lo que
hoy es universalmente reconocido como el prototipo de las
computadoras modernas, la EDVAC (Electronic Discrete Variable
Automatic Calculador), cuyo diseño estaba basado en el concepto de
“programa almacenado”.
Von Neumann escribió un trabajo en el cual definía los conceptos
básicos con los que debería contar una computadora electrónica: 1)
utilizar sistemas de numeración binarios, y 2) que las instrucciones
para la computadora, así como los datos que se manipularan, se
almacenaran internamente en la máquina.
• La compañía Remington Rand desarrolló la UNIVAC I
(UNIVersal Automatic Computer), que fue la primera
computadora de uso comercial, apareciendo en el año de 1951.
• A fines de 1954, en
Boston, entró en servicio
por primera vez la IBM
650, esta computadora
dio a la IBM el liderazgo
en la producción de
computadoras. Iniciando
la primera generación de
computadoras.
• Las computadoras de la segunda generación, que comenzó a
aparecer en 1959, eran más pequeñas y rápidas y tenían una
capacidad de cómputo mayor. La escritura de programas de
aplicación en lenguaje de máquina fue desplazada por el uso de
lenguajes de programación de alto nivel, los transistores
sustituyeron a los bulbos.
•En 1964 apareció en el mercado la tercera generación de
computadoras constituidas con circuitos integrados monolíticos,
gracias a los cuales aumentó considerablemente su velocidad de
operación, incrementando su confiabilidad y disminuyendo su costo y
tamaño. Una de las características fundamentales de estos nuevos
equipos fue la gran compatibilidad de sus componentes.
• A principios de la década de los setentas, la manufactura de circuitos
integrados llegó a ser tan avanzada que se lograron incorporar miles
de componentes electrónicos en espacios de una fracción de pulgada.
A partir de estos circuitos aparecen los microprocesadores y surgen
las computadoras de la cuarta generación.
La Apple I, en 1976.
Las primeras microcomputadoras fueron:
La Altair 8800, en 1975.
La Apple II y
la TRS-80 de
Radio Shack,
en 1977.
La Commodore 16 y la Atari, en
1980.
La IBM-PC, en diciembre de 1981.
Conceptos Básicos.
Las computadoras u ordenadores, son dispositivos electrónicos que
manejan símbolos o datos con gran precisión y velocidad, y están
diseñados para aceptar entradas (datos), procesarlos y producir salidas
(resultados). Así mismo, las computadoras son consideradas como
sistemas que realizan diversas operaciones las cuales incluyen el
procesamiento de datos, el cual consta de tres actividades básicas:
1. Captura de los datos de entrada.
2. Manipulación de los datos.
2.1. Agrupación.
2.1.1. Códigos numéricos.
2.1.2. Códigos alfabéticos.
2.1.3. Códigos alfanuméricos.
2.2. Cálculo.
2.3. Clasificación.
2.4. Síntesis.
3. Manejo de los resultados de salida.
3.1. Almacenamiento y recuperación.
3.2. Comunicación y reproducción.
Operaciones de proceso de las computadoras.
1. Operaciones de entrada/salida.
2. Operaciones de cálculo y manipulación de texto.
3. Operaciones de lógica/comparación.
4. Operaciones de almacenamiento y recuperación de
información.
Los sistemas de cómputo.
Las computadoras están conformadas a su vez por subsistemas. Los
componentes de las computadoras electrónicas digitales son los
siguientes:
1.Dispositivos de entrada.
2.Unidad Central de Proceso.
2.1.Unidad aritmética-lógica.
2.2.Unidad de control.
3.Almacenamiento primario (memoria principal).
4.Dispositivos de almacenamiento secundario (memoria
secundaria).
5.Dispositivos de salida.
Unidad Central de Proceso (CPU)
Unidad de
Control
Unidad de
aritmética y lógica
Unidad
de
entrada
Unidad
de salida
Unidad de memoria
principal
Componentes de un sistema de cómputo.
A. Dispositivos de entrada.
Entre los dispositivos de entrada se encuentran:
1. El teclado alfanumérico.
2. El ratón.
3. Lápiz óptico.
4. Pantallas sensibles al tacto.
5. Cámaras de televisión, video o web.
6. Micrófonos.
7. Lectores de código de barras.
8. Sensores (térmicos, eléctricos, etc.).
9. Lectores de dispositivos magnéticos y ópticos (cintas, disquete,
cd o dvd).
B. Unidad Central de Proceso.
Para ejecutar estas acciones, la unidad central de proceso cuenta con
los dos siguientes elementos fundamentales:
1.Unidad aritmética-lógica.
Esta unidad puede realizar un número reducido de operaciones
elementales a gran velocidad, éstas son:
• Suma y resta de dos números.
• Multiplicación y división de dos números.
• Operaciones lógicas: and, or, not.
• Comparación entre dos valores.
2.Unidad de control.
Sus funciones consisten en leer y escribir contenidos en las celdillas
de memoria; llevar y traer datos entre celdillas y, decodificar y
ejecutar las instrucciones de un programa.
Palabra. Es el número de bits que procesa la computadora por unidad de tiempo,
esto, de acuerdo a cada impulso eléctrico que emite el reloj. Las computadoras
tienen tamaños de palabra de 32, 64 y 128 bits.
C. Almacenamiento primario (memoria principal).
La unidad de memoria principal de la computadora permite almacenar
instrucciones y datos, además de resultados parciales y finales que se
generen. Básicamente podemos decir que la memoria principal se
utiliza para cuatro funciones:
• Almacenamiento de entrada. (buffer de entrada)
• Memoria de trabajo.
• Almacenamiento de salida. (buffer de salida)
• Área de almacenamiento de programas.
Hay dos tipos de memoria que son:
a) Memoria RAM (Random Access Memory / Memoria de Acceso
Aleatorio).
- Es una memoria de lectura y escritura.
- Es volátil (pierde información con la falta de energía eléctrica).
- Se pueden direccionar sus celdillas aleatoriamente.
- En esta memoria residen los programas y datos del usuario.
b) Memoria ROM (Read Only Memory / Memoria de Solo Lectura).
- Memoria de lectura.
- Instrucciones permanentes grabadas con anterioridad.
- No se ve afectada por la falta de corriente eléctrica.
- El usuario podrá utilizar las instrucciones que contiene, más no podrá
modificarlas.
Los componentes de la memoria principal son la dirección y el contenido. La
dirección, es la posición relativa de un byte en memoria y, contenido, es el dato o
instrucción almacenado en dicha posición.
D. Dispositivos de almacenamiento secundario (memoria
secundaria).
Este tipo de memoria es de lectura/escritura y puede consistir en
alguno de los siguientes dispositivos:
a) Discos magnéticos fijos o removibles (disquetes, discos duros,
discos zip, etc.).
b) Discos ópticos (discos compactos o dvd).
c) Cintas magnéticas.
d) Dispositivos: memory Stick, memory Flash y memorias USB.
E. Dispositivos de salida.
Algunos de los dispositivos de salida más comunes son:
• Monitor.
• Impresoras (de chorro de tinta, LASER, de matriz de puntos).
• Bocinas.
• Dispositivos grabadores de medios magnéticos y ópticos (cinta,
disquete, cd, dvd, etc.).
• Cañón de proyección.
• Brazos robóticos.
Finalmente, un sistema de cómputo está conformado por dos
estructuras: el hardware y el software.
Hardware. Es el conjunto de componentes físicos, ya sean
electrónicos, magnéticos o mecánicos.
Software. Es el conjunto de programas y datos necesarios para el
funcionamiento de la computadora. Este conjunto de programas está
compuesto entre otros por:
• Sistemas operativos (windows, linux, unix, panther, jaguar, etc.).
• Paquetes (Word, Excel, MathLab, SPSS, CONTPAQ, etc.).
• Programas de aplicación (contabilidad, inventarios, nómina,
control escolar, etc.).
• Utilerías (Norton, Nero, FTP, etc.).
• Ensambladores, compiladores e intérpretes.
Concepto de Lenguaje.
En general, las computadoras operan bajo un sistema binario para
representar y manejar internamente la información.
Para podernos comunicar con la computadora requerimos de un
sistema operativo o de un lenguaje. Un lenguaje es un conjunto de
símbolos, señales o sonidos articulados usados para comunicarse o
para dar a entender una cosa. En computación es un conjunto de
instrucciones que nos sirven para comunicarnos con la computadora.
Las primeras computadoras que operaban bajo el concepto de Von
Neumann (quién introdujo el concepto de programa almacenado)
eran programadas en lenguaje máquina (lenguaje binario, compuesto
de unos y ceros), y las instrucciones se introducían en forma
secuencial (una tras otra) a través de tarjetas perforadas. Además,
este lenguaje máquina era específico para cada computadora. Esto
hacía la programación muy complicada, lenta y costosa; por lo que
sólo unos cuantos “iniciados” podían operar las computadoras.
Ejemplo de un programa en código máquina que imprime los
números del 0 al 99:
0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 0
0 1 1 0 0 1 0 0
0 0 0 0 1 1 0 0
1 0 0 1 0 0 0 1
1 1 0 0 0 0 1 0
0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0
Sin embargo en la década de los cincuenta aparecen los primeros
lenguajes de programación, también llamados lenguajes simbólicos,
el primero fue el lenguaje ensamblador, el cual constaba de
instrucciones representadas por caracteres alfanuméricos, los cuales
conforman instrucciones, las cuales son más fáciles de comprender.
Sin embargo, al igual que con el lenguaje máquina, el lenguaje
ensamblador era especifico para cada tipo de computadora, y por su
bajo nivel de comunicación con el usuario se denominaron
lenguajes de bajo nivel. Se presenta el mismo programa contador de
0 a 99:
LD C, 00 Carga (LOAD) C con un cero
Ciclo: LD A, 63 Carga A con un 63 (63 en hexadecimal es 99 en
decimal)
INC C Incrementa el contenido de C
SUB C Hace la resta C - A
JP NZ ciclo Si el resultado no fue cero salta (JUMP) a ciclo.
Al lenguaje máquina y lenguaje ensamblador se les denomina:
lenguajes de bajo nivel, por su bajo nivel de comunicación con el
usuario.
a) Lenguaje Máquina.
El lenguaje máquina es una representación particular de las
instrucciones y datos, los cuales son interpretados inmediatamente
por el hardware de la computadora. Esta representación está dada en
bits por lo que puede presentarse en términos de ceros y unos.
b) Lenguaje Ensamblador.
El lenguaje ensamblador consta de un conjunto de instrucciones
representadas con caracteres alfanuméricos, que son nemotécnicos
de palabras que indican instrucciones, lo cual le da una mayor
comprensión. Al igual que el lenguaje de máquina, el lenguaje
ensamblador es específico para cada arquitectura de computadoras.
Programa en
Lenguaje Ensamblador
⇒ Programa
Ensamblador
⇒ Programa en
Código de Máquina
Pero es finales de los años cincuenta cuando aparecen los primeros
lenguajes de alto nivel, los cuales tiene entre otras ventajas: que son
fáciles de aprender, son independientes de la computadora y constan
de instrucciones formadas por palabras cortas del idioma inglés;
permitiendo elaborar programas fáciles de entender y de corregir, así
como sistemas grandes y complejos en un menor tiempo.
Lenguajes de Alto Nivel.
i) Fáciles de aprender.
ii) Permiten elaborar programas fáciles de entender y por lo tanto de
corregir.
iii) Son independientes de la computadora. Pueden utilizarse en
cualquier máquina y son de carácter universal.
iv) Utilizan un conjunto de palabras generalmente en inglés, que
permiten comprender con mayor facilidad y claridad el razonamiento
que presenta el programador para la solución de su problema.
Algunos de los lenguajes de programación más
comúnmente usados son:
a) FORTRAN (FORmula TRANslation o
TRANslator).
(Traducción ó Traductor de Fórmulas).
Fue el primer lenguaje de programación diseñado
en 1957 por John Backus para la IBM, su principal
aplicación es en el área de Ingeniería y Ciencias.
b) COBOL (COmmon Business Oriented
Language).
(Lenguaje Común Orientado a Negocios).
Uno de los primeros lenguajes de programación.
Fue diseñado en 1958 por la almirante Grace
Murray Hopper dentro de un comité
norteamericano llamado CODASYL (COnference
on DAta SYstems Languages) y se utiliza para
aplicaciones comerciales y administrativas.
c) ALGOL (ALGOrithmic Language).
(Lenguaje Algorítmico)
Lenguaje de aplicaciones científicas que surge en 1960 diseñado por
un comité internacional con sede en Europa, fue el primero con una
sintaxis definida de manera formal y matemática, por lo que puede ser
considerado como el iniciador de la familia de lenguajes de
programación estructurada.
d) BASIC (Beginners All purpose Symbolic Instruction Code).
(Código de Instrucciones Simbólicas para Principiantes para
Todo uso).
Lenguaje diseñado para la educación y dedicado fundamentalmente a
la programación de máquinas pequeñas. Fue diseñado en 1964 por
John Kemeny y Thomas Kurtz, del Dartmouth College, en New
Hampshire, Estados Unidos.
e) PL/1 (Programming Language 1).
(Lenguaje de Programación 1).
Lenguaje de programación muy amplio y extenso que IBM propuso
en 1964 como alternativa para trabajos científicos y comerciales.
f) Pascal.
Lenguaje de programación diseñado en 1970 por Niklaus Wirth, del
Instituto Tecnológico de Zurich, en Suiza, llamado así en honor a Blas
Pascal.
g) C.
Lenguaje especializado para la programación de sistemas.
Diseñado en 1972 por Dennis Ritchie, de los Laboratorios Bell, en
New Jersey, Estados Unidos. Se emplea para escribir compiladores y
sistemas operativos. C++ es una versión expandida de C y fue
desarrollada 1980 por Bjarne Stroustup de los Laboratorios Bell
denominada originalmente “C con clases”, cambiando su nombre en
1983 a C++. La principal aplicación de C++ es la programación
orientada a objetos (OOP, Object-Oriented Programming).
h) RPG (Report Program Generator).
(Programa Generador de Reportes).
Es un lenguaje diseñado en 1956 por IBM para
producir, como su nombre lo indica, informes
administrativos y comerciales.
i) Ada.
Llamado así en honor de Augusta Ada
Lovelace (Ada Byron), asistente de Charles
Babbage, quién es considerada como la primer
programadora. Este lenguaje fue desarrollado
en 1978 por un grupo a cargo de Jean Ichbiah,
con la intención de tener un único lenguaje de
programación de uso universal.
j) Modula-2.
Lenguaje creado en 1978, diseñado por el
creador de Pascal, Niklaus Wirth, por lo que se
considera una especie de “Pascal mejorado”.
k) LISP (LISt Processing).
(Procesador de Listas).
Lenguaje diseñado por John McCarthy en 1960, usado en la
investigación de la inteligencia artificial. Maneja en forma dinámica
conjuntos llamados listas.
l) PROLOG (PROgramming LOGic).
(Programación Lógica).
Lenguaje creado en 1972 por Alan Comerauer y Philippe Roussel en
la Universidad de Marsella, Francia. Adoptado por el proyecto de la
quinta generación de computadoras emprendido en Japón, como
vehículo de creación de los sistemas y programas para el manejo de
inteligencia artificial.
m) Logo.
Fue diseñado por un educador y matemático del Instituto Tecnológico
de Massachussets, Seymour Paper a finales de los 60’s. Se usa para
aplicaciones de tipo educativo y se ha enfocado principalmente para
enseñar a los niños computación.
n) Smalltalk.
La primera versión de Smalltalk fue desarrolada en XEROX en
1971. Smalltalk es el primer lenguaje orientado a objetos con una
interfaz de usuario integrada, con ventanas que se superponen y un
editor con las opciones copiar y pegar.
o) PERL (Practical Extraction and Reporting Language)..
PERL fue desarrollado por Larry Wall en 1987 para ser utilizado en
el manejo de textos.
p) Java.
El lenguaje Java nace en 1991 en Sun Microsystems Inc. Es un
lenguaje derivado de C y fue creado por James Gosling, Patrick
Naughton, Chris Warth, Ed Frank y Mike Sheridan. Originalmente
se llamó “Oak”, pero en 1995 cambió su nombre a Java.
q) Phyton.
Creado a finales de los años 80 en los Países Bajos por Guido van
Rossum , es considerado un lenguaje multiparadigma.
CONSIDERACIONES ACERCA DE LOS LENGUAJES DE
PROGRAMACION.
Algunos aspectos que debemos considerar para los lenguajes de
programación son:
a) Modularidad.
b) Transportabilidad (Portabilidad).
c) Eficiencia.
d) Facilidades para la entrada/salida de datos.
Compiladores e Intérpretes.
a) Compiladores.
Son programas que teniendo como entrada un programa fuente en
lenguaje de alto nivel, producen un programa objeto listo para ser
ejecutado.
* Programa Fuente.
Es un programa que está escrito en lenguaje ensamblador o lenguaje
de alto nivel.
* Programa Objeto.
Es aquel que se encuentra en código máquina y que está listo para
ser ejecutado.
Un compilador tiene como función producir programas objeto a partir del
programa fuente:
Programa Fuente
(En Lenguaje de
Programación)
⇒ Compilador ⇒ Programa Objeto
(En Código de
Máquina)
El trabajo de un compilador puede dividirse en cinco fases:
i) Análisis Lexicográfico.-
Verificación de que las palabras utilizadas en el programa fuente
son válidas en el lenguaje.
ii) Análisis de Sintaxis.-
Examen de la ortografía y organización de cada instrucción del
programa fuente.
iii) Generación de Código Intermedio.-
Producción de un conjunto de instrucciones similares a las de un
lenguaje ensamblador que corresponden al programa que se está
compilando.
iv) Optimización de Código.-
Simplificación del código intermedio obtenido, con el fin de
producir un programa objeto más compacto y con uso óptimo de
memoria.
v) Generación de Código Máquina.-
Producción final del programa objeto (programa ejecutable).
b) Intérpretes.
Un intérprete es un programa que traduce y ejecuta una por una, las
instrucciones de un programa fuente escrito en lenguaje de alto
nivel. El intérprete no produce un programa objeto, analiza la
sintaxis y semántica de cada línea del programa y si son correctas,
las ejecuta, de lo contrario manda un mensaje del error
correspondiente y se suspende la ejecución.
Para la programación en lenguajes como FORTRAN, COBOL,
ALGOL, PASCAL, C y algunas versiones de BASIC (VISUAL
BASIC), se utilizan compiladores.
En casi todas las versiones antiguas de BASIC para
microcomputadoras, así como en los lenguajes LISP, FORTH,
LOGO y JAVA, se utilizan intérpretes.
PARADIGMAS DE LA PROGRAMACIÓN.
Con el advenimiento de estos lenguajes, la programación empezó a
tener un gran desarrollo, apareciendo diferentes estilos de
programación, ya que los avances tecnológicos de los equipos de
cómputo, permitieron la creación de nuevos lenguajes, así como de
los cinco estilos o paradigmas de programación que se indican a
continuación.
1. Programación Lineal.
2. Programación Estructurada y Modular.
3. Programación Orientada a Objetos.
4. Programación Orientada a Eventos.
5. Programación Concurrente.
1. Programación Lineal.
La programación lineal, fue el primer estilo de programación y
era utilizado por los primeros lenguajes de alto nivel BASIC,
FORTRAN, COBOL, etc. Es un tipo de programación
imperativa, donde el programa recibe entradas de datos, los
procesa y devuelve como salidas una serie de resultados. La
forma en que se ejecutan los procesos es secuencial, esto es,
se ejecutan una instrucción tras otra hasta la terminación del
programa. Sin embargo, este tipo de programación permite el
uso de transferencias de control y de llamadas a subrutinas o
subprogramas.
Dentro de las transferencias de control, existen dos tipos de
transferencias, estas son:
1) Transferencia incondicional. Utiliza la sentencia GOTO
para ceder o transferir el control de la ejecución del programa
sin imponer ningún tipo de condición. Esto provoca que
durante su ejecución, el programa pueda saltar de una
instrucción que se encuentre al principio hacía otra que se
encuentre al final, brincando después a otra línea del
programa, y así sucesivamente, haciendo que los programas
se vuelvan mas complicados conforme aumentan las
sentencias de transferencia incondicional, haciendo más
difícil su entendimiento y su corrección.
2) Transferencia condicional. También utiliza la sentencia
GOTO, pero esta va precedida de alguna sentencia
condicional como la sentencia IF o IF-THEN.
Además de las transferencias de control, existen las
llamadas (CALL) y transferencias (GOSUB) a subrutinas y
subprogramas, los cuales son pequeños programas que
realizan operaciones muy específicas, los cuales al terminar
de realizar sus operaciones, devuelven el control al
programa que los llamó.
El concepto de programación lineal fue muy popular en sus
inicios, pero la creación de programas y sistemas con este
estilo se volvía compleja y difícil cuando los programas
aumentaban de tamaño por lo que a finales de los sesenta
se buscó un nuevo estilo de programación.
2. Programación Estructurada y Modular.
La programación estructurada y modular, de hecho está
compuesta por dos estilos de programación, los cuales se
complementan, aún cuando en ocasiones son utilizados
ambos términos como sinónimos.
La programación estructurada, basada en la programación
lineal, es una metodología que utiliza una lógica ordenada y
simple, haciendo uso de las estructuras lógicas de la
programación, también llamadas estructuras de control, las
cuales se clasifican en tres tipos:
a) Estructuras Secuenciales. Es la ejecución de un proceso
seguida inmediatamente por otro. Esto es, una secuencia de
instrucciones.
b) Estructuras Selectivas o de Decisión. Indican la
ejecución de procesos de acuerdo a una expresión evaluada,
denominada expresión condicional, este tipo de estructuras
se encuentran bien definidas, eliminando las transferencias
de control. Utilizan las sentencias IF y CASE.
c) Estructuras Repetitivas, Iterativas, Ciclos o Bucles.
Indican la acción repetida de un proceso o procesos,
mientras (DO-WHILE) o hasta (REPEAT-UNTIL) que se
cumpla una condición. También puede ejecutarse la
estructura un determinado número de veces (FOR), desde
un valor inicial hasta un valor final.
La programación modular, también llamada procedimental o
funcional, consiste en dividir un problema en problemas más
pequeños, llamados subproblemas o módulos. Estos a su
vez se dividen en subproblemas más pequeños y así
sucesivamente, con la idea de solucionar los problemas más
pequeños y así, paso a paso, darle solución al problema en
general. Cada uno de estos módulos o subprobgramas,
reciben los nombres de funciones o procedimientos, según
el tipo de proceso que ejecuten.
3. Programación Orientada a Objetos.
Otro estilo de programación, es el de la programación
orientada a objetos (POO). El elemento fundamental de la
programación orientada a objetos es, como su nombre lo
indica, el objeto. Podemos definir un objeto como un
conjunto complejo de datos y programas que poseen
estructura y forman parte de una organización. También
podemos definirlo como una encapsulación de un conjunto
de datos y los métodos para manipularlos. El diseño
orientado a objetos se interesa en primer lugar por los datos,
a los que se asocian posteriormente procedimientos.
Cuando escribimos un programa orientado a objetos, lo que
hacemos es diseñar un conjunto de clases, desde las cuales
se crean los objetos necesarios cuando el programa se
ejecute. Cada una de estas clases incluye dos partes
claramente diferenciables: los atributos y los métodos.
Los atributos definen el estado de cada uno de los objetos de
esa clase y los métodos su comportamiento.
Los métodos son las operaciones que pueden realizarse sobre
el objeto, que normalmente estarán incorporados en forma de
programas (código) que el objeto es capaz de ejecutar y que
también pone a disposición de sus descendientes a través de
la herencia.
Normalmente, los atributos se ocultan a los usuarios del
objeto, manteniendo como única conexión con el exterior, los
mensajes.
Objeto
Atributos
métodos
mensajes
Cada objeto es una estructura compleja en cuyo interior hay
datos y programas, todos ellos relacionados entre sí, como si
estuvieran encerrados conjuntamente en una cápsula. Esta
propiedad (encapsulamiento), es una de las características
fundamentales en la POO.
Objetos: Atributos:
Nombre
Edad
Licencia de conducir
Número
Fabricante
Modelo
Número de serie
Tipo de carrocería
Color
Relaciones:
Posee
4. Programación Orientada a Eventos.
La programación orientada a eventos, asimila elementos de
la programación orientada a objetos, ligando unidades de
código escritas para determinado objeto, mediante eventos
que pueden ocurrir sobre dicho objeto, de tal forma que
cuando ocurra un evento se ejecute la unidad de código
correspondiente. A la unidad que agrupa ese código recibe
el nombre de procedimiento conducido por un evento. En
general un evento ocurre cada vez que un sistema orientado
a objetos y un actor (persona, dispositivo o sistema externo)
intercambian información. Los lenguajes visuales son
básicamente orientados a objetos, pero también están
orientados a eventos. Por ejemplo, una aplicación en
Windows es conducida por eventos y orientada a objetos.
5. Programación Concurrente.
La programación concurrente es soportada por casi todos
los sistemas operativos utilizados en la actualidad. También
se le conoce con el nombre de multiprogramación o
multitarea, y se refieren a la ejecución intercalada de dos o
más programas diferentes e independientes por la misma
computadora. Sin embargo, la multiprogramación no se
define como la ejecución de instrucciones de varios
programas en el mismo instante de tiempo. Más bien
significa que el procesador puede tener acceso a varios
programas de uno o más usuarios y que ejecuta una porción
de un programa, después una porción de otro programa y
así sucesivamente. Por lo que el sistema operativo transfiere
el control de un programa a otro de manera casi instantánea.
Principales Herramientas para el Análisis y Diseño.
La ingeniería es el análisis, diseño, construcción, verificación y
desarrollo de entidades técnicas (o sociales). Con independencia de
la entidad a la cual se va a aplicar la ingeniería, se deben cuestionar
y responder las siguientes preguntas:
· ¿Cuál es el problema a resolver?
· ¿Cuáles son las características de la entidad que se utiliza para
resolver el problema?
· ¿Cómo se realizará la entidad (y la solución)?
· ¿Cómo se construirá la entidad?
· ¿Qué enfoque se va a utilizar para no repetir los errores que se
cometieron en el diseño y en la construcción de la entidad?
· ¿Cómo se apoyará la entidad cuando los usuarios soliciten
correcciones, adaptaciones y mejoras de la entidad?
El Instituto de Ingenieros Eléctricos y Electrónicos (IEEE –
Institute of Electrical & Electronics Engineers-), define la
Ingeniería de Software como:
La aplicación de un enfoque sistemático, disciplinado y
cuantificable hacía el desarrollo, operación y mantenimiento del
software;
es decir, la aplicación de ingeniería al software.
El trabajo que se asocia a la ingeniería del software se puede
dividir en tres fases genéricas, con independencia del área de
aplicación, tamaño o complejidad del proyecto. Cada fase se
enfrenta con una o varias cuestiones de las indicadas
anteriormente.
La fase de definición se centra sobre el qué. Es decir, durante la
definición, el que desarrolla el software intenta identificar que
información ha de ser procesada, qué interfaces van a ser
establecidas, qué restricciones de diseño existen, y qué criterios de
validación se necesitan para definir un sistema correcto. Por tanto,
han de identificarse los requisitos clave del sistema y del software.
Aunque los métodos aplicados durante la fase de definición variarán
dependiendo del paradigma de ingeniería del software (o
combinación de paradigmas) que se aplique, de alguna manera se
llevarán a cabo tres tareas principales: ingeniería de sistemas o de
información, planificación del proyecto del software, y análisis y
determinación de los requerimientos.
La fase de desarrollo se centra en el cómo. Es decir, durante el
desarrollo un ingeniero de software intenta definir cómo han de
diseñarse las estructuras de datos, cómo ha de implementarse la
función como una arquitectura del software, cómo han de
implementarse los detalles de los procedimientos, cómo han de
definirse las interfaces, cómo ha de traducirse el diseño en un
lenguaje de programación y cómo han de realizarse las pruebas. Los
métodos aplicados durante la fase de desarrollo variarán, aunque las
tres tareas técnicas específicas que deberán ocurrir siempre son:
diseño del software, generación del código y prueba del software.
La fase de mantenimiento se centra en el cambio que va asociado a la
corrección de errores, a las adaptaciones requeridas a medida que
evoluciona el entorno del software, y a cambios debidos a las mejoras
producidas por los requisitos cambiantes del cliente. La fase de
mantenimiento vuelve a aplicar los pasos de las fases de definición y
de desarrollo, pero en el contexto del software ya existente. Durante
la fase de mantenimiento se encuentran cuatro tipos de cambios:
Para resolver los problemas reales de una industria, un ingeniero del
software debe incorporar una estrategia de desarrollo que acompañe
la proceso, la cual incluye métodos y herramientas. Esta estrategia se
denomina modelo de proceso o paradigma de ingeniería del
software. Se selecciona un modelo de proceso para la ingeniería del
software según la naturaleza del proyecto y de la aplicación, los
métodos y las herramientas a utilizarse, y los controles y metas que
se requieran.
Todo el desarrollo del software se puede caracterizar como un ciclo
de resolución de problemas en le que se encuentran cuatro etapas
distintas: situación actual, definición de problemas, desarrollo
técnico e integración de soluciones. La situación actual representa el
estado actual de sucesos; la definición de problemas identifica el
problema específico a resolverse; el desarrollo técnico resuelve el
problema a través de la aplicación de alguna técnica o tecnología, y la
integración de soluciones ofrece los resultados a los solicitantes o
usuarios (por ejemplo: documentos, programas, datos, producto
nuevo, etc.).
El ciclo de resolución de problemas se aplica al trabajo de ingeniería
de software en diferentes niveles de solución. Se puede utilizar a un
macro nivel, considerando la aplicación entera; en un nivel medio,
cuando se están considerando los componentes del sistema e incluso
a nivel de código o programa.
Fases de un ciclo de resolución de problemas
Situación
actual
Integración de
soluciones
Desarrollo
técnico
Definición de
problemas

Contenu connexe

Tendances (18)

La informática
La informáticaLa informática
La informática
 
Fundamentos del Computador: El computador y sus origenes
Fundamentos del Computador: El computador y sus origenes Fundamentos del Computador: El computador y sus origenes
Fundamentos del Computador: El computador y sus origenes
 
Kevin kevin
Kevin kevinKevin kevin
Kevin kevin
 
La historia de los ordenadores por borja
La historia de los ordenadores por borjaLa historia de los ordenadores por borja
La historia de los ordenadores por borja
 
Historia de la evolucion
Historia de la evolucionHistoria de la evolucion
Historia de la evolucion
 
Historia+de+la+evolución
Historia+de+la+evoluciónHistoria+de+la+evolución
Historia+de+la+evolución
 
1
11
1
 
Computadora
ComputadoraComputadora
Computadora
 
Arquitectura general del computador
Arquitectura general del computadorArquitectura general del computador
Arquitectura general del computador
 
Trabajo informatica
Trabajo informaticaTrabajo informatica
Trabajo informatica
 
Historia de la computación
Historia de la computaciónHistoria de la computación
Historia de la computación
 
Trabajo practico 3
Trabajo practico 3Trabajo practico 3
Trabajo practico 3
 
Historia de el Computador
Historia de el ComputadorHistoria de el Computador
Historia de el Computador
 
Brandon G. 9-4
Brandon G. 9-4Brandon G. 9-4
Brandon G. 9-4
 
Historia del computador
Historia del computadorHistoria del computador
Historia del computador
 
Informatica (1)
Informatica (1)Informatica (1)
Informatica (1)
 
La Historia Del Computador
La Historia Del ComputadorLa Historia Del Computador
La Historia Del Computador
 
Computacion 3
Computacion 3Computacion 3
Computacion 3
 

En vedette

Clase 1- Programacion Lineal
Clase 1- Programacion LinealClase 1- Programacion Lineal
Clase 1- Programacion Linealkarlalopezbello
 
Presentaciòn caso honduras. Wiki 6
Presentaciòn caso honduras. Wiki 6Presentaciòn caso honduras. Wiki 6
Presentaciòn caso honduras. Wiki 6Claudio Moreno
 
Tipos de Datos - Punto flotante
Tipos de Datos - Punto flotanteTipos de Datos - Punto flotante
Tipos de Datos - Punto flotanteOsberth De Castro
 
Fundamentos de Programación Orientada a Objetos
Fundamentos de Programación Orientada a ObjetosFundamentos de Programación Orientada a Objetos
Fundamentos de Programación Orientada a ObjetosMarines Ahuanlla
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos JavaC_QUENGUAN
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosJavier Camacho
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
Las organizaciones diapositivas
Las organizaciones diapositivasLas organizaciones diapositivas
Las organizaciones diapositivasDIMABELO
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de ProgramaciónKudos S.A.S
 

En vedette (11)

Diapositivas fundamentos-de-programacion
Diapositivas fundamentos-de-programacionDiapositivas fundamentos-de-programacion
Diapositivas fundamentos-de-programacion
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Clase 1- Programacion Lineal
Clase 1- Programacion LinealClase 1- Programacion Lineal
Clase 1- Programacion Lineal
 
Presentaciòn caso honduras. Wiki 6
Presentaciòn caso honduras. Wiki 6Presentaciòn caso honduras. Wiki 6
Presentaciòn caso honduras. Wiki 6
 
Tipos de Datos - Punto flotante
Tipos de Datos - Punto flotanteTipos de Datos - Punto flotante
Tipos de Datos - Punto flotante
 
Fundamentos de Programación Orientada a Objetos
Fundamentos de Programación Orientada a ObjetosFundamentos de Programación Orientada a Objetos
Fundamentos de Programación Orientada a Objetos
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos Java
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Las organizaciones diapositivas
Las organizaciones diapositivasLas organizaciones diapositivas
Las organizaciones diapositivas
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 

Similaire à Diapositivas de la primera unidad del curso Fundamentos de programación

Recopilacion de informacion
Recopilacion de informacionRecopilacion de informacion
Recopilacion de informacionNathaly Llaca
 
Evolución de las computadoras
Evolución de las computadoras Evolución de las computadoras
Evolución de las computadoras FerBarcenas
 
FernandezJ_ Historia del computador
FernandezJ_ Historia del computadorFernandezJ_ Historia del computador
FernandezJ_ Historia del computadorfrnandez_99
 
Historia+de+la+evolución godoyjose
Historia+de+la+evolución godoyjoseHistoria+de+la+evolución godoyjose
Historia+de+la+evolución godoyjoseJosé Godoy
 
Clases
ClasesClases
Clasestuno01
 
Historia de la Computadora
Historia de la Computadora Historia de la Computadora
Historia de la Computadora anais19
 
Historia del computador
Historia del computadorHistoria del computador
Historia del computadorVanessa Mojica
 
Historia de la evolución de los ordenadores
Historia de la evolución de los ordenadoresHistoria de la evolución de los ordenadores
Historia de la evolución de los ordenadoresarpq94
 
Historia de la computadora
Historia de la computadora Historia de la computadora
Historia de la computadora Herón LopGur
 
Manual basico de_computacion
Manual basico de_computacionManual basico de_computacion
Manual basico de_computacionLupita Sandoval
 
Historia de la computadora
Historia de la computadoraHistoria de la computadora
Historia de la computadoraHerón LopGur
 
Alfabetizacion digital
Alfabetizacion digitalAlfabetizacion digital
Alfabetizacion digitalBenyi23
 
Conceptos basicos computacionales convertido
Conceptos basicos computacionales convertidoConceptos basicos computacionales convertido
Conceptos basicos computacionales convertidoadrianepi1
 

Similaire à Diapositivas de la primera unidad del curso Fundamentos de programación (20)

Recopilacion de informacion
Recopilacion de informacionRecopilacion de informacion
Recopilacion de informacion
 
Evolución de las computadoras
Evolución de las computadoras Evolución de las computadoras
Evolución de las computadoras
 
FernandezJ_ Historia del computador
FernandezJ_ Historia del computadorFernandezJ_ Historia del computador
FernandezJ_ Historia del computador
 
Historia+de+la+evolución godoyjose
Historia+de+la+evolución godoyjoseHistoria+de+la+evolución godoyjose
Historia+de+la+evolución godoyjose
 
Clases
ClasesClases
Clases
 
Historia de la Computadora
Historia de la Computadora Historia de la Computadora
Historia de la Computadora
 
Historia del computador
Historia del computadorHistoria del computador
Historia del computador
 
Historia de la evolución de los ordenadores
Historia de la evolución de los ordenadoresHistoria de la evolución de los ordenadores
Historia de la evolución de los ordenadores
 
Historia de la computadora
Historia de la computadora Historia de la computadora
Historia de la computadora
 
Tarea 1 fundamento
Tarea 1 fundamentoTarea 1 fundamento
Tarea 1 fundamento
 
Manual basico de_computacion
Manual basico de_computacionManual basico de_computacion
Manual basico de_computacion
 
Historia de la computadora
Historia de la computadoraHistoria de la computadora
Historia de la computadora
 
17 todo
17 todo17 todo
17 todo
 
17 todo
17 todo17 todo
17 todo
 
Historia de la computacion
Historia de la computacionHistoria de la computacion
Historia de la computacion
 
Alfabetizacion digital
Alfabetizacion digitalAlfabetizacion digital
Alfabetizacion digital
 
Conceptos basicos computacionales convertido
Conceptos basicos computacionales convertidoConceptos basicos computacionales convertido
Conceptos basicos computacionales convertido
 
Histora de las computadoras
Histora de las computadorasHistora de las computadoras
Histora de las computadoras
 
Historia de la computadora (1)
Historia de la computadora (1)Historia de la computadora (1)
Historia de la computadora (1)
 
Historia de la computadora
Historia de la computadoraHistoria de la computadora
Historia de la computadora
 

Dernier

Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 

Dernier (20)

Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 

Diapositivas de la primera unidad del curso Fundamentos de programación

  • 1. FUNDAMENTOS DE PROGRAMACIÓN (Algoritmos, Diagramas de Flujo y Programas) Apuntes elaborados por: M. C. JOSÉ NICOLÁS ZARAGOZA
  • 2. En nuestras actividades cotidianas siempre están presentes las computadoras ya sea en forma directa o indirecta. Términos como "programable" y "computarizado" se han vuelto tan comunes, que incluso en nuestro hogar contamos con enseres desarrollados con tecnología derivada de la computación. Así mismo, en nuestras actividades diarias utilizamos continuamente el concepto de programación, en ocasiones de manera inconsciente. Pero, ¿Qué son las computadoras? ¿Cómo nacen las computadoras? ¿Cuál fue su desarrollo? ¿Cómo están constituidas? ¿Cómo funcionan? FUNDAMENTOS DE PROGRAMACIÓN .
  • 3. Breve historia de la computadora. • 4500 a. c. en Mesopotamia, se han encontrado tabletas de arcilla con información acerca de ingresos, desembolsos, inventarios, préstamos, compras, arrendamientos, formación y disolución de sociedades y contratos. • Aparece el ábaco, utilizado por los árabes y los chinos desde hace poco más de 2000 años.
  • 4. Los mayas descubrieron y utilizaron el concepto del cero, con lo que pudieron construir un poderoso sistema numérico que les permitió abordar problemas matemáticos y astronómicos • Hace más de 500 años en Sudamérica, los Incas desarrollaron sistemas de información bastante completos, con bases de datos y modelos de procesamiento compuestos por miles de cuerdas con nudos denominados quipus.
  • 5. El 1642, el matemático y filósofo francés Blaise Pascal inventó una máquina capaz de llevar la cuenta automática de sumas y restas elementales. En esta máquina, conocida posteriormente como ’Pascalina’, existían ruedas dentadas que representaban las unidades, decenas, centenas y así sucesivamente.
  • 6. • En 1671, el alemán Gottfried W. Leibnitz mejoró el sistema de Pascal y proyectó una máquina que podía sumar, restar, multiplicar, dividir y extraer raíces. • En 1804, el francés Joseph-Marie Jacquard puso en práctica la idea de automatizar ciertas fases del funcionamiento de las máquinas de tejido textil, las telas mostrarían un dibujo correspondiente a un patrón registrado en una tarjeta perforada que la máquina podía identificar. • En 1822, el matemático inglés Charles Babbage ideó su máquina diferencial que podía realizar automáticamente operaciones aritméticas en secuencias diferentes.
  • 7. • En 1887, el experto en estadística Herman Hollerith inventó un sistema para representar los datos esenciales de cada ciudadano bajo la forma de agujeros hechos en una tarjeta de cartón que podía ser contada (procesada) por una máquina. • En 1936, el alemán Konrad Zuse de 26 años construyó un calculador electromecánico, el Z1.
  • 8. • El primer prototipo de computadora electrónica se concibió en el invierno de 1937-1938 por el doctor John Vincent Atanasoff, profesor de física y matemáticas en Iowa State College. • En 1944 el profesor Howard H. Aiken, de la Universidad de Harvard en los Estados Unidos, desarrolló después de siete años de estudio un calculador automático llamado Mark I, el cual funcionaba con instrucciones que se leían en una cinta de papel perforada. • En febrero de 1946 comenzó a funcionar la ENIAC (Electronic Numerical Integrator And Calculador), desarrollada en la Universidad de Pensilvania por J. P. Eckert, J. W. Mauchly y H. H. Goldstine.
  • 9. El científico de origen húngaro, John Von Neumann proyectó lo que hoy es universalmente reconocido como el prototipo de las computadoras modernas, la EDVAC (Electronic Discrete Variable Automatic Calculador), cuyo diseño estaba basado en el concepto de “programa almacenado”. Von Neumann escribió un trabajo en el cual definía los conceptos básicos con los que debería contar una computadora electrónica: 1) utilizar sistemas de numeración binarios, y 2) que las instrucciones para la computadora, así como los datos que se manipularan, se almacenaran internamente en la máquina.
  • 10. • La compañía Remington Rand desarrolló la UNIVAC I (UNIVersal Automatic Computer), que fue la primera computadora de uso comercial, apareciendo en el año de 1951.
  • 11. • A fines de 1954, en Boston, entró en servicio por primera vez la IBM 650, esta computadora dio a la IBM el liderazgo en la producción de computadoras. Iniciando la primera generación de computadoras.
  • 12. • Las computadoras de la segunda generación, que comenzó a aparecer en 1959, eran más pequeñas y rápidas y tenían una capacidad de cómputo mayor. La escritura de programas de aplicación en lenguaje de máquina fue desplazada por el uso de lenguajes de programación de alto nivel, los transistores sustituyeron a los bulbos.
  • 13. •En 1964 apareció en el mercado la tercera generación de computadoras constituidas con circuitos integrados monolíticos, gracias a los cuales aumentó considerablemente su velocidad de operación, incrementando su confiabilidad y disminuyendo su costo y tamaño. Una de las características fundamentales de estos nuevos equipos fue la gran compatibilidad de sus componentes. • A principios de la década de los setentas, la manufactura de circuitos integrados llegó a ser tan avanzada que se lograron incorporar miles de componentes electrónicos en espacios de una fracción de pulgada. A partir de estos circuitos aparecen los microprocesadores y surgen las computadoras de la cuarta generación.
  • 14. La Apple I, en 1976. Las primeras microcomputadoras fueron: La Altair 8800, en 1975.
  • 15. La Apple II y la TRS-80 de Radio Shack, en 1977.
  • 16. La Commodore 16 y la Atari, en 1980.
  • 17. La IBM-PC, en diciembre de 1981.
  • 18.
  • 19. Conceptos Básicos. Las computadoras u ordenadores, son dispositivos electrónicos que manejan símbolos o datos con gran precisión y velocidad, y están diseñados para aceptar entradas (datos), procesarlos y producir salidas (resultados). Así mismo, las computadoras son consideradas como sistemas que realizan diversas operaciones las cuales incluyen el procesamiento de datos, el cual consta de tres actividades básicas: 1. Captura de los datos de entrada. 2. Manipulación de los datos. 2.1. Agrupación. 2.1.1. Códigos numéricos. 2.1.2. Códigos alfabéticos. 2.1.3. Códigos alfanuméricos. 2.2. Cálculo. 2.3. Clasificación. 2.4. Síntesis. 3. Manejo de los resultados de salida. 3.1. Almacenamiento y recuperación. 3.2. Comunicación y reproducción.
  • 20. Operaciones de proceso de las computadoras. 1. Operaciones de entrada/salida. 2. Operaciones de cálculo y manipulación de texto. 3. Operaciones de lógica/comparación. 4. Operaciones de almacenamiento y recuperación de información.
  • 21. Los sistemas de cómputo. Las computadoras están conformadas a su vez por subsistemas. Los componentes de las computadoras electrónicas digitales son los siguientes: 1.Dispositivos de entrada. 2.Unidad Central de Proceso. 2.1.Unidad aritmética-lógica. 2.2.Unidad de control. 3.Almacenamiento primario (memoria principal). 4.Dispositivos de almacenamiento secundario (memoria secundaria). 5.Dispositivos de salida.
  • 22. Unidad Central de Proceso (CPU) Unidad de Control Unidad de aritmética y lógica Unidad de entrada Unidad de salida Unidad de memoria principal Componentes de un sistema de cómputo.
  • 23. A. Dispositivos de entrada. Entre los dispositivos de entrada se encuentran: 1. El teclado alfanumérico. 2. El ratón. 3. Lápiz óptico. 4. Pantallas sensibles al tacto. 5. Cámaras de televisión, video o web. 6. Micrófonos. 7. Lectores de código de barras. 8. Sensores (térmicos, eléctricos, etc.). 9. Lectores de dispositivos magnéticos y ópticos (cintas, disquete, cd o dvd).
  • 24. B. Unidad Central de Proceso. Para ejecutar estas acciones, la unidad central de proceso cuenta con los dos siguientes elementos fundamentales: 1.Unidad aritmética-lógica. Esta unidad puede realizar un número reducido de operaciones elementales a gran velocidad, éstas son: • Suma y resta de dos números. • Multiplicación y división de dos números. • Operaciones lógicas: and, or, not. • Comparación entre dos valores. 2.Unidad de control. Sus funciones consisten en leer y escribir contenidos en las celdillas de memoria; llevar y traer datos entre celdillas y, decodificar y ejecutar las instrucciones de un programa. Palabra. Es el número de bits que procesa la computadora por unidad de tiempo, esto, de acuerdo a cada impulso eléctrico que emite el reloj. Las computadoras tienen tamaños de palabra de 32, 64 y 128 bits.
  • 25. C. Almacenamiento primario (memoria principal). La unidad de memoria principal de la computadora permite almacenar instrucciones y datos, además de resultados parciales y finales que se generen. Básicamente podemos decir que la memoria principal se utiliza para cuatro funciones: • Almacenamiento de entrada. (buffer de entrada) • Memoria de trabajo. • Almacenamiento de salida. (buffer de salida) • Área de almacenamiento de programas.
  • 26. Hay dos tipos de memoria que son: a) Memoria RAM (Random Access Memory / Memoria de Acceso Aleatorio). - Es una memoria de lectura y escritura. - Es volátil (pierde información con la falta de energía eléctrica). - Se pueden direccionar sus celdillas aleatoriamente. - En esta memoria residen los programas y datos del usuario. b) Memoria ROM (Read Only Memory / Memoria de Solo Lectura). - Memoria de lectura. - Instrucciones permanentes grabadas con anterioridad. - No se ve afectada por la falta de corriente eléctrica. - El usuario podrá utilizar las instrucciones que contiene, más no podrá modificarlas. Los componentes de la memoria principal son la dirección y el contenido. La dirección, es la posición relativa de un byte en memoria y, contenido, es el dato o instrucción almacenado en dicha posición.
  • 27. D. Dispositivos de almacenamiento secundario (memoria secundaria). Este tipo de memoria es de lectura/escritura y puede consistir en alguno de los siguientes dispositivos: a) Discos magnéticos fijos o removibles (disquetes, discos duros, discos zip, etc.). b) Discos ópticos (discos compactos o dvd). c) Cintas magnéticas. d) Dispositivos: memory Stick, memory Flash y memorias USB.
  • 28. E. Dispositivos de salida. Algunos de los dispositivos de salida más comunes son: • Monitor. • Impresoras (de chorro de tinta, LASER, de matriz de puntos). • Bocinas. • Dispositivos grabadores de medios magnéticos y ópticos (cinta, disquete, cd, dvd, etc.). • Cañón de proyección. • Brazos robóticos.
  • 29. Finalmente, un sistema de cómputo está conformado por dos estructuras: el hardware y el software. Hardware. Es el conjunto de componentes físicos, ya sean electrónicos, magnéticos o mecánicos. Software. Es el conjunto de programas y datos necesarios para el funcionamiento de la computadora. Este conjunto de programas está compuesto entre otros por: • Sistemas operativos (windows, linux, unix, panther, jaguar, etc.). • Paquetes (Word, Excel, MathLab, SPSS, CONTPAQ, etc.). • Programas de aplicación (contabilidad, inventarios, nómina, control escolar, etc.). • Utilerías (Norton, Nero, FTP, etc.). • Ensambladores, compiladores e intérpretes.
  • 30. Concepto de Lenguaje. En general, las computadoras operan bajo un sistema binario para representar y manejar internamente la información. Para podernos comunicar con la computadora requerimos de un sistema operativo o de un lenguaje. Un lenguaje es un conjunto de símbolos, señales o sonidos articulados usados para comunicarse o para dar a entender una cosa. En computación es un conjunto de instrucciones que nos sirven para comunicarnos con la computadora.
  • 31. Las primeras computadoras que operaban bajo el concepto de Von Neumann (quién introdujo el concepto de programa almacenado) eran programadas en lenguaje máquina (lenguaje binario, compuesto de unos y ceros), y las instrucciones se introducían en forma secuencial (una tras otra) a través de tarjetas perforadas. Además, este lenguaje máquina era específico para cada computadora. Esto hacía la programación muy complicada, lenta y costosa; por lo que sólo unos cuantos “iniciados” podían operar las computadoras.
  • 32. Ejemplo de un programa en código máquina que imprime los números del 0 al 99: 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0
  • 33. Sin embargo en la década de los cincuenta aparecen los primeros lenguajes de programación, también llamados lenguajes simbólicos, el primero fue el lenguaje ensamblador, el cual constaba de instrucciones representadas por caracteres alfanuméricos, los cuales conforman instrucciones, las cuales son más fáciles de comprender. Sin embargo, al igual que con el lenguaje máquina, el lenguaje ensamblador era especifico para cada tipo de computadora, y por su bajo nivel de comunicación con el usuario se denominaron lenguajes de bajo nivel. Se presenta el mismo programa contador de 0 a 99: LD C, 00 Carga (LOAD) C con un cero Ciclo: LD A, 63 Carga A con un 63 (63 en hexadecimal es 99 en decimal) INC C Incrementa el contenido de C SUB C Hace la resta C - A JP NZ ciclo Si el resultado no fue cero salta (JUMP) a ciclo.
  • 34. Al lenguaje máquina y lenguaje ensamblador se les denomina: lenguajes de bajo nivel, por su bajo nivel de comunicación con el usuario. a) Lenguaje Máquina. El lenguaje máquina es una representación particular de las instrucciones y datos, los cuales son interpretados inmediatamente por el hardware de la computadora. Esta representación está dada en bits por lo que puede presentarse en términos de ceros y unos. b) Lenguaje Ensamblador. El lenguaje ensamblador consta de un conjunto de instrucciones representadas con caracteres alfanuméricos, que son nemotécnicos de palabras que indican instrucciones, lo cual le da una mayor comprensión. Al igual que el lenguaje de máquina, el lenguaje ensamblador es específico para cada arquitectura de computadoras. Programa en Lenguaje Ensamblador ⇒ Programa Ensamblador ⇒ Programa en Código de Máquina
  • 35. Pero es finales de los años cincuenta cuando aparecen los primeros lenguajes de alto nivel, los cuales tiene entre otras ventajas: que son fáciles de aprender, son independientes de la computadora y constan de instrucciones formadas por palabras cortas del idioma inglés; permitiendo elaborar programas fáciles de entender y de corregir, así como sistemas grandes y complejos en un menor tiempo. Lenguajes de Alto Nivel. i) Fáciles de aprender. ii) Permiten elaborar programas fáciles de entender y por lo tanto de corregir. iii) Son independientes de la computadora. Pueden utilizarse en cualquier máquina y son de carácter universal. iv) Utilizan un conjunto de palabras generalmente en inglés, que permiten comprender con mayor facilidad y claridad el razonamiento que presenta el programador para la solución de su problema.
  • 36. Algunos de los lenguajes de programación más comúnmente usados son: a) FORTRAN (FORmula TRANslation o TRANslator). (Traducción ó Traductor de Fórmulas). Fue el primer lenguaje de programación diseñado en 1957 por John Backus para la IBM, su principal aplicación es en el área de Ingeniería y Ciencias. b) COBOL (COmmon Business Oriented Language). (Lenguaje Común Orientado a Negocios). Uno de los primeros lenguajes de programación. Fue diseñado en 1958 por la almirante Grace Murray Hopper dentro de un comité norteamericano llamado CODASYL (COnference on DAta SYstems Languages) y se utiliza para aplicaciones comerciales y administrativas.
  • 37. c) ALGOL (ALGOrithmic Language). (Lenguaje Algorítmico) Lenguaje de aplicaciones científicas que surge en 1960 diseñado por un comité internacional con sede en Europa, fue el primero con una sintaxis definida de manera formal y matemática, por lo que puede ser considerado como el iniciador de la familia de lenguajes de programación estructurada. d) BASIC (Beginners All purpose Symbolic Instruction Code). (Código de Instrucciones Simbólicas para Principiantes para Todo uso). Lenguaje diseñado para la educación y dedicado fundamentalmente a la programación de máquinas pequeñas. Fue diseñado en 1964 por John Kemeny y Thomas Kurtz, del Dartmouth College, en New Hampshire, Estados Unidos.
  • 38. e) PL/1 (Programming Language 1). (Lenguaje de Programación 1). Lenguaje de programación muy amplio y extenso que IBM propuso en 1964 como alternativa para trabajos científicos y comerciales. f) Pascal. Lenguaje de programación diseñado en 1970 por Niklaus Wirth, del Instituto Tecnológico de Zurich, en Suiza, llamado así en honor a Blas Pascal. g) C. Lenguaje especializado para la programación de sistemas. Diseñado en 1972 por Dennis Ritchie, de los Laboratorios Bell, en New Jersey, Estados Unidos. Se emplea para escribir compiladores y sistemas operativos. C++ es una versión expandida de C y fue desarrollada 1980 por Bjarne Stroustup de los Laboratorios Bell denominada originalmente “C con clases”, cambiando su nombre en 1983 a C++. La principal aplicación de C++ es la programación orientada a objetos (OOP, Object-Oriented Programming).
  • 39. h) RPG (Report Program Generator). (Programa Generador de Reportes). Es un lenguaje diseñado en 1956 por IBM para producir, como su nombre lo indica, informes administrativos y comerciales. i) Ada. Llamado así en honor de Augusta Ada Lovelace (Ada Byron), asistente de Charles Babbage, quién es considerada como la primer programadora. Este lenguaje fue desarrollado en 1978 por un grupo a cargo de Jean Ichbiah, con la intención de tener un único lenguaje de programación de uso universal. j) Modula-2. Lenguaje creado en 1978, diseñado por el creador de Pascal, Niklaus Wirth, por lo que se considera una especie de “Pascal mejorado”.
  • 40. k) LISP (LISt Processing). (Procesador de Listas). Lenguaje diseñado por John McCarthy en 1960, usado en la investigación de la inteligencia artificial. Maneja en forma dinámica conjuntos llamados listas. l) PROLOG (PROgramming LOGic). (Programación Lógica). Lenguaje creado en 1972 por Alan Comerauer y Philippe Roussel en la Universidad de Marsella, Francia. Adoptado por el proyecto de la quinta generación de computadoras emprendido en Japón, como vehículo de creación de los sistemas y programas para el manejo de inteligencia artificial. m) Logo. Fue diseñado por un educador y matemático del Instituto Tecnológico de Massachussets, Seymour Paper a finales de los 60’s. Se usa para aplicaciones de tipo educativo y se ha enfocado principalmente para enseñar a los niños computación.
  • 41. n) Smalltalk. La primera versión de Smalltalk fue desarrolada en XEROX en 1971. Smalltalk es el primer lenguaje orientado a objetos con una interfaz de usuario integrada, con ventanas que se superponen y un editor con las opciones copiar y pegar. o) PERL (Practical Extraction and Reporting Language).. PERL fue desarrollado por Larry Wall en 1987 para ser utilizado en el manejo de textos. p) Java. El lenguaje Java nace en 1991 en Sun Microsystems Inc. Es un lenguaje derivado de C y fue creado por James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan. Originalmente se llamó “Oak”, pero en 1995 cambió su nombre a Java. q) Phyton. Creado a finales de los años 80 en los Países Bajos por Guido van Rossum , es considerado un lenguaje multiparadigma.
  • 42. CONSIDERACIONES ACERCA DE LOS LENGUAJES DE PROGRAMACION. Algunos aspectos que debemos considerar para los lenguajes de programación son: a) Modularidad. b) Transportabilidad (Portabilidad). c) Eficiencia. d) Facilidades para la entrada/salida de datos.
  • 43. Compiladores e Intérpretes. a) Compiladores. Son programas que teniendo como entrada un programa fuente en lenguaje de alto nivel, producen un programa objeto listo para ser ejecutado. * Programa Fuente. Es un programa que está escrito en lenguaje ensamblador o lenguaje de alto nivel. * Programa Objeto. Es aquel que se encuentra en código máquina y que está listo para ser ejecutado. Un compilador tiene como función producir programas objeto a partir del programa fuente: Programa Fuente (En Lenguaje de Programación) ⇒ Compilador ⇒ Programa Objeto (En Código de Máquina)
  • 44. El trabajo de un compilador puede dividirse en cinco fases: i) Análisis Lexicográfico.- Verificación de que las palabras utilizadas en el programa fuente son válidas en el lenguaje. ii) Análisis de Sintaxis.- Examen de la ortografía y organización de cada instrucción del programa fuente. iii) Generación de Código Intermedio.- Producción de un conjunto de instrucciones similares a las de un lenguaje ensamblador que corresponden al programa que se está compilando. iv) Optimización de Código.- Simplificación del código intermedio obtenido, con el fin de producir un programa objeto más compacto y con uso óptimo de memoria. v) Generación de Código Máquina.- Producción final del programa objeto (programa ejecutable).
  • 45. b) Intérpretes. Un intérprete es un programa que traduce y ejecuta una por una, las instrucciones de un programa fuente escrito en lenguaje de alto nivel. El intérprete no produce un programa objeto, analiza la sintaxis y semántica de cada línea del programa y si son correctas, las ejecuta, de lo contrario manda un mensaje del error correspondiente y se suspende la ejecución. Para la programación en lenguajes como FORTRAN, COBOL, ALGOL, PASCAL, C y algunas versiones de BASIC (VISUAL BASIC), se utilizan compiladores. En casi todas las versiones antiguas de BASIC para microcomputadoras, así como en los lenguajes LISP, FORTH, LOGO y JAVA, se utilizan intérpretes.
  • 46. PARADIGMAS DE LA PROGRAMACIÓN. Con el advenimiento de estos lenguajes, la programación empezó a tener un gran desarrollo, apareciendo diferentes estilos de programación, ya que los avances tecnológicos de los equipos de cómputo, permitieron la creación de nuevos lenguajes, así como de los cinco estilos o paradigmas de programación que se indican a continuación. 1. Programación Lineal. 2. Programación Estructurada y Modular. 3. Programación Orientada a Objetos. 4. Programación Orientada a Eventos. 5. Programación Concurrente.
  • 47. 1. Programación Lineal. La programación lineal, fue el primer estilo de programación y era utilizado por los primeros lenguajes de alto nivel BASIC, FORTRAN, COBOL, etc. Es un tipo de programación imperativa, donde el programa recibe entradas de datos, los procesa y devuelve como salidas una serie de resultados. La forma en que se ejecutan los procesos es secuencial, esto es, se ejecutan una instrucción tras otra hasta la terminación del programa. Sin embargo, este tipo de programación permite el uso de transferencias de control y de llamadas a subrutinas o subprogramas.
  • 48. Dentro de las transferencias de control, existen dos tipos de transferencias, estas son: 1) Transferencia incondicional. Utiliza la sentencia GOTO para ceder o transferir el control de la ejecución del programa sin imponer ningún tipo de condición. Esto provoca que durante su ejecución, el programa pueda saltar de una instrucción que se encuentre al principio hacía otra que se encuentre al final, brincando después a otra línea del programa, y así sucesivamente, haciendo que los programas se vuelvan mas complicados conforme aumentan las sentencias de transferencia incondicional, haciendo más difícil su entendimiento y su corrección. 2) Transferencia condicional. También utiliza la sentencia GOTO, pero esta va precedida de alguna sentencia condicional como la sentencia IF o IF-THEN.
  • 49. Además de las transferencias de control, existen las llamadas (CALL) y transferencias (GOSUB) a subrutinas y subprogramas, los cuales son pequeños programas que realizan operaciones muy específicas, los cuales al terminar de realizar sus operaciones, devuelven el control al programa que los llamó. El concepto de programación lineal fue muy popular en sus inicios, pero la creación de programas y sistemas con este estilo se volvía compleja y difícil cuando los programas aumentaban de tamaño por lo que a finales de los sesenta se buscó un nuevo estilo de programación.
  • 50. 2. Programación Estructurada y Modular. La programación estructurada y modular, de hecho está compuesta por dos estilos de programación, los cuales se complementan, aún cuando en ocasiones son utilizados ambos términos como sinónimos. La programación estructurada, basada en la programación lineal, es una metodología que utiliza una lógica ordenada y simple, haciendo uso de las estructuras lógicas de la programación, también llamadas estructuras de control, las cuales se clasifican en tres tipos: a) Estructuras Secuenciales. Es la ejecución de un proceso seguida inmediatamente por otro. Esto es, una secuencia de instrucciones. b) Estructuras Selectivas o de Decisión. Indican la ejecución de procesos de acuerdo a una expresión evaluada, denominada expresión condicional, este tipo de estructuras se encuentran bien definidas, eliminando las transferencias de control. Utilizan las sentencias IF y CASE.
  • 51. c) Estructuras Repetitivas, Iterativas, Ciclos o Bucles. Indican la acción repetida de un proceso o procesos, mientras (DO-WHILE) o hasta (REPEAT-UNTIL) que se cumpla una condición. También puede ejecutarse la estructura un determinado número de veces (FOR), desde un valor inicial hasta un valor final. La programación modular, también llamada procedimental o funcional, consiste en dividir un problema en problemas más pequeños, llamados subproblemas o módulos. Estos a su vez se dividen en subproblemas más pequeños y así sucesivamente, con la idea de solucionar los problemas más pequeños y así, paso a paso, darle solución al problema en general. Cada uno de estos módulos o subprobgramas, reciben los nombres de funciones o procedimientos, según el tipo de proceso que ejecuten.
  • 52. 3. Programación Orientada a Objetos. Otro estilo de programación, es el de la programación orientada a objetos (POO). El elemento fundamental de la programación orientada a objetos es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización. También podemos definirlo como una encapsulación de un conjunto de datos y los métodos para manipularlos. El diseño orientado a objetos se interesa en primer lugar por los datos, a los que se asocian posteriormente procedimientos. Cuando escribimos un programa orientado a objetos, lo que hacemos es diseñar un conjunto de clases, desde las cuales se crean los objetos necesarios cuando el programa se ejecute. Cada una de estas clases incluye dos partes claramente diferenciables: los atributos y los métodos.
  • 53. Los atributos definen el estado de cada uno de los objetos de esa clase y los métodos su comportamiento. Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia. Normalmente, los atributos se ocultan a los usuarios del objeto, manteniendo como única conexión con el exterior, los mensajes. Objeto Atributos métodos mensajes
  • 54. Cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento), es una de las características fundamentales en la POO. Objetos: Atributos: Nombre Edad Licencia de conducir Número Fabricante Modelo Número de serie Tipo de carrocería Color Relaciones: Posee
  • 55. 4. Programación Orientada a Eventos. La programación orientada a eventos, asimila elementos de la programación orientada a objetos, ligando unidades de código escritas para determinado objeto, mediante eventos que pueden ocurrir sobre dicho objeto, de tal forma que cuando ocurra un evento se ejecute la unidad de código correspondiente. A la unidad que agrupa ese código recibe el nombre de procedimiento conducido por un evento. En general un evento ocurre cada vez que un sistema orientado a objetos y un actor (persona, dispositivo o sistema externo) intercambian información. Los lenguajes visuales son básicamente orientados a objetos, pero también están orientados a eventos. Por ejemplo, una aplicación en Windows es conducida por eventos y orientada a objetos.
  • 56. 5. Programación Concurrente. La programación concurrente es soportada por casi todos los sistemas operativos utilizados en la actualidad. También se le conoce con el nombre de multiprogramación o multitarea, y se refieren a la ejecución intercalada de dos o más programas diferentes e independientes por la misma computadora. Sin embargo, la multiprogramación no se define como la ejecución de instrucciones de varios programas en el mismo instante de tiempo. Más bien significa que el procesador puede tener acceso a varios programas de uno o más usuarios y que ejecuta una porción de un programa, después una porción de otro programa y así sucesivamente. Por lo que el sistema operativo transfiere el control de un programa a otro de manera casi instantánea.
  • 57. Principales Herramientas para el Análisis y Diseño. La ingeniería es el análisis, diseño, construcción, verificación y desarrollo de entidades técnicas (o sociales). Con independencia de la entidad a la cual se va a aplicar la ingeniería, se deben cuestionar y responder las siguientes preguntas: · ¿Cuál es el problema a resolver? · ¿Cuáles son las características de la entidad que se utiliza para resolver el problema? · ¿Cómo se realizará la entidad (y la solución)? · ¿Cómo se construirá la entidad? · ¿Qué enfoque se va a utilizar para no repetir los errores que se cometieron en el diseño y en la construcción de la entidad? · ¿Cómo se apoyará la entidad cuando los usuarios soliciten correcciones, adaptaciones y mejoras de la entidad?
  • 58. El Instituto de Ingenieros Eléctricos y Electrónicos (IEEE – Institute of Electrical & Electronics Engineers-), define la Ingeniería de Software como: La aplicación de un enfoque sistemático, disciplinado y cuantificable hacía el desarrollo, operación y mantenimiento del software; es decir, la aplicación de ingeniería al software. El trabajo que se asocia a la ingeniería del software se puede dividir en tres fases genéricas, con independencia del área de aplicación, tamaño o complejidad del proyecto. Cada fase se enfrenta con una o varias cuestiones de las indicadas anteriormente.
  • 59. La fase de definición se centra sobre el qué. Es decir, durante la definición, el que desarrolla el software intenta identificar que información ha de ser procesada, qué interfaces van a ser establecidas, qué restricciones de diseño existen, y qué criterios de validación se necesitan para definir un sistema correcto. Por tanto, han de identificarse los requisitos clave del sistema y del software. Aunque los métodos aplicados durante la fase de definición variarán dependiendo del paradigma de ingeniería del software (o combinación de paradigmas) que se aplique, de alguna manera se llevarán a cabo tres tareas principales: ingeniería de sistemas o de información, planificación del proyecto del software, y análisis y determinación de los requerimientos.
  • 60. La fase de desarrollo se centra en el cómo. Es decir, durante el desarrollo un ingeniero de software intenta definir cómo han de diseñarse las estructuras de datos, cómo ha de implementarse la función como una arquitectura del software, cómo han de implementarse los detalles de los procedimientos, cómo han de definirse las interfaces, cómo ha de traducirse el diseño en un lenguaje de programación y cómo han de realizarse las pruebas. Los métodos aplicados durante la fase de desarrollo variarán, aunque las tres tareas técnicas específicas que deberán ocurrir siempre son: diseño del software, generación del código y prueba del software.
  • 61. La fase de mantenimiento se centra en el cambio que va asociado a la corrección de errores, a las adaptaciones requeridas a medida que evoluciona el entorno del software, y a cambios debidos a las mejoras producidas por los requisitos cambiantes del cliente. La fase de mantenimiento vuelve a aplicar los pasos de las fases de definición y de desarrollo, pero en el contexto del software ya existente. Durante la fase de mantenimiento se encuentran cuatro tipos de cambios: Para resolver los problemas reales de una industria, un ingeniero del software debe incorporar una estrategia de desarrollo que acompañe la proceso, la cual incluye métodos y herramientas. Esta estrategia se denomina modelo de proceso o paradigma de ingeniería del software. Se selecciona un modelo de proceso para la ingeniería del software según la naturaleza del proyecto y de la aplicación, los métodos y las herramientas a utilizarse, y los controles y metas que se requieran.
  • 62. Todo el desarrollo del software se puede caracterizar como un ciclo de resolución de problemas en le que se encuentran cuatro etapas distintas: situación actual, definición de problemas, desarrollo técnico e integración de soluciones. La situación actual representa el estado actual de sucesos; la definición de problemas identifica el problema específico a resolverse; el desarrollo técnico resuelve el problema a través de la aplicación de alguna técnica o tecnología, y la integración de soluciones ofrece los resultados a los solicitantes o usuarios (por ejemplo: documentos, programas, datos, producto nuevo, etc.). El ciclo de resolución de problemas se aplica al trabajo de ingeniería de software en diferentes niveles de solución. Se puede utilizar a un macro nivel, considerando la aplicación entera; en un nivel medio, cuando se están considerando los componentes del sistema e incluso a nivel de código o programa.
  • 63. Fases de un ciclo de resolución de problemas Situación actual Integración de soluciones Desarrollo técnico Definición de problemas