programacion unidad i ingenieria electrica

Anuncio
Instituto Tecnoló
Tecnológico de Oaxaca
PROGRAMACION
UNIDAD I
INGENIERIA ELECTRICA
L. I. Francisco Javier Trujillo Ló
López
francisco.itoaxaca@gmail.com
1. Introducción a la Computación.
1.1 Breve reseña de la computación.
1.2 Impacto de las computadoras en la sociedad.
1.3 Definiciones.
•
•
•
•
•
Lenguaje de Alto Nivel, Bajo Nivel, Ensamblador y Maquina.
Compilador.
Traductor.
Sistemas Numéricos.
Sistemas Operativos.
1.4 Algoritmos.
1.5 Descripción de tipos de programación.
1.5.1 Programación estructurada.
1.5.2 Programación orientada a objetos.
1.5.3 Programación de descripción de Hardware Sistemas
Numéricos.
1.1 Breve reseña de la computación.
1.1 Breve reseña de la computación.
El Origen de la Computadora, se remonta a varios
siglos en la Antigüedad. Surge frente a la
necesidad que tenía el Hombre de Contar.
¾ Las Primeras Máquinas de Calcular.
Para poder entender la Situación Actual de las
Computadoras,
es
importante
conocer
el
Desarrollo Evolutivo que han tenido que pasar
para llegar a este momento.
Conocer este Desarrollo sirve también para
encontrar las Razones que Ocasionaron la
Elección de Ciertos Caminos.
• El Ábaco. Los Egipcios 500 años a.C. Inventaron
el Primer Dispositivo para Calcular, basado en
bolitas atravesadas por alambres.
• Posteriormente, a principios del 2° siglo d.C., los
chinos perfeccionaron este dispositivo, al cual le
agregaron un soporte tipo bandeja, poniéndole
por nombre Saun-pan.
• El Ábaco permite Sumar,
Restar, Multiplicar y Dividir.
1
1.1 Breve reseña de la computación.
1.1 Breve reseña de la computación.
¾ Las Primeras Máquinas de Calcular.
¾ Las Primeras Máquinas de Calcular.
• Rodillos Napier. John Napier inventó en 1583 la
precursora de las Modernas Calculadoras de
Bolsillo de hoy en día. Este Rústico Sistema era
un método para Multiplicar y Dividir usando
Varillas y Placas Metálicas.
• En 1640 Gottfried Leibniz, mejora
Pascalina,
al
agregarle
capacidades
Multiplicación, División y Raíz Cúbica.
• Pascalina. Blaise Pascal en 1645 construyó una
complicada Máquina de Sumar y Restar.
• La
Pascalina
Operaciones de
Dígitos.
realizaba
hasta 8
la
de
• Charles Babbage. Es considerado el Padre de la
Computadora.
• Es el Inventor Fracasado que se pasó Toda su
Vida
Intentando
Construir
la
Primera
Computadora de Uso General de la Historia y que,
pese a haber Fracasado, hizo Aportaciones muy
Significativas al Desarrollo de la Informática.
1.1 Breve reseña de la computación.
1.1 Breve reseña de la computación.
¾ Las Primeras Máquinas de Calcular.
¾
Las Primeras Máquinas de Calcular.
• La Máquina Diferencial, era un dispositivo de 6
Dígitos que resolvía Ecuaciones Polinómicas por el
método diferencial, y que requería, de cualquier
manera, bastante trabajo con lápiz y papel.
•
La
• La Máquina Analítica. De haberse construido,
1.
Sugirió el uso de Tarjetas Perforadas para
Controlar su Máquina.
Anticipó el Uso de las mismas para representar
un Algoritmo.
Inventó el concepto de Ciclos en Programación.
Anticipó el uso de Microprogramación.
habría
sido
efectivamente
la
Primera
Computadora de uso General de la Historia.
2.
• Las 2 Máquinas que Ideó Babbage eran
totalmente mecánicas, usaban Ejes, Engranajes y
Poleas para poder Ejecutar los Cálculos
3.
4.
Máquina
muchas
ideas
computadoras:
Analítica.
visionarias
Babbage
sobre
tuvo
las
2
1.1 Breve reseña de la computación.
1.1 Breve reseña de la computación.
¾
Las Primeras Máquinas de Calcular.
¾
Las Primeras Máquinas de Calcular.
•
La Máquina Analítica. Estaba Compuesta por 5
partes:
•
1.
Dispositivo de entrada de la información: Tarjetas
Metálicas Perforadas en miles de combinaciones.
Unidad de almacenaje: Tablero que contenía Ejes
y Piñones que podían Registrar Dígitos.
Procesador: Dispositivo con Cientos de Ejes
Verticales y Miles de Piñones.
Unidad de control: Dispositivo en forma de Barril
con Filamentos y Ejes (como cuerdas de piano).
Dispositivo de salida: Plantillas Diseñadas para ser
utilizadas en una Prensa de Imprenta.
Los Planos y Notas de La Maquina Analítica
fueron tan Detallados que en 1991 el Museo
Nacional de Ciencia y Tecnología de Londres
construyó una Máquina basándose en ellos y
usando sólo materiales y herramientas disponibles
en la época de Babbage.
•
La máquina ha funcionado
desde entonces, sin ningún
problema.
2.
3.
4.
5.
1.1 Breve reseña de la computación.
1.1 Breve reseña de la computación.
¾ Las Primeras Máquinas de Calcular.
¾ Las Primeras Máquinas de Calcular.
• Mark I. Era una máquina impresionante, pues
medía unos 15.5 mts. de Largo, unos 2.40 mts. de
Alto y unos 60 cm. de Ancho, pesando unas 5
Toneladas.
• ENIAC. Tenía aproximadamente 18,000 Bulbos.
Medía 2.4 mts. de Altura, 90 cm. de Ancho y casi 30
mts. de Largo; y pesaba 30 Toneladas.
• Su
Funcionamiento
era
Electromecánico y Recibía sus
Secuencias de Instrucciones y
Datos a través de Lectoras de
Cinta de Papel Perforada y los
Números se Transferían por
medio de Señales Eléctricas.
• Realizaba 10 Adiciones por
Segundo.
• La Entrada y Salida de Datos se
daba con Tarjetas Perforadas,
los Programas se construían
Alambrando Conexiones entre
Sus
Componentes,
lo
cuál
Resultaba
Terriblemente
Tedioso.
• Era Capaz de Realizar cinco mil
Operaciones
Aritméticas
por
Segundo.
3
1.1 Breve reseña de la computación.
1.1 Breve reseña de la computación.
¾ Las Generaciones de las Computadoras
¾ Las Generaciones de las Computadoras
1ª Generación
Usaban Tubos al Vacío para Procesar Información.
Usaban Tarjetas Perforadas.
Usaban Cilindros Magnéticos.
Eran Sumamente Grandes.
Se comenzó a utilizar el Sistema Binario para
Representar los Datos.
3ª Generación
Se Desarrollaron Circuitos Integrados o “Chips" para
Almacenar y Procesar la Información.
Emerge la industria del “Software“.
Las Computadoras se tornan más pequeñas, más
ligeras y más eficientes.
2ª Generación
Usaban Transistores para Procesar Información.
Usaban Pequeños Anillos Magnéticos para Almacenar
Información.
Se Desarrollaron Lenguajes de Programación como
COBOL y FORTRAN.
Se comenzó a disminuir el Tamaño de las
Computadoras
4ª Generación
Se Desarrolló el Microprocesador.
Se Reemplaza la Memoria de Anillos Magnéticos por la
Memoria de "chips" de Silicio.
Se Desarrollan las Computadoras Personales.
Se Desarrollan las Supercomputadoras.
5ª Generación
Se Desarrollan los Campos de Estudio de:
Inteligencia Artificial, Robótica y Sistemas Expertos.
1.2 Impacto de las computadoras en la
sociedad.
1.2 Impacto de las computadoras en la
sociedad.
El Uso Racional de la Informática trae al Hombre
una Calidad Superior en su Nivel de Vida al
Facilitar su Labor al dedicar más su Tiempo a
Tareas Cotidianas.
Hoy en día, las Computadoras hacen todo tipo de
Gráficos, Pagan Dinero, lo Reciben, lo Transfieren,
Dan Saldos, Enseñan a Niños y Adultos, Aprenden
y en General, se encuentran en muchas Esferas
de la Actividad Humana.
El Rápido Auge de la Computadora ha generado un
Fenómeno en Múltiples Facetas Culturales,
Sociales, Comunicativas y Educativas.
La Computadora es la Herramienta más poderosa
que el Hombre ha tenido jamás a su Alcance para
Manejar Información de todo tipo.
La presencia creciente de la Tecnología Genera
Entusiasmo, Aceptación, Rechazo, Resistencia y
otra gama de reacciones en la Sociedad.
La Aparición de las Microcomputadoras ha hecho
Rentable la Automatización, sea en Oficinas,
Laboratorios, Fábricas, Comercios, Universidades,
Supermercados, etc.
4
1.2 Impacto de las computadoras en la
sociedad.
Pero, ¿Afectan las Computadoras a las Personas y si
es así, en qué forma? ¿Inciden sobre la Sociedad,
sus Costumbres, su Cultura o sus Medios?
La Automatización Industrial Afecta Principalmente a
aquellos que Trabajan o han Trabajado donde se
han Introducido; pero en las Oficinas nos afectan
directamente a todos. Además, nos atienden en
los Bancos y Corporaciones de Ahorro; Máquinas
de Vídeo con Circuitos Idénticos nos permiten
Jugar en Casa o en las Salas de Juegos.
1.3 Definiciones.
El Lenguaje es el Medio de Comunicación entre los
Seres Humanos a través de Signos Orales y
Escritos que poseen un Significado. En un sentido
más amplio, es cualquier procedimiento que sirve
para comunicarse.
Un Lenguaje no sólo consta de “palabras”, sino
también de su Pronunciación y los Métodos para
combinar las Palabras en Frases y Oraciones.
La Enumeración puede ser extensa, pero la realidad
es que las Computadoras están casi en todas
partes.
Los Lenguajes se forman mediante combinaciones
de
palabras
definidas
en
un
diccionario
terminológico previamente establecido.
1.3 Definiciones.
1.3 Definiciones.
Las combinaciones posibles deben respetar un
conjunto de Reglas Sintácticas establecidas, a
ello se le conoce con el nombre de Sintaxis.
Aunque existen muchas clasificaciones, en
general se puede distinguir entre dos clases
de lenguajes:
Además, las palabras deben tener determinado
Sentido, deben ser Comprendidas por un Grupo
Humano en un Contexto dado, a ello se le
denomina Semántica.
• Los Lenguajes Naturales (ingles, alemán,
español, etc.), y
• Los Lenguajes Artificiales o Formales
(matemático, lógico, computacional, etc.).
Tanto el lenguaje natural como el lenguaje
artificial son humanos.
5
1.3 Definiciones.
Se denomina Lenguaje Natural porque
aprende
(o
adquiere)
inconsciente
involuntariamente.
1.3 Definiciones.
se
e
Ningún bebé decide Aprender o No la Lengua
que hablan sus padres, y ningún padre sienta
a su hijo y le enseña las Reglas Sintácticas de
su Lengua.
Las personas hablan y se entienden, pero
generalmente no se Cuestionan las Reglas
que utilizan al Hablar.
Por otra parte, los Lenguajes Artificiales sí se
Aprenden
de
Manera
Voluntaria
y
Conscientemente.
Un ejemplo de Lenguaje Artificial son los
Lenguajes de Programación utilizados
para desarrollar Programas Informáticos.
Un Lenguaje de Programación es una Técnica
Estándar de Comunicación que permite
expresar las Instrucciones que han de ser
ejecutadas en una Computadora.
1.3 Definiciones.
1.3 Definiciones.
Los Lenguajes de Programación constan de:
¾ Lenguaje Máquina.
• Un Conjunto Finito de símbolos, a partir
del cual se define el léxico o vocabulario del
lenguaje.
• Un Conjunto Finito de reglas, la gramática
del lenguaje, para la construcción de las
sentencias
“correctas”
del
Lenguaje
(Sintaxis).
• Semántica, que asocia un significado (la
acción que debe llevarse a cabo) a cada
posible construcción del Lenguaje.
El
Lenguaje Máquina es el sistema de códigos
directamente interpretable por un Circuito
Microprogramable.
Ordena a la Computadora realizar sus operaciones
fundamentales una por una.
Dicho lenguaje es Difícil de Usar para las Persona
porque trabajar con Números no es muy Cómodo,
además de que estos Números están en Formato
Binario (0 y 1).
6
1.3 Definiciones.
1.3 Definiciones.
¾ Lenguaje Máquina.
¾ Lenguaje Máquina.
El Lenguaje Máquina es el Lenguaje más Primitivo y
Depende Directamente del Hardware.
La Solución que se tomó fue la siguiente: a cada
Acción que sea capaz de realizar la Computadora, se
le asocia un Número, que corresponde a su código
de operación (opcode).
Una Computadora sólo puede entender el Lenguaje
Máquina, es por esto que John Von Neumann
desarrolló el modelo que lleva su nombre para
Representar las Operaciones como Números.
Por ejemplo, una Calculadora Programable Simple
podría asignar los siguientes opcodes :
1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE
Se tenía el problema de representar las acciones que
iba a realizar la computadora, sabiendo que la
memoria, al estar compuesta por bits, solamente
permite almacenar números binarios.
Con esta Representación, es Simple expresar las
Pperaciones de las que es capaz el Hardware en la
Memoria.
1.3 Definiciones.
1.3 Definiciones.
¾ Lenguaje Máquina.
Ensamblador.
Supóngase entonces que se quiere realizar la operación 5
* 3 + 2, en la calculadora descrita arriba. En la
memoria de la calculadora se podría representar el
programa de la siguiente forma:
El Lenguaje Ensamblador representa las Acciones de la
Computadora mediante Pequeñas Abreviaturas de
Palabras en Inglés.
Posición
Opcode
Significado
0
5
5
Primer número de la fórmula
1
3
*
3 es el opcode que representa la multiplicación.
2
3
3
Segundo número de la fórmula
3
1
+
1 es el opcode para la suma.
4
2
2
Último número de la fórmula
y en código binario:
Comentario
5
101
3
3
1
2
011 011 001 010
Consiste en escribir las Instrucciones utilizando, en vez
de Códigos Binarios o Intermedios, una Notación
Simbólica o Mnemotécnica para representar los
OpCode.
Normalmente los Códigos Mnemotécnicos están
constituidos por 3 o 4 letras que, en forma
abreviada, indican la operación a realizar.
7
1.3 Definiciones.
1.3 Definiciones.
Ensamblador.
Ensamblador.
Por ejemplo: la Suma se suele representar como
ADD (suma en inglés), SUB (sustracción),
MOV (movimiento), NOT (negación lógica),
CALL (llamada a un procedimiento), RET
(retorno de procedimiento), etc.
Existen
Sentencias
Declarativas
(también
denominadas
Pseudoinstrucciones
o
Directivas) para indicar al Traductor la
Correspondencia entre Direcciones Simbólicas y
Direcciones de Memoria.
Se utilizar, para los Datos, Direcciones Simbólicas
de Memoria en lugar de Direcciones Binarias
Absolutas. Así, por ejemplo, los datos pueden
ser referenciados mediante identificadores,
tales como SUMA, PROD, CONT, AUX, etc.
Con estas Pseudoinstruciones, el Traductor crea
una tabla con cuya ayuda, al generar las
Instrucciones
Máquina,
sustituye
las
Direcciones Simbólicas por las Direcciones
Binarias correspondientes.
1.3 Definiciones.
1.3 Definiciones.
Ensamblador.
Los Programas que traducen Código Simbólico al
Lenguaje de Máquina se llaman Ensambladores
("assembler", en inglés), porque son capaces
de ensamblar el programa traducido a partir de
varias piezas, procedimientos o subrutinas a
código binario ("1" y "0") que entiende el
procesador.
Lenguaje de Bajo Nivel.
Un Lenguaje de Bajo Nivel es el que proporciona
poca
o
ninguna
Abstracción
del
Microprocesador.
Consecuentemente es fácilmente trasladado a
Lenguaje de Máquina.
La palabra “Bajo" no implica que el Lenguaje sea
inferior a un Lenguaje de Alto Nivel; se refiere
a la Reducida Abstracción entre el Lenguaje y el
Hardware.
8
1.3 Definiciones.
1.3 Definiciones.
Lenguaje de Bajo Nivel.
Lenguaje de Bajo Nivel.
En general se utiliza este tipo de Lenguaje para
Programar Controladores (Drivers).
• Se trabaja a nivel de Microinstrucciones, es
decir, su programación es al más fino detalle, y
• Está Orientado a la Máquina.
Pero también tiene importantes inconvenientes:
• Imposibilidad de escribir Código Independiente
de la Máquina, y
• Mayor Dificultad en la Programación y en la
Comprensión de los Programas.
La Programación tiene ciertas ventajas:
• Mayor adaptación al equipo, y
• Posibilidad de obtener la máxima Velocidad con
mínimo uso de Memoria.
1.3 Definiciones.
1.3 Definiciones.
Lenguaje de Alto Nivel.
Lenguaje de Alto Nivel.
Para acelerar aun más el Proceso de Programación se
Desarrollaron los Lenguajes de Alto Nivel, en los que
se podía escribir un enunciado para realizar tareas
sustanciales. Estos Lenguajes permiten a los
Programadores escribir Instrucciones que asemejan
al
Inglés
Cotidiano
y
contiene
notaciones
matemáticas de uso común.
A partir de FORTRAN, se han desarrollado innumerables
lenguajes que siguen el mismo concepto:
Este Concepto nació con el Lenguaje FORTRAN
(FORmula TRANslation) que, como su nombre
indica, surgió como un intento de traducir fórmulas
al Lenguaje Ensamblador y por consiguiente al
Lenguaje de Máquina.
Entre estos lenguajes de alto nivel se encuentra el
lenguaje C que servirá de base para el desarrollo del
curso
• Buscar la mayor Abstracción Posible, y
• Facilitar la vida
productividad.
al
programador,
aumentando
la
9
1.3 Definiciones.
1.3 Definiciones.
Código Fuente.
Traductor.
Se le da el nombre de Código Fuente a los
Programas Escritos en un determinado
Lenguaje de Programación y que está
compuesto por instrucciones escritas por un
programador.
El
código fuente no constituye software
propiamente dicho pero es una instancia
mediante la cual se logra el software.
Los Traductores son Programas que Traducen los
Programas en Código Fuente, escritos en Lenguajes
de Alto Nivel, a Programas escritos en Lenguaje
Máquina.
Los
Traductores
pueden
ser
Compiladores e Intérpretes.
Lenguaje de
Alto Nivel
Traductor
Compilador
1.3 Definiciones. (Traductor)
1.3 Definiciones.
Código Fuente
Compilador.
Componentes
Léxicos
Fase de Análisis
Análisis
Léxico
Análisis
Sintáctico
Árbol
Sintáctico
Análisis
Semántico
Árbol anotado
Sintáctico
Tabla de
Símbolos
Gestor de
Errores
Fase de Síntesis
Generación/Optimización
Código Intermedio
Código
Intermedio
de
dos
tipos:
Lenguaje
Maquina
Interprete
Un Compilador es un Programa que lee el Código
Escrito en un Lenguaje (Lenguaje Origen), y lo
traduce en un Programa equivalente Escrito en otro
Lenguaje (Lenguaje Objetivo). Como una parte
fundamental de este proceso de Traducción, el
Compilador le hace notar al usuario la presencia de
errores en el Código Fuente del Programa.
Lenguaje
Origen
COMPILADOR
Lenguaje
Objetivo
Generación/Optimización
Código Objeto
Código
Objeto
Mensajes de
Error
10
1.3 Definiciones.
Compilador.
Entrando en más detalle un
Programa en Código Fuente es
Compilado
obteniendo
un
Archivo Parcial (un Objeto).
Luego el Compilador invoca al
“linker” que convierte al
Archivo
Objeto
en
un
Ejecutable con extensión exe;
este último archivo es un
archivo en formato Binario
(ceros y unos) y que puede
funcionar por Sí Sólo.
1.3 Definiciones.
Código Fuente
Compilador
Programa Objeto
Linker
Lenguaje Maquina
Intérprete.
Los intérpretes no producen un lenguaje
objetivo como en los compiladores.
Un intérprete lee el código como está
escrito e inmediatamente lo convierte
en acciones; es decir, lo ejecuta en
ese instante.
Existen lenguajes que utilizan un
intérprete (como por ejemplo JAVA)
que traduce en el instante mismo de
lectura el código en lenguaje máquina
para que pueda ser ejecutado.
Código
Fuente
INTERPRETE
Traducción
Ejecución
1.3 Definiciones.
1.3 Definiciones.
Diferencia entre Compilador e Interprete.
Sistemas Numéricos.
• Un programa que ha sido Compilado puede correr por
sí sólo.
• Un Intérprete traduce el Programa cuando lo lee,
convirtiendo el Código del Programa directamente en
Acciones.
• La Ventaja del Intérprete es que dado cualquier
programa se puede interpretar en cualquier plataforma
(sistema operativo). En cambio, el archivo generado
por el compilador solo funciona en la plataforma en
donde se le ha creado.
• Hablando de la Velocidad de Ejecución, un archivo
Compilado es de 10 a 20 veces más rápido que un
archivo Interpretado
Un Sistema de Numeración es un Conjunto de
Símbolos y Reglas que permiten Construir todos los
Números Válidos en el Sistema.
Un Sistema de Numeración puede Representarse como
N = S + R donde:
N - Es el Sistema de Numeración Considerado.
S - Son los Símbolos Permitidos en el Sistema.
R - Son las Reglas de Generación que nos Indican qué
Números Son o No Válidos en el Sistema.
11
1.3 Definiciones.
1.3 Definiciones.
Sistemas Numéricos.
Sistema Decimal.
Estas Reglas son Diferentes para cada Sistema de
Numeración Considerado, pero una Regla común a
Todos es que para Construir Números Válidos en un
Sistema de Numeración Determinado sólo se
pueden utilizar los Símbolos Permitidos en ese
Sistema (para indicar el sistema de numeración
utilizado se añade como subíndice al número).
Es un Sistema de Numeración en el que las Cantidades
se Representan utilizando como Base el Número
Diez, por lo que se compone de las cifras: 0, 1, 2,
3, 4, 5, 6, 7, 8 y 9. Este conjunto de símbolos se
denomina Números Árabes.
12510 es un Número Válido en el Sistema Decimal.
3B16 es un Número Válido en el Sistema Hexadecimal.
Es el Sistema de Numeración usado habitualmente en
Todo el Mundo (excepto ciertas culturas) y en todas
las áreas que requieren de un Sistema de
Numeración.
100 000
10 000
1 000
100
10
1
105
104
103
102
101
100
1.3 Definiciones.
1.3 Definiciones.
Sistema Binario.
Sistema Binario.
Es un Sistema de Numeración en el que los Números
se Representan utilizando las Cifras 0 y 1.
Convertir 011001002 a Decimal:
128
64
32
16
8
4
2
1
27
26
25
24
23
22
21
20
Convertir 5210 a Binario:
00110100
2
División
Cociente
Resto
52 / 2
26
0
26 / 2
13
0
13 / 2
6
1
6/2
3
0
3/2
1
1
1
10010
0 * 128
1 * 64
1 * 32
0 *16
0*8
1*4
0*2
0 *1
27
26
25
24
23
22
21
20
( 0 + 64 + 32 + 0 + 0 + 4 + 0 + 0 )
1
12
1.3 Definiciones.
1.3 Definiciones.
Sistema Hexadecimal.
Sistema Hexadecimal.
Es el Sistema de Numeración de Base 16. Su uso actual está
muy vinculado a las Ciencias de la Computación. Se
compone de las cifras: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (10),
B (11), C (12), D (13), E (14) y F (15).
Convertir 3E0
16 777 216
1 048 576
65 536
4 096
256
16
1
166
165
164
163
162
161
160
Convertir 33210 a Hex:
14C
16
División
Cociente
Resto
332 / 16
20
12 = C
20 / 16
1
4
1
16
a Decimal:
992
10
65 536
4 096
3 * 256
E * 16
0*1
164
163
162
161
160
( 0 * 65 536 ) + ( 0 * 4096 ) + ( 3 * 256 ) + ( 14 * 16) + ( 0 * 1 )
( 0 + 0 + 768 + 224 + 0 )
1
1.3 Definiciones.
1.3 Definiciones.
Arquitectura de Computadoras.
Componentes de una computadora
¿Que es una Computadora?
Una computadora de cualquier forma que se vea
tiene dos tipos de componentes: El Hardware y el
Software.
Una computadora es una máquina capaz de aceptar
datos a través de un medio de entrada,
procesarlos automáticamente bajo el control de
un programa previamente almacenado, y
proporcionar la información resultante a través de
un medio de salida.
Es un dispositivo capaz de realizar cálculos y tomar
decisiones lógicas a velocidades hasta miles de
millones de veces más rápidas que las
alcanzables por los seres humanos
Hardware.- Es la parte Física de la Computadora;
corresponde a las partes que podamos percibir
con el sentido del tacto.
Software.Son
todos
aquellos
Programas
necesarios para que la computadora funcione
apropiadamente. El software dirige de forma
adecuada a los elementos físicos.
13
1.3 Definiciones.
1.3 Definiciones.
El Hardware esta compuesto por cinco unidades o
secciones básicas:
Unidades de Entrada y Salida
Unidades de Entrada y Salida
Es la parte del ordenador que le sirve para
comunicarse con el exterior; es decir, para recibir
y emitir información. A las unidades de entrada y
salida se le conoce también como Periféricos.
El lector de
CD/DVD-ROM
sirve para leer
la información
almacenada en
un CD/DVD
El monitor nos muestra
la información.
Mediante la
impresora se
obtiene una
versión en papel
de la información
procesada por la
computadora
Las bocinas sirven
para escuchar los
sonidos que emite
la computadora a
través de una
tarjeta de sonido
El Teclado y el Mouse sirven para
introducir los datos a la computadora
1.3 Definiciones.
1.1 Arquitectura de la Computadora.
Unidad Central de Procesamiento (CPU)
La CPU se divide en dos partes:
La Unidad Central de Proceso (CPU) es la parte más
importante de una Computadora. Esta unidad se
encarga de realizar las tareas fundamentales y es
por ello el elemento principal de un sistema
computarizado. Si hacemos una comparación
entre una Computadora y el Cuerpo Humano, la
CPU haría el papel del Cerebro: atender las
solicitudes, mandar y hacer controlar la
ejecución.
Un microprocesador es un circuito
integrado o chip que contiene a la
CPU. Su tamaño es algo menor
que el de una caja de cerrillos
• Una parte que controla todo el proceso (Unidad
de Control), y
• Otra parte en la que se realizan las operaciones
aritméticas y lógicas que ordene la Unidad de
Control (Unidad Aritmético-Lógica).
La Unidad de Control actúa como el Corazón del
Sistema, enviando impulsos eléctricos (Señales
de Control) para secuenciar (poner en Orden) y
sincronizar (Marcar el Tiempo) el funcionamiento
de los componentes restantes.
14
1.1 Arquitectura de la Computadora.
1.1 Arquitectura de la Computadora.
Unidad de Memoria
Memoria RAM (Random Access Memory)
La Memoria Principal es el Dispositivo que sirve para
Almacenar los Programas (Instrucciones) que se
quieran ejecutar y para Almacenar los Datos, los
Cálculos Intermedios y los Resultados. Sólo los
Datos Almacenados en la Memoria son procesables
por la CPU. Los Datos que estén contenidos en
algún Dispositivo de Almacenamiento Externo deben
ser previamente introducidos a la Memoria, por
medio de una Unidad Periférica.
La Memoria de Acceso Aleatorio esta destinada a
contener los Programas cambiantes del usuario y
los Datos que se vayan necesitando durante la
ejecución de dichos Programas. La memoria RAM
se llama también Memoria de Usuario, por ser
la Memoria con la que trabaja el sistema para
ejecutar los Programas.
Cuando se hace
referencia a la capacidad de memoria de una
Computadora se está hablando de la memoria
RAM del sistema.
Existen 2 Divisiones en Función de las posibilidades de
lectura/escritura o solamente lectura: RAM y ROM.
1.1 Arquitectura de la Computadora.
1.1 Arquitectura de la Computadora.
Memoria ROM (Read Only Memory)
Unidad de Almacenamiento Secundario
Memoria de Solo Lectura, son las Memorias que Sólo
permiten la Lectura y no pueden ser Re-Escritas. Su
contenido viene grabado por el Fabricante de la
Computadora y no puede ser cambiado. Esta
Memoria se usa para Almacenar Información Vital
para el Funcionamiento del Sistema.
• La Gestión del Proceso de Arranque
• La Verificación Inicial del Sistema
• La Carga del Sistema Operativo, y
• Diversas rutinas de Control de
Dispositivos de Entrada/Salida.
Estos programas forman la llamada BIOS (o ROMBIOS) de la Computadora (Basic Input Output System).
Es el Almacenamiento de Largo Plazo y de Alta
Capacidad de la Computadora. Los Programas y
Datos que no están siendo utilizados por las otras
Unidades normalmente se colocan en Dispositivos
de
Almacenamiento
Secundario
hasta
que
necesiten, posiblemente horas, días, meses o
incluso años después.
15
1.3 Definiciones.
1.3 Definiciones.
El Software
¿Qué es un Programa?
El hardware, por sí mismo, no puede realizar
ninguna función; es necesario que algo la dirija y
organice. Este "algo" son las instrucciones que el
programador
escribe.
Estas
instrucciones,
agrupadas en forma de programas que son
depositados en la Memoria de la Computadora,
forman lo que se denomina “Software".
El
software es el nexo de unión entre el hardware y
el hombre.
SOFTWARE
Un programa es una Secuencia de Instrucciones que
pueden ser Interpretadas por una Computadora,
obteniendo como Fruto de esa Interpretación un
determinado Resultado.
Podemos clasificar en software en dos grupos:
• Software de Sistema (Sistema Operativo), y
USUARIO
HARDWARE (COMPUTADORA)
• Software de Aplicación.
1.3 Definiciones.
1.3 Definiciones.
Software del Sistema
Software del Sistema
El Sistema Operativo es un Conjunto de Programas
Destinados a permitir la Comunicación del Usuario
con una Computadora, y Gestionar sus Recursos de
Manera Eficiente.
El software de sistema se puede dividir en:
Comienza a Trabajar cuando se Enciende
Computadora, y Gestiona el Hardware de
Máquina desde los Niveles Más Básicos.
la
la
Características: ƒ Administración de Tareas y Usuarios.
• Los Programas de Control son los que van
orientados a facilitar, automatizar y mejorar el
rendimiento de los procesos en la Computadora.
• Los Programas de Servicio o de Proceso son los
que van Orientados a proporcionar facilidades de
Expresión y Comunicación al usuario.
ƒ Manejo de Recursos.
16
1.4 Algoritmos.
1.4 Algoritmos.
La Resolución de Problemas es el Motivo de la
Programación.
Análisis del Problema. Se determina que hace el
Programa. Esta fase requiere una clara definición
donde se contemple exactamente lo que debe hacer el
Programa y el Resultado o Solución Deseada. Dado
que se busca una Solución se precisan especificaciones
de Entrada y Salida.
Para Programar cualquier Tarea antes hay que encontrar
el Camino y dar los Pasos para Resolverla.
Fases de Resolución
Para poder definir bien un Problema es conveniente
responder a las siguientes preguntas:
• ¿Qué Entradas se requieren? (cantidad y tipo)
• ¿Cuál es la Salida Deseada? (cantidad y tipo)
• ¿Qué Método Produce la Salida Deseada?
• Definición del Problema.
• Análisis del Problema.
• Diseño del Algoritmo.
Definición del Problema. Es la descripción
Problema para conocer la Temática a tratar.
del
Diseño del Algoritmo. Se Determina como hace el
programa la tarea solicitada.
1.4 Algoritmos.
1.4 Algoritmos.
Un Algoritmo es un Conjunto Finito de Instrucciones
o Pasos que sirven para Ejecutar una Tarea y/o
Resolver un Problema.
Estructura Básica de un Algoritmo:
Un Algoritmo es un Sistema por el cual se llega a una
Solución, teniendo en cuenta que debe de ser
Definido, Finito y Preciso.
• Por Preciso entendemos que cada paso a seguir
tiene un orden.
• Finito implica que tiene un determinado número de
pasos, o sea, que tiene un fin.
• Definido, que si se sigue el mismo proceso más de
una vez llegaremos al mismo resultado.
1.
2.
3.
4.
5.
Inicio.
Datos de Entrada (Operaciones Básicas).
Procesamiento de los Datos.
Datos de Salida.
Fin.
Ejemplo:
Ver una película
Buscar el videocasete de la película
SI el televisor y la video se encuentran apagados, encenderlos.
Sacar el video del estuche
Introducirlo en la video casetera
Tomar el control del televisor y la video
Dirigirme a el sofá
Ponerme cómodo
Disfrutar la película
17
1.4 Algoritmos.
1.4 Algoritmos.
Ej. Diseñar un Algoritmo para calcular el área y el
perímetro de un rectángulo.
Análisis del problema.
• Datos de entrada: b y h (base y altura)
• Datos de salida: área y perímetro
• Procesos: área = b * h y Perímetro = 2 * (b + h)
Definición del Problema. Calcular área y perímetro
de un rectángulo.
Diseño de la solución.
Análisis del problema. Para desarrollar este
problema es necesario conocer las fórmulas para
obtener tanto el área como el perímetro de un
rectángulo.
• Sea b=Base y h=Altura, las Fórmulas a utilizar son:
• Area = Base * Altura
• Perímetro = 2 * (Base + Altura)
1.
2.
3.
4.
5.
6.
7.
Inicio
Leer b, h
a=b*h
p = 2 (b + h)
Escribir "área:", a
Escribir "perímetro:", p
Fin
1.4 Algoritmos.
1.5 Descripción de Tipos de
Programación.
Ejercicios Propuestos.
¾ Programación Estructurada.
1.
Un Maestro desea saber que Porcentaje de
Hombres y que Porcentaje de Mujeres hay en un
grupo de estudiantes.
Es
2.
Se desea un Algoritmo para obtener el Valor
Absoluto de un Número.
una forma de escribir
Computadoras de forma Clara.
Programación
de
Para ello utiliza únicamente Tres Estructuras:
3.
Un Algoritmo para mostrar los Números del 1 al
10.
• Estructura Secuencial,
• Estructura Selectiva, y
• Estructura Iterativa
4.
Dada las Horas Trabajadas de una Persona y la
Tarifa de Pago, calcular su salario.
Solamente con estas Tres Estructuras se puede hacer
un Programa de Computadora.
18
1.5 Descripción de Tipos de
Programación.
1.5 Descripción de Tipos de
Programación.
¾ Programación Estructurada.
¾ Programación Estructurada.
• Estructura Secuencial
• Estructura Selectiva
Una Estructura de Programa es Secuencial si se ejecutan
Una Tras Otra a modo de Secuencia.
Permite la realización de una Instrucción u otra según un
Criterio, solo una de estas Instrucciones se Ejecutara.
Ejemplo:
auxiliar:= x
x:= y
y:= auxiliar
si señala el comienzo de la instrucción condicional, y se espera que
después esté la condición de control de la instrucción.
1º Guardamos una copia del valor de x en auxiliar.
2º Guardamos el valor de y en x, se pierde el valor
anterior de x pero no importa porque tenemos una
copia en auxiliar.
3º Guardamos en y el valor de auxiliar, que es el
valor inicial de x.
entonces señala el fin de la condición, y después estará la instrucción
a realizar si la condición es cierta.
si_no separa la instrucción que se ejecutará si la condición es cierta
de la que se ejecutará si es falsa.
Fin si indica que la instrucción condicional finaliza y el programa
seguirá su curso.
1.5 Descripción de Tipos de
Programación.
1.5 Descripción de Tipos de
Programación.
¾ Programación Estructurada.
¾ Programación Estructurada.
• Estructura Selectiva
• Estructura Iterativa
Ejemplo:
si a > b entonces
Escribir a es mayor que b
si_no
Escribir a no es mayor que b
Fin si
Esta
instrucción
selectiva
puede
presentar dos mensajes, uno a es
mayor que b, y el otro a no es
mayor que b, solo uno de ellos será
presentado, según el resultado de la
comparación de a y b, si el resultado
de a > b es cierto, se presenta el
primer mensaje, si es falso el
segundo, las palabras si, entonces,
si_no, fin si; son propias de la
instrucción (palabra reservadas) que
tienen un significado en el lenguaje,
sirven de separadores, y el usuario no
debe utilizarlas salvó para este fin.
Un Bucle Iterativo o Iteración de una Secuencia de
Instrucciones, hace que se Repitan Mientras se Cumpla
una Condición, en un principio el Número de Iteraciones
no tiene porque estar determinado.
mientras: señala el comienzo del bucle y después de esta palabra se
espera la condición de repetición, si la condición es cierta se
pasa al cuerpo del bucle, si no al final de la Instrucción mientras.
hacer: señala el final de la condición, lo que esté después será el
cuerpo del bucle.
fmientras: señala el final del cuerpo del bucle y de la Instrucción
mientras.
19
1.5 Descripción de Tipos de
Programación.
1.5 Descripción de Tipos de
Programación.
¾ Programación Estructurada.
¾ Programación Orientada a Objetos.
• Estructura Iterativa
Es
Ejemplo:
b:= 7
Escribir a
a:= a + 1
fmientras
los
La POO Expresa un Programa como un Conjunto de estos
Objetos, que colaboran entre ellos para Realizar
Tareas. Esto permite hacer los Programas y Módulos
más Fáciles de Escribir, Mantener y Reutilizar.
a:= 0
mientras b > a hacer
un Paradigma de Programación que define
Programas en Términos de “Clases de Objetos“.
El bucle mientras, se Repite Mientras la
Condición sea cierta, esta Condición se
comprueba al Principio por lo que el cuerpo
del bucle puede que no se ejecute nunca,
cuando la Condición es falsa en un principio,
o que se Repita tantas veces como sea
Necesario, mientras la condición sea cierta.
Un Objeto es una representación Detallada, Concreta y
Particular de un "algo". Tal representación determina
su Identidad, su Estado y su Comportamiento
Particular en un momento dado.
1.5 Descripción de Tipos de
Programación.
1.5 Descripción de Tipos de
Programación.
¾ Programación Orientada a Objetos.
¾ Programación de Descripción de Hardware.
La Clase es un Modelo o Prototipo que define las
Variables y Métodos Comunes a todos los Objetos de
Cierta Clase. También se puede decir que una Clase es
una Plantilla Genérica para un Conjunto de Objetos de
Similares Características.
Las siguientes Características son las más importantes de
la POO:
• Abstracción
• Encapsulamiento
• Polimorfismo
• Herencia
El Objetivo de los Lenguaje de Descripción de Hardware
(HDL), es el de Programar un Circuito Electrónico.
Los HDL son utilizados para describir la Arquitectura y
Comportamiento de un Sistema Electrónico, el cual fue
Desarrollado para Trabajar con Diseños Complejos.
El
•
•
•
Flujo de Diseño suele ser típico:
Definir la(s) tarea(s) que tiene que hacer el Circuito.
Escribir el Programa usando un Lenguaje HDL.
Comprobación de la Sintaxis y Simulación del
Programa.
• Programación del Dispositivo y Comprobación del
Funcionamiento.
20
Bibliografía.
http://es.wikipedia.org
http://www.iqcelaya.itc.mx/~vicente/Programacion/Curs
oUnidad1.pdf
http://www.uag.mx/214/I_LENGUAJES_DE_DESCRIPCIO
N_DE_HARDWARE.pdf
http://enriquebarrueto0.tripod.com/algoritmos.htm
http://enriquebarrueto0.tripod.com/algoritmos/cap01.pdf
http://enriquebarrueto0.tripod.com/algoritmos/cap02.pdf
21
Descargar