1. PROCESO: Puede informalmente
entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de
actividad que se caracteriza por la ejecución de una secuencia de
instrucciones, un estado actual, y un conjunto de recursos del sistema
asociados".
Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el
mismo programa en ejecución 2 veces. Cuándo este último caso sucede, el sistema
operativo usa la misma región de memoria de código, debido a que dicho código
no cambiará, a menos que se ejecute una versión distinta del programa.
Los procesos son gestionados por el sistema operativo y están formados por:
- Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
- Su estado de ejecución en
un momento dado, esto es, los valores de los registros de la unidad
central de procesamiento para dicho programa.
- Su memoria de trabajo
(memoria crítica), es decir, la memoria que ha reservado y sus contenidos.
- Otra información que
permite al sistema operativo su planificación.
Un proceso se rige en pequeñas porciones,
conocidas como páginas, y cada proceso
tiene su propia tabla de paginación, fungiendo como una optimización del sistema operativo ante los fallo de página.
2. ENTRADAS A UN PROCESO: Entrada de Información: Es el proceso
mediante el cual el Sistema de Información toma los datos que requiere para
procesar la información. Las entradas pueden ser manuales o automáticas. Las
manuales son aquellas que se proporcionan en forma directa por el usuario,
mientras que las automáticas son datos o información que provienen o son
tomados de otros sistemas o módulos.
Esto último se denomina interfases automáticas. Las unidades típicas de
entrada de datos a las computadoras son las terminales, las cintas magnéticas,
las unidades de diskette, CD-ROM, Pendriver, los códigos de barras, los
escáners, la voz, los monitores sensibles al tacto, el teclado y el mouse,
entre otras.
Procesamiento
de Información: Es la capacidad del Sistema de Información para efectuar cálculos de
acuerdo con una secuencia de operaciones preestablecida. Estos cálculos pueden
efectuarse con datos introducidos recientemente en el sistema o bien con datos
que están almacenados. Esta característica de los sistemas permite la
transformación de datos fuente en información que puede ser utilizada para la
toma de decisiones, lo que hace posible, entre otras cosas, que un tomador de
decisiones genere una proyección financiera a partir de los datos que contiene
un estado de resultados o un balance general de un año base.
3. SALIDAS
DE UN PROCESO: Salida de Información: La salida es la capacidad de un Sistema de
Información para sacar la información procesada o bien datos de entrada al
exterior. Las unidades típicas de salida son las impresoras, terminales,
diskettes, cintas magnéticas, la voz, los graficadores y los plotters, entre
otros. Es importante aclarar que la salida de un Sistema de Información puede
constituir la entrada a otro Sistema de Información o módulo.
En este caso, también existe una interfase automática de salida. Por
ejemplo, el Sistema de Control de Clientes tiene una interfase automática de
salida con el Sistema de Contabilidad, ya que genera las pólizas contables de
los movimientos procesales de los clientes.
4. ALGORITMO:
Es una fórmula para resolver un problema. Es un conjunto de acciones o
secuencia de operaciones que ejecutadas en un determinado orden resuelven el
problema. Existe n algoritmos, hay
que coger el más efectivo.
Características:
· Tiene que ser
preciso.
· Tiene que estar
bien definido.
· Tiene que ser
finito.
La programación es adaptar el algoritmo al ordenador.
El algoritmo es independiente según donde lo implemente.
5. ESTRUCTURA
DE UN ALGORITMO: En esencia un algoritmo está constituido por los siguientes tres
elementos:
Datos
|
Instrucciones
|
Estructuras de control
|
Lo que el algoritmo
recibe, procesa y entrega como resultado. |
Las acciones o procesos
que el algoritmo realiza sobre los datos. |
Las que determinan el orden en que se ejecutarán
las instrucciones del algoritmo.
|
En el capítulo siguiente se presenta de manera completa los conceptos de
dato e instrucciones sobre datos y en el capítulo cuatro se describe el
concepto de estructura de control.
6. INSTRUCCIÓN:
Se denomina instrucción en informática al
conjunto de datos insertados en una secuencia estructurada o específica que
el procesador interpreta y ejecuta.
Los tipos de instrucción permitidos están definidos y determinados
dentro de cada plataforma en el conjunto de instrucciones (en inglés
ISA, instruction set architecture), que también determina los registros de origen y destino de la CPU, y en ocasiones un
dato inmediato (aquellos que son especificados explícitamente en la
instrucción).
Estas instrucciones del computador son las que determinan el
funcionamiento de la CPU que
las ejecuta. La CPU puede realizar una diversidad de funciones, que son el
reflejo de la variedad de las instrucciones definidas para dicha CPU. El programador tiene
un repertorio de
instrucciones como medio para controlar la CPU.
7. PSEUDOCÓDIGO:
En programación,
lenguaje artificial e informal útil para programadores para el
desarrollo de algoritmos.
No es un lenguaje de
programación verdadero y, por lo tanto, no puede ser compilado y
ejecutado.
En pseudocódigo se describen los algoritmos utilizando una mezcla de lenguaje común, con instrucciones de programación, palabras claves, etc. El objetivo es que el programador se centre en la solución lógica del algoritmo y no en la implementación en un lenguaje de programación concreto (con las posibles complicaciones en las reglas sintácticas), o en otras palabras, sólo ayudan a "pensar" un programa antes de escribirlo en un lenguaje de programación formal.
En pseudocódigo se describen los algoritmos utilizando una mezcla de lenguaje común, con instrucciones de programación, palabras claves, etc. El objetivo es que el programador se centre en la solución lógica del algoritmo y no en la implementación en un lenguaje de programación concreto (con las posibles complicaciones en las reglas sintácticas), o en otras palabras, sólo ayudan a "pensar" un programa antes de escribirlo en un lenguaje de programación formal.
8. DATO: En programación,
un dato es la expresión general que describe las características de las
entidades sobre las cuales opera un algoritmo.
9. VARIABLE:
Una variable es un contenedor de bits que representan a un valor. Se
emplean para almacenar datos que pueden cambiar durante la ejecución de un
programa. En función de los datos que almacenan se clasifican en:
- Variables primitivas: almacenan datos numéricos, valores
lógicos o caracteres.
- Variables referenciadas: asociadas a objetos o instancias de
una clase. Por ejemplo, para almacenar cadenas de caracteres se empleará
una variable referenciada asociada a la clase String, para almacenar
información sobre la fecha actual, otra asociada a la clase Date, etc. Se
estudiarán más adelante.
Además de estos dos tipos de variables se estudiarán los arrays de
variables primitivas y de variables referenciadas. Un array, como se verá en el
tema correspondiente, es una variable referenciada asociada a la clase Object
(clase madre de todos los objetos Java).
Se va a profundizar un poco más en el concepto de variable: como se ha
comentado anteriormente, no es nada más que un contenedor de bits que
representan a un valor. Ocurre lo siguiente:
- En el caso de variables primitivas, los bits representan un número
entero que coincide con el valor de la variable, con lo que se va a
trabajar a lo largo del programa. Por ejemplo, se tienen variables de tipo
byte (utilizan 8 bits en memoria) que pueden almacenar números enteros
comprendidos entre -128 y 127, de tipo int (utilizan 32 bits en memoria)
para almacenar enteros entre, aproximadamente, -2150 millones y 2150
millones, de tipo float para números decimales, etc.
- En el caso de variables referenciadas o asociadas a objetos, los
bits representan un numerajo que permite acceder al valor de la variable,
es decir, al objeto, pero no es el valor u objeto en sí.
Todos los nombres empleados para hacer referencia a variables deben
cumplir lo siguiente:
- Su primer carácter debe ser una letra, el símbolo del subrayado o
el carácter dólar $.
- No son válidos las palabras reservadas de Java.
- No se admiten espacios en blanco.
- Son case-sensitive (sensibles a mayúsculas).
Aparte de estas normas conviene que los nombres de las variables
indiquen qué dato almacenan con el fin de facilitar la lectura del programa y,
por otra parte, si un nombre tiene más de dos palabras la primera letra de la
primera palabra irá en minúscula, la primera letra de la segunda palabra en
mayúscula, ídem con la tercera y así sucesivamente.
Ejemplo:
int miVariableEntera=100;
10. TIPOS
DE VARIABLES:
- int: O
Entero(En inglés Integrer). Almacena un número entero de -32768 a +32767.
Ocupa 16 bits en memoria. Los números que almacena no pueden contener
decimales
- float: O
Flotante. Almacena un número con decimales con 7 dígitos de precisión.
Ocupa 32 bits en memoria.
- double: Un
número décimal de doble precisión, hasta 13 dígitos. Ocupa 64 bits en
memoria. Puede almacenar decimales.
- char: O
Caracter. Almácena un sólo caracter. O un número entero. Ocupa 8 bits en
memoria. No puede almacenar decimales. Para declararla: char
nombrevariable = "letra";
- void: Tipo
personalizado. Es una funcion como main.
Con todos estos tipos de variables se
pueden hacer sumas, restas, multiplicaciones, divisiones, comparaciones, etc.
Las variables del tipo void
albergan unas acciones definidas por el usuario. Puede contener tantas acciones
como se desee.
Aunque todas las variables de JavaScript se crean de la misma forma
(mediante la palabra reservada var), la forma en la que se les asigna un
valor depende del tipo de valor que se quiere almacenar (números, textos, etc.)
- Numéricas:
Se utilizan para almacenar valores numéricos enteros (llamados integer en
inglés) o decimales (llamados float en inglés). En este caso,
el valor se asigna indicando directamente el número entero o decimal. Los
números decimales utilizan el carácter . (punto) en vez de , (coma)
para separar la parte entera y la parte decimal:
var iva =
16; // variable tipo entero
var total =
234.65; // variable tipo decimal
- Cadenas
de texto: Se utilizan para almacenar caracteres, palabras y/o frases de texto.
Para asignar el valor a la variable, se encierra el valor entre comillas dobles
o simples, para delimitar su comienzo y su final:
var mensaje
= "Bienvenido a nuestro sitio web";
var
nombreProducto = 'Producto ABC';
var
letraSeleccionada = 'c';
En ocasiones, el texto que se almacena en las variables no es tan
sencillo. Si por ejemplo el propio texto contiene comillas simples o dobles, la
estrategia que se sigue es la de encerrar el texto con las comillas (simples o
dobles) que no utilice el texto:
/* El
contenido de texto1 tiene comillas simples, por lo que
se encierra con comillas dobles */
var texto1 =
"Una frase con 'comillas simples' dentro";
/* El
contenido de texto2 tiene comillas dobles, por lo que
se encierra con comillas simples */
var texto2 =
'Una frase con "comillas dobles" dentro';
No obstante, a veces las cadenas de texto contienen tanto comillas
simples como dobles. Además, existen otros caracteres que son difíciles de
incluir en una variable de texto (tabulador, ENTER, etc.) Para resolver
estos problemas, JavaScript define un mecanismo para incluir de forma sencilla
caracteres especiales y problemáticos dentro de una cadena de texto.
El mecanismo consiste en sustituir el carácter problemático por una
combinación simple de caracteres. A continuación se muestra la tabla de
conversión que se debe utilizar:
Si se quiere incluir...
|
Se debe incluir...
|
Una nueva línea
|
\n
|
Un tabulador
|
\t
|
Una comilla simple
|
\'
|
Una comilla doble
|
\"
|
Una barra inclinada
|
\\
|
De esta forma, el ejemplo anterior que contenía comillas simples y
dobles dentro del texto se puede rehacer de la siguiente forma:
var texto1 =
'Una frase con \'comillas simples\' dentro';
var texto2 =
"Una frase con \"comillas dobles\" dentro";
12. QUE ES
Y COMO SE INICIA UNA VARIABLE EN PSEUDOCÓDIGO: El
principal objetivo del pseudocódigo es el de representar la solución a un
algoritmo de la forma más detallada posible, y a su vez lo más parecida posible
al lenguaje que posteriormente se utilizara para la codificación del mismo.
Las principales características de este lenguaje son:
* Se puede ejecutar en un ordenador
* Es una forma de representación sencilla de utilizar y de manipular.
* Facilita el paso del programa al lenguaje de programación.
* Es independiente del lenguaje de programación que se vaya a utilizar.
* Es un método que facilita la programación y solución al algoritmo del programa.
Todo documento en pseudocódigo debe permitir la descripción de:
* Instrucciones primitivas
* Instrucciones de proceso
* Instrucciones de control
* Instrucciones compuestas
* Instrucciones de descripción
* Se puede ejecutar en un ordenador
* Es una forma de representación sencilla de utilizar y de manipular.
* Facilita el paso del programa al lenguaje de programación.
* Es independiente del lenguaje de programación que se vaya a utilizar.
* Es un método que facilita la programación y solución al algoritmo del programa.
Todo documento en pseudocódigo debe permitir la descripción de:
* Instrucciones primitivas
* Instrucciones de proceso
* Instrucciones de control
* Instrucciones compuestas
* Instrucciones de descripción
Estructura a seguir en su realización:
Cabecera:
* Programa:
* Modulo:
* Tipos de datos:
* Constantes:
* Variables:
Cuerpo:
* Inicio
* Instrucciones
* Fin
13. CONSTANTE:
Una constante es un dato cuyo valor no puede cambiar durante la
ejecución del programa. Recibe un valor en el momento de la compilación y este
permanece inalterado durante todo el programa.
Como ya se ha comentado en el tema sobre las partes de un
programa, las constantes se declaran en una sección que comienza con
la palabra reservada const. Después de declarar una constante ya puedes usarla
en el cuerpo
principal del programa. Tienen varios usos: ser miembro en una expresion,
en una comparación, asignar su valor a una variable, etc.
En el siguiente ejemplo se contemplan varios casos:
const
Min = 0;
Max = 100;
Sep = 10;
var
i : integer;
begin
i := Min;
while i < Max do begin
writeln(i);
i := i + Sep
end
end.
|
En este ejemplo se declaran tres constantes (Min, Max y Sep).
En la primera línea del cuerpo del programa se asigna una constante a una
variable. En la siguiente, se usa una constante en una comparación. Y en la
cuarta, la constante Sep interviene en una expresión que se
asigna a una variable. El resultado de ejecutar este programa sería una
impresión en pantalla de los números: 0, 10, 20, 30, 40, 50, 60, 70, 80 y 90.
Se puede hacer una división de las constantes en tres clases:
- constantes literales (sin
nombre)
- constantes declaradas (con
nombre)
- constantes expresión
Constantes literales: Son valores de cualquier tipo que se utilizan directamente, no se
declaran ya que no tienen nombre. En el siguiente ejemplo tienes un par de
constantes literales (el 3, el 4, y el 3.1416):
Constantes
declaradas: También llamadas constantes con nombre, son las que se declaran en la
sección const asignándoles
un valor directamente. Por ejemplo:
const
Pi = 3.141592; (* valor real *)
Min = 0; (* entero *) Max = 99; (* entero *) Saludo = 'Hola'; (* cadena caract. *) |
Constantes
expresión: También se declaran en la sección const,
pero a estas no se les asigna un valor directamente, sino que se les asigna
una expresión.
Esta expresión se evalúa en tiempo de compilación y el resultado se le asigna a
la constante. Ejemplo:
const
Min = 0;
Max = 100; Intervalo = 10; N = (Max - Min) div Intervalo; Centro = (Max - Min) div 2; |
14. CONVENCIÓN:
hacen uso de las mayúsculas y minúsculas en sus identificadores.
Entre ellas tenemos:
Entre ellas tenemos:
1. Estilo Pascal (PascalCase): La primera
letra del identificador y la primera letra de las siguientes palabras
concatenadas están en mayúsculas. El estilo de mayúsculas y minúsculas Pascal
se puede utilizar en identificadores de tres o más caracteres.
2. Estilo camelCase: La primera letra del
identificador está en minúscula y la primera letra de las siguientes palabras
concatenadas en mayúscula.
3. Estilo
Mayúsculas (ALL_CAPS): Todas las letras del identificador se encuentran en mayúsculas.
4. Estilo
minúsculas (small_caps): Todas las letras del identificador se encuentran en minúsculas.
Esta designación de la convención se utiliza muy poco.
Cada lenguaje de programación hace uso de estos estilos según el
identificador que use y de acuerdo a su convención.
15. LENGUAJE
DE PROGRAMACIÓN: Un lenguaje de programación es
un lenguaje que puede ser utilizado para controlar el comportamiento de una
máquina, particularmente una computadora. Consiste en un conjunto de reglas
sintácticas y semánticas que definen su estructura y el significado de sus
elementos, respectivamente. Aunque muchas veces se usa 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.
Según la
forma de ejecución
-Lenguajes compilados: Naturalmente,
un programa que se escribe en un lenguaje de alto nivel también tiene que
traducirse a un código que pueda utilizar la máquina. Los programas traductores
que pueden realizar esta operación se llaman compiladores. Éstos, como los
programas ensambladores avanzados, pueden generar muchas líneas de código de
máquina por cada proposición del programa fuente. Se requiere una corrida de
compilación antes de procesar los datos de un problema.
Los compiladores son aquellos cuya función es
traducir un programa escrito en un determinado lenguaje a un idioma que la
computadora entienda (lenguaje máquina con código binario).
Al usar un lenguaje compilado (como lo son los
lenguajes del popular Visual Studio de Microsoft), el programa desarrollado
nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado
el programa, ya no aparecen errores en el código.
-Lenguajes interpretados: Se puede
también utilizar una alternativa diferente de los compiladores para traducir
lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en
forma permanente el código objeto que se produce durante la corrida de
compilación para utilizarlo en una corrida de producción futura, el programador
sólo carga el programa fuente en la computadora junto con los datos que se van
a procesar.
A continuación, un programa intérprete, almacenado en el sistema
operativo del disco, o incluido de manera permanente dentro de la máquina,
convierte cada proposición del programa fuente en lenguaje de máquina conforme
vaya siendo necesario durante el proceso de los datos. No se graba el código
objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una
instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. Por
ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada
instrucción del ciclo tendrá que volver a ser interpretado cada vez que se
ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de
ejecución (porque se va revisando el código en tiempo de ejecución) pero más
rápido en tiempo de diseño (porque no se tiene que estar compilando a cada
momento el código completo).
El intérprete elimina la necesidad de realizar
una corrida de compilación después de cada modificación del programa cuando se
quiere agregar funciones o corregir errores; pero es obvio que un programa
objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que
uno que se debe interpretar a cada paso durante una corrida de producción.
16. LENGUAJE
DE BAJO NIVEL: Se llaman de bajo nivel porque están muy cercanos al hardware del
ordenador. Es necesario conocer a fondo la arquitectura de la máquina para la
que se va a programar.
El primer lenguaje de este tipo que se utilizó fue el lenguaje máquina,
que consiste en un conjunto de instrucciones en binario, es decir, con ceros y
unos, con los cuales se indica al ordenador qué hacer. Este lenguaje es muy
complicado y la posibilidad de cometer errores es muy alta, por lo que ya no se
utiliza.
Para solventar estas dificultades apareció el lenguaje ensamblador, que
consiste en asignar una abreviatura a cada instrucción en binario, de forma que
sea más fácil recordarla y más difícil equivocarse. Sin embargo, con este
lenguaje sigue siendo necesario conocer muy bien el hardware del ordenador.
- Son comprensibles directamente por la máquina (aunque el
ensamblador necesita una pequeña traducción)
- Los programas se ejecutan muy rápidamente (si están bien escritos,
claro)
- Ocupan menos espacio en memoria
- Permiten controlar directamente el hardware, por lo que son
apropiados para la programación de sistemas
17. LENGUAJE
DE ALTO NIVEL: un Lenguaje de Programación de Alto Nivel es el encargado de mostrar
distintos Algoritmos de modo tal de que un usuario pueda leerlo, reorganizarlo
e interpretarlo, distanciándose del que es propio de los ordenadores, que está
solamente ligado a su mera ejecución siguiendo las órdenes que de allí derivan.
La creación entonces de un Lenguaje de Alto Nivel está orientada a que
un usuario pueda organizar, ordenar y modificar un procesamiento de datos en
forma sencilla y rápida, teniendo los conocimientos previos para sus distintas
normativas y organizaciones, y una elaboración de un Código de Programación
viable.
18. LENGUAJE
DE NIVEL MEDIO: Lenguaje de medio nivel es un lenguaje de programación informática
como el lenguaje C, que se encuentran entre los lenguajes de alto nivel y los
lenguajes de bajo nivel.
Suelen ser clasificados muchas veces de alto nivel, pero permiten
ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la
creación de sistemas operativos, ya que permiten un manejo abstracto
(independiente de la máquina, a diferencia del ensamblador), pero sin perder
mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.
Una característica distintiva, por ejemplo, que convierte a C en
un lenguaje de medio nivel y al Pascal en un lenguaje de alto
nivel es que en el primero es posible manejar las letras como si fueran números
(en Pascal no), y por el contrario en Pascal es posible
concatenar las cadenas de caracteres con el operador suma y copiarlas con la
asignación (en C es el usuario el responsable de llamar a las
funciones correspondientes).
19. GENERACIÓN
DE LOS LENGUAJES DE PROGRAMACIÓN: Algo parecido ha ocurrido con la programación de
los ordenadores (el software), que se realiza en lenguajes que suelen clasificarse en
cinco generaciones, de las que las tres primeras son evidentes, mientras no
todo el mundo está de acuerdo en las otras dos. Estas generaciones no
coincidieron exactamente en el tiempo con las de hardware,
pero sí de forma aproximada, y son las siguientes:
- Primera
generación: Los primeros ordenadores se programaban
directamente en código binario, que puede representarse
mediante secuencias de ceros y unos sistema
binario. Cada modelo de ordenador tiene su propio código, por
esa razón se llama lenguaje de máquina.
- Segunda
generación: Los lenguajes simbólicos, asimismo
propios de la máquina, simplifican la escritura de las instrucciones y las
hacen más legibles.
- Tercera generación:
Los lenguajes de alto nivel sustituyen
las instrucciones simbólicas por códigos independientes de la máquina,
parecidas al lenguaje humano o al de las Matemáticas.
- Cuarta
generación: se ha dado este nombre a ciertas herramientas que
permiten construir aplicaciones sencillas combinando piezas prefabricadas.
Hoy se piensa que estas herramientas no son, propiamente hablando,
lenguajes. Algunos proponen reservar el nombre de cuarta generación para
la programación orientada a objetos.
- Quinta
generación: se llama así a veces a los lenguajes de la inteligencia artificial, aunque con
el fracaso del proyecto japonés de la quinta
generación el nombre ha caído en desuso.
20. CÓDIGO
FUENTE: Texto escrito en un lenguaje de
programación específico y que puede ser leído por un programador. Debe
traducirse a lenguaje máquina para que pueda ser ejecutado por la computadora o
a bytecode para que pueda ser ejecutado por un intérprete. Este proceso se
denomina compilación.
Acceder al código fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores. Es la única manera de modificar eficaz y eficientemente un programa.
Liberar un código fuente significa compartir ese texto con cualquier persona que lo desee, esto implica que cualquiera puede analizarlo, copiarlo o modificarlo. Las aplicaciones que liberan sus códigos suelen ser gratuitas bajo licencia GNU. La liberación de un código de un programa implica ciertos riesgos en cuando a la seguridad del mismo, pues su funcionamiento exacto queda expuesto. El código fuente no suele liberarse para las aplicaciones comerciales y no puede obtenerse el código fuente original a través de los programas ya compilados.
Acceder al código fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores. Es la única manera de modificar eficaz y eficientemente un programa.
Liberar un código fuente significa compartir ese texto con cualquier persona que lo desee, esto implica que cualquiera puede analizarlo, copiarlo o modificarlo. Las aplicaciones que liberan sus códigos suelen ser gratuitas bajo licencia GNU. La liberación de un código de un programa implica ciertos riesgos en cuando a la seguridad del mismo, pues su funcionamiento exacto queda expuesto. El código fuente no suele liberarse para las aplicaciones comerciales y no puede obtenerse el código fuente original a través de los programas ya compilados.
21. CÓDIGO
MÁQUINA: se define como el Código Máquina a aquel que es el proveniente de la
tarea de compilación efectuada directamente sobre el Código Fuente, con el que
se obtiene posteriormente el Código de Bytes (en inglés, Bytecode) que es la
conglomeración de distintos archivos que forman parte de ejecutables para que
el ordenador pueda hacer uso del código anteriormente programado.
De este modo, tenemos que tener en cuenta que con un programa Editor se
realiza el primer paso, la elaboración del Código Fuente, que continúa con la
Compilación del mismo mediante un Programa Objeto que se encarga de traducir el
mismo hacia el paso previo al Código Binario (es decir, la transmisión o
no-transmisión de energía eléctrica) que aprovechan los dispositivos
pertenecientes al ordenador.
Para que el Código Objeto pueda ser ejecutado finalmente, es necesario
utilizar una aplicación llamada Enlazador (también conocido por su equivalente
en inglés, Linker) que se encarga de crear todos los archivos necesarios para
su ejecución, incluyendo además las Bibliotecas que permiten asignar las
funciones a los distintos dispositivos del sistema, solicitar distintos
Servicios al sistema operativo o básicamente hacer uso de todo el Hardware que
sea necesario para la ejecución de dicho Programa o Aplicación que hemos
creado.
22. COMPILADOR: Los compiladores son programas o herramientas encargadas de compilar. Un compilador toma un texto (código fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (código objeto).
Básicamente, existen dos grandes formas de ejecutar programas: programas compilados (previamente pasados por un compilador) y programas interpretados (necesitan pasar por un intérprete para ejecutarse en tiempo real).
-Características de un compilador: Generalmente un compilador se divide en dos partes:
* Front End: parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará.
* Back End: parte en donde se genera el código máquina exclusivo para una plataforma a partir de lo analizado en el front end.
Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker).
Existen varios tipos de compiladores: Compiladores cruzados, Compiladores optimizadores, Compiladores de una sola pasada, Compiladores de varias pasadas, Compiladores JIT (Just In Time).
23. INTÉRPRETE:
En ciencias de la computación, intérprete o
interpretador es un programa informático capaz de
analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian
de los compiladores en
que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes
sólo realizan la traducción a medida
que sea necesaria, típicamente, instrucción por instrucción, y normalmente no
guardan el resultado de dicha traducción.
Usando un intérprete, un solo archivo fuente puede producir resultados
iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3).
Usando un compilador, un solo archivo fuente puede producir resultados iguales
solo si es compilado a distintos ejecutables específicos a cada sistema.
Los programas interpretados suelen ser más lentos que los compilados
debido a la necesidad de traducir el programa mientras se ejecuta, pero a
cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por
ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o
añadir módulos completamente nuevos), y permiten ofrecer al programa
interpretado un entorno no dependiente de la máquina donde se ejecuta el
intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina
virtual).
Para mejorar el desempeño, algunas implementaciones de programación de
lenguajes de programación pueden interpretar o compilar el código fuente
original en una más compacta forma intermedia y después traducir eso al código
de máquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los
archivos fuente guardados en esta representación intermedia (ej. Python, UCSD Pascal y Java).
Comparando su actuación con la de un ser humano, un compilador equivale
a un traductor profesional que, a partir de un texto, prepara otro
independiente traducido a otra lengua, mientras que un intérprete corresponde
al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar
constancia por escrito.
En la actualidad, uno de los entornos más comunes de uso de los
intérpretes informáticos es Internet, debido a la posibilidad que estos tienen de
ejecutarse independientemente de la plataforma.
24. SINTAXIS:
A la forma visible de un lenguaje de programación se le conoce como
sintaxis. La mayoría de los lenguajes de programación son puramente textuales,
es decir, utilizan secuencias de texto que incluyen palabras, números y
puntuación, de manera similar a los lenguajes naturales escritos. Por otra
parte, hay algunos lenguajes de programación que son más gráficos en su
naturaleza, utilizando relaciones visuales entre símbolos para especificar un
programa.
La sintaxis de un lenguaje de programación describe las combinaciones
posibles de los símbolos que forman un programa sintácticamente correcto. El
significado que se le da a una combinación de símbolos es manejado por su
semántica (ya sea formal o como parte del código duro de
la referencia de implementación). Dado que la mayoría de los lenguajes son
textuales, este artículo trata de la sintaxis textual.
La sintaxis de los lenguajes de programación es definida generalmente
utilizando una combinación de expresiones regulares (para la estructura léxica)
y la Notación de Backus-Naur (para la
estructura gramática). Este es un ejemplo de una gramática simple, tomada
de Lisp:
25. OPERADORES
ARITMÉTICOS: Estos son los símbolos aritméticos básicos: suma (+), resta (-),
multiplicación (*), división (/) y potenciación (^).
Este es un ejemplo de cómo usar los operadores aritméticos en
TurtleScript:
$sumar = 1 + 1
$restar = 20 - 5
$multiplicar = 15 * 2
$dividir = 30 / 30
$potencia = 2 ^ 2
Los valores resultantes de estas operaciones aritméticos son asignados a variables.
Puedes ver los valores resultantes en el inspector.
Si lo que quieres es realizar un cálculo simple, puedes hacer algo como
esto:
escribir 2010-12
Ahora veamos un ejemplo con paréntesis:
escribir ( ( 20 - 5 ) * 2 / 30 ) + 1
Primero se calculan las operaciones que están dentro de los paréntesis.
En este ejemplo, primero se calcula 20 - 5; el resultado se multiplica por 2,
luego se divide por 30 y, por último, se le suma 1. El resultado final es 2.
Los paréntesis pueden también usarse en otros casos.
KTurtle también tiene otras funciones
aritméticas en forma de órdenes. Echa un vistazo a las siguientes órdenes, eso
sí, teniendo en cuenta que se trata de operaciones avanzadas: redondear, aleatorio, raíz, pi, sen, cos, tan, arcsen, arccos, arctan.
26. OPERADORES
RELACIONALES: Los operadores relacionales, también denominados operadores binarios
lógicos y de comparación, se utilizan para comprobar la veracidad o falsedad de
determinadas propuestas de relación (en realidad se trata respuestas a
preguntas).
Las expresiones que los contienen se denominan expresiones relacionales.
Aceptan diversos tipos de argumentos, y el resultado, que es la respuesta a la
pregunta, es siempre del tipo cierto/falso, es decir, producen un resultado
booleano.
Si la propuesta es cierta, el resultado es true (un valor distinto de
cero), si es falsa false (cero). C++ dispone de los siguientes:
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
== Igual que (identidad)
!= Desigual que (desigualdad)
27.OPERADORES LÓGICOS (verdadero/falso): Mientras que los operadores aritméticos se usan
principalmente con números, los operadores lógicos están pensados para usarse
con valores lógicos (verdadero y falso).
Hay solo tres operadores lógicos: y, o y no. El siguiente
código de TurtleScript muestra cómo usarlos:
$y_1_1 =
verdadero y verdadero # -> verdadero
$y_1_0 =
verdadero y falso # -> falso
$y_0_1 =
falso y verdadero # -> falso
$y_0_0 =
falso y falso # -> falso
$o_1_1 =
verdadero o verdadero # -> verdadero
$o_1_0 =
verdadero o falso # -> verdadero
$o_0_1 =
falso o verdadero # -> verdadero
$o_0_0 =
falso o falso # -> falso
$no_1 = no
verdadero # -> falso
$no_0 = no
falso # -> verdadero
Puedes ver los valores resultantes en el inspector, aunque también se proporcionan
pequeños comentarios al final de las líneas. Y resulta en verdadero solo
si ambas partes son verdaderos. O resulta en verdadero si
una de las dos partes es verdadero. Y no transforma verdadero en falso yfalso en verdadero.
Los operadores lógicos aparecen resaltados en rosa.
Considera el siguiente ejemplo con and:
$a = 1
$b = 5
si (($a
< 10) y ($b == 5)) y ($a < $b)
{
escribir "hola"
}
En este código de TurtleScript, el resultado de los tres operadores de comparación están
agrupados mediante los operadores y. Esto significa que los tres
resultados tienen que ser iguales a «verdadero» para que se escriba la palabra
«hola».
Un ejemplo con o:
$n = 1
si ($n <
10) o ($n == 2)
{
escribir "hola"
}
En este código de TurtleScript, la parte izquierda del operador o es
«verdadera», mientras que la derecha es «falsa».
Ya que una de las dos partes del operador o es «verdadera», el
resultado del operador o también lo es. Esto quiere decir que se
escribe la palabra «hola».
Finalmente, un ejemplo con no, que transforma «verdadero» en
«falso» y «falso» en verdadero». Fíjate:
$n = 1
si no ($n
== 3)
{
escribir "hola"
} sino
{
escribir "no hola ;-)"
}
28. ESTRUCTURAS
DE CONTROL: En programación,
una estructura de control permite controlar el flujo de la ejecución de
instrucciones. Con estas estructuras, el programador puede
determinar el orden en que se ejecutarán las instrucciones que están dentro de
estas estructuras.
Originalmente las líneas de código de programación (instrucciones) eran ejecutadas secuencialmente, o sea, una después de la otra. Para alterar el orden de ejecución se utilizaba el enunciado goto, llamado "transferencia de control". Dos investigadores, Bohm y Jacopini, demostraron que el goto traía grandes problemas en el desarrollo de programas. También demostraron que los programas podían ser escritos sin ningún enunciado goto utilizando tres estructuras de control: estructura de secuencia, estructura de selección, y estructura de repetición.
Originalmente las líneas de código de programación (instrucciones) eran ejecutadas secuencialmente, o sea, una después de la otra. Para alterar el orden de ejecución se utilizaba el enunciado goto, llamado "transferencia de control". Dos investigadores, Bohm y Jacopini, demostraron que el goto traía grandes problemas en el desarrollo de programas. También demostraron que los programas podían ser escritos sin ningún enunciado goto utilizando tres estructuras de control: estructura de secuencia, estructura de selección, y estructura de repetición.
29. PROGRAMACIÓN
ESTRUCTURADA: La programación estructurada permite la escritura de programas fáciles
de leer y modificar. En un programa estructurado el flujo lógico se gobierna
por tres estructuras de control básicas: secuenciales, repetitivas y
selectivas.
Se refiere a un conjunto de técnicas que han ido evolucionando. Estas técnicas aumentan considerablemente la productividad del programa reduciendo el tiempo requerido para escribir, verificar, depurar y mantener los programas.
Se refiere a un conjunto de técnicas que han ido evolucionando. Estas técnicas aumentan considerablemente la productividad del programa reduciendo el tiempo requerido para escribir, verificar, depurar y mantener los programas.
La programación estructurada utiliza un número limitado de estructuras
de control que minimizan la complejidad de los problemas y que reducen los
errores. Ésta incorpora entre otros elementos: el diseño descendente, recursos
abstractos y estructuras básicas.
30. PROGRAMACIÓN
ORIENTADA A OBJETOS: La programación Orientada a objetos (POO) es una forma especial de
programar, más cercana a como expresaríamos las cosas en la vida real que otros
tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta,
para escribir nuestros programas en términos de objetos, propiedades, métodos y
otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña
base que permita soltarnos un poco con este tipo de programación.
No hay comentarios:
Publicar un comentario