1. Qué es un dato? Tipos de datos. Ejemplos

0 comentarios
El dato es una representación simbólica (numérica, alfabética, algorítmica etc.), un atributo o una característica de una entidad. El dato no tiene valor semántico (sentido) en sí mismo, pero si recibe un tratamiento (procesamiento) apropiado, se puede utilizar en la realización de cálculos o toma de decisiones. Es de empleo muy común en el ámbito informático y, en general, prácticamente en cualquier disciplina científica.
En programación, un dato es la expresión general que describe las características de las entidades sobre las cuales opera un algoritmo.
En Estructura de datos, es la parte mínima de la información.

 El tipo de datos integer: Es de tipo simple una variable numérica que puede tomar valores positivos o negativos, y sin parte decimal.
Este tipo de variables, puedes utilizarlas en asignaciones, comparaciones, expresiones aritméticas, etc. Algunos de los papeles más comunes que desarrollan son:
Usarlas como contador, incrementando su valor cuando sucede algo
Realizar operaciones enteras, es decir, sin parte decimal
Y muchas más...
El tipo de datos lógico es el que te permite usar variables que disponen sólo de dos posibles valores: cierto o falso. Debido a esto, su utilidad salta a la vista, y no es otra que variables de chequeo. Nos sirven para mantener el estado de un objeto mediante dos valores.
si/no
cierto/falso
funciona/no funciona
on/off

El tipo de datos real es el que se corresponde con los números reales. Este es un tipo importante para los cálculos. Por ejemplo en los estadísticos, ya que se caracterizan por tratar fundamentalmente con valores decimales.
nota: Aunque pueda que estés acostumbrado a escribir con coma los decimales, te advierto que en Pascal y en todos los lenguajes de programación se escribe con un punto. Por ejemplo: 3.1416

. El area para un radio de 3.14 es 63.6174

Con el tipo carácter puedes tener objetos que representen una letra, un número, etc. Es decir, puedes usar variables o constantes que representen un valor alfanumérico. Pero ojo, cada variable sólo podrá almacenar un carácter.
Sin embargo, con las cadenas de caracteres (strings) puedes contener en una sóla variable más de un carácter. Por ejemplo, puedes tener en una variable tu nombre y sus debidas constantes.
Letras, números, para diferenciar entre nombres iguales o similares. 


2. Tabla de caracteres ASCII

0 comentarios

3. Qué es constante y variable? Ejemplos

0 comentarios
CONSTANTE


En programación, una constante es un valor que no puede ser alterado durante la ejecución de un programa.
Una constante corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos.

Por ejemplo:
El valor de pi = 3.1416
Por conveniencia, el nombre de las constantes suele escribirse en mayúsculas en la mayoría de lenguajes.


