Está en la página 1de 12

Programa

Es una secuencia de instrucciones que se ejecutaran para realizar una función.


Sistema Operativo
Programa o conjunto de programas que administra la operación de la computadora asignando
tiempo del procesador, espacio en memoria, recursos a los programas de aplicación que se
ejecuten.
Ejemplos:
 Windows
 Linux
 Unix
 MacOS

Componentes más importantes de un sistema operativo


 Procesador de texto
 Administrador de tareas
 Administrador de dispositivos
 Interfase del usuario
 Comunicaciones
 Administrador de archivos
 Administrador de memoria
 Lenguajes de programación
Ensamblador
Compiladores
Interpretes
Depurador (Debug)
 Aplicaciones
El Proceso de desarrollo de programas
El desarrollo de programas de computadora ha evolucionado desde el tiempo de hacer
una lista de comandos en secuencia lineal, luego hacer un programa con instrucciones mas
complejas con instrucciones concisas, funciones y rutinas o archivos entrelazados etc, después se
adoptó la forma de programación estructurada hasta llegar al diseño de Programación Orientada
a Objetos con versiones visuales de los lenguajes.
El ciclo de desarrollo de un programa de computadora implica las siguientes etapas que pueden
realizarse en secuencia, traslapadas o iterativamente:
1. Análisis de los requerimientos
1.1. Conocer el problema
1.2. Conocer la solución
1.2.1. Hallar una solución
2. Diseño preliminar
3. Prototipo (si se requiere)
4. Diseño detallado
5. Codificación (Escribir el programa en el lenguaje de la computadora)
5.1. Interfase con el usuario(Preguntas, respuestas, Reportes, Formularios)
5.2. Manejo de la información
5.3. Formulas y procesamiento de la información
6. Pruebas
7. Mantenimiento (este se puede aplicar desde el diseño detallado)

1.1.1.1.1. Operación del Programa


El Modo de Operación del programa puede ser de varias formas, dependiendo de cómo se
desee o se pueda realizar la ejecución del programa.
En el procesamiento por lotes “BATCH”, el programa se forma en una fila de comandos
y se procesa cuando le toque el turno en secuencia “el primero en entrar es el primero en salir”
(PEPS), en este tipo de procesamiento no se toma en cuenta la duración del procesamiento de
una tarea.
Procesamiento en tiempo y recursos compartidos. (Multitatrea)
Multiprocesador. Repartir una tarea en varios procesadores y realizar operaciones en
paralelo para que al final se reúnen los resultados parciales en un resultado final.

En el procesamiento por eventos la ejecución de una función del programa responde a un


evento realizado por el usuario o por un dispositivo, mientras tanto el programa realiza un ciclo
de espera hasta que sucede un evento, después realiza la función correspondiente, y regresa al
ciclo de espera, normalmente es un lazo de programa “Polling”.
Procesamiento en tiempo real el programa toma las entradas de un proceso en operación,
procesa la información y ajusta algún parámetro del proceso, toma alguna decisión o genera un
bloque de información para ser usada lo más pronto posible. El procesamiento de imágenes
puede ser útil para algunos procesos de manufactura, ensamble, de identificación o medición de
objetos en línea.

1.1.1.1.2. Modos de Diseño de programas


