martes, 30 de abril de 2019

ALMACENAMIENTO, DIRECCIONAMIENTO Y REPRESENTACIÓN EN MEMORIA.

• ALMACENAMIENTO:

Hay dos clases, almacenamiento primario, que son los que usa la CPUdirectamente (memoria principal, memoria caché, etc) y el almacenamiento secundario, a los cuales la CPU no accede directamente, sino que deben almacenarse previamente en uno primario. Son de almacenamiento secundario los discos magnéticos, ópticos, cintas magnéticas, tambores magnéticos, etc.El almacenamiento de datos puede usarse también para copias de seguridad, ver backup.Con el correr de los años, el almacenamiento de datos informáticos ha ido bajando de precio. Por ejemplo, 1 GB de memoria en 1956 costaba 8,2 millones de dólares. En 1980, 184 mil dólares; en 1990 eran 5.200 dólares; en 2000 eran 12 dólares, y en 2006 fueron 1,2 dólares.

DIRECCIONAMIENTO 

Los llamados Modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción (lenguaje ensamblador). Cómo se especifican e interpretan las direcciones de memoria según las instrucciones. Pueden ser:

Inmediato: En la instrucción está incluido directamente el operando.

Directo: El campo de operando en la instrucción contiene la dirección en memoria donde se encuentra el operando.

Indirecto: El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.

Absoluto: El campo de operando contiene una dirección en memoria, en la que se encuentra la instrucción.

De registro: Sirve para especificar operandos que están en registros.

Indirecto mediante registros: El campo de operando de la instrucción contiene un identificador de registro en el que se encuentra la dirección efectiva del operando.

De desplazamiento: Combina el modo directo e indirecto mediante registros

De pila: Se utiliza cuando el operando está en memoria y en la cabecera de la Pila.

• REPRESENTACION DE MEMORIA

Podemos representar a las colas de dos formas :

Como arreglos
Como listas ordenadas

En esta unidad trataremos a las colas como arreglos de elementos, en donde debemos definir el tamaño de la cola y dos apuntadores, uno para accesar el primer elemento de la lista y otro que guarde el último.

En lo sucesivo, al apuntador del primer elemento lo llamaremos F, al de el último elemento A y MAXIMO para definir el número máximo de elementos en la cola.

COLA (DEFINICION)

Una cola es una estructura de almacenamiento, donde la podemos considerar como una lista de elementos, en la que éstos van a ser insertados por un extremo y serán extraídos por otro. Las colas son estructuras de tipo FIFO (first-in, first-out), ya que el primer elemento en entrar a la cola será el primero en salir de ella. Existen muchísimos ejemplos de colas en la vida real, como por ejemplo: personas esperando en un teléfono público, niños esperando para subir a un juego mecánico, estudiantes esperando para subir a un camión escolar, etc.

Identificadores.

En los lenguajes informáticos, los identificadores son elementos textuales (también llamados símbolos) que nombran entidades del lenguaje. Algunas de las de entidades que un identificador puede denotar son las variables, las constantes, los tipos de dato, las etiquetas, las subrutinas, los paquetes y las subrutinas (procedimientos y funciones).

En muchos lenguajes algunas secuencias tienen la forma léxica de un identificador pero son conocidos como palabras clave (o palabras reservadas). Lo habitual es que si un identificador se corresponde con una palabra clave o reservada, éste ya no pueda utilizarse para referirse a otro tipo de entidades como variables o constantes (en unos pocos lenguajes, como PL/1, esta distinción no está del todo clara).



Tipos de datos.

Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores puede tomar), qué operaciones se le pueden aplicar y cómo es representado internamente por el computador.
Todos los valores que aparecen en un programa tienen un tipo.
A continuación revisaremos los tipos de datos elementales de Python. Además de éstos, existen muchos otros, y más adelante aprenderemos a crear nuestros propios tipos de datos.

Números enteros