Ejemplo de una constante en C/C++ (#define)

En C o C++ las constantes se declaran con la directiva #define, esto significa que esa constante tendrá el mismo valor a lo largo de todo el programa. El identificador de una constante así definida será una cadena de caracteres que deberá cumplir los mismos requisitos que el de una variable (sin espacios en blanco, no empezar por un dígito numérico, etc).

Ejemplo:
  #include <stdio.h>
  #define PI  3.1415926
  
  int main()
  {
    printf("Pi vale %f", PI);
    return 0;
  }

Lo cual mostrará por pantalla:
  
Pi vale 3.1415926
Es decir, PI es una constante a la que le hemos asignado el valor 3.1415926 mediante la directiva #define.
La directiva #define también se puede utilizar para definir expresiones más elaboradas con operadores (suma, resta, multiplicación etc) y otras constantes que hayan sido definidas previamente, 

por ejemplo:
  #define X  2.4
  #define Y  9.2
  #define Z  X + Y

VARIABLE

Una variable es un símbolo que representa un elemento o cosa no especificada de un conjunto dado. Dicho conjunto es llamado conjunto universal de la variable, universo o variar de la variable, y cada elemento del conjunto es un valor de la variable. Sea x una variable cuyo universo es el conjunto {1,3,5,7,9,11,13}; entonces x puede tener cualquiera de esos valores: 1,3,5,7,9,11,13. En otras palabras x puede reemplazarse por cualquier entero positivo impar menor que. Por esta razón, a menudo se dice que una variable es un reemplazo de cualquier elemento de su universo.

Una variable es un elemento de una fórmula, proposición o algoritmo que puede adquirir o ser sustituido por un valor cualquiera (siempre dentro de su universo). Los valores que una variable es capaz de recibir, pueden estar definidos dentro de un rango, y/o estar limitados por razones o condiciones de pertenencia, al universo que les corresponde (en estos casos, el universo de la variable pasa a ser un subconjunto de un universo mayor, el que tendría sin las restricciones).

En muchos usos, lo contrario de una variable es una constante. También puede considerarse a las constantes como caso particular de variables, con un universo unitario (con un solo elemento), ya que sólo pueden tener un valor, y no pueden modificarlo.

4. Tipos de Operadores a. Matemáticos b. Relacionales c. Lógicos (AND, OR, NOT)

0 comentarios
6.1 Operadores aritméticos 
Lista de operadores aritméticos con su significado
+ Suma
- Resta
* Producto
/ Cociente de una división
% Resto de una división


6.2 Operadores lógicos
! Not (no lógico)
&& And (y lógico)
|| Or (ó lógico)


6.3 Operadores relacionales
== Igual a
!= No igual a
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que


6.4 Operadores de asignación
= = =
++ m++ m=m+1
-- m-- m=m-1
+= m+=n m=m+n
-= m-=n m=m-n
*= m*=n m=m*n
/= m/=n m=m/n
%= m%=n m=m%n

5. Que es un Algoritmo?

0 comentarios
En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latin, dixit algorithmus y éste a su vez del matemático persa Al Juarismi ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.

6. Que es un Diagrama de flujo? Simbología de DFD

0 comentarios
Diagrama de flujo

Un diagrama de flujo es una representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como la programación, la economía, los procesos industriales y la psicología cognitiva. Estos diagramas utilizan símbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de término.

Simbología y significado
§  Óvalo: Inicio y término (Abre y/o cierra el diagrama).
§  Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimentos).
§  Rombo: Decisión (Formula una pregunta o cuestión).
§  Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).
§  Triangulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).
§  Triangulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

7. Que es la prueba de escritorio?

0 comentarios
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.

A continuación se muestra un ejemplo de prueba de escritorio del siguiente algoritmo:

suma :entero
entrada :entero
menor :entero

leer entrada
menor = entrada
suma = 0
mientras (entrada != 0) haga
si (entrada < menor) entonces
menor =entrada
fin_si
suma = suma + entrada
leer entrada
fin_mientras
escribir “valor Menor:”
escribir menor
escribir “Suma:”
escribir suma







8. Que es Pseudocódigo?

0 comentarios
El pseudocódigo (falso lenguaje) es comúnmente utilizado por los programadores para omitir secciones de código o para dar una explicación del paradigma que tomó el mismo programador para hacer sus códigos esto quiere decir que el pseudocódigo no es programable sino facilita la programación.

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 utilizará para la codificación del mismo.
Características y partes
Las principales características de este lenguaje son:
  1. Se puede ejecutar en un ordenador
  2. Es una forma de representación sencilla de utilizar y de manipular.
  3. Facilita el paso del programa al lenguaje de programación.
  4. Es independiente del lenguaje de programación que se vaya a utilizar.
  5. 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:
  1. Instrucciones primitivas.
  2. Instrucciones de proceso.
  3. Instrucciones de control.
  4. Instrucciones compuestas.
  5. Instrucciones de descripción.
Estructura a seguir en su realización:
  1. Cabecera.
    1. Programa.
    2. Modulo.
    3. Tipos de datos.
    4. Constantes.
    5. Variables.
  2. Cuerpo.
    1. Inicio.
    2. Instrucciones.
    3. Fin.

9. Pasos para resolver un problema usando algoritmos?

0 comentarios


9.1. DEFINICIÓN DEL PROBLEMA: Está dada por el enunciado del problema, el cuál debe ser claro y completo. Es importante que conozcamos exactamente que se desea del computador; mientras qué esto no se comprenda, no tiene caso pasar a la siguiente etapa. 

9.2. ANÁLISIS DEL PROBLEMA: Entendido el problema (que se desea obtener del computador), para resolverlo es preciso analizar: 

*Los datos o resultados que se esperan.
*Los datos de entrada que nos suministran.
*Proceso al que se requiere someter esos datos a fin de obtener resultados.
*Áreas de trabajo, fórmulas y otros recursos necesarios. 