El diseño de programas se ha venido realizando de acuerdo a las posibilidades y la
tecnología disponible en cada época llamándoles “paradigmas” o modos de diseñar programas o
“software”, que sin duda debe estar soportado por otros programas para ese propósito.
En la década de los 70s, se consideraba que programar en forma estructurada y de
“arriba-abajo” top-down era la forma correcta de hacerlo, de esta manera se le dio solución al
problema de hacer programas sin algún formato, solamente el código escrito según el criterio del
programador comúnmente se le llamaba programas tipo “spaghetti” debido a la secuencia
compleja del flujo de ejecución del programa.
El diseño de “arriba –abajo” se realiza escribiendo primero la interfase del usuario o las
pantallas o formularios de entrada al programa, después se desarrollan rutinas del siguiente nivel
y así sucesivamente, hasta escribir las rutinas controladoras de dispositivos al final. Existe la
contraparte, el diseño de “abajo hacia arriba”, que es a la inversa del que se describió
anteriormente. Las ventajas relevantes del método descendente “arriba abajo” son dos, primero
es que la interfase entre un módulo y otro para pasar datos y tareas es desarrollado aun sin tener
terminado el módulo del nivel siguiente, la segunda ventaja se deriva de la primera y se refiere a
la posibilidad de demostrar avances ó emitir una versión de prueba del programa pero con
algunas funciones deshabilitadas, debido a que no están terminadas.
El análisis estructurado descompone el problema a resolver en una secuencia estructurada
de especificaciones que son: (1) Diagramas de Flujo de Datos (DFD), donde se muestra la
descomposición toda la función en procesos, y el flujo de datos e interfases entre los procesos;
(2) un diccionario de datos que documenta los datos y las interfases en el DFD, y (3) la
descripción de transformaciones que documenta la función de cada proceso, del DFD.
El diseño estructurado pretende realizar un producto que satisface las especificaciones
técnicas y las restricciones impuestas por el entorno computacional científico y comercial. El
diseño estructurado produce componentes que se pueden llamar “cajas negras” porque se conoce
su función, pero no como la hace.
La programación estructurada establece técnicas estandarizadas de codificación, y evita
algunas instrucciones de los lenguajes que tienden a motivar los malos hábitos de programación.
Un programa estructurad se apega al diagrama de flujo que esta formado por sub funciones con
una entrada y una salida. Las ventajas de escribir programas estructurados son varias, son
programas fáciles de leer, de entender, de documentar con esto es más rápido encontrar errores o
realizar modificaciones.
El Desarrollo Orientado a Objetos descompone el problema en líneas de datos
relacionados entre sí. Conceptualmente, el programa es descompuesto en objetos, cada uno de
ellos es una combinación de datos que relaciona una parte del problema con el código que realiza
un conjunto de funciones bien definidas que usan estos datos. Los Datos y el código del
programa son encapsulados en un paquete cerrado, esta técnica es apropiada para aplicaciones
manejadas por eventos. Cada objeto se comporta como una caja negra que realiza sus funciones
bien definidas, en respuesta a la demanda, pero sin mostrar su contenido, o como trabaja. Un
objeto se activa al recibir un mensaje, y cuando termina responde con otro mensaje. Esta forma
de trabajar genera módulos separados y se evita que al modificar uno de ellos, afecte a otra parte
del programa.
El Análisis Orientado a Objetos de un problema resulta en una lista de objetos que
trabajarán juntos para resolver el problema. Esto incluye especificaciones de los datos (atributos)
y las funciones (servicios) de cada objeto. El análisis orientado a objetos se realiza sin considerar
el tipo de procesador o periféricos, el sistema operativo, las herramientas de diseño que serán
utilizadas en la etapa de programación.
En la Programación Orientada a Objetos, el programador usualmente inicia con una
plantilla de aplicación, que es un programa que ya tiene muchas funciones genéricas comunes a
la mayoría de los programas. Esta plantilla sirve como esqueleto para realizar un programa
completo. El programa de base o plantilla maneja normalmente un lazo de espera de eventos y
un identificador de eventos. El programador solamente tiene que agregar los objetos relacionados
a su aplicación agrupando los datos y funciones en unidades independientes. Los nuevos objetos
no tienen que desarrollarse desde cero, se pueden utilizar objetos existentes de la plantilla y
heredar sus propiedades para formar nuevos objetos.
Existe una variedad de programas de computadora que son de gran ayuda para el
desarrollo y documentación de los programas, esta clase de programas se llaman Herramientas
CASE (Computer Aided Software Engenieering) el uso de estas herramientas libran al
programador de hacer trabajo rutinario y tedioso que consume tiempo y no genera avance del
programa, por ejemplo buscar partes de código que no se utilizan, generar código a partir de un
formulario una gráfica o diagrama de flujo o generar documentación del programa a partir del
código.

Programación de descripción de Hardware sistemas numéricos


Tecnicas de programación para circuitos Digitales

PLD Dispositivos Logicos programables


Atmel, Motorola, Altera, Xilinx, Lattice, Cypress .

Lenguajes de descripción de circuitos de computadora


HDL ABEL, CUPL VHDL Verilog.

