Lenguajes operativos

Page 1

CEUNISAL LENGUAJES OPERATIVOS

VILLALOBOS ESTUDILLO WILLIAM PROFRA.: PÉREZ VILLANUEVA JUANA CEUNISAL


Contenido 1. INTRODUCCIÓN A LOS LENGUAJES OPERATIVOS ........................................................................... 3 1.1 Características generales........................................................................................................... 3 1.2 OPERACIONES GENERALES ........................................................................................................ 4 1.2.1 MARCAS.................................................................................................................................. 4 1.2.2 PLATAFORMAS OPERATIVAS .................................................................................................. 5 1.2.3 TIPO ........................................................................................................................................ 6 1.2.5 NIVEL DE DEMANDA EN EL MERCADO LABORAL ................................................................. 17 2. INSTALACIÓN Y ARRANQUE .......................................................................................................... 25 2.1 Consideraciones previas .......................................................................................................... 25 Cómo bootear una USB .............................................................................................................. 25 2.1.1 Estructura de un programa y reglas sintácticas ................................................................... 26 2.2 Pasos de instalación ................................................................................................................ 35 2.4 Configuración .......................................................................................................................... 35 2.5 Arranque ................................................................................................................................. 38 2.4 Configuración .......................................................................................................................... 39 2.6 Salida ....................................................................................................................................... 51 3. Palabras reservadas y caracteres especiales................................................................................. 52 3.1 Palabras recervadas ................................................................................................................ 52 3.2 Caracteres especiales .............................................................................................................. 53 4. Tipos de datos ............................................................................................................................... 53 4.1 Datos elementales ................................................................................................................... 53 4.1.1 Constantes............................................................................................................................ 53 4.1.2 Variables ............................................................................................................................... 55 Diferencias entre ambas.................................................................................................................. 57 4.2 Estructura de datos ................................................................................................................. 57 4.2.1 Internas ................................................................................................................................ 57 5. Instrucciones asociadas a: ............................................................................................................. 58 5.1 Operaciones primitivas........................................................................................................... 58 5.2 Estructuras de control ............................................................................................................. 58 5.3 Operaciones aritméticas ......................................................................................................... 58 5.4 Funciones matemáticas........................................................................................................... 60 5.5 Manejo de caracteres ............................................................................................................. 60 6. Operadores.................................................................................................................................... 62 6.1 Matemáticos ........................................................................................................................... 62


6.2 De caracteres........................................................................................................................... 62 6.3 Lógicos ..................................................................................................................................... 62 6.4 Relacionales............................................................................................................................. 62 6.5 Especiales ................................................................................................................................ 62 6.6 Orden de procedencia ............................................................................................................. 62 6.6.1 Por categorías....................................................................................................................... 62 6.6.2 Dentro de cada categoría ..................................................................................................... 62 7. Subprogramas ............................................................................................................................... 81 7.1 Tipos ........................................................................................................................................ 82 7.1.1 Internos ................................................................................................................................ 82 7.1.2 Externos................................................................................................................................ 82 7.2 Características ......................................................................................................................... 82 7.2.1 Estructura ............................................................................................................................. 82 7.2.2 Objetos ................................................................................................................................. 82 7.3 Reglas sintácticas..................................................................................................................... 82 7.3.1 Declaración ........................................................................................................................... 82 7.3.2 Llamadas de ejecución ......................................................................................................... 82 7.3.3 Parámetros o variables de enlace ........................................................................................ 82 8. Utilerías ......................................................................................................................................... 84 8.1 Funciones ................................................................................................................................ 84 8.2 Estructuras .............................................................................................................................. 84 8.3 Archivos ................................................................................................................................... 84 8.4 Librerías ................................................................................................................................... 84 9. Mensajes y Códigos de error ......................................................................................................... 86 9.1 Tipos de error .......................................................................................................................... 86 9.2 Manejo y control de errores ................................................................................................... 86 9.3 Principales códigos de error .................................................................................................... 86 10. Desarrollo de aplicaciones .......................................................................................................... 88 10.1 Entrada y salida ..................................................................................................................... 89 10.2 Cálculo de área ...................................................................................................................... 89 10.3 Resolución de ecuación de segundo grado ........................................................................... 89 10. 4 Ordenamiento alfabético ..................................................................................................... 89


1. INTRODUCCIÓN A LOS LENGUAJES OPERATIVOS

1.1 Características generales Un lenguaje de programación es un idioma artificial diseñado para expresar procesos 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. 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: 1.- El desarrollo lógico del programa para resolver un problema en particular. 2.- Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa). 3.- Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina. 4.- Prueba y depuración del programa. 5.- 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


1.2 OPERACIONES GENERALES  El sistema operativo cumple varias funciones:  - Administración del procesador: administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. - Gestión de la memoria de acceso aleatorio: se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario,  - Gestión de entradas/salidas: permite unificar y controlar el acceso de los programas a los recursos materiales a través de los drivers  - Gestión de ejecución de aplicaciones: se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para funcionar.  - Administración de autorizaciones: se encarga de la seguridad en relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes. - Gestión de archivos: gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios. -Gestión de la información proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo. 1.2.1 MARCAS

1) DOS: El famoso DOS, que quiere decir Disk Operating System (sistema operativo de disco), es más conocido por los nombres de PC-DOS y MS-DOS. MS-DOS fue hecho por la compañía de software Microsoft y es en esencia el mismo SO que el PC-DOS. La razón de su continua popularidad se debe al aplastante volumen de software disponible y a la base instalada de computadoras con procesador Intel. Cuando Intel liberó el 80286, DOS se hizo tan popular y firme en el mercado que DOS y las aplicaciones DOS representaron la mayoría del mercado de software para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los productos tuvieran éxito, y la "compatibilidad IBM" significaba computadoras que corrieran DOS tan bien como las computadoras IBM lo hacían.


Aún con los nuevos sistemas operativos que han salido al mercado, todavía el DOS es un sólido contendiente en la guerra de los SO. 2) Windows 3.1: Microsoft tomo una decisión, hacer un sistema operativo que tuviera una interfaz gráfica amigable para el usuario, y como resultado obtuvo Windows. Este sistema muestra íconos en la pantalla que representan diferentes archivos o programas, a los cuales se puede accesar al darles doble click con el puntero del mouse. Todas las aplicaciones elaboradas para Windows se parecen, por lo que es muy fácil aprender a usar nuevo software una vez aprendido las bases. 3) Windows 95: En 1995, Microsoft introdujo una nueva y mejorada versión del Windows 3.1. Las mejoras de este SO incluyen soporte multitareas y arquitectura de 32 bits, permitiendo así correr mejores aplicaciones para mejorar la eficacia del trabajo. 4) Windows NT: Esta versión de Windows se especializa en las redes y servidores. Con este SO se puede interactuar de forma eficaz entre dos o más computadoras. 5) OS/2: Este SO fue hecho por IBM. Tiene soporte de 32 bits y su interfaz es muy buena. El problema que presenta este sistema operativo es que no se le ha dad el apoyo que se merece en cuanto a aplicaciones se refiere. Es decir, no se han creado muchas aplicaciones que aprovechen las características del SO, ya que la mayoría del mercado de software ha sido monopolizado por Windows. 6) Mac OS: Las computadoras Macintosh no serían tan populares como lo son si no tuvieran el Mac OS como sistema operativo de planta. Este sistema operativo es tan amigable para el usuario que cualquier persona puede aprender a usarlo en muy poco tiempo. Por otro lado, es muy bueno para organizar archivos y usarlos de manera eficaz. Este fue creado por Apple Computer, Inc. 7) UNIX: El sistema operativo UNIX fue creado por los laboratorios Bell de AT&T en 1969 y es ahora usado como una de las bases para la supercarretera de la información. Unix es un SO multiusuario y multitarea, que corre en diferentes computadoras, desde supercomputadoras, Mainframes, Minicomputadoras, computadoras personales y estaciones de trabajo. Esto quiere decir que muchos usuarios pueden estar usando una misma computadora por medio de terminales o usar muchas de ellas. 1.2.2 PLATAFORMAS OPERATIVAS 1. Una plataforma es un sistema que sirve como base para hacer funcionar determinados módulos de hardware o de software con los que es compatible. Dicho sistema está definido por un estándar alrededor del cual se determina una arquitectura de hardware y una plataforma de software (incluyendo entornos de aplicaciones). Al definir plataformas se establecen los tipos de arquitectura, sistema operativo, lenguaje de programación o interfaz de usuario compatibles. 2. Los primeros sistemas (1945-1955) eran grandes máquinas operadas desde la consola maestra por los programadores. Durante la década siguiente (1955-1965) se llevaron a cabo avances en el hardware; lectoras de tarjetas, impresoras, cintas


magnéticas, etc. Esto a su vez provocó un avance en el software: compiladores, ensambladores, carg adores, manejadores de dispositivos, etc. ws * Linux * AmigaOS * Solaris * Mac OS.

1.2.3 TIPO Los Lenguajes de Programación pueden clasificarse de varias maneras, las principales son las siguientes: 

Por su Nivel.

Por sus Aplicaciones principales.

CLASIFICACIÓN DE LOS LENGUAJES DE ACUERDO A SU NIVEL: Esta clasificación se refiere a qué tan cercanos están los lenguajes a las características físicas de la computadora o qué tan próximos están a las necesidades del programador. LENGUAJE MAQUINA. Primer Lenguaje de Programación, el único que entiende directamente la computadora: utiliza el alfabeto binario formado por los símbolos 0 y 1 (apagado / encendido). Son realmente difíciles de aprender y de manejar, ya que no resultan nada cercanos al ser humano, pero son muy rápidos, ya que se ahorra mucho tiempo en la respuesta, puesto que se evitan las traducciones intermedias. A este lenguaje también se le considera un Lenguaje de Bajo nivel. Una serie de lenguaje maquina son: 0010 0000 0000 1001 1001 0001 1001 1110 Como se puede observar, estas instrucciones serán fáciles de leer por la computadora y difíciles por un programador, y viceversa. Esta razón hace difícil de escribir programas en código o lenguaje máquina y requiere buscar otro lenguaje para comunicarse con la computadora, pero que sea más fácil de escribir y leer por el programador. Para evitar la tediosa tarea de escribir programas en lenguaje máquina se han diseñado otros lenguajes de programación que facilitan la escritura y posterior ejecución de los programas. LENGUAJE DE BAJO NIVEL (ENSAMBLADOR). Surge con la evolución del Lenguaje Maquina, sustituye las cadenas de símbolos binarios por nemotécnicos: ADD, SUB, DIV.