Una recomendación muy práctica es el que nos pongamos en el lugar del computador, y analizar que es necesario que me ordenen y en que secuencia, para poder producir los resultados esperados. También da buenos resultados hacer similitudes con la labor de un empleado que hace el mismo trabajo que deseamos programarle al computador. 

9.3. SELECCIÓN DE LA MEJOR ALTERNATIVA: Analizado el problema, posiblemente tengamos varias formas de resolverlo; lo importante es determinar cuál es la mejor alternativa: la que produce los resultados esperados en el menor tiempo y al menor costo. Claro que aquí también es muy válido el principio de que las cosas siempre se podrán hacer de una mejor forma. 

9.4. DIAGRAMACIÓN: Una vez que sabemos cómo resolver el problema, pasamos a dibujar gráficamente la lógica de la alternativa seleccionada. Eso es precisamente un Diagrama de Flujo: la representación gráfica de una secuencia lógica de pasos a cumplir por el computador para producir un resultado esperado. 

La experiencia nos ha demostrado que resulta muy útil trasladar esos pasos lógicos planteados en el diagrama a frases que indiquen lo mismo; es decir, hacer una codificación del programa pero utilizando instrucciones en Español. Como si le estuviéramos hablando al computador. Esto es lo que denominaremos Algoritmo o Pseudocódigo. 

Cuando logremos habilidad para desarrollar programas, es posible que no elaboremos el diagrama de flujo; en su lugar podremos hacer directamente el pseudocódigo del programa. 

9.5. PRUEBA DE ESCRITORIO: Para cerciorarnos de que el diagrama (y/o el pseudocódigo) esta bien, y, para garantizar que el programa que codifiquemos luego también funcione correctamente, es conveniente someterlo a una Prueba de Escritorio. Esta prueba consiste en que damos diferentes datos de entrada al programa y seguimos la secuencia indicada en el diagrama, hasta obtener los resultados. El análisis de estos nos indicará si el diagrama esta correcto o si hay necesidad de hacer ajustes (volver al paso 4). Se recomienda dar diferentes datos de entrada y considerar todos los posibles casos, aun los de excepción o no esperados, para asegurarnos de que el programa no producirá errores en ejecución cuando se presenten estos casos. 

9.6. CODIFICACIÓN: Una vez que hayamos verificado el diagrama mediante las pruebas de escritorio, codificamos el programa en el lenguaje de computador seleccionado. Esto es, colocamos cada paso del diagrama en una instrucción o sentencia, utilizando un lenguaje que el computador reconoce. 

Todos los lenguajes de programación proveen facilidades para incluir líneas de comentarios en los programas. Estos comentarios aclaran lo que se ordena al computador y facilitan entender el programa. Puesto que estos comentarios no son tenidos en cuenta como instrucciones, y aparecen en los listados del programa, resulta muy conveniente agregar abundantes comentarios a todo programa que codifiquemos. Esto es lo que se denomina Documentación Interna. 

9.7. TRANSCRIPCIÓN: El programa codificado es necesario que lo llevemos a un medio que sea aceptado como entrada por el computador: lo perforamos en tarjetas, lo grabamos en un disco flexíble o lo grabamos en un disco duro. Este programa es el que se conoce como Programa Fuente (Source). 

9.8. COMPILACIÓN: Utilizamos ahora un programa de computador llamado Compilador o Traductor, el cúal analiza todo el programa fuente y detecta errores de sintaxis ocasionados por fallas en la codificación o en la transcripción. Las fallas de lógica que pueda tener nuestro programa fuente no son detectadas por el compilador. Cuando no hay errores graves en la compilación, el compilador traduce cada instrucción del programa fuente a instrucciones propias de la máquina (Lenguaje de Maquina), creando el Programa Objeto. 

Algunos computadores utilizan Interpretadores, (Generalmente para el Lenguaje Basic), en reemplazo de programas compiladores. La diferencia consiste en que el interpretador recibe, desde una terminal, sólo una instrucción a la vez, la analiza y, si esta bien, la convierte al formato propio de la maquina. Si la instrucción tiene algún error, el interpretador llama la atención de la persona para que corrija dicha instrucción. 

