Descargar

Trabajo práctico de informática (página 3)


Partes: 1, 2, 3

ORIGEN DE UNIX

Los origenes del sistema UNIX se remontan al desarrollo de un proyecto iniciado en 1968. Este proyecto fue realizado por General Electric, AT&T Bell i del MIT, llevarion a cabo el desarrollo de un sistema operativo con nuevos conceptos como la multitarea, la gestión de archivos o la interacción con el usuario. El resultado die estas investigaciones se bautizó como MULTICS. El proyecto resultó ser demasiado ambicioso, por lo que no llegó a buen fin y terminó abandonándose.

Posteriormente la idea de este proyecto se vuelve a retomar y conduce al gran desarrollo en 1969 del sistema operativo UNIX. Entre los investigadores destacaban Ken Thompson y Dennis Ritchie. En principio, este sistema operativo recibió el nombre de UNICS, aunque un año después pasa a llamarse UNIX, como se conoce hoy en día.

El  código de UNIX estaba inicialmente escrito en lenguaje ensamblador, pero en 1973, Dennis Ritchie llevó a cabo un proyecto para reescribir el código de UNIX en lenguaje C. UNIX se convirtió así en el primer sistema operativo escrito en lenguaje de alto nivel. Con este nuevo enfoque fue posible portar al sistema operativo a otras máquinas sin muchos cambios, solamente efectuando una nueva compilación en la máquina de destino. Gracias a esto la popularidad de UNIX creció y permitió asentar la "filosofía UNIX".

Inicialmente UNIX fue considerado como un proyecto de investigación, hasta el punto de distribuirse de forma gratuita en algunas universidades, pero después la demanda del producto hizo que los laboratorios Bell iniciaran su distribución oficial.

Las dos variantes fundamentales: Sistema V y BSD

La Universidad de California en Berkeley comenzó sus desarrollos en el campo UNIX, añadiendo nuevas características y haciendo modificaciones.  Así, en 1975 Ken Thompson promovió el desarrollo y sacó a la luz su propia versión de UNIX, conocida como BSD. Desde entonces BSD pasó a convertirse en la gran competidora de los laboratorios Bell. En esta versión contribuyeron Bill Joy y Chuck Haley, sus contribuciones son numerosas pero entre ellas destacan un compilador de Pascal, el editor vi, el editor ex y el Shell C.

Más tarde, a principios de los 80, se produjo el lanzamiento de  Sistema III, la primera versión comercial del sistema operativo UNIX. En 1983 AT&T introdujo el UNIX Sistema V versión 1.

EN 1983 Berkeley lanza una poderosa versión UNIX conocida como BSD versión 4.2 Entre sus características principales se encuentran la gestión de archivos muy sofisticada así como la posibilidad de trabajo en redes basadas en los protocolos TCP/IP ( los mismos que hoy en día se utilizan en internet ). Esta versión de UNIX la adoptaron varios fabricantes, entre ellos Sun Microsystems, lo que dió lugar al conocido sitema SunOS.

En aquellos momentos las diferencias entre versiones de UNIX eran muy grandes, lo que provocaba verdaderos quebraderos dde cabezas para los programadores.

Principales variantes de UNIX en la actualidad

En la actualidad las versiones de UNIX más difundidas son las siguientes:

SOLARIS: Es el nombre con el que se conoce el sistema operativo de Sun Microsystems. Originalmente se llamó SunOS, pero posteriormente, debido a la               presentación de UNIX Sistema V se desarrolló una nueva versión a la que se le llamó Solaris. Existen versiones de Solaris para Power PC, Intel y Sparc.

AIX: La versión del sistema operaivo UNIX para las máquinas IBM se llama AIX y está basada en Sistema V versión 3 y BSD 4.3.

A/UX: Implementación de UNIX de Apple

IRIX: Versión de UNIX desarrollada por Silicon Graphics para sus estaciones basada en UNIX Sistema V version 4.

SCO UNIX: Es la versión de Santa Cruz Operation (SCO), versión de UNIX Sistema V diseñada para plataformas Intel.

LINUX: Empezó como un simple proyecto de Linus Torlvalds, como todos sabéis, un estudiante de la universidad de Helsinki a principio de los años 90. En la actualidad se ha difundido enormemente por todo el planeta y lo usan millones de usuarios, tanto particulares como grandes empresas.

LENGUAJES DE PROGRAMACIÓN

Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno.