Con estos lenguajes se define la secuencia de estados, entradas y salidas, condiciones etc..
De un sistema digital secuencial.
Se escribe el programa utilizando instrucciones de tipo mnemonico y se genera un archivo de
conexiones internas del dispositivo PLD.
Este archivo de conexiones se descarga en el PLD y se realizan las conexiones internas.
El dispositivo PLD queda “programado” hasta que sea borrado o modificado el programa interno
de conexiones.

Circuitos Integrados
PLD Programmable Logic Device
GAL, FPGA,CPLD,

VHDL
Very High Speed Hardware Description Languagge

Desarrollo de apliciones de Circuitos digitales para realizarse mediante lógica programable


PAL,GAL, FPGA
Tipos de Lenguajes de Programación
Lenguajes de Bajo nivel y Lenguajes de alto nivel

Desde el la aparición de las primeras computadoras comerciales, aparecieron los primeros


lenguajes de programación, de bajo y de alto nivel. Al segundo grupo pertenecen la mayoría
de los lenguajes existentes, entre los que podemos destacar los siguientes:

ALGOL: (o Algol) Algorithmic Language (lenguaje algorítmico). Fue muy popular en las
universidades durante los años 60, pero no llegó a cuajar como lenguaje de utilización
comercial. Sin embargo, Algol influyó profundamente en varios lenguajes posteriores que sí
alcanzaron gran difusión, como Pascal, C y Ada. Hacia 1965 dos corrientes se distinguieron
sobre el tema de un sucesor para Algol. Como resultado se definieron los lenguajes Algol W
que es un lenguaje minimalista, rápidamente implementado y distribuido y, por otra parte,
Algol 68 que para la época está en la frontera entre un lenguaje para programar en él y un
lenguaje para investigar sobre él.

ADA: Lenguaje para desarrollo de aplicaciones seguras desarrollado por el Departamento de


Defensa Estadounidense en a finales de los 70s.

FORTRAN: (Acrónimo de FORmula TRANslator). Es el lenguaje de programación más


antiguo, aunque aún se sigue utilizando. Fue desarrollado para IBM desde 1954, se han
desarrollado varias versiones como Fortran II, Fortran IV, Fortran 77, 90, 95, y 2003.

BASIC: (Beginners All Porpouse Instruction Symbolic Code). Fué un lenguaje muy utilizado
en la década de los sesentas setentas y ochentas, aunque ha perdido terreno. Actualmente,
es muy utilizado Visual Basic, que es la versión creada por Microsoft para desarrollar
programas con interfaz gráfica en BASIC.

COBOL (COmmon Business Oriented Language): Se utilizaba hace años para la creación de
aplicaciones comerciales. Fue uno de los lenguajes de programación más populares y aún se
usa.

C: Fue creado por Brian Kernighan y Dennis Ritchie y es uno de los más utilizados en la
actualidad. El sistema operativo UNIX fue escrito en este lenguaje. Posteriormente a la
aparición de C, se diseñó C++, ampliación del anterior y que está dirigido a la OOP
(Programación Orientada a Objetos). Lenguaje de propósito general, existen versiones para
desarrollo de aplicaciones embebidas de microcontroladores. DEC Digital Equipment Corp.
Computadora Vax

PASCAL: Fue creado por Niklaus Wirth, que también creó Modula-2. Está pensado para crear
programas de tipo matemático. Delphi, entorno creado para desarrollar programas en 32
bits bajo interfaz gráfica, está basado en este lenguaje. En su versión Visual evoluciona a
Delphi como lenguaje de proposito general.

FORTH: Lenguaje orientado a aplicaciones embebidas “embbeded” para microcontroladores.

LOGO: Este lenguaje no se caracterizaba por su eficiencia, sino porque era muy fácil de
aprender. Fue diseñado con el objetivo de facilitar el aprendizaje de la programación a los
niños, que en el futuro podrían adaptarse fácilmente otro lenguaje más completo. Apenas se
usa hoy en día.

LISP (LISt Processing): El nombre es debido a que sus estructuras de datos fundamentales
son las listas. Está dirigido a la creación de sistemas que simulen la inteligencia humana.
DBASE: Lenguaje orientado a manejo de datos Tablas y Basas de Datos, apareciendo
posteriormente otras versiones como Clipper, FoxBase, y otros de la misma orientación
como Paradox, Access, Magic, etc.