Como resultado de la corrida del compilador, podemos obtener varios listados: 

*Listado del programa fuente
*Listado de los errores detectados 
*Listado de campos utilizados, etc. 

Los errores los debemos corregir sobre el mismo programa fuente, ya sea reemplazando las tarjetas mal perforadas o regrabando en el disco flexible o en el disco duro. Este paso de la compilación lo repetimos hasta eliminar todos los errores y obtener el programa ejecutable. 

9.9. PRUEBAS DE COMPUTADOR: Cuando tenemos el programa ejecutable (en lenguaje de maquina), ordenamos al computador que lo ejecute, para lo cuál suministramos datos de prueba, como lo hicimos en la prueba de escritorio (paso 5). Los resultados obtenidos los analizamos, luego de lo cuál puede ocurrir cualquiera de estas situaciones: 

a. La lógica del programa esta bien, pero hay errores sencillos, los cuales los corregimos modificando algunas instrucciones o incluyendo unas nuevas; el proceso debemos repetirlo desde el paso 6 . 

b. Hay errores ocasionados por fallas en la lógica, lo que nos obliga a regresar a los pasos 4 y 5 para revisión y modificación del diagrama. 

c. Hay errores muy graves y lo más aconsejable es que regresemos al paso 2 para analizar nuevamente el problema, y repetir todo el proceso. 

d. No hay errores y los resultados son los esperados. En este caso, el programa lo podemos guardar permanentemente en una librería o biblioteca del computador, para sacarlo de allí cuando necesitemos ejecutarlo nuevamente. 

9.10. DOCUMENTACIÓN EXTERNA: Cuando el programa ya se tiene listo para ejecutar, es conveniente que hagamos su documentación externa siguiendo las normas de la instalación o las recomendaciones indicadas por el profesor. Una buena documentación incluye siempre: 

-Enunciado del problema 
-Diagrama de pasada 
-Narrativo con la descripción de la solución
-Relación de las variables o campos utilizados en el programa, cada uno con su respectiva función 
-Diagrama del programa 
-Listado de la última compilación

10. Que es un Lenguaje de programación?

0 comentarios
Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1 Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.

También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:

    El desarrollo lógico del programa para resolver un problema en particular.
    Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
    Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
    Prueba y depuración del programa.
    Desarrollo de la documentación.

Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten diseñar el contenido de los documentos).

Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo 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. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.
También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:

    El desarrollo lógico del programa para resolver un problema en particular.
    Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
    Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
    Prueba y depuración del programa.
    Desarrollo de la documentación.

Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten diseñar el contenido de los documentos).

Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo 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. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.

11. Ciclo de vida del software?

0 comentarios
Describe el desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados. 

Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados. 

El ciclo de vida básico de un software consta de los siguientes procedimientos:

-Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global. 
-Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar. 
-Diseño general: requisitos generales de la arquitectura de la aplicación. 
-Diseño en detalle: definición precisa de cada subconjunto de la aplicación. 
-Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño. 
-Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones. 
-Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
-Prueba beta (o validación): para garantizar que el software cumple con las especificaciones originales. 
-Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros. 
Implementación 
-Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo). 

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores

12. Clasificación de los lenguajes de programación, según:

0 comentarios
a.      Bajo, intermedio y alto nivel
b.     Imperativos, declarativos, orientados a objetos, naturales
c.      Primera, segunda, tercera, cuarta y quinta generación

·  Bajo Nivel
La programación en el lenguaje máquina es difícil por ello se necesitan lenguajes que permitan simplificar este proceso. Con este fin los lenguajes de bajo nivel han sido diseñados
Dependen de un conjunto de instrucciones específicas de la computadora. Por ejemplo el ensamblador, en él las instrucciones se escriben en códigos alfabéticos conocidos como memotécnicos.
Las palabras memotécnicas son mucho más fáciles de recordar que la de los 0 y 1.
Organigrama tipos de lenguajes De alto nivel
·  De alto nivel
Los lenguajes de alto nivel son aquellos en los que las instrucciones son escritas con palabras similares a las del lenguaje humano. Esto permite facilitar la escritura y la comprensión del código al programador
Ejemplos:
ADA
Basic
COBOL
FORTRAM
PASCAL
JAVA
Organigrama tipos de lenguajes continuar

