PROGRAMACIÓN OTOÑO’2006
1. INTRODUCCIÓN A LA PROGRAMACIÓN
1.1 ALGORITMOS, PROGRAMAS Y PROGRAMACIÓN
• Un ALGORITMO es una secuencia ordenada, finita e inequívoca de pasos a seguir para resolver un determinado problema. Paso 1
Inicio
Paso 2
Paso 3
Fin
Inicio numOculto10 Escribir(“Adivina Numero: ”) Leer(numUsuario) Si numUsuario=numOculto entonces Escribir(“Ganaste !!”) sino Escribir(“Perdiste!”) fin_si Fin
• Un algoritmo debe ser expresado en forma de un PROGRAMA de computadora, el cual consiste de un conjunto de instrucciones que la computadora pueda entender y posteriormente ejecutar
#include <stdio.h> int numOculto=10; main() { int numUsuario;
}
printf(“\nAdivina numero:”); scanf(“%d”, numUsuario); if (numUsuario==numOculto) printf(“Ganaste!!”); else printf(“Perdiste!”);
• Un LENGUAJE DE PROGRAMACION es el medio nos permite escribir un programa Ejemplos: Ensamblador, Ada, Modula, Pascal, Smalltalk, C, Java, Haskell, ML, Lisp • A la actividad de expresar un algoritmo en forma de programa se le denomina PROGRAMACION.
• A los programas se les denomina empleando el término de SOFTWARE
• y al equipo físico se le denomina usando el término de HARDWARE
• En el caso de programas que están destinados a alguna aplicación específica se les conoce como PAQUETES DE APLICACIONES como Excel, Word, Mathematica, Matlab, etc. Sin embargo, cuando se desea hacer algo para lo cual no existe un paquete, uno tiene que escribir sus propios programas para resolver su problema.
• SOFTWARE DEL SISTEMA son los programas encargados de proporcionar servicios vitales para que un usuario pueda interactuar con un sistema de cómputo; de los cuales uno de más importantes es el SISTEMA OPERATIVO
• El SISTEMA OPERATIVO es un conjunto de programas que nos facilitan el uso de los recursos de la máquina. Por ejemplo: • WindowsXP Condor Novell Netware • Unix • Linux Amoeba • QNX Sprite
1.2 COMPONENTES DE UNA COMPUTADORA TIPICA
Unidad de Control Procesador Central (CPU Central Processor Unit) Unidad Aritmética Lógica (ALU)
Ejemplo: Intel, Motorola
Dispositivos de E/S
Memoria Memoria interna (Memoria principal) ROM (Read Only Memory), PROM (Programmable Read Only Memory), RAM (Random Access Memory)
Memoria secundaria (Memoria externa)
1.3 Lenguajes de Programación y Traductores
LENGUAJE DE PROGRAMACIÓN es un conjunto de símbolos, junto con un conjunto de reglas para combinar dichos símbolos que se usan para expresar programas.
Se componen de: • léxico. P/E Alfabeto={a,b,c,d, . , “,”, +, -} • sintaxis. P/E Después de una a siempre va una b. • Semántica. P/E ‘+’ significa unir dos cadenas.
Para que una computadora pueda ejecutar un programa escrito en un determinado lenguaje de programación, éste debe ser traducido a un lenguaje que la computadora entienda, el LENGUAJE DE MAQUINA.
1001010100011011 1111000111000100
Ventajas: Programas muy eficientes en cuanto a tiempo de ejecución y uso de memoria Desventajas: Resulta muy difícil programar en él.
Clasificación de los lenguajes de programación c) De acuerdo a la proximidad del lenguaje con la máquina o con el lenguaje natural: •
Lenguajes de bajo nivel: Lenguajes de máquina.
•
Lenguajes de nivel medio: Ensambladores y Macroensambladores.
• Lenguajes de alto nivel, como Pascal, Fortran, C, C++, Lisp, Basic, Prolog, etc.
b) Por el tipo de problemas que nos permiten resolver con más facilidad: • Aplicaciones científicas, en donde predominan operaciones numéricas propias de algoritmos numéricos. P/E Fortran y Pascal. • Procesamiento de datos, como COBOL y SQL.
• Tratamiento de textos como C. • Inteligencia artificial, como aplicaciones en sistemas expertos, juegos y visión artificial. P/E LISP y PROLOG. • Programación de Sistemas: Software que permite la interfaz entre el hardware y el usuario. P/E ADA, MODULA-2 y C
c) Por el estilo de programación que fomentan: • Lenguajes imperativos o procedurales. Establecen cómo debe ejecutarse una tarea, dividiéndola en partes y especificando las subtareas asociadas. La mayoría de los lenguajes de alto nivel son de este tipo: Fortran, Pascal, Basic, etc.
• Declarativos. Los programas se construyen mediante descripciones de funciones o expresiones lógicas que indican las relaciones entre determinadas estructuras de datos (PROLOG).
• Lenguajes orientados a Objetos. Se centran más en los datos y su estructura. Un programa consiste de descripciones de unidades denominadas objetos que encapsulan a los datos y las operaciones que actúan sobre ellos (C++).
• Lenguajes orientados al problema. Diseñados para problemas específicos. Son generadores de aplicaciones que permitan automatizar la tarea de desarrollo de software de aplicaciones.
Cuando se asocia un mnemónico a una instrucción de máquina, tenemos lo que se conoce como LENGUAJE ENSAMBLADOR. Además se permite el uso de comentarios y direccionamiento simbólico.
• ENSAMBLADOR programa que traduce las instrucciones en lenguaje ensamblador a lenguaje de máquina. programa fuente
Ensamblador
programa objeto
Características: • Conjunto de instrucciones reducido y rígido. • No hay portabilidad ya que hay una fuerte dependencia con el hardware de la computadora. • Permite el uso óptimo de los recursos de la máquina.
Se llaman MACROINSTRUCCIONES ( o MACROS) a las abreviaturas para un grupo de instrucciones. Una sola instrucción representa un bloque de código.
MACROENSAMBLADOR es un programa que traduce un lenguaje de macroinstrucciones a lenguaje de máquina. COMPILADORES es un programa que acepta un programa fuente en un lenguaje de alto nivel y produce su correspondiente programa objeto.
Algunos compiladores traducen sólo programas completos, mientras que otros traducen partes de un programa (MODULOS ). LIGADOR programa que une los módulos traducidos, en un sólo programa.
INTERPRETE es un programa que traduce programas escritos en un lenguaje de alto nivel a lenguaje de máquina; sin embargo, en este caso no existe independencia entre la fase de traducción y la de ejecución.
CARGADOR es un programa que carga un programa objeto a memoria principal y lo prepara para su ejecución.
1.4 Sistemas Operativos
SISTEMA OPERATIVO es un conjunto de programas que permiten utilizar los recursos de la máquina. Esto es, sirve como un enlace entre el hardware y el usuario. • Sistemas operativos de red • Sistemas operativos distribuidos
Un sistema operativo debe ser: 3. Eficiente, debe realizar sus funciones de forma rápida. 5. Fiable, ya que un fallo de él, puede causar que el sistema se ''caiga''. 7. Deben ser de tamaño pequeño.
Un sistema operativo debe contar con programas de apoyo que permitan realizar operaciones como: a) Editar b) Transferir información c) Ejecutar programas
Categorías de sistemas operativos: 2. Sistemas operativos monousuario y monotarea 3. Sistemas operativos multitarea 4. Sistemas operativos multiusuario 5. Sistemas operativos para multiprocesador (multiproceso).