Dependen de las características de cada máquina y sólo son comprensibles por especialistas. Aparecieron durante la primera generación de computadoras. 0110 1001 1010 1011 ADD M, N, P ADD suma DIV dividir SUB resta LDA cargar acumulador MPY multiplicar STO..almacenar Una instrucción típica en ensamblador puede ser: ADD x, y, z Esta instrucción significa que se debe sumar los números almacenados en las direcciones x, y, y almacenar el resultado en la dirección z. El programa ensamblador traducirá. Programa en código maquina programa en ensamblador Después que un programa ha sido escrito en lenguaje ensamblador se necesita un programa -llamado ensamblador- que lo traduzca a código máquina. LENGUAJE DE ALTO NIVEL. Son desarrollados para el usuario de la computadora, permiten que los procedimientos se expresen con un estilo comprensible; sin embargo, la computadora no los entiende directamente. Algunos de estos lenguajes fueron desarrollados durante la Segunda Generación de computadoras y la mayoría durante la Tercera Generación, por ejemplo: Pascal, BASIC, Ada, FORTRAN, etc. Usan traductores (compiladores o intérpretes), son independientes de la máquina, las instrucciones no dependen del diseño de la máquina, los programas son portables o transportables, pueden ejecutarse en diferentes máquinas. Por ejemplo, las líneas siguientes son: una línea de un programa en Turbo Pascal y su línea equivalente en pseudo código. IF (x=y) AND (z=w) THEN WRITE (`esto es una prueba'); si (x=y) y (z=w) entonces ESCRIBIR (`esto es una prueba'); Estas líneas se pueden comprender fácilmente conociendo la traducción de las palabras inglesas IF(si), THEN (entonces), WRITE(escribir / imprimir), AND(y) y sin necesidad de mucha explicación. Es posible escribir también operaciones como: Z := x + y la suma x + y se asigna a la variable z. COMPILADORES E INTÉRPRETES.


El código generado a través de los Lenguajes de Programación (Código Fuente) debe ser convertido en una aplicación que pueda ser ejecutada y utilizada. Los compiladores e intérpretes son una especie de traductores o conversores del lenguaje de programación (comprensible para el ser humano) a un lenguaje comprensible por la computadora (cercano a la maquina). TIPOS DE PROGRAMA: Una vez escrito un programa éste puede estar en código fuente, código objeto o código ejecutable. 

Código Fuente: recibe este nombre el conjunto de instrucciones tal y como fueron escritos por el programador en el lenguaje de alto nivel (también se le conoce como programa fuente).

Código Objeto: son las instrucciones de un programa cuando ya han sido traducidas al lenguaje máquina (también se le conoce como programa objeto).

Código Ejecutable: es un código objeto que puede ser ejecutado por la computadora de inmediato (no todos los códigos objeto son ejecutables).

LOS INTÉRPRETES. Traduce a lenguaje máquina, cada línea del programa fuente y la ejecuta de inmediato. Traducen en Lenguaje de Alto Nivel a Lenguaje Maquina, se encargan de traducir cada instrucción, una por una (o cada línea de instrucciones) contenida en un programa escrito en cualquier lenguaje de alto nivel a instrucciones en código binario, comprensible por las computadoras. Los intérpretes no producen código objeto, por ello la ejecución de un programa requiere forzosamente del código fuente. Además, los programas en lenguaje interpretado se ejecutan con más lentitud que aquellos en lenguaje compilado.

LOS COMPILADORES. A diferencia de los intérpretes que traducen instrucción por instrucción o línea por línea, los compiladores traducen todo el programa entero y luego lo integran generando un programa ejecutable por sí solo. Con esto se consigue más eficacia e independencia, ya que una vez compilado el programa, el compilador no tiene por qué estar presente, pudiendo ser transportado el programa ejecutable a cualquier computadora, sin ver el listado de órdenes, ni manejar el compilador. El compilador es un lenguaje especial que traduce a un programa fuente (escrito en lenguaje de alto nivel) a un código objeto.


El código o programa fuente es el conjunto de instrucciones en lenguaje de alto nivel. Un compilador analiza las líneas del programa e identifica ciertas estructuras para traducirlas adecuadamente a lenguaje máquina. Una vez que se ha efectuado la compilación puede prescindirse del programa fuente. El proceso de compilación del Programa Fuente se verifica en cuatro etapas: 

Análisis de léxico: durante esta etapa se verifica que las palabras utilizadas en el programa fuente pertenezcan al lenguaje.

Análisis de sintaxis: esta parte de la compilación examina cada instrucción del programa fuente para que las instrucciones estén organizadas correctamente.

Generación de código intermedio: este produce un código simbólico que permitirá efectuar la equivalencia con el lenguaje máquina.

Generación de código maquina: en esta última etapa se elabora el programa objeto.

El código o programa objeto son las instrucciones de un programa que ya han sido traducidas a lenguaje máquina. El código ejecutable es un código objeto que puede ser ejecutado por la computadora de inmediato. A modo de resumen podemos decir que los compiladores producen programas que, una vez depurados y puestos a punto, son ejecutables directamente y los intérpretes, aunque tienen unas necesidades menores de memoria a la hora de traducir los programas fuente, nos hipotecan para siempre en cuanto al tiempo de ejecución de los programas. Existen en el mercado compiladores para todos los lenguajes de alto nivel; los intérpretes en cambio sólo se han desarrollado para algunos lenguajes de programación siendo los más conocidos los de BASIC. CLASIFICACIÓN DE LOS LENGUAJES DE ACUERDO A SUS APLICACIONES PRINCIPALES: Esta clasificación se refiere a las ventajas que tienen los lenguajes para resolver ciertos problemas específicos. Los principales lenguajes pueden clasificarse de la siguiente manera: 

Lenguajes Clásicos o Tradicionales.

Lenguajes Visuales (orientados a objetos).

Lenguajes de Internet.

LENGUAJES CLÁSICOS:


Estos lenguajes están basados en un lenguaje cercano al ser humano en el que se escribe el código necesario para realizar las operaciones que se requieren (miles y miles de líneas generalmente), que posteriormente es traducido o compilado generando un programa ejecutable. Los más conocidos son: el PASCAL, el BASIC, el C, el COBOL, y el CLIPPER. Dependiendo del programa que se requiera realizar pueden ser mejores unos u otros. LENGUAJES VISUALES: Son lenguajes más avanzadas que los lenguajes clásicos y están basados en objetos. Cada entidad del programa (eventos, acciones, datos, etc.), es un objeto sobre el que se definen operaciones. Esto permite almacenar los objetos (con todo su código de programa), en una serie de librerías y utilizarlos cuando sea necesario, ahorrando al programador el trabajo de tener que volver a programarlos. Son lenguajes muy intuitivos y fáciles de utilizar, y sustituyen las tediosas líneas de código, por sencillas y directas representaciones gráficas. LENGUAJES DE INTERNET: Son los lenguajes específicos para la creación de páginas Web de Internet, y realizar su programación (motores de búsqueda, seguridad, establecimiento de comunicaciones, etc.). Son la última generación de lenguajes. Existen distintos tipos, dependiendo del grado de especialización, aunque algunos, como el HTML, son lenguajes basados en sencillas marcas o TAG. La siguiente tabla muestra los principales lenguajes de programación y su utilidad.

Lenguajes.

Utilidad.

BASIC, PASCAL,

Aprendizaje de programación.

Ada, C y C++

Programación de sistemas.

Logo

Lenguaje didáctico.

COBOL, RPG, Natural, SQL

Gestión de empresas.

Algol, FORTRAN, APL

Calculo numérico.

CLIPPER, ACCESS, dBASE, Delphi, Bases de datos. SQL Programación orientada (OOP). Smalltalk, Actor, C++, Eiffel Visual Basic, Visual C

Programación Windows.

a

objetos


HTML, JAVA, PERL

Internet (páginas WEB).

Lingo

Programas multimedia.

Prolog, Lisp

Inteligencia artificial.

VRLM

Realidad virtual.

Mapper, Cogen, Linc

Lenguajes de cuarta generación 4GL.

Por ultimo para la resolución de un problema, deben seguirse por lo menos los siguientes pasos:

(transformación del algoritmo en un programa).

Estas fases constituyen lo que se denomina: Ciclo del Vida del Software o Ciclo de Vida del Desarrollo de un Sistema, son realizadas por seres humanos, solo la ejecución de los programas es realizada por la computadora.

Definición del Problema. El programador debe reconocer cuál es el problema, estableciendo con claridad cuáles son los datos disponibles y a qué resultados se desea llegar. Análisis del Problema. Es un estudio profundo del problema y de la situación que lo rodea. El programador deberá entenderlo por completo y proponer una solución para poder transformar los datos disponibles en resultados. Diseño del algoritmo. Se planea la estrategia que permitirá alcanzar la solución del problema. Programación (transformación del algoritmo en un programa). Consiste en traducir el algoritmo diseñado a un lenguaje de programación y aplicarlo en una computadora. Ejecución y validación del Programa (Pruebas).


Verifican su funcionamiento para corregir posibles errores. Mantenimiento del Programa. El programador se encarga de modificar el programa según vayan apareciendo necesidades adicionales. TIPOS DE LENGUAJE. En este apartado vamos a recordar brevemente la historia y a resumir las características de algunos lenguajes de alto nivel. El primer lenguaje de alto nivel fue el FORTRAN (FORmula TRANslator), es decir traductor de fórmulas, que estaba orientado a cálculos técnicos. Después apareció el COBOL (Commom Business Orientated Language) orientado a la gestión. Más adelante aparecieron PL1, BASIC, APL, PASCAL, ADA, RPG, etc. En treinta años se han definido mas de 400 lenguajes, algunos de los cuales han tenido gran aceptación. Las características principales a considerar en un lenguaje son la facilidad de empleo, facilidad de aprendizaje, potencia, orientación, gestión de ficheros y periféricos, facilidad de corrección por parte de quien no lo ha diseñado, transpirabilidad a otras máquinas y requerimientos de memoria. FORTRAN. Es el más antiguo, ha tenido muchas mejoras con el paso de los años pero sigue siendo de diseño anticuado e incómodo a pesar de ser muy usado. La escritura del programa se hace en hojas de programación con un formato que no es libre, es fácil de entender pero no de manejar. En cálculos es muy eficaz, dispone de muchísimas funciones, varios tipos de variables, varios tipos de variables y tiene facilidad de manejo de subprogramas, en cambio es deficiente en manejo de textos. La gestión de ficheros sólo existe en la versión V y superiores y no es muy eficiente; lo mismo sucede respecto a periféricos con excepción de las impresoras. El lenguaje a llegado a ser un estándar, lo que hace que no haya serios problemas para transportar un programa de una máquina a otra que tenga el mismo compilador. Un problema a considerar en este lenguaje es la relativa dificultad para el mantenimiento de programas al no ser un lenguaje estructurado en módulos que faciliten su mantenimiento. Está orientado a cálculos técnicos y científicos. BASIC. Significa Código de instrucciones Simbólicas de Propósito General para Principiantes (Beginner's All Surpose Simbolic Instructions Code) y es un lenguaje flexible y fácil de manejar, orientado a los estudiantes y a los que tienen su primer contacto con la informática.


No tiene rigidez en su sintaxis, y el tratamiento de cadenas de caracteres es muy potente, en cálculo es suficientemente bueno, siendo en algunas versiones tan potente como el FORTRAN. En la gestión de ficheros es donde tiene el BASIC su principal defecto; la gestión de periféricos es aceptable y la transpirabilidad buena. En efecto, de este lenguaje existen multitud de versiones, muchísimas máquinas (prácticamente todas) disponen de traductores de BASIC, y esto hace que no todas las versiones sean iguales, aunque concuerdan en la mayor parte de instrucciones, las diferencias mayores suelen estar en las instrucciones de gráficos / color, música, juegos, y acceso a ficheros. Respecto al mantenimiento podemos decir que es fácil de construir programas claros, pero no dispone de suficientes facilidades para ello. Es un lenguaje muy usado en el área de microinformática. El BASIC presenta en la actualidad dos tendencias a la <<norma>>, una es el BASIC MSX y la otra el BASIC de los compatibles en IBM. Ejemplo de un programa en BASIC. Ok PRINT “Hola” Hola Ok COBOL. Este lenguaje está orientado a la gestión y tiene una sintaxis lógica y estructurada y un vocabulario semejante al inglés; es muy potente en el tratamiento de textos (el mejor probablemente). Y en la definición de datos. Las instrucciones de cálculo están reducidas al mínimo, pero la gestión de ficheros es muy buena, la transpirabilidad no es mala pero presenta problemas, puesto que muchos ordenadores personales no disponen todavía de compilador COBOL. El mantenimiento de programas es sencillo, puesto que la facilidad de empleo y la calidad de la sintaxis producen programas de buena legibilidad, aunque conviene que el programador ponga suficientes comentarios. Ejemplo de un segmento de programa en COBOL obtiene el mayor de tres número. IF A > B IF A>C DISPLAY `A ES EL MAYOR' GO TO PAR-1 ELSE


DISPLAY `C ES EL MAYOR' GO TO PAR-1 ELSE IF B>C DISPLAY `B ES EL MAYOR' GO TO PAR-1 ELSE DISPLAY `C ES EL MAYOR' GO TO PAR-1 PASCAL. Este es un lenguaje diseñado con la idea de la estructuración, es decir programando en PASCAL, se consiguen programas muy fáciles de mantener. La sintaxis es relativamente flexible, aunque presenta algunas restricciones en el empleo de los puntos y comas; programar eficazmente es realmente complejo. En el tratamiento de cadenas de caracteres era muy limitado, aunque las modernas versiones lo asemejan al BASIC. El tratamiento matemático es bastante completo. La gestión de ficheros es muy variable según las versiones de PASCAL, hay de todos los tipos. La gestión de periféricos es deficiente y la transportabilidad muy buena. Ejemplo de un programa que suma dos números en PASCAL. Program suma: Uses crt; Var a, b, c: integer; Begin a :=2; b :=3; c := a + b; writeln(`La suma es: `,c); End. APL. Este es un lenguaje de propósito científico / técnico y está concebido para descripción de algoritmos directamente, es decir, sin desmenuzar en operaciones elementales.


Es difícil de manejar, trabaja bien en cadenas de caracteres, muy bien en cálculos (probablemente el más potente), en cambio tiene una gestión de ficheros limitada, la gestión de periféricos es deficiente y la transportabilidad mala, pues no existe un auténtico estándar. El mantenimiento es de una complejidad intermedia. Es un lenguaje para cálculos científicos. FORTH Es un lenguaje difícil de manejar; está basado en el proceso de construir nuevas instrucciones, la metodología de programación es diferente a las demás. Trata las cadenas y los cálculos sin problemas, es deficiente en la gestión de ficheros y optimo en la gestión de periféricos. En cuanto a la transportabilidad es deficiente, debido a que se construyen muchas funciones personalizadas difíciles de traspasar. Los programas escritos con FORTH son difíciles de leer, y, por tanto de mantener.

LOGO. Este es un lenguaje interactivo; se maneja empleando diferentes palabras que se combinan como se desean. Se dispone de una serie de palabras básicas (primitivas) y de facilidad para construir nuevas (procedimientos). Es ideal para el principiante, al que aproxima a la informática de una manera sencilla. El tratamiento de cadenas y de números no es adecuado, la gestión de ficheros es normal y en la gestión de periféricos destaca la de la pantalla gráfica para la que dispone del artificio de <<la tortuga>>, un triángulo que se mueve con las órdenes que se le va dando, dejando un rastro que conforma un gráfico. La transportabilidad no es buena y el mantenimiento es normal. Es un lenguaje principalmente orientado a niños y a desarrollos de gráficos elementales. C El lenguaje C se creó en 1972 en los laboratorios Bell. Es una herramienta muy potente que resulta especialmente útil si se emplea con el sistema operativo UNIX, una prueba de las prestaciones de este lenguaje es que se han escrito muchos sistemas operativos con él en lugar de hacerlo en ensamblador como venía siendo normal. La sintaxis de C es sencilla y está basada en la programación por módulos, dispone de una gran variedad de variables y potentes operadores. El tiempo de ejecución del C es de decenas de veces menor que el BASIC y es un lenguaje de un nivel suficientemente bajo como para sustituir al ensamblador. A continuacion un ejemplo de cómo imprimir un comentario en C.


# include <stdio.h> int main() { printf(“Este es un ejemplo”); return 0; } PROLOG. Este es un lenguaje inicio de la serie de lenguajes que son del futuro de la informática, el PROgrammer en LOGIQUE (PROLOG), está basado en la lógica y es el ideal para el manejo de conocimientos que es la base de los lenguajes de inteligencia artificial. El concepto de este programa como serie secuencial de instrucciones desaparece y en su lugar aparece una serie de hechos y de conocimientos sobre estos hechos. Este lenguaje no está orientado a cálculos ni a manejo de textos, es un lenguaje de conocimiento. LENGUAJES DE CUARTA GENERACIÓN Un lenguaje puede ser considerado como de <<cuarta generación>> si cumple los requisitos que se detallan a continuación: Los usuarios deben poder obtener los resultados en un tiempo mucho menor del necesario con los lenguajes de la tercera generación, como puede ser COBOL o FROTRAN. El sistema será cercano al usuario (amigable) y fácil de aprender y recordar. La herramienta será adecuada para su utilización, tanto por los usuarios finales como por los profesionales de proceso de datos. Los lenguajes de cuarta generación ofrecen más potencia a los programadores; es normal que los programas reduzcan en un 20% ò 30% el tiempo de desarrollo respecto al tiempo necesario para hacerlos en COBOL. La tendencia actual hacia la informática distribuida hace que muchos usuarios dispongan de su terminal o microordenador para desarrollo de aplicación generalmente conectado a los ordenadores corporativos. Esto exige disponer de herramientas de desarrollo de programas fáciles de usar y potentes; estas herramientas de lenguaje conforman lo que se ha dado en llamar lenguajes de <<cuarta generación>>. Las categorías clásicas de herramientas de los lenguajes de <<cuarta generación>> van desde herramientas de microordenadores (software integrado) hasta los generadores de aplicaciones que generan programas fuente a partir de las


especificaciones del problema. Como herramientas intermedias, entre esos extremos, podemos mencionar los generadores de informes, generadores de gráficos, los modelos financieros y los sistemas de interrogación de bases de datos. Los generadores de aplicaciones están integrados dentro de la herramienta de lenguajes de <<cuarta generación>> y permiten que pueda llegar a generarse una aplicación entera. Los generadores de aplicaciones más potentes soportan un amplio espectro de componentes integrados, entre los que se incluyen, un sistema de gestión de base de datos, lenguaje de consulta, generador de informes, generador de gráficos, pixel de pantalla, herramientas de apoyo a la toma de decisiones o modelado financiero, múltiples interfaces de usuario final, lenguaje de procedimiento alto nivel, lenguaje de definición de datos, facilidad de proceso distribuido, enlace de comunicaciones entre el microordenador y el ordenador central y, en algunos casos, una versión de esta herramienta para el ordenador principal. Entre las herramientas de generación de aplicaciones que están orientadas al usuario final, cabe citar el FOCUS, el MAPPER y el NOMAD. Generalmente, los lenguajes de cuarta generación: 

Evita la utilización de sintaxis poco natural, orientada al ordenador.

Utiliza el inglés corriente, siempre que resulta posible.

Permite la elección entre múltiples interfaces de mandatos adecuados a los diferentes niveles de la experiencia del usuario (es decir, elección del inglés común, o sintaxis de mandatos cercana al ingles).

Interacción con el ordenador sencilla para el usuario.

Menús apropiados, facilidades de ayuda y auto enseñanza.

Utilización de ventanas de pantalla superpuesta.

Utilización de símbolos gráficos (iconos).

Utilización de un ratón para seleccionar mandatos, menús, funciones de scroll y de edición.

Interacción mínima con el teclado.

Opciones inteligentes por defecto.

Subconjunto sencillo de operaciones que pueden ser aprendidas en una o dos horas.

1.2.5 NIVEL DE DEMANDA EN EL MERCADO LABORAL La programación es cada vez más importante para el acceso al mundo laboral pero también para entender y comprender muchos cambios que llegan a la sociedad gracias al avance de la tecnología. Como sabemos, existen muchos lenguajes de


programación pero a continuación vamos a ver los más usados, más demandados y con más futuro. El cambio en la sociedad es un hecho y la educación debe ser capaz de adaptarse y anticiparse a las necesidades futuras. Una de ellas será la programación y no exclusivamente para que los niños se dediquen a la informática. Algunas comunidades quieren implementarla como asignatura a partir del año que viene en la ESO. Como a algunos ya nos pilla algo mayores el colegio, vamos a repasar cuáles son los lenguajes de programación más demandados y utilizados para tener una guía de por dónde empezar. Los lenguajes de programación más usados del mundo Los analistas de RedMonk realizan periódicamente un análisis de los lenguajes de programación más utilizados del mundo. Las últimas cifras publicadas son del mes de enero de 2016 pero nos sirven para hacernos una idea bastante actualizada de la situación actual de este mercado. Los datos se obtienen desde GitHub y Stack Overflow. El ranking es el siguiente: 1. JavaScript 2. Java 3. PHP 4. Python 5. C# 6. C++ 7. Ruby 8. CSS 9. C 10. Objective-C 11. Shell 12. Perl 13. R 14. Scala 15. Go 16. Haskell 17. Swift 18. Matlab


19. Clojure 20. Groovy 21. Visual Basic Podemos consultar otras fuentes pero las 5 o 6 primeras posiciones se mantienen con los mismos lenguajes de programación aunque los podamos encontrar en otro orden. Por ejemplo, TIOBE, compañía dedicada a la calidad del software, nos ofrece esta clasificación actualizada a junio de 2016 junto con su porcentaje de uso: 1. Java – 20.794% 2. C – 12.376% 3. C++ – 6.199% 4. Python – 3.900% 5. C# – 3.786% 6. PHP – 3.227% 7. JavaScript – 2.583% 8. Perl – 2.395% 9. Visual Basic .NET – 2.353% 10. Ruby – 2.336% 11. Visual Basic – 2.254% 12. Ensamblador – 2.119% 13. Delphi/Object Pascal – 1.939% 14. Swift – 1.831% 15. Objective-C – 1.704% 16. R – 1.540% 17. MATLAB – 1.447% 18. PL/SQL – 1.346% 19. D – 1.063% 20. COBOL – 1.048% Además, nos muestra una gráfica de evolución de los lenguajes de programación más utilizados desde el año 2002. Esto nos permite ver la supremacía de Java o la caída de C en los últimos años, además de la irrupción de nuevos lenguajes que han ganado una buena cuota de mercado en los últimos años:


¿Cuál es el más demandado? ¿Cuál debería aprender? El desarrollo Java aparece entre las 25 competencias más importantes que las empresas piden a sus candidatos para optar a uno de sus puestos según un informe anual de LinkedIn. Además, muchas de las habilidades requeridas están relacionadas con competencias tecnológicas, poniendo de manifiesto la necesidad de una educación más enfocada a todas estas áreas. Aunque podemos extrapolar los datos de los lenguajes más utilizados a los más demandados y por tanto, los más recomendados para aprender, vamos a basarnos en los datos publicados por Indeed.com, una plataforma de búsqueda de trabajo sobre los lenguajes más requeridos en las ofertas. El ranking de este portal de empleo es el siguiente: 1. SQL 2. Java 3. Javascript 4. C# 5. Python 6. C++ 7. PHP 8. iOS (Objective-C/Swift) 9. Ruby/Rails El siguiente gráfico nos muestra el gráfico ordenado por la cantidad de ofertas que piden ese lenguaje en concreto:


¿Y qué pasa en España? Todos los ranking que hemos puesto anteriormente se realizan con datos de todo el mundo mostrando las principales tendencias del planeta en materia de programación. Sin embargo, gracias a Trendyskills vamos a ver exactamente la situación en España con respecto a los diferentes lenguajes, las ofertas de trabajo y demás aspectos relacionados con este mercado. Buscando datos para nuestro país desde el 1 de enero de este año, vemos como Java se alza con un 25% de la popularidad seguido de Javascript con un 18%. Os dejamos una captura de la gráfica donde se ven los 10 lenguajes más populares en España desde principios de año en las ofertas de trabajo.


En relación con el salario percibido por cada uno de los empleos, vemos como ABAP (Advanced Business Application Programming), un lenguaje propiedad de SAP que se utiliza para programar la mayoría de sus productos, se coloca como uno de los mejores pagados con el mismo porcentaje que Javascript. De nuevo, os dejamos el gráfico para que saquéis vuestras propias conclusiones.

Entonces, ¿qué lenguaje aprendo?


Una interesante infografía de Who is Hosting This nos aclara algunas dudas sobre el lenguaje que debemos aprender. A modo de resumen, nos explican que el más fácil de aprender es Python, el más potente es C++ y el que seguirá siendo muy utilizado a 10 años vista es Java. Por objetivos, si queremos trabajar en el mercado de las webs, debemos aprender HTML, CSS y Javascript, en el mercado de los datos PHP, Python o Ruby mientras que Objective-C, Java o C++ serán clave para el desarrollo de aplicaciones móviles.

Una breve descripción de los lenguajes operativos más utilizados

1. Java Reconocido por su legibilidad y simplicidad, Java es uno de los lenguajes de programación más adoptados: más 9 millones de desarrolladores lo usan y está presente en 7 mil millones de dispositivos en todo el mundo. Su enorme popularidad se debe a su poder de permanencia, cuestión que asegura el funcionamiento a largo plazo de las aplicaciones que lo utilizan. Asimismo, cabe destacar que el manejo de Java está incluido dentro de las 20 habilidades más valoradas por los empleadores en 2016, según un estudio elaborado por LinkedIn. ¿Te gustaría saber más? Conocé 4 cursos online gratuitos para que aprendas a programar en Java y comenzá a estudiar hoy mismo.

2. C Creado entre 1969 y 1972 en los Laboratorios Bell, es uno de los más utilizados en el mundo. Si bien es ejecutado en la mayoría de los sistemas operativos, es de propósito general, con lo cual es muy flexible. Es muy utilizado para el desarrollo de aplicaciones de escritorio, como el popular editor gráfico GIMP.

3. C++ Conocido por el nombre “C Plus Plus”, este lenguaje de programación orientado a objetos surge como una continuación y ampliación del C. Hay una gran cantidad de programas escritos en C++, como por ejemplo los paquetes de Adobe.

4. C#


También llamado “C Sharp”, este lenguaje de programación orientado a objetos fue desarrollado en el año 2000 por Microsoft para ser empleado en una amplia gama de aplicaciones empresariales ejecutadas en el framework .NET. C Sharp es una evolución del C y C++ que se destaca por su sencillez y modernidad.

5. Python Un lenguaje de programación multiplataforma y multiparadigma, que también es de propósito general. Esto significa que soporta la orientación a objetos, la programación imperativa y funcional. Su simpleza, legibilidad y similitud con el idioma Inglés lo convierten en un gran lenguaje ideal para principiantes.

6. PHP Creado en 1994 por el programador canadiende Rasmus Lerdorf, nunca pretendió ser un lenguaje de programación, sino que fue creado con la intención de contar con un conjunto de herramientas para el mantenimiento de las páginas web . Es de fácil acceso para nuevos programadores y a su vez ofrece a los más experientes muchas posibilidades.

7. Visual Basic. NET Una gran cantidad de personas a lo largo del mundo que trabajan con Visual Basic.net. Muchas personas que no cuentan con conocimientos profundos como desarrolladores, encuentran en visual basic, además de una sintaxis sencilla, la posibilidad de automatizar sus propios procesos y crear sus propias apliacaciones web. Es visto como uno de los lenguajes más amigables para los que recién comienzan, sobre todo a comparación de C#.

8. Perl Creado Larry Wall, Pearl es una sigla que significa Practical Extraction and Report Language. Es un lenguaje de propósito general que sirve practicamente para todo, como puede ser la generación y tratamiento de ficheros, para analizar datos y textos, y muchas otras cosas más. Si bien hay proyectos complejos y completos escritos en Pearl, son los menos. Si te interesa aprender más de este lenguaje, visita este curso gratuito de Udemy para principiantes.

9. JavaScript


Antes que nada, no confundir con Java. Son lenguajes distintos. Javascript es un lenguaje de programación que puede ser utilizado para crear programas que luego son acoplados a una página web o dentro de programas más grandes. Sirve para crear efectos y realizar acciones interactivas. Podemos ver funcionando este lenguaje en servicios como el chat, calculadoras, buscadores de información y un sin fin de utilidades más.

10. Delphi/Object Pascal Delphi es un entorno de desarrollo de software que se creó con el propósito de agilizar la creación de programas a partir de algo más visual. Es muy versátil y utiliza el lenguaje de programación Object Pascal, que no es más que la la evolución del lenguaje Pascal creado por Apple Computer. Se puede utilizar casi que para cualquier proyecto, ya sea servicios de sistemas operativos, para aplicaciones visuales o aplicaciones de consolas.

2. INSTALACIÓN Y ARRANQUE 2.1 Consideraciones previas Cómo bootear una USB 1. les traigo como hacer booteable una memoria USB 1. Insertamos la memoria USB y abrimos una ventana en DOS. Para esto damos click en "INICIO" luego en "EJECUTAR" y hay digitamos "cmd" (sin las comillas) apretamos ENTER. 2. En la ventana DOS (ventana negra) escribimos "Diskpart" (siempre y en adelante sin comillas) apretamos ENTER. 3. A continuacion escribimos "List Disk" apretamos ENTER. 4. Allí nos ha aparecido una lista de "Discos" disponibles clasificados por números (Disco 0, Disco 1, Disco 2, etc) Tenemos que fijarnos cuál es nuestra memoria USB. En la imagen tengo una memoria de 4gb (3853mb) que vendría a ser el Disco 5. Entonces a continuación tecleamos "Select Disk 5" (cinco al final porque la memoria del ejemplo está clasificado como Disco 5 pero ustedes tienen que poner el número que corresponda) apretamos ENTER.


5. Luego digitamos "clean" apretamos ENTER y esperamos dos segundos. 6. Luego digitamos "create partition primary" apretamos ENTER. 7. Luego digitamos "active" apretamos ENTER. 8. A continuacion digitamos "format fs=fat32 quick" apretamos ENTER. Ahi va empezar a formatear la USB, hay que esperar que termine al 100%. Nos queda asi: 9. Luego tecleamos "assign" apretamos ENTER. 10. Por último y para salir, digitamos "exit" apretamos ENTER y luego otra vez "exit" y ya tenemos nuestra memoria booteable. Lo único que queda por hacer es arrastrar a la memoria USB todos los archivos que componen el programa (o el windows) que queremos bootear[/align] 2.1.1 Estructura de un programa y reglas sintácticas Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados 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 expresaralgoritmos 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 (de ser necesario) 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 estructurar 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.

CONCEPTO DE PROGRAMA: Un programa es un conjunto de instrucciones que al ser ejecutadas resuelven un problema. Un programa tiene 3 partes: Entrada de datos: Normalmente se va a ejecutar a través de instrucciones de lectura, y en lo que se le pide al usuario la información que el programa va a necesitar para ejecutarse y se hace a través de lecturas. Acciones de un algoritmo: Parte en la que se resuelve el problema usando los datos de entrada. Salida: Mostrar en un dispositivo de salida los resultados de las acciones anteriormente realizadas. Son acciones de escritura. En la parte de las acciones a ejecutar se distinguirán dos partes:


Declaración de variables.

Instrucciones del programa.

INSTRUCCIONES Y TIPOS: Para que una instrucción se ejecute tiene que ser llevada a memoria. En cuanto al orden de ejecución de las instrucciones, el programa puede ser de dos tipos: 

Programas lineales: Se va ejecutando una instrucción más otra y el orden de ejecución es igual al orden de escritura.

Programas no lineales: Las instrucciones no se ejecutan en el mismo orden en el que aparecen escritas, sino que se realizan saltos que nos mandan de unas instrucciones a otras.

Nunca se deben hacer saltos no lineales.

Tipos de instrucciones: fin.

a otra instrucción que no es la siguiente. Bifurcación incondicional: El salto se produce siempre que el programa vaya a esa instrucción: Goto Ir a.

dependiendo del valor devuelto al evaluar una condición. Es la que vamos a usar.

ELEMENTOS BÁSICOS DE UN PROGRAMA:


¿Qué es la sintaxis de un lenguaje?: Conjunto de reglas que tenemos que seguir a la hora de escribir un programa en ese lenguaje tal que si no seguimos esas reglas de sintaxis el compilador da errores. Elementos del lenguaje de programación: Palabras reservadas: Son un conjunto de palabras especiales que nos sirven para definir la estructura del programa, y solo se pueden usar para el fin para el que están reservadas. Identificadores: Son los nombres que aparecen en el programa dados por el usuario. Son por tanto los nombres de variables, de constantes, de subprogramas y nombres de tipos creados por el usuario. Caracteres especiales: Sirven como separadores entre sentencias, por ejemplo el ;. Instrucciones: De 3 tipos, secuenciales, repetitivas y selectivas, y pueden aparecer elementos especiales (bucles, contadores, interruptores y acumuladores). 

Bucle: Un conjunto de instrucciones que se repiten un número finito de veces. Lleva asociado aparte de las instrucciones una condición que es la que determina cuando se termina un bucle. Ejecución de un bucle (iteración). Los bucles se pueden anidar unos dentro de otros, y puede haber varios bucles al mismo nivel, pero nunca se entrelazan.

Contador: Un elemento cuyo valor se incrementa o decrementa en un valor constante en cada iteración de un bucle, y se utiliza para controlar la condición del bucle.

Acumulador: Es una variable que también se suele usar en los bucles y que se incrementa o decrementa en cada iteración del bucle, pero no en una cantidad constante.

Reglas sintácticas 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: expresión ::= átomo | lista átomo ::= número | símbolo número ::= [+-]? ['0'-'9']+ símbolo ::= ['A'-'Z'] ['a'-'z'].* lista ::= '(' expresión* ')' Con esta gramática se especifica lo siguiente: 

una expresión puede ser un átomo o una lista;

un átomo puede ser un número o un símbolo;

un número es una secuencia continua de uno o más dígitos decimales, precedido opcionalmente por un signo más o un signo menos;

un símbolo es una letra seguida de cero o más caracteres (excluyendo espacios); y

una lista es un par de paréntesis que abren y cierran, con cero o más expresiones en medio.

Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramática:


'12345', '()', '(a b c232 (1))' No todos los programas sintácticamente correctos son semánticamente correctos. Muchos programas sintácticamente correctos tienen inconsistencias con las reglas del lenguaje; y pueden (dependiendo de la especificación del lenguaje y la solidez de la implementación) resultar en un error de traducción o ejecución. En algunos casos, tales programas pueden exhibir un comportamiento indefinido. Además, incluso cuando un programa está bien definido dentro de un lenguaje, todavía puede tener un significado que no es el que la persona que lo escribió estaba tratando de construir. Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle significado a una oración gramaticalmente válida o la oración puede ser falsa: 

"Las ideas verdes y descoloridas duermen furiosamente" es una oración bien formada gramaticalmente pero no tiene significado comúnmente aceptado.

"Juan es un soltero casado" también está bien formada gramaticalmente pero expresa un significado que no puede ser verdadero.

El siguiente fragmento en el lenguaje C es sintácticamente correcto, pero ejecuta una operación que no está definida semánticamente (dado que p es un apuntador nulo, las operaciones p->real y p->im no tienen ningún significado): complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im); Si la declaración de tipo de la primera línea fuera omitida, el programa dispararía un error de compilación, pues la variable "p" no estaría definida. Pero el programa sería sintácticamente correcto todavía, dado que las declaraciones de tipo proveen información semántica solamente. La gramática necesaria para especificar un lenguaje de programación puede ser clasificada por su posición en la Jerarquía de Chomsky. La sintaxis de la mayoría de los lenguajes de programación puede ser especificada utilizando una gramática Tipo-2, es decir, son gramáticas libres de contexto. Algunos lenguajes, incluyendo a Perl y a Lisp, contienen construcciones que permiten la ejecución durante la fase de análisis. Los lenguajes que permiten construcciones que permiten al programador alterar el comportamiento de un analizador hacen del análisis de la sintaxis un problema sin decisión única, y generalmente oscurecen la separación entre análisis y ejecución. En contraste con el sistema de macros de Lisp y los


bloques BEGIN de Perl, que pueden tener cálculos generales, las macros de C son meros reemplazos de cadenas, y no requieren ejecución de código. Semántica estática[editar] La semántica estática define las restricciones sobre la estructura de los textos válidos que resulta imposible o muy difícil expresar mediante formalismos sintácticos estándar. Para los lenguajes compilados, la semántica estática básicamente incluye las reglas semánticas que se pueden verificar en el momento de compilar. Por ejemplo el chequeo de que cada identificador sea declarado antes de ser usado (en lenguajes que requieren tales declaraciones) o que las etiquetas en cada brazo de una estructura case sean distintas. Muchas restricciones importantes de este tipo, como la validación de que los identificadores sean usados en los contextos apropiados (por ejemplo no sumar un entero al nombre de una función), o que las llamadas a subrutinas tengan el número y tipo de parámetros adecuado, puede ser implementadas definiéndolas como reglas en una lógica conocida como sistema de tipos. Otras formas de análisis estáticos, como los análisis de flujo de datos, también pueden ser parte de la semántica estática. Otros lenguajes de programación como Java y C# tienen un análisis definido de asignaciones, una forma de análisis de flujo de datos, como parte de su semántica estática. Sistema de tipos[editar] Artículo principal: Sistema de tipos Un sistema de tipos define la manera en la cual un lenguaje de programación clasifica los valores y expresiones en tipos, cómo pueden ser manipulados dichos tipos y cómo interactúan. El objetivo de un sistema de tipos es verificar y normalmente poner en vigor un cierto nivel de exactitud en programas escritos en el lenguaje en cuestión, detectando ciertas operaciones inválidas. Cualquier sistema de tipos decidible tiene sus ventajas y desventajas: mientras por un lado rechaza muchos programas incorrectos, también prohíbe algunos programas correctos aunque poco comunes. Para poder minimizar esta desventaja, algunos lenguajes incluyen lagunas de tipos, conversiones explícitas no verificadas que pueden ser usadas por el programador para permitir explícitamente una operación normalmente no permitida entre diferentes tipos. En la mayoría de los lenguajes con tipos, el sistema de tipos es usado solamente para verificar los tipos de los programas, pero varios lenguajes, generalmente funcionales, llevan a cabo lo que se conoce como inferencia de tipos, que le quita al programador la tarea de especificar los tipos. Al diseño y estudio formal de los sistemas de tipos se le conoce comoteoría de tipos. Lenguajes tipados versus lenguajes no tipados[editar]


El texto que sigue es una traducción defectuosa. Si quieres colaborar con Wikipedia, busca el artículo original y mejora esta traducción. Copia y pega el siguiente código en la página de discusión del autor: {{subst:Aviso mal traducido|Lenguaje de programación}} ~~~~ Se dice que un lenguaje tiene tipos si la especificación de cada operación define tipos de datos para los cuales la operación es aplicable, con la implicación de que no es aplicable a otros tipos. Por ejemplo, "este texto entre comillas" es una cadena. En la mayoría de los lenguajes de programación, dividir un número por una cadena no tiene ningún significado. Por tanto, la mayoría de los lenguajes de programación modernos rechazaran cualquier intento de ejecutar dicha operación por parte de algún programa. En algunos lenguajes, estas operaciones sin significado son detectadas cuando el programa es compilado (validación de tipos "estática") y son rechazadas por el compilador, mientras en otros son detectadas cuando el programa es ejecutado (validación de tipos "dinámica") y se genera una excepción en tiempo de ejecución. Un caso especial de lenguajes de tipo son los lenguajes de tipo sencillo. Estos son con frecuencia lenguajes de marcado o de scripts, como REXX o SGML, y solamente cuentan con un tipo de datos; comúnmente cadenas de caracteres que luego son usadas tanto para datos numéricos como simbólicos. En contraste, un lenguaje sin tipos, como la mayoría de los lenguajes ensambladores, permiten que cualquier operación se aplique a cualquier dato, que por lo general se consideran secuencias de bits de varias longitudes. Lenguajes de alto nivel sin datos incluyen BCPL y algunas variedades de Forth. En la práctica, aunque pocos lenguajes son considerados con tipo desde el punto de vista de la teoría de tipos (es decir, que verifican o rechazan todas las operaciones), la mayoría de los lenguajes modernos ofrecen algún grado de manejo de tipos. Si bien muchos lenguajes de producción proveen medios para brincarse o subvertir el sistema de tipos. Tipos estáticos versus tipos dinámicos[editar] El texto que sigue es una traducción defectuosa. Si quieres colaborar con Wikipedia, busca el artículo original y mejora esta traducción.


Copia y pega el siguiente código en la página de discusión del autor: {{subst:Aviso mal traducido|Lenguaje de programación}} ~~~~ En lenguajes con tipos estáticos se determina el tipo de todas las expresiones antes de la ejecución del programa (típicamente al compilar). Por ejemplo, 1 y (2+2) son expresiones enteras; no pueden ser pasadas a una función que espera una cadena, ni pueden guardarse en una variable que está definida como fecha. Los lenguajes con tipos estáticos pueden manejar tipos explícitos o tipos inferidos. En el primer caso, el programador debe escribir los tipos en determinadas posiciones textuales. En el segundo caso, el compilador infiere los tipos de las expresiones y las declaraciones de acuerdo al contexto. La mayoría de los lenguajes populares con tipos estáticos, tales como C++, C# y Java, manejan tipos explícitos. Inferencia total de los tipos suele asociarse con lenguajes menos populares, tales como Haskell y ML. Sin embargo, muchos lenguajes de tipos explícitos permiten inferencias parciales de tipo; tanto Java y C#, por ejemplo, infieren tipos en un número limitado de casos. Los lenguajes con tipos dinámicos determinan la validez de los tipos involucrados en las operaciones durante la ejecución del programa. En otras palabras, los tipos están asociados con valores en ejecución en lugar de expresiones textuales. Como en el caso de lenguajes con tipos inferidos, los lenguajes con tipos dinámicos no requieren que el programador escriba los tipos de las expresiones. Entre otras cosas, esto permite que una misma variable se pueda asociar con valores de tipos distintos en diferentes momentos de la ejecución de un programa. Sin embargo, los errores de tipo no pueden ser detectados automáticamente hasta que se ejecuta el código, dificultando la depuración de los programas, no obstante, en lenguajes con tipos dinámicos se suele dejar de lado la depuración en favor de técnicas de desarrollo como por ejemplo BDD yTDD. Ruby, Lisp, JavaScript y Python son lenguajes con tipos dinámicos. Tipos débiles y tipos fuertes[editar] Los lenguajes débilmente tipados permiten que un valor de un tipo pueda ser tratado como de otro tipo, por ejemplo una cadena puede ser operada como un número. Esto puede ser útil a veces, pero también puede permitir ciertos tipos de fallas que no pueden ser detectadas durante la compilación o a veces ni siquiera durante la ejecución.


Los lenguajes fuertemente tipados evitan que pase lo anterior. Cualquier intento de llevar a cabo una operación sobre el tipo equivocado dispara un error. A los lenguajes con tipos fuertes se les suele llamar de tipos seguros. Lenguajes con tipos débiles como Perl y JavaScript permiten un gran número de conversiones de tipo implícitas. Por ejemplo en JavaScript la expresión 2 * x convierte implícitamente x a un número, y esta conversión es exitosa inclusive cuando x es null, undefined, un Array o una cadena de letras. Estas conversiones implícitas son útiles con frecuencia, pero también pueden ocultar errores de programación. Las características de estáticos y fuertes son ahora generalmente consideradas conceptos ortogonales, pero su trato en diferentes textos varia. Algunos utilizan el término de tipos fuertes para referirse a tipos fuertemente estáticos o, para aumentar la confusión, simplemente como equivalencia de tipos estáticos. De tal manera que C ha sido llamado tanto lenguaje de tipos fuertes como lenguaje de tipos estáticos débiles.

2.2 Pasos de instalación 2.4 Configuración Configurar BIOS, bootear/arrancar desde USB o CD Cuando tienen que instalar un Sistema Operativo (SO) obligatoriamente deben hacer que la PC arranque primero desde la unidad de CD/DVD o USB, dado que en una de esas unidades se encontrará el instalador de nuestro SO así que es lo primero que la PC debe leer, de hecho no solo hacemos esto cuando tenemos que instalar un SO, también hacemos esto cuando queremos probar una distro de Linux y entre otros usos que se le pueda dar a esta configuración de arranque de nuestro PC. Hay que aclarar que hay PC’s que no dan la opción para arrancarlas desde USB (mayormente se ve este caso en PC antiguas), para solucionar este problema podríamos usar PloP Boot Manager (aquí un tutorial de como usarlo), esta aplicación nos permitirá poder arrancar el PC desde un USB en caso la BIOS de nuestra PC no lo permita, la aplicación creará una opción antes de que arranque el SO, es decir que podemos elegir arrancar desde el USB y con eso tenemos el problema resuelto.


Otro punto a aclarar es que la configuración a la BIOS puede que no sea igual en tu caso, puesto que las interfaces no siempre son las mismas, pero entendiendo este procedimiento que describiré, creo que es suficiente para que te atrevas a configurar el arranque de la PC desde la BIOS, veras que no es nada complicado. Procedimiento para configurar BIOS y arrancar desde CD/DVD o USB Inmediatamente cuando enciendes el PC te aparece un mensaje que te indica que debes presionar una tecla para entrar a la configuración en placas actuales dice que presiones F2 (la tecla también varia en las PC’s, puede ser F1, o la tecla Supr (DEL)). Teclas de acceso a BIOS y a Boot Menu, por marcas Quisiera compartir una tabla que hace un tiempo vengo recopilando, y que puede ser útil, sobre todo para los técnicos. Es una lista de marcas de placas madre y notebooks/netbooks, con sus correspondientes teclas de acceso a la BIOS y alBoot Menu (menú de booteo). Vale aclarar que algunos equipos tienen deshabilitado el menú de booteo, por lo que primero se debe ingresar a la BIOS y habilitarlo para poder utilizar esta opción. Seguramente que faltan algunas marcas, pero iré completando a medida que vaya obteniendo la información.


Al presionar esa tecla nos llevará a la interfaz de la BIOS (vamos no se asusten, sin miedo) ahora buscamos algo que diga Boot o Arranque, en placas bastante antiguas dirá algo como “Advanced BIOS Features” (ahí debes dirigirte a Boot Sequence – un video para que comprendas mejor como se hace en estas placas antiguas), una vez estemos ya ubicados en esa sección es hora de empezar a indicarle quien es el que arrancará primero, es decir darle el la secuencia de como queremos que nuestro PC arranque (ejem: primero el CD-ROM, luego el USB, y después el Disco Duro). Para cambiar el orden podemos usar F5 y F6, en otros casos se debe dar Enter y seleccionar quién irá en esa posición.

Si se dan cuenta en la parte derecha hay un cuadro de ayuda que nos irá diciendo que teclas debemos usar, de igual manera en la parte inferior encontramos más usos de teclas.

Ayuda en Parte derecha

Ayuda en parte inferior Ahora unos pantallazos para que vean unos ejemplos de interfaces de configuración del Boot o arranque: configurar arranque bios

Arranque en placa Phoenix

IDE0 es mi disco duro lo puedo mover de posición con F5 y F6

Luego que han configurado las posiciones del disco duro, CD/DVD y USB presionan F10 para guardar los cambios y salir, en placas antiguas se da primero F10 para guardar cambios y luego ESC para salir. Tras esos pasos nuestra PC se reiniciará y si ya tenemos colocado el CD/DVD o USB que queremos que arranque, pues veremos que se iniciará desde ese dispositivo, si queremos que se inicie el disco duro, debemos quitar todo CD o


USB que se encuentre en nuestra PC, así de esa manera el sistema verá que no hay nada en esas unidades y pasará a iniciar el Disco Duro donde está nuestro Sistema Operativo, incluso si queremos podemos dejar esa configuración, no afectará en nada a menos que vea un CD o USB booteable colocado en el PC que se iniciará automáticamente, pero eso no es problema, basta con retirarlo.

En este tutorial vamos a explicar detalladamente los pasos a seguir para instalar Windows 7 en nuestro equipo. En él, instalaremos Windows 7 Ultimate 64 bits, pero el proceso de instalación para el resto de versiones de Windows 7 es similar. Requerimientos o requisitos del sistema: Deberemos tener una copia de Windows 7 y tendremos que cumplir los requerimientos mínimos del sistema:

Procesador de 1 GHz (de 32 bits o 64 bits)

1 GB de memoria RAM (para versiones de 32 bits), ó 2 GB de memoria RAM (para versiones de64 bits)

16 GB de espacio en el disco duro (para versiones de 32 bits), ó 20 GB de espacio en disco (para versiones de 64 bits)

Tarjeta gráfica con soporte DirectX 9 y con driver WDDM 1.0 o superior

Pero, si queremos utilizar el modo de compatibilidad con Windows XP en Windows 7 , se elevan los requerimientos mínimos a los siguientes: 

2 GB de memoria RAM

15 GB adicionales de espacio en disco duro

2.5 Arranque


Pasos previos a la instalación de Windows 7 Si tenemos/cumplimos todo lo anterior, entonces podremos pasar a comenzar a instalar el sistema operativo. Para ello, introduciremos el DVD o USB BUTEADO de Windows 7 y, si fuera necesario, deberemos cambiar en la BIOS el orden de arranque de dispositivos, para que se ejecute el programa de instalación de Windows 7 desde el DVD o USB.

2.4 Configuración Procedimiento para configurar BIOS y arrancar desde CD/DVD o USB Inmediatamente cuando enciendes el PC te aparece un mensaje que te indica que debes presionar una tecla para entrar a la configuración en placas actuales dice que presiones F2 (la tecla también varia en las PC’s, puede ser F1, o la tecla Supr (DEL)).

Pulsamos en el botón “Instalar ahora” , de forma que se iniciará el programa de instalación:


En la siguiente ventana, aceptamos los términos de licencia y pulsamos en “Siguiente” :

Ahora tendremos que elegir si queremos actualizar a Windows 7 desde una versión anterior de Windows ya instalada previamente, o si queremos realizar una instalación nueva. Recomendamos instalar desde cero en una partición vacía (sin datos existentes), eligiendo la opción “Personalizada”:


Particionamiento del disco duro Se nos preguntará en qué disco duro o partición queremos instalar Windows 7 . Aquí tenemos varias opciones: Si tenemos ya creada previamente una partición o si tenemos un espacio libre sin particionar y no queremos hacer particiones (se pueden crear particiones posteriormente), entonces seleccionamos el disco o partición donde se instalará Windows 7 , pulsamos en “Siguiente” y pasaremos directamente al apartado de instalación. En caso contrario, es decir, si queremos particionar el disco en este momento, entonces pulsaremos sobre “Opciones de unidad” : Pulsamos sobre “Nuevo” para crear una partición nueva en el espacio sin particionar:

Elegimos el tamaño de la nueva partición (en nuestro caso, creamos una partición de 30000 MB) y pulsamos en “Aplicar”:


Nos aparecerá la siguiente ventana, en la cual pulsaremos en “Aceptar:

Se habrá creado una partición del tamaño que hemos seleccionado, además de una partición reservada para Windows, de tamaño 100 MB: Para crear una nueva partición sobre el espacio restante sin particionar,


seleccionamos en la parte de arriba dicho espacio sin particionar, pulsamos en “Nuevo” e indicamos el tamaño de la nueva partición. Ahora, una vez creadas las particiones, no nos queda más que formatearlas. Para ello, seleccionamos una partición y pulsamos sobre “Formatear” sobre las particiones creadas. Una vez formateadas las particiones, seleccionamos aquella partición donde queramos instalar Windows 7 y pulsamos sobre “Siguiente”:

Instalación de Windows 7 De esta manera, el proceso de instalación de Windows 7 comienza:


Durante dicho proceso, se reiniciarรก el sistema varias veces. Tras los reinicios se iniciarรก de nuevo el asistente para proseguir con los pasos de la instalaciรณn. Deberemos ser pacientes, pues tardarรก un poco en instalar el sistema operativo:



En este momento, se nos pedirá un nombre de usuario y de equipo. Los escribimos y pulsamos en “Siguiente”:

Una vez escogido el nombre de usuario con el que nos conectaremos al sistema operativo, nos aparecerá una ventana para elegir la contraseña de nuestro usuario


, así como una frase o indicio de la contraseña para que Windows nos la muestre en caso de que se no olvidara. Rellenamos dichos datos y pulsamos en “Siguiente”:

Llegados a este punto, se nos pedirá la clave de producto de Windows. Si la tenemos, la escribimos y pulsamos en “Siguiente” . En caso de no tenerla, desmarcaremos la casilla “Activar Windows automáticamente cuando esté conectado” y pulsaremos en “Siguiente” , aunque deberemos introducirla en un periodo de 30 días si queremos seguir usando Windows 7 . No obstante, es importante indicar que este “periodo de gracia” se puede ampliar 90 días más, hasta los 120 días sin activación:


El programa de instalación nos pedirá que escojamos si queremos instalar solamente las actualizaciones de seguridad y las que Microsoft considere como importantes, o si queremos usar la configuración recomendada por Microsoft. Es importante saber que esta configuración se puede cambiar posteriormente una vez instalado Windows 7, por lo que no es crítica la elección que hagamos en este momento. Recomendamos escoger la opción “Instalar sólo las actualizaciones importantes”:


Escogeremos la fecha y hora del sistema, asĂ­ como la zona horaria en la que nos encontremos, y pulsamos en “Siguienteâ€?:


En este punto, tendremos que elegir la configuración de red que tendrá el sistema, dependiendo de dónde esté conectado. Elegimos la opción que más se ajuste a las características de nuestro sistema. En nuestro caso, elegimos “Red doméstica”

Ya estamos en la recta final de la instalación, pues habiendo escogido toda la configuración que deseamos, el programa de instalación de Windows 7 la pondrá en práctica:


2.6 Salida En este momento, ya hemos terminado la instalaciรณn y podemos ver la esperada pantalla del escritorio de Windows 7: y podemos retirar el USB o DVD, que hayamos utilizado para arrancar el BIOS.

NOTA: posteriormente podemos instalar los programas complementarios como son: office 2016, antivirus etc.


Como nota final, cabe indicar que la instalación limpia de Windows 7 Ultimate 64 bits (sin programas adicionales) que hemos realizado en este tutorial ocupa aproximadamente unos 13 GB ó 14 GB de espacio en el disco duro. Esperamos que este manual de instalación de Windows 7 os haya servido de ayuda. Si tenéis cualquier duda o problema relacionado con este sistema operativo, podéis exponerlo en el foro Windows 7 de ADSLZone.

3. Palabras reservadas y caracteres especiales

3.1 Palabras recervadas Las Palabras clave son palabras “reservadas” para utilizar dentro del lenguaje que tienen un significado especial y no pueden ser utilizadas como nombres de variables o identificadores (salvo que se fuerce mediante la utilización de corchetes “[ ] “). Rem: Nos permite incluir comentarios sobre el programa en medio del código, la sintaxis es: Rem Comentario Además, se puede conseguir lo mismo sin necesidad de escribir Rem, utilizando la comilla simple, es decir, la anterior orden es equivalente a: 'Comentario Observaremos como el editor de código reconoce los comentarios ya que les aplica como color del texto el verde.


Exit Sub: Nos permite acabar la ejecución del procedimiento en el que lo pongamos, y en punto del mismo donde se halle situado. End: Nos permite acabar la ejecución del programa en el punto del mismo donde se halle situado.

3.2 Caracteres especiales Las palabras reservadas de C, que no pueden ser definidas por el usuario son las que se listan en la Figura 4. También existen algunas otras que se han añadido en implementaciones posteriores. auto extern break float case for char goto const if continue int default long do register double return else short enum signed

sizeof static struct switch typedef union unsigned void volatile while

4. Tipos de datos 4.1 Datos elementales 4.1.1 Constantes def: 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): VolumenEsfera := 4/3 * 3.1416 * Radio * Radio * Radio; 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 = Max = Intervalo = N = (Max Min) Centro = (Max - Min) div 2;

div

0; 100; 10; Intervalo;

4.1.2 Variables

def: Una variable es un nombre asociado a un elemento de datos que está situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecución de un programa. Toda variable pertenece a un tipo de dato concreto. En la declaración de una variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una variable:   

Declaración Iniciación Utilización

Declaración de variables Esta es la primera fase en la vida de cualquier variable. La declaración se realiza en la sección que comienza con la palabra var. Si quieres más información, puedes ir al apartado que trata sobre la declaración de variables en el tema Estructura de un programa. Nota: Toda variable que vaya a ser utilizada en Pascal tiene que ser previamente declarada.


Iniciación de variables Esto no es más que darle un valor inicial a una variable. Así como lo primero que se hace con una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se hace para evitar posibles errores en tiempo de ejecución, pues una variable tiene un valor indeterminado después de declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables:  

Mediante una sentencia de asignación Mediante uno de los procedimientos de entrada de datos (read o readln)

Veamos un ejemplo que reúne los dos casos: begin ... i:=1; readln(n); while i < n do begin (* cuerpo del bucle *) i := i + 1 end; ... end.

Utilización de variables Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta un mayor abanico de posibilidades. A continuación tienes unas cuantas: 

Incrementar su valor: i := i + 1

Controlar un bucle: for i:=1 to 10 do ...

Chequear una condición: if i<10 then ...

Participar en una expresión: n := (Max - Min) div i


Y otras que ya irás descubriendo

Diferencias entre ambas

Después de haber visto cada una por separado, pasemos a explicar las diferencias que existen entre constantes y variables. A primera vista pudieran parecer conceptos similares, pero realmente son cosas muy distintas. Y esta distinción viene dada por la posibilidad que tienen las variables para cambiar de valor.

Principales diferencias:     

Las constantes ya reciben un valor inicial en su declaración Las variables primero se declaran, luego se inician, y luego se usan Las constantes, una vez declaradas mantienen su valor durante toda la ejecución del programa En cambio, las variables pueden cambiar su valor tantas veces como deseen Además de cambiar su valor, las variables también pueden cambiar de tamaño en tiempo de ejecución (punteros)

Nota: En el último punto se alude a las variables que cambian su tamaño. Como curiosidad saber que se denominan variables dinámicas o punteros, pero debido a su complejidad no son objeto de este tutorial. Todas las demás variables son estáticas y se tratarán las más significativas.

Ejemplo A continuación tienes un ejemplo con el que puedes interactuar para que repases algunos de los conceptos que se han tratado en este tema. En él puedes observar cómo se encuentran los valores de dos variables y una constante en varios puntos del programa. Nota: Debido a la última sentencia, el ejemplo no compilaría. Pero se incluye para que veas que no puedes cambiar el valor de una constante. 4.2 Estructura de datos 4.2.1 Internas Operaciones Con Arreglos Las operaciones en arreglos pueden clasificarse de la siguiente forma: • Lectura • Escritura • Asignación • Actualización • Ordenación • Búsqueda


a) LECTURA Este proceso consiste en leer un dato de un arreglo y asignar un valor a cada uno de sus componentes. La lectura se realiza de la siguiente manera: para i desde 1 hasta N haz x<--arreglo[i] b) ESCRITURA Consiste en asignarle un valor a cada elemento del arreglo. La escritura se realiza de la siguiente manera: para i desde 1 hasta N haz arreglo[i]<-x c) ASIGNACIÓN No es posible asignar directamente un valor a todo el arreglo, por lo que se realiza de la manera siguiente: para i desde 1 hasta N haz arreglo[i]<-algún_valor d) ACTUALIZACIÓN Dentro de esta operación se encuentran las operaciones de eliminar, insertar y modificar datos. Para realizar este tipo de operaciones se debe tomar en cuenta si el arreglo está o no ordenado.

5. Instrucciones asociadas a: 5.1 Operaciones primitivas Operaciones primitivas elementales. Son las acciones básicas que la computadora “sabe hacer”, y que se ejecutan sobre los datos para darles entrada, transformarlos y darles salida convertidos en información.

5.2 Estructuras de control Estructuras de control. Son las formas lógicas de funcionamiento de la computadora mediante las que se dirige el orden en que deben ejecutarse las instrucciones del programa. Las estructuras de control son: La secuenciación, que es la capacidad de ejecutar instrucciones secuenciales una tras otra. La selección es la capacidad de escoger o seleccionar si algo se ejecuta o no, optar por una de dos o más alternativas, y la repetición, que es la capacidad de realizar en más de una ocasión (es decir, varias veces) una acción o conjunto de acciones.

5.3 Operaciones aritméticas Una expresión es una combinación de constantes, variables, signos de operación, paréntesis y nombres especiales (nombres de funciones estándar), con un sentido unívoco y definido y de cuya evaluación resulta un único valor.


Toda expresión tiene asociada un tipo que se corresponde con el tipo del valor que devuelve la expresión cuando se evalúa, por lo que habrá tantos tipos de expresiones como tipos de datos. Habrá expresiones numéricas y lógicas.

Numéricas: Operadores aritméticos. Son los que se utilizan en las expresiones numéricas (una combinación de variables y/o constantes numéricas con operadores aritméticos y que al evaluarla devuelve un valor numérico. +, -, *, /. Operación resto: Lo que devuelve es el resto de una división entera. Mod: Pascal. 5 mod 3 = 2 %: C. División entera: Nos devuelve el cociente de una división entera (en la que no se sacan decimales). Div: Pascal. 5 div 3 = 1 \: C. Potencia: ^ 5^2. Todos estos operadores son binarios (el operador se sitúa en medio), el menos también puede ser unario (lleva un único operando) y significa signo negativo. Reglas de precedencia: El problema es cuando una expresión entera según como la evalué pueda dar diferentes valores. 7*3+4 25 49 La solución es aplicar prioridad entre los operadores, de modo que ante la posibilidad de usar varios siempre aplicaremos primero el de mayor prioridad. Cada lenguaje puede establecer sus propias reglas de prioridad o precedencia de operadores. Si no nos acordamos, siempre podemos poner ( ). 1ª) ^ 2ª) * / div mod 3ª) + -


Entre dos operaciones que tienen la misma precedencia para resolver la ambigüedad, hay que usar la regla de la asociatividad. La más normal es la de la asociatividad a izquierdas (primero lo de la izquierda). 5.4 Funciones matemáticas FUNCIONES INTERNAS: Son funciones matemáticas diferentes de las operaciones básicas pero que se incorporan al lenguaje y que se consideran estándar. Dependen del lenguaje. Normalmente se encuentran en la librería de matemáticas del lenguaje de programación. Fórmulas: Abs (x) Arctan (x) Cos (x) Sen (x) Exp (x) Ln (x) Log 10 (x) Redondeo (x) Trunc (x) Cuadrado (x) Raíz (x)

5.5 Manejo de caracteres JUEGO DE CARACTERES: En principio se programaba todo con 0 y 1, pero como esto costaba mucho, apareció la necesidad de crear un lenguaje semejante al humano para entendernos más fácilmente con la computadora, y para ello aparecen los juegos de caracteres. El juego de caracteres es una especie de alfabeto que usa la máquina. Hay 2 juegos de caracteres principales: 

ASCII: El que más se usa.


EBCDIC: Creado por IBM.

Hay 2 tipos de ASCII, el básico y el extendido. En el ASCII básico, cada carácter se codifica con 7 bits, por lo que existen 2^7=128 caracteres. En el ASCII extendido, cada carácter ocupa 8 bits (1 byte) por lo que existirán 2^8= 256 caracteres, numerados del 0 al 255. En el EBCDIC, cada carácter ocupa también 8 bits. En cualquiera de los 2 juegos, existen 4 tipos de caracteres: 

Alfabéticos: Letras mayúsculas y minúsculas.

Numéricos: Números.

Especiales: Todos los que no son letras y números, que vienen en el teclado.

Control: No son imprimibles y tienen asignados caracteres especiales. Sirven para determinar el fin de línea, fin de texto. Van del 128 al 255.

Un juego de caracteres es una tabla que a cada número tiene asociado un número. CADENA DE CARACTERES: Es un conjunto de 0 ó más caracteres. Entre estos caracteres puede estar incluido el blanco. En pseudocódigo, el blanco es el b. Las cadenas de caracteres se delimitan con dobles comillas “ “, pero en algunos lenguajes se delimitan con ` `. Las cadenas de caracteres se almacenan en posiciones contiguas de memoria. La longitud de una cadena es el número de caracteres de la misma. Si hubiese algún carácter que se utilizara como especial para señalar el fin de cadena, no se consideraría en la longitud. Si una cadena tiene longitud 0, la llamamos cadena nula por lo que no tiene ningún carácter, pero esto no quiere decir que no tenga ningún carácter válido, por que puede haber algún carácter especial no imprimible que forme parte de la cadena. Una subcadena es una cadena extraída de otra. DATOS DE TIPO CARÁCTER: Constantes: Una constante de tipo cadena es un conjunto de 0 o más caracteres encerrados entre “ “. Si dentro de la cadena quiero poner como parte de la cadena las “, las pongo 2 veces. Esto depende del lenguaje. “Hola””Adios” Hola”Adios


En algunos lenguajes hay un carácter de escape. En C, el carácter de escape es la \. Una constante de tipo carácter es un solo carácter encerrado entre comillas simples. de tipo cadena, el contenido de una variable de tipo cadena es un conjunto de 0 ó más caracteres encerrados entre “ “, mientras que una variable de tipo carácter es un solo carácter encerrado entre ` `.

6. Operadores 6.1 Matemáticos 6.2 De caracteres 6.3 Lógicos 6.4 Relacionales 6.5 Especiales 6.6 Orden de procedencia 6.6.1 Por categorías 6.6.2 Dentro de cada categoría




















7. Subprogramas


7.1 Tipos 7.1.1 Internos 7.1.2 Externos 7.2 Características 7.2.1 Estructura 7.2.2 Objetos 7.3 Reglas sintácticas 7.3.1 Declaración 7.3.2 Llamadas de ejecución 7.3.3 Parámetros o variables de enlace



8. Utilerías 8.1 Funciones 8.2 Estructuras 8.3 Archivos 8.4 Librerías UTILERIAS INFORMATICAS 1.- ¿QUE SON LAS UTILERÍAS INFORMÁTICAS? En informática, una utilidad es una herramienta que sirve de soporte para la construcción y ejecución de programas, en donde se incluyen las bibliotecas de sistema, middleware, herramientas de desarrollo, etc. 2.- TIPOS DE UTILERÍAS INFORMÁTICAS Ø DE SISTEMAS: Se ejecutan bajo el control del sistema operativo y se utilizan para preparar algunos recursos usados por el sistema. Son de uso interno


Ø DE ARCHIVOS: Manejan información de los archivos tales como imprimir, clasificar, copiar, etc. Ø INDEPENDIENTES: Realizar funciones que se relacionan con la iniciación de dispositivos de Entrada/Salida, carga del sistema operativo, etc. 3.- COMO FUNCIONAN LAS UTILERÍAS INFORMÁTICAS ¿QUÉ HACEN? Mejoran o agregan funciones al sistema operativo. ¿CÓMO LO HACEN? A través del sistema operativo modificando comandos, o creando los suyos. ¿PARA QUÉ SIRVEN? Para procesar la información. EJEMPLOS DE UTILERÍAS Utilidad de buscadores

v es una herramienta que permite al usuario encontrar un documento que contenga una determinada palabra o frase.

v página en Internet que permite buscar información a través de ella, bien sea tecleando nosotros mismos una serie de palabras clave, o bien empleando el sistema de menús que la página incorpora. Cada día ofrecen más servicios, entre los que se incluyen noticias, chats, etc., y se suelen llamar "portales".

IMAGENES DE UTILERIAS INFORMATICAS


9. Mensajes y Códigos de error 9.1 Tipos de error 9.2 Manejo y control de errores 9.3 Principales códigos de error CLASIFICACIÓN DE ERRORES. Los errores en un programa o algoritmo se pueden clasificar en distintos tipos. Atendiendo a los efectos que ocasionan se podría hablar de errores que impiden la ejecución de un programa y errores que no impiden la ejecución de un programa. Atendiendo al momento en que se producen podríamos hablar de errores de compilación y errores de ejecución. Lo vemos en forma de esquemas:

Atendiendo a los efectos que ocasionan:


Atendiendo al momento en que se producen:

Cuando una vez tenemos escrito el código del programa y ordenamos su ejecución, se produce una “lectura de interpretación” previa llamada compilación. Recordemos que el ordenador no interpreta directamente las órdenes que le damos sino que necesita una traducción. Si durante esa traducción se detecta un problema el programa no comienza a ejecutarse. Lo más habitual es que se detecten fallos de sintaxis, ciertos procesos no válidos e incluso errores lógicos tipo bucle infinito en algunas circunstancias. Si el programa no compila estamos obligados a realizar las correcciones oportunas antes de poder ejecutarlo. Durante la ejecución del programa pueden producirse errores previsibles porque se derivan del código o imprevisibles por ser su origen externo (entradas incorrectas de usuario, problemas con ficheros, etc.).


Un error de ejecución puede ser gestionado (vía detección o vía lógica) pero uno de compilación no. Atendiendo a la naturaleza del error los clasificaremos en:

Y según el tratamiento que reciben:

Por su facilidad de detección tendríamos:

Hay errores cuya clasificación no es sencilla. Por ejemplo, si al usuario se le pide un número entero durante la ejecución del programa, pero introduce uno real, se puede producir un error de ejecución por proceso no válido. Sin embargo, el trasfondo del error es lógico: el programa no está preparado para reaccionar ante una situación que es posible. A estos errores los llamaremos errores de fondo lógico.

10. Desarrollo de aplicaciones


10.1 Entrada y salida 10.2 Cálculo de área 10.3 Resolución de ecuación de segundo grado 10. 4 Ordenamiento alfabético Diseño y Desarrollo del Software Elaborado a partir de una idea inicial (idea-semilla), el diseño funcional constituye un primer guión del programa que pondrá el énfasis en los aspectos pedagógicos del proyecto: contenidos, objetivos, estrategia didáctica, etc. En caso de que se elabore por encargo o por iniciativa empresarial, este primer guión servirá para presentarlo al jefe del proyecto y a los clientes para que lo sometan a un test de oportunidad y determinen su conformidad o disconformidad con el diseño. En todo caso, el diseño funcional también podrá distribuirse a otros profesores, buenos conocedores de los alumnos a los que se dirige el material, para que aporten su opinión y sus sugerencias. 4.01 El Diseño de Software Se lo define como el proceso de aplicar ciertas técnicas y principios con el propósito de definir un dispositivo, un proceso o un Sistema, con suficientes detalles como para permitir su interpretación y realización física. La etapa del Diseño del Software encierra cuatro etapas: 1. Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para implementar el Software. 2. El diseño de los datos.- Define la relación entre cada uno de los elementos estructurales del programa. 3. El Diseño Arquitectónico.- Describe como se comunica el Software consigo mismo, con los sistemas que operan junto con el y con los operadores y usuarios que lo emplean. 4. El Diseño de la Interfaz. 5. El Diseño de procedimientos. El Diseño del software transforma elementos estructurales de la arquitectura del programa. La importancia del Diseño del Software se puede definir en una sola palabra Calidad, dentro del diseño es donde se fomenta la calidad del Proyecto. El Diseño es la única manera de materializar con precisión los requerimientos del cliente. El proceso de Diseño es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del Sistema a construir. A lo largo del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas:


1. El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acumular todos los requisitos implícitos que desea el cliente. Debe ser una guía que puedan leer y entender los que construyan elcódigo y los que prueban y mantienen el Software. 2. El Diseño debe proporcionar una completa idea de lo que es el Software, enfocando los dominios de datos, funcional y comportamiento desde el punto de vista de la Implementación. Para evaluar la calidad de una presentación del diseño, se deben establecer criterios técnicos para un buen diseño como son: 

Un diseño debe presentar una organización jerárquica que haga un uso inteligente del control entre los componentes del software.

El diseño debe ser modular, es decir, se debe hacer una partición lógica del Software en elementos que realicen funciones y subfunciones especificas.

Un diseño debe contener abstracciones de datos y procedimientos.

Debe producir módulos que presenten características de funcionamiento independiente.

Debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los módulos y el entorno exterior.

Debe producir un diseño usando un método que pudiera repetirse según la información obtenida durante el análisis de requisitos de Software.

Estos criterios no se consiguen por casualidad. El proceso de Diseño del Software exige buena calidad a través de la aplicación de principios fundamentales de Diseño, Metodología sistemática y una revisión exhaustiva. Cuando se va a diseñar un Sistema de Computadoras se debe tener presente que el proceso de un diseño incluye, concebir y planear algo en la mente, así como hacer un dibujo o modelo o croquis. Diseño de la Salida.- En este caso salida se refiere a los resultados e informaciones generadas por el Sistema, Para la mayoría de los usuarios la salida es la única razón para el desarrollo de un Sistema y la base de evaluación de su utilidad. Sin embargo cuando se realiza un sistema, como analistas deben realizar lo siguiente: 1. Determine que información presentar. Decidir si la información será presentada en forma visual, verbal o impresora y seleccionar el medio de salida. 2. Disponga la presentación de la información en un formato aceptable. 3. Decida como distribuir la salida entre los posibles destinatarios. Diseño de Archivos.- Incluye decisiones con respecto a la naturaleza y contenido del propio archivo, como si se fuera a emplear para guardar detalles de las


transacciones, datos históricos, o información de referencia. Entre las decisiones que se toman durante el diseño de archivos, se encuentran las siguientes: 

Los datos que deben incluirse en el formato de registros contenidos en el archivo.

La longitud de cada registro, con base en las características de los datos que contenga.

La secuencia a disposición de los registros dentro del archivo (La estructura dealmacenamiento que puede ser secuencial, indexada o relativa).

No todos los sistemas requieren del diseño de todos los archivos, ya que la mayoría de ellos pueden utilizar los del viejo Sistema y solo tenga que enlazarse el nuevo Sistema al Archivo maestro donde se encuentran los registros. Diseño de Interacciones con la Base de Datos.- La mayoría de los sistemas de información ya sean implantado en sistemas de cómputos grandes o pequeños, utilizan una base de datos que pueden abarcar varias aplicaciones, por esta razón estos sistemas utilizan u administrador de base de datos, en este caso el diseñador no construye la base de datos sino que consulta a su administrador para ponerse de acuerdo en el uso de esta en el sistema. 4.01.01 Herramientas para el Diseño de Software Las herramientas para el diseño del software, apoyan el proceso de formular las características que el sistema debe tener para satisfacer los requerimientos detectados durante las actividades del análisis: Herramientas de especificación.- Apoyan el proceso de formular las características que debe tener una aplicación, tales como entradas, Salidas, procesamiento y especificaciones de control. Muchas incluyen herramientas para crear especificaciones de datos. Herramientas para presentación.- Se utilizan para describir la posición de datos, mensajes y encabezados sobre las pantallas de las terminales, reportes y otrosmedios de entrada y salida. Herramientas para el desarrollo de Sistemas.- Estas herramientas nos ayudan como analistas a trasladar diseños en aplicaciones funcionales. Herramientas para Ingeniería de Software.- Apoyan el Proceso de formular diseños de Software, incluyendo procedimientos y controles, así como la documentación correspondiente. Generadores de códigos.- Producen el código fuente y las aplicaciones a partir de especificaciones funcionales bien articuladas. Herramientas para pruebas.- Apoyan la fase de la evaluación de un Sistema o de partes del mismo contra las especificaciones. Incluyen facilidades para examinar la


correcta operación del Sistema así como el grado de perfección alcanzado en comparación con las expectativas. 4.02 El desarrollo de Software Es un conjunto o disposición de procedimientos o programas relacionados de manera que juntos forman una sola unidad. Un conjunto de hechos, principios y reglas clasificadas y dispuestas de manera ordenada mostrando un plan lógico en la unión de las partes. Un método, plan o procedimiento de clasificación para hacer algo. También es un conjunto o arreglo de elementos para realizar un objetivo predefinido en el procesamiento de la Información. Esto se lleva a cabo teniendo en cuenta ciertos principios: 

Debe presentarse y entenderse el dominio de la información de un problema.

Defina las funciones que debe realizar el Software.

Represente el comportamiento del acontecimientos externos.

Divida en forma jerárquica los modelos que representan la información, funciones y comportamiento.

software

a

consecuencias

de

El proceso debe partir desde la información esencial hasta el detalle de la Implementación. La función del Análisis puede ser dar soporte a las actividades de un negocio, o desarrollar un producto que pueda venderse para generar beneficios. Para conseguir este objetivo, un Sistema basado en computadoras hace uso de seis (6) elementos fundamentales: 

Software, que son Programas de computadora, con estructuras de datos y sudocumentación que hacen efectiva la logística metodología o controles de requerimientos del Programa.

Hardware, dispositivos electrónicos y electromecánicos, que proporcionan capacidad de cálculos y funciones rápidas, exactas y efectivas (Computadoras, Censores, maquinarias, bombas, lectores, etc.), que proporcionan una función externa dentro de los Sistemas.

Personal, son los operadores o usuarios directos de las herramientas del Sistema.

Base de Datos, una gran colección de informaciones organizadas y enlazadas al Sistema a las que se accede por medio del Software.

Documentación, Manuales, formularios, y otra información descriptiva que detalla o da instrucciones sobre el empleo y operación del Programa.

Procedimientos, o pasos que definen el uso especifico de cada uno de los elementos o componentes del Sistema y las reglas de su manejo ymantenimiento.


Para el desarrollo de software hay que realizar un Análisis de Sistema que se lleva a cabo teniendo en cuenta los siguientes objetivos en mente: 

Identifique las necesidades del Cliente.

Evalúe que conceptos tiene el cliente del sistema para establecer su viabilidad.

Realice un Análisis Técnico y económico.

Asigne funciones al Hardware, Software, personal, base de datos, y otros elementos del Sistema.

Establezca las restricciones de presupuestos y planificación temporal.

Cree una definición del sistema que forme el fundamento de todo el trabajo de Ingeniería.

Para lograr estos objetivos se requiere tener un gran conocimiento y dominio del Hardware y el Software, así como de la Ingeniería humana (Manejo y Administración de personal), y administración de base de datos. En el primer paso del análisis del desarrollo del software, el desarrollador se reúne con el cliente y/o usuario (un representante institucional, departamental o cliente particular), e identifican las metas globales, se analizan las perspectivas del cliente, sus necesidades y requerimientos, sobre la planificación temporal y presupuestal, líneas de mercadeo y otros puntos que puedan ayudar a la identificación y desarrollo del proyecto. Algunos autores suelen llamar a esta parte “Análisis de Requisitos¨ y lo dividen en cinco partes: 

Reconocimiento del problema.

Evaluación y Síntesis.

Modelado.

Especificación.

Revisión

Antes de su reunión con el desarrollador, el cliente prepara un documento conceptual del proyecto, aunque es recomendable que este se elabore durante lacomunicación Cliente – analista, ya que de hacerlo el cliente solo de todas maneras tendría que ser modificado, durante la identificación de las necesidades. El segundo paso del análisis del desarrollo del software, es la Viabilidad que muchas veces cuando se emprende el desarrollo de un proyecto de Sistemas los recursos y el tiempo no son realistas para su materialización sin tener perdidas económicas y frustración profesional. La viabilidad y el análisis de riesgos están relacionados de muchas maneras, si el riesgo del proyecto es alto, la viabilidad de producir software


de calidad se reduce, sin embargo se deben tomar en cuenta cuatro áreas principales de interés: 

Una evaluación los ingresosnetos desarrollado.

Viabilidad económica.- Un estudio de funciones, rendimiento y restricciones que puedan afectar la realización de un sistema aceptable.

Viabilidad Técnica.

Viabilidad Legal.- Es determinar cualquier posibilidad de infracción, violación oresponsabilidad legal en que se podría incurrir al desarrollar el Sistema.

de los costos de desarrollo, comparados con o beneficios obtenidos del producto o Sistema

Esta viabilidad incluye lo que llamamos, el análisis de costo – beneficio, significa una valoración de la inversión económica comparado con los beneficios que se obtendrán en la comercialización y utilidad del producto o sistema. Muchas veces en el desarrollo de Sistemas de Computación estos son intangibles y resulta un poco dificultoso evaluarlo, esto varía de acuerdo a las características del Sistema. El análisis de costo – beneficio es una fase muy importante de ella depende la posibilidad de desarrollo del Proyecto. En el Análisis Técnico, el Analista evalúa los principios técnicos del Sistema y al mismo tiempo recoge información adicional sobre el rendimiento, fiabilidad, características de mantenimiento y productividad. Los resultados obtenidos del análisis técnico son la base para determinar sobre si continuar o abandonar el proyecto, si hay riesgos de que no funcione, no tenga el rendimiento deseado, o si las piezas no encajan perfectamente unas con otras. Modelado de la arquitectura del Software Cuando se quiere dar a entender mejor lo que se va a construir en el caso de edificios, Herramientas, Aviones, Maquinas, se crea un modelo idéntico, pero en menor escala (mas pequeño). Sin embargo cuando aquello que construiremos es un Software, nuestro modelo debe tomar una forma diferente, deben representar todas las funciones y subfunciones de un Sistema. Los modelos se concentran en lo que debe hacer el sistema no en como lo hace, estos modelos pueden incluir notación gráfica, información y comportamiento del Sistema. Todos los Sistemas basados en computadoras pueden modelarse como transformación de la información empleando una arquitectura del tipo entrada y salida. Especificaciones del Sistema Es un Documento que sirve como fundamento para la Ingeniería Hardware, software, Base de datos, e ingeniería Humana. Describe la función y rendimiento de un Sistema basado en computadoras y las dificultades que estarán presente durante su desarrollo. Las Especificaciones de los requisitos del software se produce en la terminación de la tarea del análisis.


En Conclusión un proyecto de desarrollo de un Sistema de Información comprende varios componentes o pasos llevados a cabo durante la etapa del análisis, el cual ayuda a traducir las necesidades del cliente en un modelo de Sistema que utiliza uno mas de los componentes: Software, hardware, personas, base de datos, documentación y procedimientos. 4.03 Objetivos de la Planificación del Proyecto del Software El objetivo de la Planificación del proyecto de Software es proporcionar un marco de trabajo que permita al gestor hacer estimaciones razonables de recursos costos y planificación temporal. Estas estimaciones se hacen dentro de un marco de tiempo limitado al comienzo de un proyecto de software, y deberían actualizarse regularmente medida que progresa el proyecto. Además las estimaciones deberían definir los escenarios del mejor caso, y peor caso, de modo que los resultados del proyecto pueden limitarse. Este Objetivo se logra mediante un proceso de descubrimiento de la información que lleve a estimaciones razonables. 4.04 Recursos La Segunda tarea de la planificación del diseño y desarrollo de Software es la estimación de los recursos requeridos para acometer el esfuerzo de desarrollo de Software, esto simula a una pirámide donde las Herramientas (hardware y Software), son la base proporciona la infraestructura de soporte al esfuerzo de desarrollo, en segundo nivel de la pirámide se encuentran los Componentes reutilizables. Y en la parte mas alta de la pirámide se encuentra el recurso primario, las personas (el recurso humano). Cada recurso queda especificado mediante cuatro características:  

Descripción del Recurso.

Informes de disponibilidad.

Fecha cronológica en la que se requiere el recurso.

Tiempo durante el que será aplicado el recurso

4.04.01 Recursos Humanos La Cantidad de personas requeridas para el desarrollo de un proyecto de software solo puede ser determinado después de hacer una estimación del esfuerzo de desarrollo (por ejemplo personas mes o personas años), y seleccionar la posición dentro de la organización y la especialidad que desempeñara cada profesional. 4.04.02 Recursos o componentes de software reutilizables Cualquier estudio sobre recursos de software estaría incompleto sin estudiar la reutilización, esto es la creación y la reutilización de bloques de construcción de Software.


Tales bloques se deben establecer en catálogos para una consulta más fácil, estandarizarse para una fácil aplicación y validarse para la también fácil integración. El Autor Bennatan sugiere cuatro categorías de recursos de software que se deberían tener en cuenta a medida que se avanza con la planificación: 

Componentes ya desarrollados.

Componentes ya experimentados.

Componentes con experiencia Parcial.

Componentes nuevos.

4.04.03 Recursos de entorno El entorno es donde se apoya el proyecto de Software, llamado a menudo entorno de Ingeniería de Software, incorpora Hardware y Software. El Hardware proporciona una plataforma con las herramientas (Software) requeridas para producir los productos que son el resultado de la buena practica de la Ingeniería del Software, un planificador de proyectos debe determinar la ventana temporal requerida para el Hardware y el Software, y verificar que estos recursos estén disponibles. Muchas veces el desarrollo de las pruebas de validación de un proyecto de software para la composición automatizada puede necesitar un compositor de fotografías en algún punto durante el desarrollo. Cada elemento de hardware debe ser especificado por el planificador del Proyecto de Software. 4.05. Estimación del proyecto de software En el principio el costo del Software constituía un pequeño porcentaje del costo total de los sistemas basados en Computadoras. Hoy en día el Software es el elemento mas caro de la mayoría de los sistemas informáticos. Un gran error en la estimación del costo puede ser lo que marque la diferencia entre beneficios y perdidas, la estimación del costo y del esfuerzo del software nunca será una ciencia exacta, son demasiadas las variables: humanas, técnicas, de entorno, políticas, que pueden afectar el costo final del software y el esfuerzo aplicado para desarrollarlo. Para realizar estimaciones seguras de costos y esfuerzos tienen varias opciones posibles: 

Deje la estimación para más adelante (obviamente podemos realizar una estimación al cien por cien fiable después de haber terminado el proyecto.

Base las estimaciones en proyectos similares ya terminados.

Utilice técnicas de descomposición relativamente sencillas para generar las estimaciones de costos y esfuerzo del proyecto.

Desarrolle un modelo empírico para él cálculo de costos y esfuerzos del Software.


Desdichadamente la primera opción, aunque atractiva no es práctica. La Segunda opción puede funcionar razonablemente bien si el proyecto actual es bastante similar a los esfuerzos pasados y si otras influencias del proyecto son similares. Las opciones restantes son métodos viables para la estimación del proyecto de software. Desde el punto de vista ideal, se deben aplicar conjuntamente las técnicas indicadas usando cada una de ellas como comprobación de las otras. Antes de hacer una estimación, el planificador del proyecto debe comprender el ámbito del software a construir y generar una estimación de su tamaño. 4.05.01 Estimación basada en el Proceso Es la técnica más común para estimar un proyecto es basar la estimación en el proceso que se va a utilizar, es decir, el proceso se descompone en un conjunto relativamente pequeño de actividades o tareas, y en el esfuerzo requerido para llevar a cabo la estimación de cada tarea. Al igual que las técnicas basadas en problemas, la estimación basada en el proceso comienza en una delineación de las funciones del software obtenidas a partir del ámbito del proyecto. Se mezclan las funciones del problema y las actividades del proceso. Como ultimo paso se calculan los costos y el esfuerzo de cada función y la actividad del proceso de software. 4.06 Diferentes modelos de estimación Existen diferentes modelos de estimación como son: 4.06.01 Los Modelos Empíricos Donde los datos que soportan la mayoría de los modelos de estimación obtienen una muestra limitada de proyectos. Por esta razón, el modelo de estimación no es adecuado para todas las clases de software y en todos los entornos de desarrollo. Por lo tanto los resultados obtenidos de dichos modelos se deben utilizar con prudencia. 4.06.02 El Modelo COCOMO Barry Boehm, en su libro clásico sobre economía de la Ingeniería del Software, introduce una jerarquía de modelos de estimación de Software con el nombre de COCOMO, por su nombre en Ingles (Constructive, Cost, Model) modelo constructivo de costos. La jerarquía de modelos de Boehm esta constituida por los siguientes: ü Modelo I. El Modelo COCOMO básico calcula el esfuerzo y el costo del desarrollo de Software en función del tamaño del programa, expresado en las líneas estimadas. ü Modelo II. El Modelo COCOMO intermedio calcula el esfuerzo del desarrollo de software en función del tamaño del programa y de un conjunto de conductores de costos que incluyen la evaluación subjetiva del producto, del hardware, del personal y de los atributos del proyecto.


ü Modelo III. El modelo COCOMO avanzado incorpora todas las características de la versión intermedia y lleva a cabo una evaluación del impacto de los conductores de costos en cada caso (análisis, diseño, etc.) del proceso de ingeniería de Software. 4.06.03 Herramientas Automáticas De Estimación. Las herramientas automáticas de estimación permiten al planificador estimar costos y esfuerzos, así como llevar a cabo análisis del tipo, que pasa si, con importantes variables del proyecto, tales como la fecha de entrega o la selección del personal. Aunque existen muchas herramientas automáticas de estimación, todas exhiben las mismas características generales y todas requieren de una o más clases de datos. A partir de estos datos, el modelo implementado por la herramienta automática de estimación proporciona estimaciones del esfuerzo requerido para llevar a cabo el proyecto, los costos, la carga de personal, la duración, y en algunos casos la planificación temporal de desarrollo y riesgos asociados. En resumen el planificador del Proyecto de Software tiene que estimar tres cosas antes de que comience el proyecto: cuanto durara, cuanto esfuerzo requerirá y cuanta gente estará implicada. Además el planificador debe predecir los recursos de hardware y software que va a requerir y el riesgo implicado. Para obtener estimaciones exactas para un proyecto, generalmente se utilizan al menos dos de las tres técnicas referidas anteriormente. Mediante la comparación y la conciliación de las estimaciones obtenidas con las diferentes técnicas, el planificador puede obtener una estimación más exacta. La estimación del proyecto de software nunca será una ciencia exacta, pero la combinación de buenos datos históricos y técnicas puede mejorar la precisión de la estimación. 4.07 Equipo de diseño Aunque en ocasiones el diseño funcional de los programas lo realiza una única persona, generalmente un profesor, resulta recomendable que intervenga un equipo de especialistas, el equipo de diseñadores, integrado por: 

Profesores con amplia experiencia didáctica en el tema en cuestión y que puedan proporcionar conocimientos sobre la materia del programa, sobre los alumnos a los cuales va dirigido el material y sobre las posibles actividades de aprendizaje.

Especialistas en tecnología, que proporcionen instrumentos de análisis y de diseño y faciliten la concreción del trabajo y la coordinación de todos los miembros del equipo.

4.08 Instrumentos En la elaboración del diseño del software se pueden utilizar diversos instrumentos: ü Técnicas para el desarrollo de la creatividad, como la técnica del “brainstorming”, que puede facilitar al equipo de diseño la búsqueda de nuevas ideas sobre el QUÉ


y el CÓMO del programa que se pretende elaborar. Se tendrán en cuenta las posibilidades de los ordenadores (sin profundizar en aspectos técnicos) y se considerarán muy especialmente aspectos funcionales: 

Las motivaciones, el por qué conviene elaborar este nuevo material.

Las primeras reflexiones sobre los contenidos y los objetivos.

Las posibles actividades interactivas.

El primer borrador de las pantallas y del entorno de comunicación en general.

Estas sesiones de “brainstorming” pueden alternar momentos de creatividad totalmente libre, donde se aporten ideas generales sobre el programa, con otros momentos donde la actividad creadora se vaya concentrando en la concreción de las características específicas que configurarán el diseño funcional. 

Bibliografía sobre diseño multimedia, que permitirá definir una metodología de trabajo adecuada a las características del equipo y considerar más recursos materiales y técnicos que pueden ayudar en el desarrollo del proyecto.

Bibliografía sobre la temática específica que se piensa tratar en el programa. La recopilación de información variada sobre el tema y la lectura de textos con diferentes enfoques didácticos puede ser una fuente importante de nuevas ideas.

Materiales multimedia parecidos o próximos al que se quiere hacer, que puede proporcionar diversas conceptualizaciones útiles: aspectos positivos que se pueden imitar, aspectos negativos que hay que evitar, etc.

Plantillas de diseño, que ayudarán en el proceso de concreción del proyecto. Como ya se ha indicado en la presentación de este capítulo, el proceso de diseño de los programas educativos no es lineal, es más bien concéntrico, de manera que resultará más conveniente rellenar las plantillas en sucesivas revisiones para afinar cada vez más el contenido de sus puntos que no procurar cumplimentarlas meticulosamente punto por punto. En los anexos de este libro se incluye una plantilla para el prediseño de programas educativos elaborada a partir de los aspectos que se analizan en los próximos apartados.

A lo largo del proceso de diseño se realizan aproximaciones descendentes (a partir de la idea global se analizan sus elementos y posibilidades) y ascendientes (se integran actividades y elementos simples en módulos más complejos). Cuanto más técnico y más estructurado sea el tema que se quiere tratar, más fácil resultará trasladar la idea a un formato de software educativo; en cambio, los temas difíciles de estructurar y de desglosar en apartados requerirán mucho más esfuerzo. En el momento de diseñar un programa siempre se piensa en los usuarios, hasta incluso interesa que este conjunto de posibles destinatarios no sea demasiado


amplio, ya que así se facilita la concreción y la coherencia del proyecto. Más tarde se verá como simplemente añadiendo algunas opciones al programa base se puede ampliar considerablemente el abanico de usuarios. Los contenidos (conceptuales, procedimentales y actitudinales) que han de trabajar los alumnos se analizarán para descomponerlos en unidades mínimas de presentación, organizarlos y jerarquizarlos en función de su lógica interna, de los niveles de los destinatarios y de los objetivos que deben alcanzar. Considerarán los formatos textuales y audiovisuales. Esta organización de la materia que, especialmente en los programas tutoriales, determinará la estructura modular y la secuenciación de las actividades, deberá facilitar a los alumnos un aprendizaje significativo y permitir diferentes formas de adquisición de la información. En este sentido convendrá organizar los contenidos: 

De los aspectos más fáciles y concretos a los más complejos y abstractos.

De los elementos conocidos por los alumnos a los que les son desconocidos.

De las presentaciones globales o sintéticas a las visiones analíticas.

De las visiones episódicas a las sistemáticas.

De los que requieren el uso de habilidades globales a los que implican el uso de habilidades específicas.

Destacando las relaciones interdisciplinarias, ya que la enseñanza de la aplicación de una ley o procedimiento de un área a otras facilita la transferencia de los aprendizajes.

Contemplando niveles de dificultad, para facilitar que el alumno escoja el nivel que le interesa y posibilitar que el programa se adapte al nivel de los usuarios.

4.09 Modelo del Diseño y desarrollo del software La Ingeniería de software tiene varios modelos, paradigmas o filosofías de desarrollo en los cuales se puede apoyar para la realización de software, de los cuales se puede destacar a éstos por ser los más utilizados y los más completos: 

Modelo en cascada o Clásico (modelo tradicional)

Modelo de prototipos

Modelo en espiral

Desarrollo por etapas

Desarrollo iterativo y creciente o Iterativo e Incremental

RAD (Rapid Application Development)

Desarrollo concurrente


Proceso Unificado

RUP (Proceso Unificado de Rational)


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.