·  De alto nivel
Necesitan ser traducidos a instrucciones en lenguaje máquina que entiendan las computadoras. Estos programas que realizan esa traducción se llaman compiladores. Y los programas escritos en lenguajes de alto nivel se denominan programas fuente. El programa objeto es el resultado de traducir de un programa fuente para obtener un lenguaje comprensible por la máquina.
GRAFICO Organigrama tipos de lenguajes
·  COMPILADORES PROGRAMA OBJETO PROGRAMA FUENTE Organigrama tipos de lenguajes siguiente
·  Clasificación de los lenguajes de programación siguiente
·  Clasificación
Estilo de Programación
Herramientas utilizadas (en la traducción y ejecución)
Otros

13.Lenguajes de programación más populares a través de la historia. Descripción y ejemplo.

0 comentarios
Con la idea de facilitarnos las tareas que debemos de desempeñar los humanos, hemos venido inventado diversas herramientas a lo largo de nuestra historia, que nos permiten tener una mejor calidad de vida.

Los ordenadores son uno más de los inventos del hombre, aunque debemos decir que las tecnologías para su fabricación y explotación han tenido un desarrollo sorprendente a partir de la segunda mitad del siglo XX. Esta herramienta por sí sola no es capaz de efectuar ninguna tarea, es tan sólo un conjunto de cables y circuitos que necesitan recibir instrucción por parte de los humanos para desempeñar alguna tarea. El problema entonces, se puede fijar en ¿cómo vamos a poder hacer que un conjunto de circuitos desempeñen una determinada tarea y nos entreguen los resultados que nosotros esperamos?, es decir, ¿de qué manera se puede lograr la comunicación entre el hombre y el ordenador?.
Así pues, tratando de dar una solución al problema planteado, surgieron los lenguajes de programación, que son como un lenguaje cualquiera, pero simplificado y con ciertas normas, para poder trasmitir nuestros deseos al ordenador.


Por otro lado, como se sabe, un conjunto de circuitos no entendería ningún lenguaje que nosotros conozcamos, por más sencillo que éste parezca. Los circuitos en todo caso, sólo reconocen presencia o ausencia de energía, es decir que debemos hablarle a la máquina en su propio lenguaje (presencia y ausencia de energía, 0 y 1), o nuestro lenguaje deberá de ser traducido a un lenguaje binario cuyo alfabeto es el 0 y el 1, mediante las herramientas desarrolladas para llevar a cabo esta tarea, las cuales reciben el nombre de traductores, y como veremos más adelante, los hay de muchos tipos, dependiendo de características más específicas del lenguaje a traducir y de la manera de llevar a cabo su traducción.

Como ya habréis entendido, para crear un lenguaje de programación, deberemos crear la herramienta que lo traduce, y es justamente de ellas, de las que hablaremos a continuación, para describir como han ido evolucionando en los últimos 50 años [BYTE 95].

• 1946: Konrad Zuse , un ingeniero Alemán mientras trabajaba en los Alpes de Bavaria, desarrolló el lenguaje Plankalkul, el cual, fue aplicado entre otras cosas para jugar al ajedrez.
• 1949: Aparece Short Code, que viene a ser el primer lenguaje que fue usado en un dispositivo de cómputo electrónico, aunque se debe decir que se trata de un lenguaje traducido a mano.
• 1951: Grace Hopper , trabajando para Remington Rand, comenzó el trabajo de diseño del primer compilador conocido ampliamente, el A-0, el cual, al ser liberado por la compañía en 1957, lo hizo con el nombre de MATH-MATIC.
• 1952: Alick E. Glennie, durante su tiempo libre en la Universidad de Manchester, concibe un sistema de programación llamado AUTOCODE, que viene a ser un compilador muy rudimentario.
• 1957: aparece FORTRAN (FORmula TRANslating) sistema traductor de fórmulas matemáticas. Fue desarrollado por un equipo, al frente del cual se encontraba John Backus quien después vendría a contribuir en el desarrollo del compilador para el lenguaje ALGOL y de la notación usada para la especificación sintáctica de los lenguajes, conocida como BNF (Backus Naur Form).

A partir de los años sesenta, empiezan a surgir diferentes lenguajes de programación, atendiendo a diversos enfoques, características y propósitos, que más adelante describiremos.