John Von Neumann desarrolló el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí.

¿Cómo es que describimos un programa como números? Se tenía el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permitía almacenar números binarios.

La solución que se tomó fue la siguiente: a cada acción que sea capaz de realizar nuestra computadora, asociarle un número, que será su código de operación (opcode) . Por ejemplo, una calculadora programable simple podría asignar los opcodes :

1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.

Supongamos que queremos realizar la operación 5 * 3 + 2, en la calculadora descrita arriba. En memoria, podríamos "escribir" el programa de la siguiente forma:

Localidad Opcode Significado Comentario 0 5 5 En esta localidad, tenemos el primer número de la fórmula 1 3 * En esta localidad, tenemos el opcode que representa la multiplicación. 2 3 3 En esta localidad, tenemos el segundo número de la fórmula 3 1 + En esta localidad, tenemos el opcode que representa la suma. 4 2 2 En esta localidad, tenemos el último número de la fórmula

Podemos ver que con esta representación, es simple expresar las operaciones de las que es capaz el hardware (en este caso, nuestra calculadora imaginaria), en la memoria.

La descripción y uso de los opcodes es lo que llamamos lenguaje de máquina . Es decir, la lista de códigos que la máquina va a interpretar como instrucciones, describe las capacidades de programación que tenemos de ella; es el lenguaje más primitivo, depende directamente del hardware, y requiere del programador que conozca el funcionamiento de la máquina al más bajo nivel.

los lenguajes más primitivos fueron los lenguajes de máquina. Esto, ya que el hardware se desarrolló antes del software, y además cualquier software finalmente tiene que expresarse en el lenguaje que maneja el hardware.

La programación en esos momentos era sumamente tediosa, pues el programador tenía que "bajarse" al nivel de la máquina y decirle, paso a pasito, cada punto de la tarea que tenía que realizar. Además, debía expresarlo en forma numérica; y por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era muy limitada. Sin embargo, hay que recordar que en estos momentos, simplemente aún no existía alternativa.

El primer gran avance que se dio, como ya se comentó, fue la abstracción dada por el Lenguaje Ensamblador, y con él, el nacimiento de las primeras herramientas automáticas para generar el código máquina. Esto redujo los errores triviales, como podía ser el número que correspondía a una operación, que son sumamente engorrosos y difíciles de detectar, pero fáciles de cometer. Sin embargo, aún aquí es fácil para el programador perderse y cometer errores de lógica, pues debe bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de él.

Con el desarrollo en los 50s y 60s de algoritmos de más elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras científicos de otras ramas; ellos conocían mucho de Física, Química y otras ramas similares, pero no de Computación, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de fórmulas. Así, nació el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula TRANslation), que, como su nombre indica, inició como un "simple" esfuerzo de traducir un lenguaje de fórmulas, al lenguaje ensamblador y por consiguiente al lenguaje de máquina. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstracción posible, y facilitar la vida al programador, aumentando la productividad, encargándose los compiladores o intérpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora.

Hay que notar la existencia de lenguajes que combinan características de los de alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C: contiene estructuras de programación de alto nivel, y la facilidad de usar librerías que también son características de alto nivel; sin embargo, fue diseñado con muy pocas instrucciones, las cuales son sumamente sencillas, fáciles de traducir al lenguaje de la máquina; y requiere de un entendimiento apropiado de cómo funciona la máquina, el uso de la memoria, etcétera. Por ello, muchas personas consideramos a lenguajes como C (que fue diseñado para hacer sistemas operativos), lenguajes de nivel medio.

Java