MATLAB: SIMULINK: Lenguaje orientado a manejo de procesamiento numérico para


ingeniería, reclamando las aplicaciones tradicionales de los lenguajes de Ciencia e ingeniería
como FORTRAN, Existen muchos lenguajes y traductores con la misma orientación como
Matemática, Maple, Derive, MathCad etc.

LABVIEW: Lenguaje Gráfico G de Instrumentación virtual, que sirve como plataforma para
desarrollar aplicaciones en tiempo real para control, monitoreo de procesos industriales.

Desde que se inició la programación de ordenadores, los lenguajes han ido evolucionando,
hasta el punto de que podemos diferenciarlos en cinco generaciones:

 Primera generación: Al principio los ordenadores sólo podían ser programados en


código binario, es decir, secuencias de ceros y unos. Los programadores debían
adaptarse al lenguaje de la máquina (lenguaje máquina), que era distinto en cada
modelo de ordenador.
 Segunda generación: Dado que la programación en código binario era
extremadamente difícil, se crearon los primeros lenguajes simbólicos o
ensambladores. También dependían del ordenador que se estaba utilizando, aunque
el código era más legible.
 Tercera generación: Se crearon los primeros lenguajes de alto nivel. Los códigos
utilizados ya no dependían de la máquina y además eran muy parecidos al lenguaje
humano y el lenguaje matemático.
 Cuarta generación: Corresponde a los lenguajes que pertenecen a la OOP (Object
Oriented Programming o Programación Orientada a Objetos). En este tipo de
lenguajes se pretende que las aplicaciones consten de diversos segmentos de
programa, los cuales se pueden reutilizar para otros programas.
 Quinta generación: Esta generación se refiere a los lenguajes dirigidos a la
Inteligencia Artificial (IA). Aún están muy poco desarrollados.

JAVA, PEARL, PHYTON, HTML


Algoritmo

Secuencia de actividades necesarias para lograr un objetivo.

Un Algoritmo es un método para realizar una tarea de la manera más


eficiente, rápida y con la menor cantidad de recursos.

Formas de representar un algoritmo

 Lenguaje Natural
 Dibujos y símbolos mapas etc.
 Claves o códigos
 Diagrama de Flujo
 Pseudocódigo

Fundamentos de Programación Piensa en C


Osvaldo Cairó
Pearson Prentice Hall

Diagramas de Flujo
Figuras registradas bajo normas internacionales
ISO International Standard Organization
ANSI American National Standars Institute

Inicio / Fin
Inicio

Descripción Proceso
Ecuación

Condició Toma de decisión


No Conector
Si
n
Entrada o Salida de
Datos

Proceso Predefinido
Función o Subrutina

Conector en la a
a misma página

Conector fuera de
b página

Tarjeta Almacenamiento de
Perforada acceso secuencial

Cinta
Perforada
Pantalla

Disco
Magnético
Pseudocódigo
De Wikipedia, la enciclopedia libre

Un pseudocódigo o falso lenguaje, es una serie de normas léxicas y gramaticales parecidas a la


mayoría de los lenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la
fluidez del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en
cualquier lenguaje de programación, con la misma validez semántica, normalmente se utiliza en
las fases de análisis o diseño de Software, o en el estudio de un algoritmo. Forma parte de las
distintas herramientas de la ingeniería de software.

No hay ningún compilador o intérprete de pseudocódigo informático (en el caso de que lo


hubiera serían los lectores de dicho pseudocódigo informatico, por ej. una idea de un jefe de
programación a el staff de programadores), y por tanto no puede ser ejecutado en un ordenador,
pero las similitudes con la mayoría de los lenguajes informáticos lo hacen fácilmente convertible.

El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común,


instrucciones de programación y palabras clave que definen las estructuras básicas. Su objetivo
es permitir que el programador se centre en los aspectos lógicos de la solución a un problema.

No siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay


una estructura semántica ni arquitectura estándar. Es una herramienta ágil para el estudio y
diseño de aplicaciones, veamos un ejemplo, que podríamos definir como: lenguaje imperativo,
de tercera generación, según el método de programación estructurada.

Pseudocódigo = Pseudo (Supuesto) + Código (Instrucción).