Por lo pronto, puede decirse, que actualmente existen alrededor de 2000 lenguajes de programación [KINNERSLEY 95] y continuamente, están apareciendo otros más nuevos, que prometen hacer mejor uso de los recursos computacionales y facilitar el trabajo de los programadores.

Tratando de resumir un poco, presentaremos los siguientes cuadros evolutivos, donde aparecen los lenguajes que por su uso y comercialización, han resultado ser los más populares a lo largo de este medio siglo. [LABRA 98] [RUS 01

Como ya lo citamos anteriormente y como se puede observar en las figuras a y b, la existencia de tantos lenguajes obedece a que cada uno de ellos está encaminado a resolver ciertas tareas, dentro de la amplia problemática de la explotación de la información, o bien, a que su arquitectura, o su forma de llevar a cabo la programación, tiene un enfoque particular.

De acuerdo con el estilo de programación, podemos clasificar los lenguajes en las siguientes categorías:

Imperativos: Son aquellos lenguajes, que basan su funcionamiento en un conjunto de instrucciones secuenciales, las cuales, al ejecutarse, van alterando las regiones de memoria donde residen todos los valores de las variables involucradas en el problema que se plantea resolver. Es decir, se cambia progresivamente el estado del sistema, hasta alcanzar la solución del problema [CONTRERAS 01].
Como un ejemplo ilustrativo vamos a escribir un programa en un lenguaje de este tipo para calcular el factorial de un número positivo x.
Código:
READ(x);
fac := 1 ;
for i = 1 to x
{
fac := fac * i ;
}
WRITELN(fac);

Declarativos: En este paradigma, más que el ¿cómo? desarrollar paso a paso un proceso, nos interesa el ¿qué? deseamos obtener a través del programa. Quizás el lenguaje declarativo que nos sea más familiar, es SQL, el cual es utilizado para
interactuar con la información de bases de datos, concentrándose (como se podrá
observar en el siguiente ejemplo), sólo en los resultados que van a ser obtenidos,
dejándole al traductor la tarea de cómo llegar a ellos y presentárnoslos.[SANDERSPRICE
02]
Código:
SELECT * FROM alumnos WHERE sexo = "M" ORDER BY edad

Dentro de este paradigma, se encuentran dos estilos distintos de programación, cada
uno de los cuales posee su propia lógica [SANFÉLIX 00].

    o Funcionales: Son lenguajes basados en funciones, las cuales se representan mediante expresiones, que nos permiten obtener ciertos resultados a partir de una serie de argumentos[BIBBY 00]. De hecho las expresiones están
formadas por un conjunto de términos, que a su vez pueden encapsular otras
expresiones, para con la evaluación de todas ellas, llegar a la solución
deseada.[GAULD 01]. Para describir la idea, retomaremos el ejemplo del
factorial escrito en el lenguaje funcional Haskell.
Código:
fac :: Integer -> Integer
fac 0 = 1
fac x = x * fac (x-1)

    o Lógicos: Este tipo de lenguajes se basan en el cálculo de predicados, la cual es una teoría matemática que permite entre otras cosas, lograr que un ordenador basándose en un conjunto de hechos y de reglas lógicas, pueda
derivar en soluciones inteligentes. [DIMARE 90]. El mismo ejemplo del
factorial, se vería de la siguiente manera, escrito en PROLOG.
Código:
factorial (0, 1)
factorial (X, Fac) :- Y is X-1, fac(Y, F2), Fac is F2 * X .

Orientados a Objetos: Este último paradigma, como se puede observar en la figura 1, algunas veces se mezcla con alguno de los otros 2 modelos, sin embargo mantiene características propias, que lo diferencian claramente. Los programas de este tipo, se concentran en los objetos que van a manipular, y no en la lógica requerida para manipularlos [MARBUS 00].

Ejemplos de objetos pueden ser: estudiantes, coches, casas etc, cada uno de los cuales tendrá ciertas funciones (métodos) y ciertos valores que los identifican, teniendo además, la facultad de comunicarse entre ellos a través del paso de mensajes. Cabe mencionar con más detalle los elementos fundamentales que deben de poseer este tipo de lenguajes [BOOCH 96]:

    o Abstracción: Determinación de las características de los objetos, que sirven para identificarlos y hacerlos diferentes a los demás.
    o Encapsulamiento: Es el proceso que agrupa y almacena los elementos que definen la estructura y el comportamiento de una abstracción, en un mismo lugar.
    o Modularidad: Es la propiedad de agrupar las abstracciones que guardan cierta relación lógica, y a la vez minimizar la interdependencia entre las
diversas agrupaciones.
    o Jerarquía: Consiste en establecer un orden o una clasificación de las
abstracciones. Además de estos elementos fundamentales, también existen otros 3 elementos secundarios , que aunque son deseados, no son indispensables para clasificar un lenguaje dentro de este estilo.
    o Tipificación: Mecanismo que intenta restringir el intercambio entre
abstracciones que poseen diversas características.
    o Persistencia: Es la propiedad de un objeto a continuar existiendo a través del tiempo y/o del espacio.
    o Concurrencia: Es la propiedad que distingue a los objetos activos, de los que no lo están.

Ahora bien, si tomamos como referencia las herramientas usadas en el proceso de traducción y ejecución de los programas esbozada en la figura 2, vamos a tener la siguiente clasificación de lenguajes[AHO 77]:

• Lenguajes Ensamblados: Se refieren al lenguaje ensamblador, que viene a ser una representación simbólica de las instrucciones correspondientes al lenguaje
ensamblafor de alguna arquitectura específica, con lo que, casi siempre, la
correspondencia entre las instrucciones de este lenguaje, y las del lenguaje máquina
son de 1 a 1, si bien existen algunas excepciones, que dan lugar a lo que se conoce
como lenguajes macro-ensambladores [CUEVA 88]

• Lenguajes Compilados: Son aquellos, que son traducidos de un lenguaje de alto nivel (como FORTRAN o PASCAL) a lenguaje máquina o bien a lenguaje
ensamblador, produciendo un programa objeto permanente.

• Lenguajes Interpretados: Estos lenguajes, tienen la particularidad, de que no
producen código objeto, sino que cada instrucción es analizada y ejecutada a la vez, lo que ofrece mucha interacción con los usuarios, pero a la vez resultan ineficientes,
cuando se desea ejecutar repetitivamente un programa.

Lenguajes Preprocesados: Son lenguajes que son traducidos primeramente a un lenguaje intermedio de más bajo nivel, para posteriormente volverlos a traducir y
producir el programa objeto. Este tipo de lenguajes fueron creados, con la idea de
proporcionar un lenguaje más potente que el lenguaje intermedio, mediante la
implementación de algunas macroinstrucciones. [SANCHIS-GALAN 86].

Finalmente, existen otros conceptos tomados en cuenta para agrupar los lenguajes, que dan origen a diversas clasificaciones, entre los que destacan las siguientes:

• Lenguajes de cuarta generación 4GL: Estos lenguajes se distinguen por formar parte de un entorno de desarrollo, que comprende el manejador de una base de datos, y todo lo que de esto se deriva, como la administración de un diccionario de datos, el control de accesos, el manejo de la consistencia de la información y otras características enfocadas a facilitar los programas de acceso y explotación de la información. Como ejemplos podemos citar a los 4 grandes: PROGRESS, SYSBASE, NFORMIX, y ORACLE.

• Lenguajes Visuales. Se les llama de esta manera a los lenguajes que forman parte de una aplicación dotada de una Interfase gráfica, la cual por medio de iconos y otras herramientas visuales y simbólicas, pretenden facilitar las tareas rutinarias de los programadores, como son el diseño y desarrollo de formularios e informes. Los
ejemplos más comerciales de estos lenguajes son: VISUAL BASIC, VISUAL CAFE,
VISUAL FOX, etc.

• Metalenguajes: Son lenguajes como XML, SGML y HTML que sirven para definir otros lenguajes, cuyo objetivo es llevar a cabo la estructuración de textos mediante un conjunto de etiquetas, de manera tal, que puedan ser entendidos por los humanos y también procesado por los ordenadores. Estos lenguajes están teniendo un gran auge sobre la plataforma de Internet, en la cual son usados para la creación de documentos, y el intercambio o transferencia de información.

• Lenguajes de propósito específico: Son aquellos lenguajes desarrollados con la finalidad de resolver problemas de una naturaleza muy determinada, tal como SPSSpara problemas estadísticos, MATLAB para cálculos científicos y de ingeniería,
CAD/CAM para el diseño de piezas y programación de máquinas de control numérico, como tornos y fresadoras, GPSS para simulación de sistemas, CORBA para el manejo de interfaces en ambientes cliente-servidor, etc.

• Lenguajes Script: Son lenguajes como javascript, VBSCRIPT, PERLSCRIPT, que se utilizan en ambientes clientes servidor, mediante la incrustación de código en las páginas HTML, y así permitir la programación del lado del cliente, buscando fundamentalmente, hacer más atractivos los interfaces gráficos de las páginas [BUITRAGO 00].

Esta gran cantidad de lenguajes, señala de manera clara que existe un esfuerzo continuo en la creación, y mejora de los lenguajes de programación, en aras, de hacer más fácil la tarea del programador y/o hacer un uso más eficiente de los recursos computacionales.

La búsqueda de los objetivos antes mencionados, así como la guerra mercantil de las
compañías dedicadas a la producción de herramientas de software, han diversificado las opciones que los programadores pueden elegir. Sin embargo , hasta nuestros días, podemos decir que realmente no existe ningún lenguaje, o grupo de ellos, que destaque en la totalidad de las aplicaciones informáticas que se desarrollan actualmente, ya que cada uno, tiene cualidades que lo hacen más convenientes para algunos propósitos, pero al mismo tiempo, cuentan con inconvenientes para otros.

14. Tipos de errores en programación

0 comentarios
Estructura de Un programa en C

Ya estamos a punto de entrar a lo más interesante, a la programación en sí; pero es necesario, primero; mencionar algunos de los errores típicos al programar, para que el lector sepa como identificarlos y así los pueda corregir.
1.         ERROR DE SINTAXIS: Estos errores son producidos, cuando se hace mal uso de las reglas del lenguaje de programación, y se violan las normas de sintaxis, de ese lenguaje (en nuestro caso C); estos errores son fáciles de detectar porque generalmente es el compilador, que los identifica (Y hasta muestra la línea donde se encuentra dicho error, pero eso depende de la versión del compilador que estemos usando). En este curso he usado Turbo C, en su versión 2 y 3.
2.         ERRORES DE EJECUCIÓN: Estos errores se producen, cuando le indicamos a la computadora, realizar una determinada acción, y esta la comprende, pero no puede ejecutarla. Por ejemplo, indicarle a la computadora una división entre cero, sumar dos variables a las cuales no se les ha asignado valor alguno, etc.
3.         ERRORES DE LÓGICA: Muchas veces, cuando estamos programando, el compilador no nos indica errores de sintaxis, ni de lógica; pero el resultado de nuestro programa, esta fuera del rango esperado, esto es producto de un error de lógica en el código de nuestro programa. Este tipo de errores son muy difíciles de identificar y por supuesto de corregir, ya que generalmente hay que revisar línea por línea de nuestro programa. Ejemplo: El sueldo negativo de un empleado, etc.

15. Estructuras de control en programación:

0 comentarios

a.    Secuenciales
b.    Condicionales
c.     Repetitivas

ESTRUCTURA SECUENCIAL

Es aquélla en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su representación gráfica es la siguiente:
Estructura secuencial:
Acción 1
Acción 2
Acción 3
.......


DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL:
Acción 1
Acción 2
...
Acción n
PSEUDOCÓDIGO DE UNA ESTRUCTURA SECUENCIAL:
Inicio
:
:
acciones
:
:
fin


Ejemplo:
Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100).
·  Inicio
·  {cálculo salario neto}
·  leer nombre, horas, precio_hora
·  salario_bruto horas * precio
·  impuestos 0.20 * salario_bruto
·  salario_neto salario_bruto_impuestos
·  escribir nombre, salario_bruto, salario_neto_bruto, salario_neto
·  Fin


CONDICIONALES
La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición.
Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.
En las estructuras selectivas se evalúa una condición y en función del resultado la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, sino), con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular.


Las estructuras selectivas o alternativas pueden ser:
Simples
Doble
Múltiples


ESTRUCTURAS REPETITIVAS.
Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan Bucles y se denomina Iteración al hecho de repetir la ejecución de una secuencia de acciones. Entre las estructuras repetitivas se encuentran:
·         Mientras (while)
·         Repetir (repeat)
·         Desde (for)