El lenguaje de programación Java, fue diseñado por la compañía Sun Microsystems Inc, con el propósito de crear un lenguaje que pudiera funcionar en redes computacionales heterogéneas ( redes de computadoras formadas por más de un tipo de computadora, ya sean PC, MAC's, estaciones de trabajo, etc.),y que fuera independiente de la plataforma en la que se vaya a ejecutar. Esto significa que un programa de Java puede ejecutarse en cualquier máquina o plataforma. El lenguaje fue diseñado con las siguientes características en mente:

 Simple. Elimina la complejidad de los lenguajes como "C" y da paso al contexto de los lenguajes modernos orientados a objetos. Orientado a Objetos. La filosofía de programación orientada a objetos es diferente a la programación convencional.

 Familiar. Como la mayoría de los programadores están acostumbrados a programar en C o en C++, el sintaxis de Java es muy similar al de estos.

 Robusto. El sistema de Java maneja la memoria de la computadora por ti. No te tienes que preocupar por apuntadores, memoria que no se esté utilizando, etc. Java realiza todo esto sin necesidad de que uno se lo indique.

Seguro. El sistema de Java tiene ciertas políticas que evitan se puedan codificar virus con este lenguaje. Existen muchas restricciones, especialmente para los applets, que limitan lo que se puede y no puede hacer con los recursos críticos de una computadora.

 Portable. Como el código compilado de Java (conocido como byte code) es interpretado, un programa compilado de Java puede ser utilizado por cualquier computadora que tenga implementado el interprete de Java.

 Independiente a la arquitectura. Al compilar un programa en Java, el código resultante un tipo de código binario conocido como byte code. Este códido es interpretado por diferentes computadoras de igual manera, solamente hay que implementar un intérprete para cada plataforma. De esa manera Java logra ser un lenguaje que no depende de una arquitectura computacional definida.

 Multithreaded. Un lenguaje que soporta multiples threads es un lenguaje que puede ejecutar diferentes líneas de código al mismo tiempo.

 Interpretado. Java corre en máquina virtual, por lo tanto es interpretado.

 Dinámico. Java no requiere que compiles todas las clases de un programa para que este funcione. Si realizas una modificación a una clase Java se encarga de realizar un Dynamic Bynding o un Dynamic Loading para encontrar las clases.

Java puede funcionar como una aplicación sola o como un "applet", que es un pequeño programa hecho en Java. Los applets de Java se pueden "pegar" a una página de Web (HTML), y con esto puedes tener un programa que cualquier persona que tenga un browser compatible podrá usar.

Nota: Diferencia entre Java y CGI La diferencia es esencialmente simple, un CGI se ejecuta en el servidor mientras que un programa en Java se ejecuta en la máquina del usuario.

Java funciona de la siguiente manera: El compilador de Java deja el programa en un Pseudo-código (no es código maquinal) y luego el intérprete de Java ejecuta el programa (lo que se conoce como el "Java Virtual Machine"). Por eso Java es multiplataforma, existe un intérprete para cada máquina diferente. Nota: El código maquinal es el código binario que la computadora entiende y puede ejecutar.

Para entender bien como funciona un applet de Java vean el siguiente ejemplo:

1. Existe un código de Java en un servidor de Web. (Los códigos de Java se caracterizan por tener la extensión *.class).

2. Una persona en Internet, con un browser compatible con Java, realiza una conección al servidor.

3. El servidor envía el documento HTML y el código en Java (*.class).

4. En la computadora del usuario remoto llegan ambos, y la Máquina Virtual de Java, que está en el browser, transforma el código Java en un código que entienda la máquina local y se ejecuta el programa dentro de la página de Web.

5. Si el usuario realiza otra conexión a otro URL o se sale del browser, el programa se deja de ejecutar y en la computadora no queda rastro de el.

Ejemplo de tutorial de Java:

En Java hay tres tipos de comentarios:

// comentarios para una sola línea

/* comentarios de una o

más líneas

*/

/** comentario de documentación, de una o más líneas

*/

Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código.

En este tipo de comentario para documentación, se permite la introducción de algunos tokens o palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto en la documentación.

Identificadores

Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar.

En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.

Serían identificadores válidos:

Identificador

nombre_usuario

Nombre_Usuario

_variable_del_sistema

$transaccion

y su uso sería, por ejemplo:

int contador_principal;

char _lista_de_ficheros;

float $cantidad_en_Ptas;

Unix

Ejemplo de Unix:

No todo el "árbol" de directorios está compuesto por directorios de usuario. Existen muchos de ellos que son de uso general o del propio sistema y con los que habrá que familiarizarse. Los más importantes son:

/

El raíz, del que "cuelgan" todos.

/bin y /usr/bin

Contienen comandos UNIX ejecutables.

/etc

Es quizá el directorio más importante. Contiene ficheros de datos y configuración del sistema, el fichero de password, configuración de terminales, red, etc (de ahí su nombre).

/dev

Ficheros de dispositivos E/S.

/usr/man

Manual

/tmp

Directorio para arreglos temporales. TODOS los usuarios pueden leer y escribir en él.

C

C es un lenguaje de programación diseñado por Dennis Ritchie, de los Laboratorios Bell, y se instaló en un PDP-11 en 1972; se diseñó para ser el lenguaje de los Sistemas Operativos

UNIX1. A su vez, UNIX es un Sistema Operativo desarrollado por Ken Thompson, quién utilizó el lenguaje ensamblador y un lenguaje llamado B para producir las versiones originales de UNIX, en 1970. C se inventó para superar las limitaciones de B.

C es un lenguaje maduro de propósitos generales que se desarrolló a partir de estas raíces; su definición aparece en 1978 en el apéndice “C Reference Manual'' del libro The C Programming Language, de Brian W. Kernighan y Dennis M. Ritchie (Englewood Cliffs, Nueva Jersey, Prentice-Hall 1978), pero el estándar recomendable más reciente apareció en Junio de 1983, en el documento de los Laboratorios Bell titulado The C Programming Language-Reference Manual, escrito por Dennis M. Ritchie

Un programa en C

Generalizando, un programa en C consta de tres secciones. La primera sección es donde van todos los “headers''. Estos “headers'' son comúnmente los “#define'' y los “#include''. Como segunda sección se tienen las “funciones''. Al igual que Pascal, en C todas las funciones que se van a ocupar en el programa deben ir antes que la función principal (main()). Declarando las funciones a ocupar al principio del programa, se logra que la función principal esté antes que el resto de las funciones. Ahora, solo se habla de funciones ya que en C no existen los procedimientos.

Y como última sección se tiene a la función principal, llamada main. Cuando se ejecuta el programa, lo primero que se ejecuta es esta función, y de ahí sigue el resto del programa.

Los símbolos { y } indican “begin'' y “end'' respectivamente. Si en una función o en un ciclo while, por ejemplo, su contenido es de solamente una línea, no es necesario usar “llaves'' ({ }), en caso contrario es obligación usarlos.

Ejemplo de un programa en C

/*Programa ejemplo que despliega el contenido de "ROL" en pantalla*/

#include <stdio.h>

#define ROL "9274002-1"

despliega_rol() {

printf("Mi rol es : %sn", ROL);

}

void main() {

despliega_rol();

}

/* Fin programa */

Pascal

Pascal es un lenguaje de programación de alto nivel de propósito general; esto es, se puede utilizar para escribir programas para fines científicos y comerciales.

El lenguaje de programación Pascal fue desarrollado por el profesor Niklaus (Nicolás) Wirth en Zurich, Zuiza, al final de los años 1960s y principios de los 70s. Wirth diseñó este lenguaje para que fuese un buen primer lenguaje de programación para personas comenzando a aprender a programar. Pascal tiene un número relativamente pequeño de conceptos para aprender y dominar. Su diseño facilita escribir programas usando un estilo que está generalmente aceptado como práctica estándar de programación buena. Otra de las metas del diseño de Wirth era la implementación fácil. Él diseñó un lenguaje para el cual fuese fácil escribir un compilador para un nuevo tipo de computadora.

program Sorting;

{

Este programa lee un natural y una secuencia de N caracteres de la entrada estandar; construye un indice para ordenarlos de menor a mayor e imprime en la salida la secuencia ordenada.

}

uses CRT;

Const Max = 10;

Espacio = ' ';

Enter = chr (13);

type Indice = 1..Max;

Cantidad= 0..Max;

SecOfChar = record

elems : array [Indice] of char;

ult : Cantidad;

end;

SecOfInd = record

elems : array [Indice] of Indice;

ult : Cantidad;

end;

Natural = 0..MaxInt;

function PosMin (idx: SecOfInd; i: Indice; s: SecOfChar): Cantidad;

{ Devuelve la posicion en el indice idx del menor caracter en s, para

las posiciones >= i. }

var j: Indice;

pm: Cantidad;

begin

if i > idx.ult then

pm := 0

else begin

pm := i;

for j := i+1 to idx.ult do

if s.elems[idx.elems[j]] < s.elems[idx.elems[pm]] then

pm := j;

end;

PosMin := pm;

end;

procedure Swap (var idx: SecOfInd; i,j: Indice);

{ Intercambia las posiciones i j en idx. }

var tmp: Indice;

begin

if (i<=idx.ult) and (j<=idx.ult) then begin

tmp := idx.elems[i];

idx.elems[i] := idx.elems[j];

idx.elems[j] := tmp;

end;

end;

procedure InicInds (var idx: SecOfInd; cant: Indice);

{ Construye la secuencia de indices 1,2,3,…,n. Sera el indice

inicial para el ordenamiento de una secuencia de caracteres

c1,c2,…,cn. }

var n: Natural;

begin

n := cant;

idx.ult := n;

while n > 0 do begin

idx.elems [n] := n;

n := n-1;

end;

end;

procedure InicSecChar (var s: SecOfChar);

{ Devuelve la secuencia vacia. }

begin

s.ult := 0;

end;

function Llena (s: SecOfChar): Boolean;

begin

Llena := s.ult = Max;

end;

{ PRE: not Llena(s) }

procedure InsCar (var s: SecOfChar; c: char);

{ Inserta el caracter c en la secuencia s }

begin

s.ult := s.ult + 1;

s.elems [s.ult] := c;

end;

procedure IndSelSort (s: SecOfChar; var ind: SecOfInd);

{ Construye el indice que ordena la secuencia s. Ordena el indice

inicial 1,2, …, n por el metodo de selection sort }

var i: Indice;

begin

InicInds (ind, s.ult);

for i := 1 to ind.ult-1 do begin

Swap (ind, i, PosMin (ind, i, s));

end

end;

procedure WriteSorted (idx: SecOfInd; s: SecOfChar);

{ Imprime en la salida estandar la secuencia s ordenada segun el

indice idx }

var i: Indice;

begin

write ('Ordenado: ');

for i := 1 to idx.ult do

write (s.elems[idx.elems[i]],' ');

writeln;

end;

procedure LeerCar (var c: char; var ok: boolean; sep: Char);

{ Lee de la entrada estandar un caracter seguido del caracter sep }

var c1, c2: char;

begin

c := ReadKey; write (c);

c1 := ReadKey; write (c1);

ok := c1 = sep;

end;

procedure LeerSecOfChar (var s: SecOfChar; cant: Natural; var ok: Boolean);

{ Construye una secuencia de cant caracteres provistos por el

procedimeinto LeerCar. Si cant > Max trunca. }

var bien: Boolean;

i: Natural;

ch, sep: Char;

begin

writeln ('Ingrese ',cant, ' caracteres separados por blancos. Enter para terminar ');

write (' > ');

InicSecChar (s);

i := 1;

ok := true;

sep := Espacio;

while ok and (i <= cant) and not Llena (s) do begin

if i = cant then sep := Enter;

LeerCar (ch, bien, sep);

i := i+1;

ok := ok and bien;

if ok then

InsCar (s, ch);

end;

end;

procedure LeerCant (var n: Natural);

{ Lee de la entrada estandar un natural <= Max }

begin

repeat

writeln ('Ingrese cantidad de caracteres (<=',Max,')');

write (' > ');

readln (n);

until n <= Max;

end;

procedure Continuar (var seguir: Boolean);

var car: Char;

begin

writeln;

writeln ('Otro ? (s/n)');

write (' > ');

car := ReadKey;

writeln (car);

seguir := car in ['s','S'];

end;

var cant: Natural;

cars: SecOfChar;

inds: SecOfInd;

seguir, ok: boolean;

begin

repeat

ClrScr;

LeerCant (cant);

LeerSecOfChar (cars, cant, ok);

if ok then begin

IndSelSort (cars, inds);

writeln;

WriteSorted (inds, cars);

end

else begin

writeln;

writeln ('Error en los datos');

end;

Continuar (seguir);

until not seguir;

end.

QBasic

Qbasic es un lenguaje de alto nivel, el cual consiste en instrucciones que los humanos pueden relacionar y entender. El compilador de Qbasic se encarga de traducir el mismo a lenguaje de máquina.

Un programa es una secuencia de instrucciones. El proceso de ejecutar esas instrucciones se llama correr el programa. Los programas contienen las funciones de entrada, procesamiento y salida. La persona que resuelve problemas mediante escribir programas en la computadora se conoce como programador. Después de analizar el problema y desarrollar un plan para solucionarlo, escribe y prueba el programa que instruye a la computadora como llevar a cabo el plan. El procedimiento que realiza el programador se define como "problem solving". Pero es necesario especificar que un programador y un usuario no son lo mismo. Un usuario es cualquier persona que use el programa.

Ejemplo de qbasic, para hacer una calculadora

DIM total AS DOUBLE

DIM number AS DOUBLE

DIM secondNumber AS DOUBLE

DIM more AS STRING

DIM moreNumbers AS STRING

DIM operation AS STRING

total = 0

more = "y"

moreNumbers = "c"

CLS

WHILE more = "y"

INPUT "Enter the first number"; number

total = number

WHILE moreNumbers = "c"

COLOR 14

PRINT "The total is:"; total

COLOR 7

PRINT "Select an operation"

COLOR 2

PRINT "(+)"

COLOR 5

PRINT "(-)"

COLOR 1

PRINT "(x)"

COLOR 4

INPUT "(/)"; operation

COLOR 7

CLS

IF operation = "+" THEN

REM where we do additions

PRINT "Enter the number to Add to"; total

INPUT secondNumber

total = secondNumber + total

COLOR 14

PRINT "The total is now:"; total

COLOR 7

ELSE

IF operation = "-" THEN

REM subtraction

PRINT "Enter the number to Subtract from"; total

INPUT secondNumber

total = total – secondNumber

COLOR 14

PRINT "The total is now:"; total

COLOR 7

ELSE

IF operation = "x" THEN

REM multiplication

PRINT "Enter the number to Multiply"; total; "by"

INPUT secondNumber

total = secondNumber * total

REM * is the multiplication sign in programs

COLOR 14

PRINT "The total is now:"; total

COLOR 7

ELSE

IF operation = "/" THEN

REM division

PRINT "Enter the number to Divide"; total; "by"

INPUT secondNumber

IF secondNumber = 0 THEN

COLOR 4

PRINT "You cannot divide by zero"

COLOR 7

ELSE

total = total / secondNumber

REM / is the division sign in programs

END IF

COLOR 14

PRINT "The total is now:"; total

COLOR 7

ELSE

PRINT "you must select an operation"

END IF

END IF

END IF

END IF

INPUT "Do you wish to continue (c) or start with new numbers

(n)";moreNumbers

CLS

WEND

COLOR 14

PRINT "The grand total is:"; total

COLOR 7

INPUT "Do you wish to make more calculations (y – n)"; more

moreNumbers = "c"

REM if we don't put "moreNumbers" back to y, it will always

REM come back to "Do you wish to make more calculations" and never REM ask

for numbers again

REM (try it)

total = 0

REM if we don't reset the total to 0, it will just

REM keep on adding to the total

WEND

END

HARDWARE

Placas base

Una primera distinción la tenemos en el formato de la placa, es decir, en sus propiedades físicas. Dicho parámetro está directamente relacionado con la caja, o sea, la carcasa del ordenador. Hay dos grandes estándares: y Baby AT

La segunda distinción la haremos por el zócalo de la CPU, así como los tipos de procesador que soporte y la cantidad de ellos. Tenemos el estándar Tipo 4 o 5 para Pentium, el tipo 7 para Pentium y MMX, el Super 7 para los nuevos procesadores con bus a 100 Mhz, el tipo 8 para Pentium Pro, el Slot 1  para el Pentium II y el Celeron, y el Slot 2 para los Xeon. Estos son los más conocidos.

La siguiente distinción la haremos a partir del chipset que utilicen: Los más populares son los de Intel. Estos están directamente relacionados con los procesadores que soportan, así tenemos que para el Pentium están los modelos FX, HX, VX y TX. Para Pentium PRO los GX, KX y FX. Para Pentium II y sus derivados, además del FX, los LX, BX, EX,  GX y NX. Para Pentium MMX se recomienda el TX, aunque es soportado por los del Pentium 'Classic'

 También existen placas que usan como chipset el de otros fabricantes como VIA, SiS, UMC o Ali (Acer).

El siguiente parámetro es el tipo de bus. Hoy en día el auténtico protagonista es el estandar PCI de 32 bits en su revisión 2.1, pero también es importante contar con alguna ranura ISA de 16 bits, pues algunos dispositivos como módems internos y tarjetas de sonido todavía no se han adaptado a este estándar, debido básicamente a que no aprovechan las posibilidades de ancho de banda que éste posee. Tambien existe un PCI de 64 bits, aunque de momento no está muy visto en el mundo PC.

Otros tipos de bus son el ISA de 8 bits, no usado ya por ser compatible con el de 16 bits, el EISA, usado en algunas máquinas servidoras sobre todo de Compaq, el VL-Bus, de moda en casi todos los 486, o el MCA, el famoso bus microcanal en sus versiones de 16 y 32 bits patrocinado por IBM en sus modelos PS/2.

Otra característica importante es el formato y cantidad de zócalos de memoria que admite. En parte viene determinado por el chipset que utiliza. La más recomendable es la DIMM en formato SDRAM y como mínimo 3 zócalos. En el caso de módulos SIMM de 72 contactos el mínimo es de 6 (recordad que van de 2 en 2).Por último, en las placas basadas en socket 7 y super 7, tambien debemos tener en cuenta la memoria caché. Normalmente está directamente soldada a la placa base y en cantidades de 512 o 1024 Kb. Para saber más sobre ella acuda a la sección de memoriasATX:

El estandar ATX es el más moderno y el que mayores ventajas ofrece. Está promovido por Intel, aunque es una especificación abierta, que puede ser usada por cualquier fabricante sin necesidad de pagar royalties. La versión utilizada actualmente es la 2.01.

Entre las ventajas de la placa cabe mencionar una mejor disposición de sus componentes, conseguida básicamente girandola 90 grados. Permite que la colocación de la CPU no moleste a las las tarjetas de expansión, por largas que sean. Otra ventaja es un sólo conector de alimentación, que además no se puede montar al revés.La memoria está colocada en un lugar más accesible.La CPU está colocada al lado de la F.A. (Fuente de Alimentación) para recibir aire fresco de su ventilador.Los conectores para los dispositivos IDE y disqueteras quedan más cerca, reduciendo la longitud de los cables y estorbando menos la circulación del aire en el interior de la caja.

Además de todas estas ventajas dicho estandar nos da la posibilidad de integrar en la placa base dispositivos como la tarjeta de video o la tarjeta de sonido, pero sacando los conectores directamente de la placa, dándonos un diseño más compacto, y sin necesidad de perder ranuras de expansión.

Así podemos tener integrados los conectores para teclado y ratón tipo PS/2, série, paralelo o USB que son habituales en estas placas, pero también para VGA, altavoces, micrófono, etc… sin apenas sacrificar espacio.

Baby AT:

Este formato está basado en el original del IBM PC-AT, pero de dimensiones más reducidas gracias a la mayor integración en los componentes de hoy en día, pero físicamente compatible con aquel.Aún hoy en día es el más extendido. En este tipo de placas es habitual el conector para el teclado 'gordo'

Entre sus ventajas cabe destacar el mejor precio tanto de éstas como de las cajas que las soportan, aunque esta ventaja desaparecerá a medida que se vaya popularizando su contrincante.

CONCLUSIÓN

En este trabajo hemos presentado todo la información que conseguimos a sobre la informática y los campos que posee como:La historia de la informáticaOrigen de MicrosoftOrigen de Linux Origen de Unix Los diferentes lenguajes de programación Y un poco de Hardware Finalizamos esperando que haya sido el agrado de los lectores y profesores que han visto o leído nuestro arduo trabajo.

BIBLIOGRAFÍA

DEDICATORIA

  • Este trabajo dedicamos a los héroes de la guerra de la triple alianza y del Chaco, excepto al Mariscal López que es un hijo de la mil puta que fundió al Paraguay, hijo de miércoles.A los Compañeros que no me ayudaron en nada.Al profesor Santiago Portillo, por darnos este work.A Jesucristo por guiarnos siempre.A los integrantes de Metallica por tocar buena música.Y a todos los que no saben que hacer de su vida y se drogan, roban, asaltan y violadores.También a los secuestradores del Japonés.A los maricones que le mataron a Sadan Husein.A ese hijo de puta de George W. Bush que se cree el ratón ese Cerebro y quiere conquistar el mundo.Al Tosco de Nicanor, reverendo imbécil que nos esta pudriendo la vida todos los días.Al Monseñor Lugo, que dejo su sotana para hacer política.Al degenerado, depravado, pervertido sexual que le violó a su propio hijo.A Eli porque se fue a traer el hielo para tomar tereré y por ser tan linda y buena onda.
  • A mi vecino por meter 8 tipos de virus en mi computadora.

AGRADECIMIENTO

  • A nuestros padres por ser tan comprensivosA los compañeros por estar siempre junto a nosotros aunque sea hinchando.
  • Al profesor Santiago por ayudarnos siempre y por buena onda.

A Jesucristo por darnos siempre la fuerza de continuar cada día.

 

Ehiser Maria Martinez Benitez

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente