1. CONSULTA
1. QUE ES UNA PRUEBA DE ESCRITORIO
La prueba de escritorio es una herramienta útil para entender que hace un
determinado algoritmo, o para verificar que un algoritmo cumple con la
especificación sin necesidad de ejecutarlo.
Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo,
por lo tanto se debe llevar registro de los valores que va tomando cada una de las
variables involucradas en el mismo.
2. DIFERENTES CLASES DE LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE MÁQUINA
El lenguaje máquina de una computadora consta de cadenas de números binarios
(ceros y unos) y es el único que "entienden" directamente los procesadores. Todas
las instrucciones preparadas en cualquier lenguaje de máquina tienen por lo
menos dos partes. La primera es el comando u operación, que dice a la
computadora cuál es la función que va a realizar. Todas las computadoras tienen
un código de operación para cada una de sus funciones. La segunda parte de la
instrucción es el operando, que indica a la computadora dónde hallar o almacenar
los datos y otras instrucciones que se van a manipular; el número de operandos
de una instrucción varía en las distintas computadoras.
LENGUAJES ENSAMBLADORES
A principios de la década de 1950, y con el fin de facilitar la labor de los
programadores, se desarrollaron códigos nemotécnicos para las operaciones y
direcciones simbólicas. La palabra nemotécnico se refiere a una ayuda para la
memorización. Uno de los primeros pasos para mejorar el proceso de preparación
de programas fue sustituir los códigos de operaciones numéricos del lenguaje de
máquina porsímbolos alfabéticos, que son los códigos nemotécnicos. Todas las
computadoras actuales tienen códigos nemotécnicos aunque, naturalmente, los
símbolos que se usan varían en las diferentes marcas y modelos. La
computadora sigue utilizando el lenguaje de máquina para procesar los datos,
pero los programas ensambladores traducen antes los símbolos de código de
operación especificados a sus equivalentes en lenguaje de máquina.
LENGUAJES DE ALTO NIVEL
Los primeros programas ensambladores producían sólo una instrucción en
lenguaje de máquina por cada instrucción del programa fuente. Para agilizar la
codificación, se desarrollaron programas ensambladores que podían producir una
cantidad variable de instrucciones en lenguaje de máquina por cada instrucción
del programa fuente. Dicho de otra manera, un solo macroinstrucción podía
2. producir varias líneas de código en lenguaje de máquina. Por ejemplo, el
programador podría escribir "LEER ARCHIVO", y el programa traductor produciría
una serie detallada de instrucciones al lenguaje de máquina previamente
preparadas, con lo que se copiaría un registro del archivo que estuviera leyendo el
dispositivo de entrada a la memoria principal. Así, el programador no se tenía que
ocupar de escribir una instrucción por cada operación de máquina realizada.
El desarrollo de las técnicas nemotécnicas y las macroinstrucciones condujo, a su
vez, al desarrollo de lenguajes de alto nivel que a menudo están orientados hacia
una clase determinada de problemas de proceso. Por ejemplo, se han diseñado
varios lenguajes para procesar problemas científico-matemático, asimismo han
aparecido otros lenguajes que hacen hincapié en las aplicaciones de proceso de
archivos.
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
3. 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.
LENGUAJES DE PROGRAMACIÓN DECLARATIVOS
Se les conoce como lenguajes declarativos en ciencias computacionales a
aquellos lenguajes de programación en los cuales se le indica a la computadora
qué es lo que se desea obtener o qué es lo que se está buscando, por ejemplo:
Obtener los nombres de todos los empleados que tengan más de 32 años. Eso se
puede lograr con un lenguaje declarativo como SQL.
La programación declarativa es una forma de programación que implica
la descripción de un problema dado en lugar de proveer una solución para dicho
problema, dejando la interpretación de los pasos específicos para llegar a dicha
solución a un intérprete no especificado. La programación declarativa adopta, por
lo tanto, un enfoque diferente al de la programación imperativa tradicional.
En otras palabras, la programación declarativa provee el "qué", pero deja el
"cómo" liberado a la implementación particular del intérprete. Por lo tanto se puede
ver que la programación declarativa tiene dos fases bien diferenciadas, la
declaración y la interpretación.
Es importante señalar que a pesar de hacer referencia a intérprete, no hay que
limitarse a "lenguajes interpretados" en el sentido habitual del término, sino que
también se puede estar trabajando con "lenguajes compilados".
LENGUAJES DE PROGRAMACIÓN IMPERATIVOS
En ciencias de la computación se llama lenguajes imperativos a aquellos en los
cuales se le ordena a la computadora cómo realizar una tarea siguiendo una serie
de pasos o instrucciones, por ejemplo:
Paso 1, solicitar número.
Paso 2, multiplicar número por dos.
Paso 3, imprimir resultado de la operación.
Paso 4, etc.
El proceso anterior se puede realizar con un lenguaje imperativo como por ejemplo
BASIC, C, C++, Java, Clipper, Dbase, C#, PHP, Perl, etc.
Dentro de la programación imperativa, se tiene un conjunto de instrucciones que le
indican al computador cómo realizar una tarea.
Los lenguajes imperativos se basan en comandos u órdenes que se le dan a la
computadora para que haga algo, con el fin de organizar o cambiar valores en
ciertas partes de la memoria.
4. La ejecución de estos comandos se realiza, en la mayor parte de ellos,
secuencialmente, es decir, hasta que un comando no ha sido ejecutado no se lee
el siguiente.
Según el dominio, o mejor dicho con el propósito que se utiliza el programa, se
puede hablar de lenguajes de dominio específico y de dominio general.
LENGUAJES DE PROGRAMACIÓN ORIENTADOS A OBJETOS
En la Programación Orientada a Objetos (POO u OOP según siglas en inglés) se
definen los programas en términos de "clases de objetos", objetos que son
entidades que combinan estado (es decir, datos) comportamiento (esto es,
procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del
resto). La programación orientada a objetos expresa un programa como un
conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto
permite hacer los programas módulos más fáciles de escribir, mantener y
reutilizar.
De esta forma, un objeto contiene toda la información, (los denominados atributos)
que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras
clases (e incluso entre objetos de la misma clase, al poder tener valores bien
diferenciados en sus atributos). A su vez, dispone de mecanismos
de interacción (los llamados métodos) que favorecen la comunicación entre
objetos (de una misma clase o de distintas), y en consecuencia, el cambio de
estado en los propios objetos. Esta característica lleva a tratarlos como unidades
indivisibles, en las que no se separan (ni deben separarse) información (datos) y
procesamiento (métodos).
3. TIPOS DE DATOS
El tipo de un dato es el conjunto de valores que puede tomar durante el programa.
Si se le intenta dar un valor fuera del conjunto se producirá un error.
La asignación de tipos a los datos tiene dos objetivos principales:
Por un lado, detectar errores en las operaciones
Por el otro, determinar cómo ejecutar estas operaciones
De Pascal se dice que es un lenguaje fuertemente tipeado. Esto quiere decir que
todos los datos deben de tener un tipo declarado explícitamente, y además que
existen ciertas restricciones en las expresiones en cuanto a los tipos de datos que
en ellas intervienen.
Una ventaja de los lenguajes fuertemente tipeados es que se gasta mucho menos
esfuerzo en depurar (corregir) los programas gracias a la gran cantidad de errores
que detecta el compilador.
Los tipos de datos, como casi todos los objetos de Pascal, se pueden declarar. La
declaración de tipos ya se comentó en el tema correspondiente a la estructura de
un programa.
5. 4. LOS OPERADORES LÓGICOS
Los operadores lógicos son:
&& AND (el resultado es verdadero si ambas expresiones son verdaderas)
|| OR (el resultado es verdadero si alguna expresión es verdadera)
! NOT (el resultado invierte la condición de la expresión)
AND y OR trabajan con dos operandos y retornan un valor lógico basadas en las
denominadas tablas de verdad. El operador NOT actúa sobre un operando. Estas
tablas de verdad son conocidas y usadas en el contexto de la vida diaria, por
ejemplo: "si hace sol Y tengo tiempo, iré a la playa", "si NO hace sol, me quedaré
en casa", "si llueve O hace viento, iré al cine". Las tablas de verdad de los
operadores AND, OR y NOT se muestran en las tablas siguientes
El operador lógico AND
x y resultado
true true true
true false false
false true false
false false false
El operador lógico OR
x y resultado
true true true
true false true
false true true
false false false
El operador lógico NOT
x resultado
true false
false true
Los operadores AND y OR combinan expresiones relacionales cuyo resultado
viene dado por la última columna de sus tablas de verdad. Por ejemplo:
(a<b) && (b<c)
6. Es verdadero (true), si ambas son verdaderas. Si alguna o ambas son falsas el
resultado es falso (false). En cambio, la expresión
(a<b) || (b<c)
Es verdadera si una de las dos comparaciones lo es. Si ambas, son falsas, el
resultado es falso.
La expresión " NO a es menor que b"
! (a<b)
Es falsa si (a<b) es verdadero, y es verdadera si la comparación es falsa. Por
tanto, el operador NOT actuando sobre (a<b) es equivalente a
(a>=b)
La expresión "NO a es igual a b"
! (a==b)
Es verdadera si a es distinto de b, y es falsa si a es igual a b. Esta expresión es
equivalente a
(a!=b)
5. ALGORITMOS
Los algoritmos son las series de pasos por los cuales se resuelven los
problemas. Los algoritmos se han utilizado para solucionar un amplio rango
de problemas matemáticos, como agregar números o encontrar una raíz
cuadrada.
Los algoritmos representan soluciones a problemas. Los pasos para la solución
(llamados instrucciones) permanecen iguales, ya sea que el mismo se esté
resolviendo mediante una computadora o a mano.
6. PSEUDOCÓDIGO
Nuestra lengua apela a diversos elementos compositivos para formar palabras.
Uno de los más habituales es pseudo o seudo, que permite referirse a que algo
no es original, sino que es falso o una imitación.
Un código, por su parte, es una serie de símbolos que forman parte de un sistema
y que tienen un determinado valor ya asignado. Los símbolos que se incluyen en
un código se combinan respetando reglas y permiten transmitir un mensaje.
7. Estas definiciones nos permiten comprender qué es un pseudocódigo, una
noción que se emplea en el ámbito de la informática. Se trata de un falso
lenguaje, ya que apela a las normas de estructura de un lenguaje de
programación aunque se encuentra desarrollado para que pueda ser leído por un
ser humano y no interpretado por una máquina.
El pseudocódigo, en este sentido, está considerado como una descripción de un
algoritmo que resulta independiente de otros lenguajes de programación. Para
que una persona pueda leer e interpretar el código en cuestión, se excluyen
diversos datos que no son clave para su entendimiento.
Un pseudocódigo, por lo tanto, se emplea cuando se pretende describir un
algoritmo sin la necesidad de difundir cuáles son sus principios básicos. De esta
manera, un ser humano encontrará mayores facilidades para comprender
el mensaje, a diferencia de lo que ocurriría si estuviese frente a un lenguaje de
programación real.
Estas características hacen que los pseudocódigos sean utilizados en obras
científicas y educativas y en las etapas previas al desarrollo de un software, a la
manera de boceto antes de proceder a la programación.
7. ESTRUCTURAS CICLICAS
Son problemas repetitivos o aquellos en cuya solución es necesario utilizar un
mismo conjunto de acciones que se puedan ejecutar una cantidad específica de
veces Esta cantidad puede ser fija o puede ser variable.
La Estructura Cíclica debe cumplir con tres elementos al momento del diseño y la
implementación que son obligatorios y hacen parte del esquema a cumplir.
Inicio
Fin
Incremento o contador
8. PARA QUE SIRVE JOOMLA
Joomla es un sistema gestor de contenidos dinámicos (CMS o Content
Management System) que permite crear sitios web de alta interactividad,
profesionalidad y eficiencia. La administración de Joomla está enteramente
basada en la gestión online de contenidos.
Con Joomla podemos crear sitios web de noticias, sitios corporativos, sitios web
de presencia, portales comunitarios, e incluso también puede crearse con Joomla
sistemas que funcionen en redes cerradas (Intranets) para gestionar información
interna (comunicaciones, usuarios, etc) de compañías o empresas de negocios.
8. Con esto último podrán advertir que el ámbito de aplicación de Joomla no es
exclusivo de Internet.