IPN - ESIME CULHUACAN - Ingeniería En Computación - Luis Enrique Sánchez Velez - Proyecto Fundamentos de Programación para la profesora Pilar Resendiz.
Buscar lo que quieras
28 de febrero de 2014
1.2 Evolución de los lenguajes de programación.
UNIDAD I : Introducción a la programación.
OBJETIVOS PARTICULARES DE LA UNIDAD
El alumno manipulará los elementos básicos de los sistemas operativos y compiladores de C.
1.2 Evolución de los lenguajes de programación.
- 1.2.1 Definición, características y funciones de los
lenguajes de programación.
Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación.
También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
- El desarrollo lógico del programa para resolver un problema en particular.
- Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
- Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
- Prueba y depuración del programa.
- Desarrollo de la documentación.
Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.
El siguiente es un documental sobre el Codigo Linux, en muchas ocasiones esto
amplia nuestro panorama general del tema.
1.3 Interpretes, Compiladores.
UNIDAD I : Introducción a la programación.
OBJETIVOS PARTICULARES DE LA UNIDAD
El alumno manipulará los elementos básicos de los sistemas operativos y compiladores de C.
1.3 Interpretes, Compiladores.
- 1.3.1 Definición de Intérpretes y Compiladores
Ambiente integral del Lenguaje C.
Lenguajes de nivel bajo
y alto
Los lenguajes de nivel de máquina y los de ensamblador se clasifican
como lenguajes de nivel bajo. Esto se debe a que ambos utilizan
instrucciones que están vinculadas directamente a un tipo de computadora. De
tal manera, un programa en lenguaje ensamblador sólo se puede utilizar con el
tipo específico de computadora para la cual fue escrito. Tales programas, sin
embargo, permiten utilizar las características específicas de una computadora
en particular y generalmente se ejecutan en el nivel más rápido posible.
En
contraste con los lenguajes de nivel bajo están los de nivel alto. Un lenguaje
de nivel alto utiliza instrucciones similares a las de los lenguajes escritos,
como el inglés, y se pueden ejecutar en diversos tipos de computadoras. FORTRAN, BASIC,
Pascal y C++ son ejemplos de lenguajes de
nivel alto.4 Utilizando C++, una
instrucción para sumar dos números y multiplicarlos por un tercer número se
puede escribir como:
resultado = (primero + segundo) * tercero;
A
los programas escritos en un lenguaje de computadora de nivel alto o bajo se
les conoce de manera indistinta como programas fuente o código fuente.
Una vez que un programa se escribe en un lenguaje de nivel alto, también se
debe traducir, al igual que un programa ensamblador de nivel bajo, al lenguaje
de máquina de la computadora en la cual se ejecutará. Esta traducción se puede
realizar de dos maneras.
Cuando
cada instrucción en un programa fuente de nivel alto se traduce de manera
individual y se ejecuta inmediatamente al momento de la traducción, el lenguaje
de programación utilizado se llama lenguaje interpretado, y el programa que efectúa la
traducción se llama intérprete. Cuando todas las instrucciones en un
programa fuente de nivel alto se traducen como una unidad completa antes de que
cualquier instrucción sea ejecutada, al lenguaje de programación utilizado se
le llama lenguaje compilado. En este
caso, al programa que efectúa la traducción se le llama compilador.
Puede haber
versiones tanto compiladas como interpretadas de un lenguaje, aunque
generalmente una predomina. Por ejemplo, aunque existen versiones compiladas de
BASIC, éste es predominantemente un lenguaje
interpretado. De la misma forma, aunque existen versiones interpretadas de C++,
éste es básicamente un lenguaje compilado.
REALIZACIÓN
DE UN PROGRAMA EN C.
En
este apartado se van a exponer los pasos a seguir en la realización de un
programa, por medio de un ejemplo. La siguiente figura, representa estos pasos
en el orden en el que hay que ejecutarlos.
Este ejemplo que una vez
editados los ficheros fuente A. C y B. C, son compilados obteniéndose los
ficheros objeto A. OBJ y B. OBJ los cuales son enlazados con el fichero C. OBJ,
con la librería D. LIB y con las librerías del sistema .LIB dando lugar a un
único fichero ejecutable A. EXE.
La orden
correspondiente para compilar y enlazar los ficheros expuestos en este ejemplo,
es la siguiente:
CL A.C
B.C C.OBJ /link
D.LIB
1.1 Sistemas Operativos.
UNIDAD I : Introducción a la programación.
OBJETIVOS PARTICULARES DE LA UNIDAD
El alumno manipulará los elementos básicos de los sistemas operativos y compiladores de C.
1.1 Sistemas Operativos.
1.1.1. Definición, características y función de un sistema operativo.
Sistema operativo, software básico que
controla una computadora. El sistema operativo tiene tres grandes funciones: coordina
y manipula el hardware del ordenador o computadora, como la memoria, las
impresoras, las unidades de disco, el teclado o el mouse; organiza los
archivos en diversos dispositivos de almacenamiento, como discos flexibles,
discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware
y la pérdida de datos.
Los sistemas operativos
controlan diferentes procesos de la computadora. Un proceso importante es la
interpretación de los comandos que permiten al usuario comunicarse con el
ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen
que las instrucciones sean tecleadas. Otros están basados en gráficos, y
permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo
general, los intérpretes basados en gráficos son más sencillos de utilizar.
Los sistemas operativos
pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única,
más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo,
cuando la computadora está imprimiendo un documento, no puede iniciar otro
proceso ni responder a nuevas instrucciones hasta que se termine la impresión.
Todos los sistemas operativos
modernos son multitarea y pueden ejecutar varios procesos simultáneamente. En
la mayoría de los ordenadores sólo hay una UCP; un sistema operativo multitarea
crea la ilusión de que varios procesos se ejecutan simultáneamente en la UCP.
El mecanismo que se emplea más a menudo para lograr esta ilusión es la
multitarea por segmentación de tiempos, en la que cada proceso se ejecuta
individualmente durante un periodo de tiempo determinado. Si el proceso no
finaliza en el tiempo asignado, se suspende y se ejecuta otro proceso. Este
intercambio de procesos se denomina conmutación de contexto. El sistema operativo
se encarga de controlar el estado de los procesos suspendidos. También cuenta
con un mecanismo llamado planificador que determina el siguiente proceso que
debe ejecutarse. El planificador ejecuta los procesos basándose en su prioridad
para minimizar el retraso percibido por el usuario. Los procesos parecen
efectuarse simultáneamente por la alta velocidad del cambio de contexto.
Los sistemas operativos
pueden emplear memoria virtual para ejecutar procesos que exigen más memoria
principal de la realmente disponible. Con esta técnica se emplea espacio en el
disco duro para simular la memoria adicional necesaria. Sin embargo, el acceso
al disco duro requiere más tiempo que el acceso a la memoria principal, por lo
que el funcionamiento del ordenador resulta más lento.
Los sistemas operativos
empleados normalmente son UNIX, LINUX Mac OS, MS-DOS, OS/2 y Windows-NT. El
LINUX y sus clones permiten múltiples tareas y múltiples usuarios. Su sistema
de archivos proporciona un método sencillo de organizar archivos y permite la
protección de archivos. Sin embargo, las instrucciones del UNIX no son
intuitivas. Otros sistemas operativos multiusuario y multitarea son OS/2,
desarrollado inicialmente por Microsoft Corporation e International Business
Machines Corporation (IBM), y Windows-NT, desarrollado por Microsoft. El
sistema operativo multitarea de las computadoras Apple se denomina Mac OS. El
DOS y su sucesor, el MS-DOS, son sistemas operativos populares entre los
usuarios de computadoras personales. Sólo permiten un usuario y una tarea.
Los sistemas operativos
siguen evolucionando. Los sistemas operativos distribuidos están diseñados para
su uso en un grupo de ordenadores conectados pero independientes que comparten
recursos. En un sistema operativo distribuido, un proceso puede ejecutarse en
cualquier ordenador de la red (normalmente, un ordenador inactivo en ese
momento) para aumentar el rendimiento de ese proceso. En los sistemas
distribuidos, todas las funciones básicas de un sistema operativo, como
mantener los sistemas de archivos, garantizar un comportamiento razonable y
recuperar datos en caso de fallos parciales, resultan más complejas.
Todo claro con los SO.
1.1.2. Análisis comparativo de Sistemas Operativos (MS- DOS, LINUX, WINDOWS)
Un sistema Operativo (SO) es en sí mismo un
programa de computadora. Sin embargo, es un programa muy especial, quizá el más
complejo e importante en una computadora. El SO despierta a la computadora y
hace que reconozca a la CPU, la memoria, el tecla do, el sistema de vídeo y las
unidades de disco. Además, proporciona la facilidad para que los usuarios se
comuniquen con la computadora y sirve de plataforma a partir de la cual se
corran programas de aplicación.
Cuando
enciendes una computadora, lo primero que ésta hace es llevar a cabo un autodiagnóstico
llamado autoprueba de encendido (Power On Self Test, POST). Durante la POST, la
computadora identifica su memoria, sus discos, su teclado, su sistema de vídeo
y cualquier otro dispositivo conectado a ella. Lo siguiente que la computadora
hace es buscar un SO para arrancar (boot).
Una vez que la
computadora ha puesto en marcha su SO, mantiene al menos parte de éste en su
memoria en todo momento. Mientras la computadora esté encendida, el SO tiene 4
tareas principales:
1.
Proporcionar ya sea una interfaz de línea de comando
o una interfaz gráfica al usuario, para que este último se pueda comunicar con
la computadora. Interfaz de línea de comando: tú introduces palabras y símbolos
desde el teclado de la computadora, ejemplo, el MS-DOS. Interfaz gráfica del Usuario (GUI),
seleccionas las acciones mediante el uso de un Mouse para pulsar sobre
figuras llamadas iconos o seleccionar
opciones de los menús.
2.
Administrar los dispositivos de hardware en la
computadora · Cuando corren los programas, necesitan utilizar la memoria, el
monitor, las unidades de disco, los puertos de Entrada/Salida (impresoras,
módems, etc). El SO sirve de intermediario entre los programas y el hardware.
3.
Administrar y mantener los sistemas de archivo de
disco · Los SO agrupan la información dentro de compartimientos lógicos para
almacenarlos en el disco. Estos grupos de información son llamados archivos.
Los archivos pueden contener instrucciones de programas o información creada
por el usuario. El SO mantiene una lista de los archivos en un disco, y nos
proporciona las herramientas necesarias para organizar y manipular estos
archivos.
4.
Apoyar a otros programas. Otra de las funciones importantes del SO es
proporcionar servicios a otros programas. Estos servicios son similares a
aquellos que el SO proporciona directamente a los usuarios. Por ejemplo, listar
los archivos, grabarlos a disco, eliminar archivos, revisar espacio disponible,
etc. Cuando los programadores escriben
programas de computadora, incluyen en sus programas instrucciones que solicitan
los servicios del SO. Estas instrucciones son conocidas como "llamadas del
sistema"
El Kernel y el Shell.
Las funciones centrales de un SO son
controladas por el núcleo (kernel) mientras que la interfaz del usuario es
controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS
es un programa con el nombre "COMMAND.COM" Este programa ti ene dos
partes. El kernel, que se mantiene en memoria en todo momento, contiene el código
máquina de bajo nivel para manejar la administración de hardware para otros
programas que necesitan estos servicios, y para la segunda parte del
COMMAND.COM el shell, el cual es el interprete de comandos.
Las funciones
de bajo nivel del SO y las funciones de interpretación de comandos están
separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero
utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede
cuando carga s Microsoft Windows, el cual toma el lugar del shell, reemplazando
la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen
muchos shells diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG,
PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un
Shell llamado DOS SHELL.
A.) Categorías de Sistemas Operativos
A.1) MULTITAREA: El término multitarea se refiere a la
capacidad del SO para correr mas de un programa al mismo tiempo. Existen dos
esquemas que los programas de sistemas operativos utilizan para desarrollar SO
multitarea, el primero requiere de la cooperación entre el SO y los programas
de aplicación.
Los programas
son escritos de tal manera que periódicamente inspeccionan con el SO para ver
si cualquier otro programa necesita a la CPU, si este es el caso, entonces
dejan el control del CPU al siguiente programa, a este método se le llama
multitarea cooperativa y es el método utilizado por el SO de las computadoras
de Machintosh y DOS corriendo Windows de Microsoft. El segundo método es el llamada multitarea
con asignación de prioridades. Con este esquema el SO mantiene una lista de
procesos (programas) que están corriendo. Cuando se inicia cada proceso en la
lista el SO le asigna una prioridad. En cualquier momento el SO puede
intervenir y modificar la prioridad de un proceso organizando en forma efectiva
la lista de prioridad, el SO también mantiene el control de la cantidad de
tiempo que utiliza con cualquier proceso antes de ir al siguiente. Con
multitarea de asignación de prioridades el SO puede sustituir en cualquier
momento el proceso que esta corriendo y reasignar el tiempo a una tarea de mas
prioridad. Unix OS-2 y Windows NT emplean este tipo de multitarea.
Que no queden dudas sobre cual usar.
A.2) MULTIUSUARIO: Un SO multiusuario permite a
mas de un solo usuario accesar una computadora. Claro que, para llevarse esto a
cabo, el SO también debe ser capaz de efectuar multitareas. Unix es el Sistema Operativo Multiusuario más
utilizado. Debido a que Unix fue originalmente diseñado para correr en una
minicomputadora, era multiusuario y multitarea desde su concepción.
Actualmente se
producen versiones de Unix para PC tales como The Santa Cruz Corporation
Microport, Esix, IBM,y Sunsoft. Apple también produce una versión de Unix para
la Machintosh llamada: A/UX.Unix
Unix proporciona tres maneras de permitir a
múltiples personas utilizar la misma PC al mismo tiempo.
1.) Mediante
Módems.
2.)
Mediante conexión de terminales a través de puertos
seriales
3.) Mediante
Redes.
A.3) MULTIPROCESO:
Las
computadoras que tienen mas de un CPU son llamadas multiproceso. Un sistema
operativo multiproceso coordina las operaciones de la computadoras
multiprocesadoras. Ya que cada CPU en una computadora de multiproceso puede
estar ejecutando una instrucción, el otro procesador queda liberado para
procesar otras instrucciones simultáneamente.
Al usar una
computadora con capacidades de multiproceso incrementamos su velocidad de
respuesta y procesos. Casi todas las computadoras que tienen capacidad de
multiproceso ofrecen una gran ventaja.
Los primeros Sistemas Operativos Multiproceso
realizaban lo que se conoce como:
·
Multiproceso asimétrico: Una CPU principal retiene
el control global de la computadora, así como el de los otros procesadores. Esto fue un primer paso hacia
el multiproceso pero no fue la dirección ideal a seguir ya que la CPU principal
podía convertirse en un cuello de
botella.
·
Multiproceso simétrico: En un sistema multiproceso
simétrico, no existe una CPU controladora única. La barrera a vencer al
implementar el multiproceso simétrico es que los SO tienen que ser rediseñados
o diseñados desde el principio para trabajar en u n ambiente multiproceso. Las extensiones
de Unix, que soportan multiproceso asimétrico ya están disponibles y las
extensiones simétricas se están haciendo disponibles. Windows NT de Microsoft
soporta multiproceso simétrico.
B.)
Lista de los Sistemas Operativos más comunes.
B.1) MS-DOS: Es el más común y popular de
todos los Sistemas Operativos para PC. La razón de su continua popularidad se
debe al aplastante volumen de software disponible y a la base instalada de
computadoras con procesador Intel.
Cuando Intel
liberó el 80286, D OS se hizo tan popular y firme en el mercado que DOS y las
aplicaciones DOS representaron la mayoría del mercado de software para PC. En aquel tiempo, la compatibilidad IBM, fue
una necesidad para que los productos tuvieran éxito, y la "compatibilidad
IBM" significaba computadoras que corrieran DOS tan bien como las
computadoras IBM lo hacían.
B.2) OS/2: Después de la introducción
del procesador Intel 80286, IBM y Microsoft reconocieron la necesidad de tomar
ventaja de las capacidades multitarea de esta CPU. Se unieron para desarrollar
el OS/2, un moderno SO multitarea para los microprocesadores Intel. <
BR>Sin embargo, la sociedad no duró mucho. Las diferencias en opiniones
técnicas y la percepción de IBM al ver a Windows como una amenaza para el OS/2
causó una desavenencia entre las Compañías que al final las llevó a la
disolución de la sociedad.
IBM
continuó el desarrollo y promoción del OS/2.
Es un sistema
operativo de multitarea para un solo usuario que requiere un microprocesador
Intel 286 o mejor. Además de la multitarea, la gran ventaja de la plataforma
OS/2 es que permite manejar directamente hasta 16 MB de la RAM ( en comparación
con 1 MB en el caso del MS-DOS ). Por otra parte, el OS/2 es un entorno muy
complejo que requiere hasta 4 MB de la RAM. Los usuarios del OS/2 interactuan
con el sistema mediante una interfaz gráfica para usuario llamada Administrador
de presentaciones. A pesar de que el OS/2 rompe la barrera de 1 MB del MS-DOS,
le llevo tiempo volverse popular. Los vendedores de software se muestran
renuentes a destinar recursos a la creación de un software con base en el OS/2
para un mercado dominado por el MS-DOS. Los usuarios se rehusan a cambiar al
OS/2 debido a la falta de software que funcione en la plata forma del OS/2 y a
que muchos tendrían que mejorar la configuración de su PC para que opere con el
OS/2.
B.3) UNIX: Unix es un SO multiusuario y
multitarea, que corre en diferentes computadoras, desde supercomputadoras,
Mainframes, Minicomputadoras, computadoras personales y estaciones de trabajo.
Es un sistema
operativo que fue creado a principios de los setentas por los científicos en
los laboratorios Bell. Fue específicamente diseñado para proveer una manera de
manejar científica y especializadamente las aplicaciones computacionales. Este
SO se adapto a los sistemas de computo personales así que esta aceptación
reciente lo convierte en un sistema popular.
. Unix es más
antiguo que todos los demás SO de PC y de muchas maneras sirvió como modelo
para éstos. Aun cuando es un SO extremadamente sólido y capaz, la línea de
comandos Unix, no es apta para cardiacos, debido a que ofrece demasiados
comandos.
B.4) SISTEMA OPERATIVO DE
MACINTOSH: La Macintosh es una máquina
netamente gráfica. De hecho, no existe una interfaz de línea de comando
equivalente para ésta. Su estrecha integración de SO, GUI y área de trabajo la
hacen la favorita de la gente que no quiere saber nada de interfaces de línea
de comando.
Las capacidades
gráficas de la Macintosh hicieron de esa máquina la primera precursora en los
campos gráficos computarizados como la autoedición por computadora.
La familia de
microcomputadoras de Apple Macintosh y su sistema operativo define otra
plataforma importante. Las PC de Macintosh, que se basan en la familia de
microprocesadores de Motorola, usan la arquitectura de Bus de 32 bits. La
plataforma para Macintosh incluye muchas capacidades sofisticadas que comprende
la multitarea, una GUI, la memoria virtual y la capacidad para emular la
plataforma MS-DOS. Las PC de Macintosh también tiene la capacidad integrada de
compartir archivos y comunicarse con o tras PC de Macintosh en una red.
B.5) WINDOWS NT DE MICROSOFT: Con Windows NT, Microsoft ha
expresado su dedicación a escribir software no sólo para PC de escritorio sino
también para poderosas estaciones de
trabajo y servidores de red y bases de datos. Microsoft Windows NT no es
necesariamente un sustituto de DOS ni una nueva versión de éste; es, en
conjunto, un nuevo SO diseñado desde sus bases para las máquinas más modernas y
capaces disponibles.
Windows NT de
Microsoft ofrece características interconstruidas que ningún otro SO para PC
ofrece, con excepción de Unix.
Además de las
características tradicionales de estricta seguridad de sistema, red
interconstruida, servicios de comunicación y correo electrónico
interconstruidos, herramientas de administración y desarrollo de sistema y una
GUI, Windows NT puede correr directamente aplicaciones de Windows de Microsoft
y de Unix.
Windows NT, al
igual que el OS/2 ver 2.0 y algunas versiones de Unix, es un SO de 32 bits, que
puede hacer completo uso de los procesadores de estas características.
Además de ser
multitarea, está diseñado para tomar ventaja del multiproceso simétrico.
Fundamentos de Programación.
OBJETIVO GENERAL:
El alumno resolverá problemas de ingeniería y ciencias mediante la programación estructurada.
CONTENIDO SINTÉTICO:
I. Introducción a la programación.
II. Fundamentos de programación estructurada.
III. Estructuras de flujo programático.
IV. Estructuras de datos.
V. Aplicaciones.
METODOLOGÍA:
Se utilizará la metodología del aprendizaje inductivo-deductivo o viceversa, para promover la participación activa
y constante de los asistentes en la búsqueda, lectura y análisis de la información que posibilite la integración de
los aspectos teóricos, prácticos, análisis y solución de problemas.
EVALUACIÓN Y ACREDITACIÓN:
80% de asistencia Teórico-Práctica.
Entrega de trabajos realizados en clase, tareas y prácticas de laboratorio.
Participación en actividades individuales y de equipo.
Tres exámenes departamentales.
BIBLIOGRAFIA.
B. W. KERNIGHAN; D.M. Ritchie, Lenguaje de Programación C. Prentice Hall.
CEBALLOS, Francisco Javier, .Enciclopedia del Lenguaje C. Computec-Rama.México, 1994.
DEITEL, H.M.; Deitel, P.J., Cómo programar en C/C++. Prentice Hall Hispanoamericana.
México,1995.
ASIGNATURA: Fundamentos de programación
SEMESTRE: PRIMERO
CRÉDITOS: 9
TIPO DE ASIGNATURA: Teórico-Práctica
MODALIDAD: Escolarizada
FUNDAMENTACIÓN DE LA ASIGNATURA
El acelerado avance científico y tecnológico en la Ingeniería y en general en todas las áreas del conocimiento, se ha
debido en buena medida al desarrollo de poderosas herramientas computacionales de análisis, diseño y simulación
que ha permitido resolver problemas más complejos con mucha mayor velocidad y precisión, así como automatizar
diversos procesos y almacenar y procesar grandes cantidades de información.
Por lo anterior, es imprescindible incluir en la formación de los Ingenieros asignaturas que contengan principios
fundamentales de computación y programación, que les permita tener los elementos y herramientas para que al
egresar puedan hacer uso de las tecnologías.
OBJETIVO DE LA ASIGNATURA
El alumno resolverá problemas de ingeniería y ciencias mediante la programación estructurada.
Suscribirse a:
Entradas (Atom)

