La Operación Asignación
variable = expresión;
a una variable.
variable.
variable
.
variable = valor constante;
x = 3;
variable = variable;
x = y;
variable = expresión;
x = (y + 1)/2;
Ejemplos
a = b;
suma = 60;
¿ Cuál será el valor que tomará la variable D tras la
ejecución de las siguientes instrucciones ?
A = 12;
B = A + 5;
C = B - 2;
D = C + (A + B)
Una variable
Una constante
Una combinación de operadores y operandos.
- Operadores: Símbolo que indica al compilador que
ejecute determinadas operaciones con los elementos
sobre los que opera (aritméticos, lógicos, de cadena y
relacionales).
Expresiones
Tipos de expresiones
Aritméticas: Los operandos que intervienen en ella
son numéricos, el resultado es numérico y los
operadores son aritméticos.
construyen mediante los operadores relacionales y
lógicos.
algebráica
Operador en
C++
Expresión en
C++
Suma
+
A + 3
+
A + 3
Resta
-
B - C
-
B - C
Multiplicación
x
X x Y
*
X * Y
División
/
X/Y ó X
Y
/
X/Y
Resto de la
División
%
R % S
Incremento
I + 1
++
I++ ó ++I
Decremento
I - 1
--
I- - ó - - I
Operadores Aritméticos
Incremento (++)
Para n = 2, la ejecución de la sentencia
i = n++;
// post-incremento
asigna el valor 2 a i y después incrementa el valor de n a 3.
i = 2
n = 3
La ejecución de la sentencia
i = ++n;
// pre-incremento
incrementa el valor de n a 4 y después asigna este valor a i.
n = 4
i = 4
Decremento (--)
Para n = 5, la ejecución de la sentencia
i = n--; // post-decremento
asigna el valor 5 a i y después decrementa el valor de n a 4.
i = 5
n = 4
La ejecución de la sentencia
i = --n; // pre-decremento
decrementa el valor de n a 3 y después asigna este valor a i.
n = 3
i = 3
•
Siempre que pueda, no utilice ++a; o --a; aunque son
operaciones válidas.
•
Puede utilizar incrementos/ decrementos en una
expresión, por ejemplo
x =5 +y++;
Equivalente a
x =5 +y;
y++;
•
Se utilizan sólo con variables enteras.
Operadores Aritméticos
Los operadores +, -, *, /, se pueden usar con operandos
(constante, variable o expresión) tanto enteros como
reales.
La división de enteros da como resultado un entero.
17/5 = 3
El operador módulo (%) sólo puede ser utilizado con
operandos enteros. La expresión a%b da como
resultado el resto de la división entera de dos números
17%5 = 2
(votos/electores) * 100
a*x*x + b*x + c
(alto - bajo)/2
horas*3600 + minutos*60 + segundos
numero%2
siguientes reglas:
Si ambos operandos son de tipo entero entonces el resultado es de
tipo entero.
Si uno de los operandos o ambos operandos son de tipo real entonces
el resultado es de tipo real.
Si la expresión evaluada da como resultado un valor de tipo entero y la
variable a la cual se le va a asignar este valor es de tipo real, entonces
el resultado será convertido automáticamente al tipo real antes de
realizar la asignación.
Si la expresión evaluada da como resultado un valor de tipo real y la
variable a la cual se le va a asignar este valor es de tipo entero,
entonces el resultado será convertido automáticamente al tipo entero
antes de realizar la asignación.
En general los tipos de datos son promovidos, desde un tipo mas
angosto hacia uno más amplio. Ej: de int a float.
Cuando hay conversiones de datos más grandes a datos más
pequeños, ocurre un truncamiento de los bits mas significativos
●
Si alguno de los dos operadores es long double,
convierta el otro a long double.
●
Si no, si cualquier operador es double, convierta
el otro a double.
●
Si no, si cualquier operador es float, convierta el
otro a float.
●
Si no, convierta char y short a int.
●
Luego, si algun operador el long, convierta el
otro a long.
evalúan primero (mayor nivel de precedencia)
++ --
* / %
+ - (menor nivel de precedencia)
se realiza de izquierda a derecha.
Precedencia de los Operadores
Aritméticos en
Ejemplo 1
Evaluar la siguiente expresión aritmética:
(a + b + c + d + e)%5
R1 = a + b
R2 = R1 + c
R3 = R2 + d
R4 = R3 + e
R5 = R4%5 (RESULTADO)
Expresiones Aritméticas:
(a + b + c + d + e)%5
para los valores:
a = 3, b = 2, c = 1, d = 8, e = 4
R1 = 3 + 2 = 5
R2 = 5 + 1 = 6
R3 = 6 + 8 = 14
R4 = 14 + 4 = 18
R5 = 18%5 = 3
Expresiones Aritméticas:
Ejemplo 2
Evaluar la siguiente expresión aritmética:
a % 2 / b – c * a * y + 18 / c – 3 * h
R1 = a % 2
R2 = R1 / b
R3 = c * a
R4 = R3 * y
R5 = 18 / c
R6 = 3 * h
R7 = R2 – R4
R8 = R7 + R5
R9 = R8 – R6 (Resultado)
Expresiones Aritméticas:
Ejemplo 2
Evaluar la expresión aritmética
a % 2 / b – c * a * y + 18 / c – 3 * h
para los valores:
a = 3, b = 2, c = 1, h = 8, y = 4
R1 = 3 % 2 = 1
R2 = 1 / 2 = 0
R3 = 1 * 3 = 3
R4 = 3 * 4 = 12
R5 = 18 / 1 = 18
R6 = 3 * 8 = 24
R7 = 0 – 12 = -12
R8 = -12 + 18 = 6
R9 = 6 – 24 = -18
Ejemplo 3
Evaluar la siguiente expresión aritmética:
a * (b + c) + c * (d + e)
R1 = b + c
R2 = d + e
R3 = a * R1
R4 = c * R2
R5 = R3 + R4 (Resultado)
Ejemplo 3
Evaluar la siguiente expresión aritmética
a * (b + c) + c * (d + e)
para los valores:
a = 3, b = 2, c = 1, d = 8, e = 4
R1 = 2 + 1 = 3
R2 = 8 + 4 = 12
R3 = 3 * 3 = 9
R4 = 1 * 12 = 12
R5 = 9 + 12 = 21
Ejemplo 4
Evaluar la siguiente expresión aritmética:
(a * (b + c)) – 2 * a + (4 * d – f)
R1 = b + c
R2 = a * R1
R3 = 4 * d
R4 = R3 - f
R5 = 2 * a
R6 = R2 - R5
R7 = R6 + R4 (Resultado)
(a * (b + c)) – 2 * a + (4 * d – f)
para los valores:
a = 3, b = 2, c = 1, d = 8, f = 4
R1 = 2 + 1 = 3
R2 = 3 * 3 = 9
R3 = 4 * 8 = 32
R4 = 32 - 4 = 28
R5 = 2 * 3 = 6
R6 = 9 - 6 = 3
R7 = 3 + 28 = 31
Expresiones Aritméticas:
Ejemplo 4
Evaluacion de Expresiones
Aritmeticas
Las expresiones aritmeticas pueden ser evaluadas de forma
estrictamente secuencial:
1+3*4 se evalua poniendo los operandos en de un lado y los
operadores de otro lado. Esta separación ocurre de forma
secuencial.
Evaluacion de Expresiones
Aritmeticas
Para evaluar una expresión debe tenerse en cuenta que:
- Los operadores tienen prioridad. De mayor a menor son: x / + -
- Las operaciones con operadores de igual prioridad se evaluan de izquierda a
derecha.
- Al final de la operación se efectuan el resto de operaciones pendientes hasta
que el recipiente de operadores quede vacio.
Ejemplo: (4+6)*3/5
Evaluacion de Expresiones
Aritmeticas
En el ejemplo anterior se utilizaron
parentesis, que ocupan la mayor prioridad
en la evaluación de una expresión
aritmetica.
se ejecutan todas las operaciones hasta
encontrar un parentesis que abre.
Convertir grados Fahrenheit a grados Centígrados
centi)
// Convertir grados Fahrenheit a grados Centígrados
#include
int main()
{
const float MULT = 5.0/9.0, SUB = 32.0;
float fahr, centi;
printf(”Introduzca la temperatura Fahrenheit: ”)endl;
scanf(“%f”,&fahr);
centi = (fahr - SUB) * MULT;
printf(”Temperatura equivalente en °C es %f", centi);
return 0;
}
Expresiones Aritméticas:
Ejemplo 5
Corrida en frío
Para las siguientes temperaturas en grados Fahrenheit:
72.0, 28.0, 80.0, 110.0
0.55 32.0 72.0 22.0
0.55 32.0 28.0 -2.2
0.55 32.0 80.0 26.4
0.55 32.0 110.0 42.9
Como se observará en estos diagramas (también llamados diagramas de Conway) son grafos dirigidos que tienen dos componentes esenciales:
El ‘rectángulo’ que indica que en ese punto hay un elemento del vocabulario que es no-terminal, es decir que tendrá otro diagrama de Conway para definirle.
El ‘círculo’ para indicar que en ese punto hay un símbolo terminal, es decir que es un elemento perteneciente al vocabulario para la formación de expresiones aritméticas.
-En estos diagramas se acostumbrará a comenzar el recorrido por la izquierda, por la rama que suele llevar muy cercano el nombre del elemento que vamos a definir, se sigue el recorrido, en el sentido de las flechas, y cada elemento (rectángulo o círculo) que se va encontrando se concatena a lo que ya se tuviera.
- Quedan por definir Identf., Constante y Función, que por la brevedad de su definición utilizaré lenguaje natural para ello:
· Identif. : los identificadores se utilizarán para designar las variables que aparezcan en la expresión aritmética. Un identificador se formará empezando siempre por una letra seguido de 0 o más letras o dígitos numéricos.
· Constante : una constante es, simplemente, un número real (notación IEEE 754-1985) compuesto por una parte entera, una parte decimal y una parte exponencial (no deben aparecer todas necesariamente). Igual que en el lenguaje Java.
· Función : se refiere a funciones matemáticas de un único parámetro. Las incluidas en este caso son:
o Sqrt : calcula la raíz cuadrada de un número (positivo).
o Exp : eleva el número e a un número.
o Log : calcula el logaritmo neperiano de un número.
Ejemplo de validación de una expresión aritmética
8 + (a3 * 5)
Término -> Factor -> Constante (8) -> (+) -> Término -> Factor -> (() -> Expresión -> ()) -> Fin
Hasta aquí, tenemos reconocido, según los diagramas sintácticos, lo siguiente : 8 + ( Expresión )
Aquí, Expresión se encargará de validar a3 * 5, con la siguiente secuencia:
Término -> Factor -> Identif. (a3) -> (*) -> Factor -> Constante (5)
Ejemplos, igualmente válidos, que se pueden verificar con los diagramas sintácticos, serían:
1. 2 + 3^(-3) * sqrt(79 / exp(1*a)) * (-5)
2. ( -( -( -( -( -8)))))
UML: Diagramas UML. ¿Qué es UML?
Desarrollo de Software Orientado a Objetos
Diagramas UML. ¿Qué es UML? UML es un conjunto de herramientas, que permite modelar (analizar y diseñar) sistemas orientados a objetos.
Ahora la frase más importante de todo el artículo: "El 80% de los problemas se pueden resolver usando tan solo el 20% de UML"
Herramientas UML
Pero volviendo a la definición de UML como "conjunto de herramientas", si nos imaginamos UML como una caja de herramientas con su martillo, destornillador, alicates, etc. Veamos qué contiene nuestra caja de herramientas:
Diagrama de casos de uso
Diagrama de clases
Diagrama de estados
Diagrama de secuencias
Diagrama de actividades
Diagrama de colaboraciones
Diagrama de componentes
Diagrama de distribución
Pero siguiendo con la analogía, si vamos a colgar un cuadro no usaremos todas las herramientas de nuestra caja, posiblemente sólo usemos el martillo para clavar el clavo.
Lo mismo pasa con UML, una vez que conozcamos las herramientas usaremos en cada momento las más adecuadas a nuestras necesidades. Nos os voy a decir que esto sea fácil, pues hay que saber para qué sirven y qué limitaciones tienen unas y otras para conocer su utilidad. Pero se puede alcanzar este conocimiento con un poco de práctica y sentido común.
Qué no es UML
UML no es un método de desarrollo. No te va a decir cómo pasar del análisis al diseño y de este al código. No son una serie de pasos que te llevan a producir código a partir de unas especificaciones.
UML al no ser un método de desarrollo es independiente del ciclo de desarrollo que vayas a seguir, puede encajar en un tradicional ciclo en cascada, o en un evolutivo ciclo en espiral o incluso en los métodos ágiles de desarrollo.
Cómo nació UML
Durante los ochenta y principios de los noventa Grady Booch, James Rumbaugh, e Ivar Jacobson trabajaban por separado en desarrollo de notaciones para el análisis y diseño de sistemas orientados a objetos. Los tres llegaron por separado a obtener bastante reconocimiento.
Booch había escrito "Object-Oriented Analysis and Design with Applications" un libro de referencia en el análisis y diseño orientado a objetos desarrollando su propia notación.
Por su parte James Rumbaugh había desarrollado su propia notación de diseño orientado a objetos llamada OMT (Object Modeling Technique) en su libro "Object-Oriented Modeling and Design".
Por otro lado Jacobson se había revelado como un visionario del análisis (padre de los casos de uso) y sobre todo del diseño orientado a objetos, sorprendiendo a todo el mundo en "Object-Oriented Software Engineering: A Use Case Driven Approach".
A mediados de los noventa empezaron a intercambiar documentos y trabajar en conjunto produciendo grandes avances en el modelado de sistemas orientados a objetos.
En 1994 Rational contrató a Rumbaugh en donde ya trabajaba Booch, un año después Jacobson se unía a ellos en Rational.
En 1997 salió a la luz la versión 1.0 de UML.
Lenguajes de programación
Presentado por:
Carlos Andrés Astudillo
Alumno sis11- 1003
Presentado a
Mauricio Galindo
Docente
I.T.D JULIO FLORES – SENA
Especialidad
Bogota
2009
Índice
Introducción……………………………………………………………………………………………………….
Objetivos…………………………………………………………………………………………………………...
1. concepto de lenguaje de programación…………………………………………………………1
2 tipos de lenguajes de programación……………………………………………………………….2
2.1. Lenguaje de maquina…………………………………………………………………………………3
2.2 lenguajes de bajo nivel………………………………………………………………………………..
2.3 lenguajes de alto nivel………………………………………………………………………………….
2.3.1 java……………………………………………………………………………………………………………….
2.3.2 pascal…………………………………………………………………………………………………………….
2.3.2.1caracteristicas……………………………………………………………………………………………..
2.3.3 Linux……………………………………………………………………………………………………………..
2.3.4 ensamblador…………………………………………………………………………………………………
2.3.5 Qbasic…………………………………………………………………………………………………………..
2.3.6 C…………………………………………………………………………………………………………………..
3. concepto de compilador…………………………………………………………………………………
1. concepto
Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el comportamiento físico y lógico de una máquina.
Aunque muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación).
Un lenguaje de programación permite a uno o más programadores especificar de manera precisa sobre qué datos debe operar una computadora, cómo estos datos 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, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.
Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes.
Traduciendo este programa, al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al programa traductor se le denomina compilador.
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.
2. tipos de lenguaje de programación
Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
Según el nivel de abstracción
Según el paradigma de programación que poseen cada uno de ellos
lenguaje de ensamblador
2.1 Lenguaje de máquina
Los circuitos micro programables son sistemas digitales, lo que significa que trabajan con dos únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su programación.
Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las puertas lógicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lógicos cada vez más complejos.
Shannon utilizaba el relé como dispositivo físico de conmutación en sus redes. El relé, a igual que una lámpara eléctrica, posee dos estados: 1 ó 0, esto es, está activado, encendida, o está desactivado, apagada.
El desarrollo tecnológico ha permitido evolucionar desde las redes de relés electromagnéticos de Shannon a circuitos con tubos de vacío, luego a redes transistor izadas, hasta llegar a los modernos circuitos integrados cuya cúspide lo forman los circuitos microprogramador.
2.2. Lenguaje de bajo nivel
Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. 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.
2.3. Lenguaje de alto nivel
Los lenguajes de programación de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas.
2
En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedí mentales.
Otra limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de muy alto nivel se crearon para que el usuario común pudiese solucionar tal problema de procesamiento de datos de una manera más fácil y rápida.
Por esta razón, a finales de los años 1950 surgió un nuevo tipo de lenguajes de programación que evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se llaman "de tercera generación" o "de alto nivel", en contraposición a los "de bajo nivel" o "de nivel próximo a la máquina".
2.3.1 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:
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.
2.3.2 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.
3
2.3.2.1 Características
A diferencia de lenguajes de programación descendientes de C, Pascal utiliza el símbolo:= para la asignación en vez de =. Si bien el segundo es más conciso, la práctica ha demostrado que muchos usuarios utilizan el símbolo de igualdad para comparar valores en lugar del comparador de C que es el símbolo ==. Esta sintaxis conduce a muchos errores o bugs difíciles de rastrear en código C. Dado que Pascal no permite asignaciones dentro de expresiones y utiliza sintaxis distinta para asignaciones y comparaciones, no sufre estos errores.
Además sus programas tienen definidas dos partes: declarativa y ejecutiva. En la primera debe aparecer todo lo que se usará en la segunda, de lo contrario se detecta como desconocido y evita ciertas incomprensiones como veremos más adelante. En la parte declarativa se enuncian Unit existentes, procedimientos, funciones, variables, constantes y nuevos tipos de datos estructurados.
Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (En C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido. Esto también evita la necesidad de notación húngara, esto es prefijos que se añaden a los nombres de las variables y que indican su tipo.
2.3.3 Linux
Linux es una implementación del sistema operativo UNIX (uno más de entre los numerosos clónicos del histórico Unix), pero con la originalidad de ser gratuito y a la vez muy potente, que sale muy bien parado (no pocas veces victorioso) al compararlo con las versiones comerciales para sistemas de mayor envergadura y por tanto teóricamente superiores. Comenzó como proyecto personal del entonces estudiante-Linus Torvalds, quien tomó como punto de partida otro viejo conocido, el Minix de Andy. S. Tanenbaum (profesor de sistemas operativos que creó su propio sistema operativo Unix en PCs XT para usarlo en su docencia). Actualmente Linus lo sigue desarrollando, pero a estas alturas el principal autor es la red Internet, desde donde una gigantesca familia de programadores y usuarios aportan diariamente su tiempo aumentando sus prestaciones y dando información y soporte técnico mutuo. La versión original -y aun predominante- comenzó para PCs compatibles (Intel 386 y superiores.
De todas ellas la más reciente en este momento es la versión para PowerMac basada en el microkernel Mach 3.0 y de la que ya hay una distribución para desarrolladores avalada directamente por Apple y OSF pero conservando el espíritu (gratuito, de libre distribución, etc.) de la versión original. Un servidor la acaba de probar hace unos días y se ha llevado una grata sorpresa (aún tendrá muchos fallos, pero para ser una primerísima versión y el poco tiempo que lleva en marcha, ha avanzado más de lo que me esperaba).
2.3.4 Ensamblador
Cuando abstraemos los opcodes y los sustituimos por una palabra que sea una clave de su significado, a la cual comúnmente se le conoce como mnemónico, tenemos el concepto de Lenguaje Ensamblador . Así, podemos definir simplemente al Lenguaje Ensamblador de la siguiente forma:
Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina, consistente en asociar a los opcodes palabras clave que faciliten su uso por parte del programador
Como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y viceversa; simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro lado, la computadora no entiende directamente al Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Máquina. Originalmente, este proceso se hacía a mano, usando para ello hojas donde se escribían tablas de programa similares al ejemplo de la calculadora que vimos arriba. Pero, al ser tan directa la traducción, pronto aparecieron los programas Ensambladores, que son traductores que convierten el código fuente (en Lenguaje Ensamblador) a código objeto (es decir, a Lenguaje de Máquina).
Una característica que hay que resaltar, es que al depender estos lenguajes del hardware, hay un distinto Lenguaje de Máquina (y, por consiguiente, un distinto Lenguaje Ensamblador) para cada CPU.
2.3.5 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.
2.3.6 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.
3. compilador
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
También en el siglo XIX el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos. Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (1815-1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna. La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno. Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticas y una impresora para hacer permanente el registro.
6