El tipo int (del inglés integer, que significa «entero») permite representar números enteros.
Los valores que puede tomar un int son todos los números enteros: ... -3, -2, -1, 0, 1, 2, 3, ...
Los números enteros literales se escriben con un signo opcional seguido por una secuencia de dígitos:
1570
+4591
-12

Números reales

El tipo float permite representar números reales.
El nombre float viene del término punto flotante, que es la manera en que el computador representa internamente los números reales.
Hay que tener mucho cuidado, porque los números reales no se pueden representar de manera exacta en un computador. Por ejemplo, el número decimal 0.7 es representado internamente por el computador mediante la aproximación 0.69999999999999996. Todas las operaciones entre valores float son aproximaciones. Esto puede conducir a resultados algo sorpresivos:
>>> 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7
0.9999999999999998
Los números reales literales se escriben separando la parte entera de la decimal con un punto. Las partes entera y decimal pueden ser omitidas si alguna de ellas es cero:
>>> 881.9843000
881.9843
>>> -3.14159
-3.14159
>>> 1024.
1024.0
>>> .22
0.22
Otra representación es la notación científica, en la que se escribe un factor y una potencia de diez separados por una letra e. Por ejemplo:
>>> -2.45E4
-24500.0
>>> 7e-2
0.07
>>> 6.02e23
6.02e+23
>>> 9.1094E-31
9.1094e-31
Los dos últimos valores del ejemplo son iguales, respectivamente, a 6.02×1023 (la constante de Avogadro) y 9.1094×10−31 (la masa del electrón).

Números complejos

El tipo complex permite representar números complejos.
Los números complejos tienen una parte real y una imaginaria. La parte imaginaria es denotada agregando una j inmediatamente después de su valor:
3 + 9j
-1.4 + 2.7j

Valores lógicos

Los valores lógicos True y False (verdadero y falso) son de tipo bool, que representa valores lógicos.
El nombre bool viene del matemático George Boole, quien creó un sistema algebraico para la lógica binaria. Por lo mismo, a True y False también se les llama valores booleanos. El nombre no es muy intuitivo, pero es el que se usa en informática, así que hay que conocerlo.

Texto

A los valores que representan texto se les llama strings, y tienen el tipo str.
Los strings literales pueden ser representados con texto entre comillas simples o comillas dobles:
"ejemplo 1"
'ejemplo 2'
La ventaja de tener dos tipos de comillas es que se puede usar uno de ellos cuando el otro aparece como parte del texto:
"Let's go!"
'Ella dijo "hola"'
Es importante entender que los strings no son lo mismo que los valores que en él pueden estar representados:
>>> 5 == '5'
False
>>> True == 'True'
False
Los strings que difieren en mayúsculas y minúsculas, o en espacios también son distintos:
>>> 'mesa' == 'Mesa'
False
>>> ' mesa' == 'mesa '
False

Nulo

Existe un valor llamado None (en inglés, «ninguno») que es utilizado para representar casos en que ningún valor es válido, o para indicar que una variable todavía no tiene un valor que tenga sentido.
El valor None tiene su propio tipo, llamado NoneType, que es diferente al de todos los demás valores.


Estructura básica de un programa.

Las partes principales de un programa están relacionadas con dos bloques: declaraciones e instrucciones.

En las instrucciones podemos diferenciar tres partes fundamentales

 Entrada de Datos: 

La constituyen todas las instrucciones que toman los datos de entrada desde un dispositivo externo y los almacena en la memoria principal para que puedan ser procesados.


Proceso o algoritmo: Está formado por las instrucciones que modifican los objetos a partir de su estado inicial (datos de entrada) hasta el estado final (resultados) dejando los objetos que lo contiene disponibles en la memoria principal.


Salida de resultados: Conjunto de instrucciones que toman los datos finales (resultado) de la memoria principal y los envían a los dispositivos externos. 

 

El teorema de Böhm y Jacopini (1966) dice que un programa propio puede ser escrito utilizando sólo tres tipos de estructuras de control:

  1. Estructura secuencial

Una estructura de programa es secuencial si las instrucciones se ejecutan una tras otra, a modo de secuencia lineal, es decir que una instrucción no se ejecuta hasta que finaliza la anterior, ni se bifurca el flujo del programa.
zz

 

2.  Estructura selectiva o de selección


La estructura selectiva permite que la ejecución del programa se bifurque a una instrucción (o conjunto) u otra/s, según un criterio o condición lógica establecida, sólo uno de los caminos en la bifurcación será el tomado para ejecutarse.
  • Estructura de control selectiva simple
  • Estructura de control selectiva doble
  • Estructura de control selectiva multiple

 3.  Estructura de control cíclica o repetitiva

  • Estructura de control desde 
  • Estructura de control mientras
    para esta estructuras son necesarios los operadores logicos y de relación.

Operadores de relación
Mayor a
> 
Menor a
< 
Mayor o igual a
>=
Menor o igual a
<=
Diferente a
~=
Operadores lógicos
Y (and)
&
O (or)
|
No (not)
~
Exclusivo o (or)
xor
Con el uso de los operadores de relación se construyen las condiciones simples y con el uso de los operadores de relación y lógicos se construyen las condiciones compuestas.

Anidamiento
El cuerpo de cualquier estructura puede ser instrucciones simples u otras estructuras, que a su vez pueden contener a otras.

3A UNIDAD Introducción y estructura del entorno de un lenguaje de programación.

A principios de la década de los ochenta llegaban a los hogares de los usuarios los primeros microordenadores. Máquinas casi olvidadas, como los Sinclair ZX-81, o como el mítico Sinclair ZX-Spectrum, el Amstrad CPC-464, etc.
Todos estos equipos tenían un punto en común: el único software con que se entregaban era, por regla general, un sencillo intérprete de lenguaje BASIC. Cuando el usuario conectaba su ordenador, no encontraba un entorno gráfico, en su lugar encontraba una pantalla con una línea de comandos, esperando a recibir órdenes. Cuando se conseguía combinar varias órdenes consecutivas, obteniéndose un resultado satisfactorio, ya se sabía programar. En cierto sentido programar es, por lo tanto, enseñar a una máquina a hacer algo.


DEFINICION DE PROGRAMA

Es un conjunto de instrucciones u ordenes basadas en un lenguaje de programación que una computadora interpreta para resolver un problema o una función Especifica:

Es la relación ordenada de actividades, en informática se le conoce como la serie codificada de instrucciones.
Redacción de un algoritmo en un lenguaje de programación.
Conjunto de instrucciones ordenadas correctamente que permiten realizar una tarea o trabajo específico.
Toda secuencia de instrucciones o indicaciones destinadas a ser utilizadas, directa o indirectamente, en un sistema informático para realizar una función o una tarea o para obtener un resultado determinado, cualquiera que fuere su forma de expresión y fijación.
Conjunto secuenciado de instrucciones que quedan escritas en un lenguaje determinado con unos fines específicos. Aunque en el lenguaje común con frecuencia se denomina programa al sistema operativo, la diferencia estriba, precisamente, en la especificidad de aquél frente al carácter de gestión global de éste. La palabra software engloba ambos. 






 DEFINICION DE PROGRAMACION

Se conoce como programación de computadores a la implementación de un algoritmo en un determinado lenguaje de programación, conformando un programa. Mientras que un algoritmo se ejecuta en una máquina abstracta que no tiene limitaciones de memoria tiempo, un programa se ejecuta en una máquina real, que sí tiene esas limitaciones. El lenguaje de programación puede ser de alto nivel, medio nivel o bajo nivel, en función del grado de abstracción.


DEFINICION DEL LENGUAJE DE PROGRAMACION

Es aquel elemento dentro de la informática que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis; que pone a disposición del programador para que este pueda comunicarse con los dispositivos hardware y software existentes.