Tabla de contenidos
[ocultar]
 1 Definición de datos del Pseudocódigo
 2 Definición de estructuras de control
o 2.1 Secuencial
o 2.2 Selectiva
o 2.3 Iterativa
 3 El anidamiento
 4 Desarrollo de algoritmos
 5 Funciones y procedimientos
 6 Ventajas de utilizar un Pseudocódigo a un diagrama de flujo

Definición de datos del Pseudocódigo

La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea
formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y
naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la
desarrollaremos adecuadamente.

Definición de estructuras de control [editar]

Como se había mencionado antes, cada autor usa su propio pseudocódigo con sus respectivas
convenciones. Por ejemplo, considere la instrucción "Reemplace el valor de la variable x por el
valor de la variable y"; algunas de las posibles sintaxis para indicar lo anterior podrían ser:

 asigne a el valor de


Sin embargo, independientemente de estas diferencias, muchos autores consideran tres


estructuras de control para desarrollar los procedimientos:

Secuencial [editar]

Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de
renglón. Es decir que las instrucciones se ejecutan de arriba hacia abajo.

Instrucción1
Instrucción2
Instrucción3

Instrucciónn

Selectiva [editar]

La instrucción selectiva realiza una instrucción de dos posibles, según el cumplimiento de una
condición P.

Diagrama de flujo que muestra el funcionamiento de la instrucción condicional

La condición P es una variable booleana o una función reducible a booleana. Si esta condición es
cierta se ejecuta Instrucciones1, si no es asi, entonces se ejecuta Instrucciones2.

También es común el uso de una selección múltiple que equivaldría a anidar varias funciones de
selección.

si Condición1 entonces
Instrucciones1
si no si Condición2 entonces
Instrucciones2

si no si Condiciónn entonces
Instruccionesn - 1
si no
Instruccionesn

En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de
ellas se cumple las demás tienen que ser falsas necesariamente, hay un caso si no que será cierto
cuando las demás condiciones sean falsas.

En esta estructura si Condición1 es cierta, entonces se ejecuta sólo Instrucciones1. En general, si


Condicióni es verdadera, entonces sólo se ejecuta Instruccionesi

Iterativa [editar]

Las instrucciones iterativas abren la posibilidad de realizar una secuencia de instrucciones más
de una vez.

Diagrama de flujo que muestra el funcionamiento de la instrucción mientras


mientras P hacer
Instrucciones

El bucle se repite mientras la condición P sea cierta, si al llegar por primera vez al bucle mientras
la condición es falsa, el cuerpo del bucle no se ejecuta ninguna vez.

Existen otras variantes que se derivan a partir de la anterior. La estructura de control hacer se
utiliza cuando es necesario que las instrucciones de una estructura mientras se ejecuten al menos
una vez:

hacer
Instrucciones
mientras P

La estructura anterior equivaldría a escribir

Instrucciones
mientras P hacer
Instrucciones

Una estructura de control muy común es el ciclo para, la cual se usa cuando se desea iterar sobre
sobre un índice i (por convención se usa i, sin embargo se puede usar cualquier identificador):

para hasta n hacer


Instrucciones

la cual se define como

mientras hacer
Instrucciones

Por último, también es común usar la estructura de control para cada. Esta sentencia se usa
cuando se tiene una lista o un conjunto L y se quiere iterar por cada uno de sus elementos:

para cada hacer


Instrucciones

Si asumimos que los elementos de L son , entonces esta sentencia equivaldría a

para hasta n hacer

Instrucciones

sin embargo, en la práctica existen mejores formas de implementar esta instrucción dependiendo
del problema.

Es importante recalcar que el pseudocódigo no es un lenguaje estandarizado. Eso significa que


diferentes autores podrían dar otras estructuras de control o bien usar estas mismas estructuras,
pero con una notación diferente. Sin embargo, las funciones matemáticas y lógicas toman el
significado usual que tienen en matemática y lógica, con las mismas expresiones.

El anidamiento

Cualquier instrucción puede ser sustituida por una estructura de control. El siguiente ejemplo
muestra un pseudocódigo de un método de ordenamiento denominado Ordenamiento de burbuja
en el cual aparecen varias estructuras anidadas. Este algoritmo ordena una lista L.

También podría gustarte