INSTITUTO TECNOLÓGICO DE ACAPULCO
INTEGRANTES DEL EQUIPO 2: ZAPATA HERNÁNDEZ JORGE ARTURO VELEZ JUAREZ JOEL VEGA GARCIA DANIEL POLANCO GARCIA GLORIA PEREZ CHACON ROSA ISELA GONZAGA SALGADO MIRIAM BAILON ZABALETA CELENE
MATERIA: TECNOLOGIAS DE LA INFORMACION
PROFESOR: GOMEZ JUAN CARLOS
ESPECIALIDAD: ING. BIOQUÍMICA ―ALIMENTOS‖
UNIDAD IV “
INTRODUCCIÓN A LA PROGRAMACIÓN
”
TEMARIO 4.1
Análisis de riesgos. 4.1.1 Establecimiento de un sistema de verificación.
4.1
Metodología de la solución de Problemas con la computadora. 4.1.1 Programación no estructurada. 4.1.2 Programación estructurada. 4.1.3 programación modular. 4.1.4 programación orientada a eventos. 4.1.5 Programación orientada a objetos. 4.1.6 Programación por escenarios.
4.2
Algoritmos simbología. 4.2.1 Diagramas de bloque, flujo, simbología. 4.2.2 pseudocódigos y codificación. c odificación.
4.3
Elementos del lenguaje de programación. 4.3.1 Palabras reservadas. 4.3.2 Tipos de datos básicos. 4.3.3 Declaración de variables, constantes, procedimientos y funciones (Subrutinas). 4.3.4 Operaciones aritméticas, lógicas y relacionales.
4.4
Uso del depurador (debbuger) para depurar y dar seguimiento a los programas.
4.5
Diseño, edición, compilación y Ejecución de aplicaciones.
TEMARIO 4.1
Análisis de riesgos. 4.1.1 Establecimiento de un sistema de verificación.
4.1
Metodología de la solución de Problemas con la computadora. 4.1.1 Programación no estructurada. 4.1.2 Programación estructurada. 4.1.3 programación modular. 4.1.4 programación orientada a eventos. 4.1.5 Programación orientada a objetos. 4.1.6 Programación por escenarios.
4.2
Algoritmos simbología. 4.2.1 Diagramas de bloque, flujo, simbología. 4.2.2 pseudocódigos y codificación. c odificación.
4.3
Elementos del lenguaje de programación. 4.3.1 Palabras reservadas. 4.3.2 Tipos de datos básicos. 4.3.3 Declaración de variables, constantes, procedimientos y funciones (Subrutinas). 4.3.4 Operaciones aritméticas, lógicas y relacionales.
4.4
Uso del depurador (debbuger) para depurar y dar seguimiento a los programas.
4.5
Diseño, edición, compilación y Ejecución de aplicaciones.
4.1 Análisis de riesgos. Análisis de riesgo. El análisis de riesgo, también conocido como evaluación de riesgo o PHA por sus siglas en inglés Process Hazards Analysis, es el estudio de las causas de las posibles amenazas, y los daños y consecuencias que éstas puedan producir. Este tipo de análisis es ampliamente utilizado como herramienta de gestión en estudios financieros y de seguridad para identificar riesgos (métodos cualitativos) y otras para evaluar riesgos (generalmente de naturaleza natur aleza cuantitativa). El primer paso del análisis es identificar los activos a proteger o evaluar. La evaluación de riesgos involucra comparar el nivel de riesgo detectado durante el proceso de análisis con criterios de riesgo establecidos previamente. La función de la evaluación consiste en ayudar a alcanzar un nivel razonable de consenso en torno a los objetivos en cuestión, y asegurar un nivel mínimo que permita desarrollar indicadores operacionales a partir de los cuales medir y evaluar. Los resultados obtenidos del análisis, van a permitir aplicar alguno de los métodos para el tratamiento de los riesgos, que involucra identificar el conjunto de opciones que existen para tratar los riesgos, r iesgos, evaluarlas, preparar planes para este tratamiento y ejecutarlos.
4.1.1 Establecimiento de un sistema de verificación.
Análisis y diseño de sistemas En la actualidad la mayoría de los usuarios de microcomputadoras tienen acceso a un sistema de información o forman parte del mismo. Todas las organizaciones cuentan con un sistema de información de algún tipo, que sus empleados deben utilizar. Cuando en cualquier organización se desea implantar un nuevo sistema, de tal forma que sus miembros sean más productivos, obteniendo un mayor provecho y apoyo del mismo, se requiere realizar una serie de acciones y previsiones. La creación o establecimiento de un nuevo sistema de información en la organización, puede ser una tarea compleja. Para encarar este tipo de situaciones existe un proceso de análisis y diseño de sistemas que auxilia en la resolución de tales
problemas. El análisis y diseño de sistemas proporciona una guía útil que busca disminuir las situaciones de fracaso o errores al acometer estos procesos. Razones para conocer el análisis y diseño de sistemas Aunque pareciese que es tema sólo de profesionales, como usuario final, toda persona que usa una microcomputadora se beneficiará al conocer sobre este proceso. Puede ocurrir que, una vez contratado como miembro de una organización, se convierta en usuario de su sistema de información, entonces el conocimiento del análisis y diseño de sistemas, le permitirá aumentar su productividad personal, sirviéndole para resolver los problemas que surjan en su área de trabajo, determinando nuevos requerimientos de información y permitiéndole colaborar con los profesionales en informática en la resolución de tales situaciones. Necesidad del análisis y diseño de sistemas La instalación de un sistema sin la adecuada planeación puede conducir a grandes frustraciones y causar que el sistema sea subutilizado, o peor aún, deje de ser usado al no cumplir con las expectativas que le dieron origen. El análisis y diseño de sistemas es una guía que Consumo de recursos a lo largo de la permite estructurar el proceso de desarrollo de sistemas de información. vida del sistema Tal proceso siempre representará un esfuerzo, inversión de tiempo y recursos por parte de la organización. Acometer tal esfuerzo de manera casual, presenta un alto grado de riesgo al no garantizar la culminación del proyecto con éxito. Este procedimiento permite reducir al mínimo el riesgo de fracaso de nuevos proyectos, pues es común que muchos errores surjan al utilizar nuevos sistemas de información, bien por no adaptarse correctamente a las necesidades reales o por desempeñarse de forma inadecuada. Ciclode vida del desarrollo de sistemas Antes de dar detalles sobre sobre este proceso, se define define lo que es un sistema. De manera manera sencilla, un sistema puede ser definido como un conjunto de actividades y elementos organizados para alcanzar un fin. Un sistema de información se compone de elementos como hardware, software, personas, procedimientos y datos que interactúan unos con otros para generar la información primordial en el desempeño de la organización. La información es un recurso valioso que permite a la organización llevar a cabo la prestación de servicios o elaboración de productos. Es común que las organizaciones deban cambiar sus sistemas de información, motivado al crecimiento de la misma, cambio en regulaciones estatales, surgimiento de nueva tecnología, y otros. Es decir, siempre habrán factores que modifiquen el ambiente donde se desempeña la organización y ésta debe cambiar para afrontarlos, lo cual se verá reflejado en los sistemas que la conforman. El análisis y diseño de sistemas es un procedimiento para la resolución de problemas. Cuando se trata del diseño de sistemas de información, busca analizar sistemáticamente la entrada o flujo de datos, la transformación de los datos, el almacenamiento de datos y la salida de información en el contexto de una organización particular. También es usado para analizar, diseñar e implementar mejoras que puedan incorporarse a la organización y puedan ser alcanzadas al usar un sistema de información computarizado.
Este procedimiento se lleva a cabo, en el llamado ciclo de vida de desarrollo de sistemas, el cual consta de seis pasos que permiten el diagnóstico y optimización de un sistema de información. Este ciclo puede repetirse indefinidamente, porque como ya se señaló, las organizaciones siempre se ven sometidas a cambios, y sus sistemas deben renovarse periódicamente. Los pasos del ciclo de vida de desarrollo son los que se encuentran en la imagen. Se suele llamar analistas de sistemas a quienes se encargan de realizar en las Ciclo de vida de desarrollo de sistemas de empresas, el proceso de análisis y seis fases diseño de sistemas, definiendo los (Haz clic sobre el diagrama) lineamientos a seguir y la manera en que debe incorporarse la tecnología de la computación para adecuar y actualizar sus sistemas de información. Los usuarios juegan un papel crítico al momento de cambiar o desarrollar exitosamente un sistema de información, porque son quienes conocen los problemas de su área de trabajo, pudiendo suministrar información valiosa y atinada sobre las necesidades que debería resolver tal sistema. El desarrollo acertado de sistemas de información automatizados requiere del trabajo conjunto de usuarios finales y de los analistas de sistemas (ver Tabla 1).
Tabla 1.- Resumen del ciclo de vida de desarrollo de sistemas Ciclo de vida de desarrollo de sistemas Fase Tareas asociadas Definir el problema Sugerir 1 Investigación preliminar alternativas Presentar reporte breve Recopilar datos Analizar datos 2 Análisis Documentar resultado Diseñar alternativas Escoger la mejor 3 Diseño alternativa Reportar resultado Desarrollar o adquirir software 4 Desarrollo Adquirir hardware Probar Sistema 5 Implementación Instalación Capacitación de usuarios Auditar nuevo sistema Evaluar 6 Mantenimiento eriódicamente
4.1 Metodología de la solución de problemas con la computadora. 4.1.1 Programación no estructurada. 4.1.2 Programación estructurada. Programación estructurada La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN). Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.
Orígenes de la programación estructurada A finales de los años 1960 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su comprensión posterior. El teorema del programa estructurado, demostrado por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:
Secuencia Instrucción condicional. Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres básicas.
Estructura secuencial Una estructura de programa es secuencial si se ejecutan una tras otra a modo de secuencia, es decir que una instrucción no se ejecuta hasta que finaliza la anterior.
Ejemplo: INPUT x INPUT y auxiliar= x x= y y= auxiliar PRINT x PRINT y Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia.
1º Se guarda una copia del valor de x en auxiliar. 2º Se guarda el valor de y en x, perdiendo su valor anterior, pero se mantiene una copia del contenido en auxiliar. 3º Se copia a y el valor de auxiliar, que es el valor inicial de x. El resultado es el intercambio de los valores entre x e y, en tres operaciones secuenciales.
Estructura selectiva o de selección La estructura selectiva permite que la ejecución del programa se bifurque a una instrucción u otra según un criterio o condición lógica, solo una de estas instrucciones se ejecutará. Ejemplo: IF a > b THEN PRINT a ; " es mayor que " ; b ELSE PRINT a ; " no es mayor que " ; b END IF La instrucción selectiva anterior puede presentar uno de dos mensajes: a es mayor que b o a no es mayor que b, según el resultado de la comparación entre a y b; si el resultado de a > b es verdadero, se presenta el primer mensaje, si es falso se exterioriza el segundo. Las palabras clave IF, THEN, ELSE, y END IF; constituyen la propia estructura de la instrucción condicional (palabra reservadas), proporcionada por el lenguaje, el usuario no debe utilizar sus nombres salvo para este fin. El caso ejemplo se ha codificado en BASIC.
IF señala el comienzo de la instrucción condicional, y se espera que después siga la condición de control de la instrucción.
THEN señala el fin de la condición, y después estará la instrucción a ejecutar si la condición es verdadera. ELSE es opcional, le sigue la instrucción que se ejecutará si la condición es falsa. END IF indica el final de la estructura, seguidamente el programa seguirá su curso.
Ampliemos un poco el ejemplo anterior con estructuras anidadas: IF a > b THEN PRINT a ; " es mayor que " ; b ELSEIF a < b THEN PRINT a ; " es menor que " ; b ELSE PRINT a ; " es igual que " ; b END IF Este ejemplo permite considerar situaciones en las que se tiene más de dos alternativas. En este caso se ha considerado tres, pero hay situaciones en las que deben considerarse más casos y para ellos se puede repetir las veces que sea necesario la opcional ELSEIF.
Estructura iterativa Un bucle iterativo o iteración de una secuencia de instrucciones, hace que se repitan mientras se cumpla una condición, en un principio el número de iteraciones no tiene por qué estar determinado. Ejemplo: a= 0 b= 7 WHILE b > a DO PRINT a a= a + 1 WEND Esta instrucción tiene tres palabras reservadas WHILE, DO y WEND.
WHILE: señala el comienzo del bucle y después de esta palabra se espera la condición de repetición, si la condición es cierta se pasa al cuerpo del bucle, si no al final de la instrucción mientras. DO: señala el final de la condición, lo que esté después será el cuerpo del bucle. WEND: señala el final del cuerpo del bucle y de la instrucción WHILE.
El bucle mientras, se repite mientras la condición sea cierta, esta condición se comprueba al principio por lo que el cuerpo del bucle puede que no se ejecute nunca, cuando la condición es falsa en un principio, o que se repita tantas veces como sea necesario, mientras la condición sea cierta. En el ejemplo tenemos dos variables a y b que al iniciarse el bucle tienen los valores a=0 y b=7. La condición del bucle es b > a. Cuando a=0 y b=7. la condición es cierta, en el cuerpo del bucle se escribe el valor de a en pantalla y se incrementa a en una unidad. Entonces a=1 y b=7. Cuando a=6 y b=7. la condición es cierta, se escribe el valor de a en pantalla y se incrementa en una unidad. Resultando que a=7 y b=7. Entonces la condición es falsa y la instrucción WHILE finaliza. La salida por pantalla de este ejemplo seria 0 1 2 3 4 5 6
Anidamiento El cuerpo de cualquier estructura puede ser una instrucción simple u otra estructura, que a su vez puede anidar a otra. Ejemplo: IF a > b THEN auxiliar= a a= b b= auxiliar ELSE REM nada END IF PRINT a ; b
Ventajas de la programación estructurada 1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica. 2. La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.
3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente. 4. Reducción de los costos de mantenimiento de los programas. 5. Programas más sencillos y más rápidos (ya que es más fácil su optimización). 6. Los bloques de código son auto explicativos, lo que facilita la documentación. 7. Los GOTO se reservan para construir las instrucciones básicas. Aunque no se usan de forma directa, por estar prohibida su utilización, están incluidas implícitamente en las instrucciones de selección e iteración. 8. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una excelente presentación. La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.
4.1.3 programación modular.
Diagrama del funcionamiento de un subprograma.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable. Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down). Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida. Si bien un módulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica es común representarlos con procedimientos y funciones. Adicionalmente, también pueden considerarse módulos las librerías que pueden incluirse en un programa o, en programación orientada a objetos, la implementación de un tipo de dato abstracto.
4.1.4 programación orientada a eventos. Introd ucc ión A La Program ación Orientada A Eventos.
Los lenguajes visuales orientada al evento y con manejo de componentes dan al usuario que no cuenta con mucha experiencia en desarrollo, la posibilidad de construir sus propias aplicaciones utilizando interfaces gráficas sobre la base de ocurrencia de eventos. Para soportar este tipo de desarrollo interactúan dos tipos de herramientas, una que permite realizar diseños gráficos y , un lenguaje de alto nivel que permite codificar los eventos. Con dichas herramientas es posible desarrollar cualquier tipo de aplicaciones basadas en el entorno. Visual Basic es uno de los lenguajes de programación que más entusiasmo despiertan
entre los programadores de computadoras, tanto expertos como novatos. En el caso de los programadores expertos por la facilidad con la que desarrollan aplicaciones complejas en poquísimo tiempo (comparado con lo que cuesta programar en Visual C++, por ejemplo). En el caso de los programadores novatos por el hecho de ver de lo que son capaces a los pocos minutos de empezar su aprendizaje. El precio que hay que pagar por utilizar Visual Basic es una menor velocidad o eficiencia en las aplicaciones. Visual Basic es un lenguaje de programación visual, también llamado lenguaje de 4ta.
generación. Esto quiere decir que un gran número de tareas se realizan sin escribir código, simplemente con operaciones gráficas realizadas con el ratón sobre la pantalla. Visual Basic es también un programa basado en objetos, aunque no orientado a objetos como Visual C++. La diferencia está en que Visual Basic utiliza objetos con propiedades y métodos, pero carece de los mecanismos de herencia y polimorfismo propios de los verdaderos lenguajes orientados a objetos como Java y C++.
En este trabajo se presentará las características generales de Visual Basic , junto con algunos ejemplos sencillos que den idea de la potencia del lenguaje orientado a eventos, y del modo en que se utiliza. Programas Secuenciales, Interactivos Y Orientados A Eventos
Existen distintos tipos de programas. En los primeros tiempos de los ordenadores los programas eran de tipo secuencial (también llamados tipo batch). Un programa secuencial es un programa que se arranca, lee los datos que necesita, realiza los cálculos e imprime o guarda en el disco los resultados. De ordinario, mientras un programa secuencial está ejecutándose no necesita ninguna intervención del usuario. A este tipo de programas se les llama también programas basados u orientados a procedimientos o a algoritmos ( procedural languages). Este tipo de programas siguen utilizándose ampliamente en la actualidad, pero la difusión de los PC’s ha puesto de actualidad otros t ipos de programación. Los programas interactivos exigen la intervención del usuario en tiempo de ejecución, bien Para suministrar datos, bien para indicar al programa lo que debe hacer por medio de menús. Los programas interactivos limitan y orientan la acción del usuario. Por su parte los programas orientados a eventos son los programas típicos de Windows, tales como Netscape, Word , Excel, PowerPoint y otros. Cuando uno de estos programas ha arrancado, lo único que hace es quedarse a la espera de las acciones del usuario, que en este caso son llamadas eventos. El usuario dice si quiere abrir y modificar un fichero existente, o bien comenzar a crear un fichero desde el principio. Estos programas pasan la mayor parte de su tiempo esperando las acciones del usuario (eventos) y respondiendo a ellas. Las acciones que el usuario puede realizar en un momento determinado son variadísimas, y exigen un tipo especial de programación: la programación orientada a eventos. Este tipo de programación es sensiblemente más complicada que la secuencial y la interactiva, pero con los lenguajes visuales de hoy, se hace sencilla y agradable. Antes de continuar es necesario definir algunos conceptos de los elementos de Programación Orientada a Eventos. Eventos.
Ya se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son eventos típicos el click sobre un botón, el hacer doble click sobre el nombre de un fichero para abrirlo, el arrastrar un icono, el pulsar una tecla o combinación de teclas, el elegir una opción de un menú, el escribir en una caja de texto, o simplemente mover el ratón. Más adelante se verán los distintos tipos de eventos reconocidos por Windows 95 y por Visual Basic . Cada vez que se produce un evento sobre un determinado tipo de control, Visual Basic arranca una determinada función o procedimiento que realiza la acción programada por el usuario para ese evento concreto. Estos procedimientos se llaman con un nombre que se forma a partir del nombre del objeto y el nombre del evento, separados por el carácter (_), como por ejemplo txtBox_click , que es el nombre del procedimiento que se ocupará de responder al evento click en el objeto txtBox . Propiedades y Mé to d o s .
Además de los eventos, la mayor parte de los objetos, como los formularios y los controles, son suministrados con propiedades y métodos. Son conceptos fundamentales e importantes.
Propiedades.
Una propiedad es una asignación que describe algo sobre un objeto como un formulario. Dependiendo de la propiedad, se la puede asignar en tiempo de diseño usando la ventana Propiedades y/o en tiempo de ejecución al programar. A continuación se describen dos ejemplos de las propiedades del formulario de Visual Basic:
MinButton. Esta propiedad puede asignarse como TRUE (verdadero) o FALSE (falso). Dependiendo de la asignación, el formulario tendrá o no tendrá un botón minimizar. BackColor. Asignando esta propiedad a un valor expresado como hexadecimal RGB (Rojo Verde Azul) o como una constante se cambia el color del fondo del formulario. Se pueden consultar las constantes usando el examinador de objetos (Seleccione VER, EXAMINADOR DE OBJETOS) y en la Biblioteca VBRUN (Columna clase) bajo "ColorConstants" y "SystemColorConstants".
Mé to d o s .
Los métodos son funciones que también son llamadas desde programa, pero a diferencia de los procedimientos no son programadas por el usuario, sino que vienen ya preprogramadas con el lenguaje. Los métodos realizan tareas típicas, previsibles y comunes para todas las aplicaciones. de ahí que vengan con el lenguaje y que se libere al usuario de la tarea de programarlos. Cada tipo de objeto o de control tiene sus propios métodos. En general solo pueden ser ejecutados en tiempos de ejecución no en tiempo de diseño. Algunos ejemplos de métodos de formularios son el método MOVE, que mueve un formulario en un espacio de dos dimensiones en la pantalla, y el método ZORDER que sitúa el formulario delante o detrás de otras ventanas. Los métodos son invocados dando nombres al objeto y cuyo método se está llamando, listando el operador punto (.), y después listando el nombre del método. Como cualquier rutina los métodos pueden incorporar argumentos.
4.1.5 Programación orientada a objetos. ¿Qué es P.O.O?
La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos. El término de Programación Orientada a Objetos indica más una forma de diseño y una metodología de desarrollo de software que un lenguaje de programación, ya que en realidad se puede aplicar el Diseño Orientado a Objetos (En inglés abreviado OOD, Object Oriented Design), a cualquier tipo de lenguaje de programación. El desarrollo de la OOP empieza a destacar durante la década de lo 80 tomando en cuenta la programación estructurada, a la que engloba y dotando al programador de nuevos elementos para el análisis y desarrollo de software. La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación. Cómo se piensa en objetos. Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar. La programación orientada a objetos, intenta simular el mundo real a traves del significado de objetos que contiene caracteristicas y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generacion. Como su mismo nombre indica, la programación orientada a objetos se basa en la idea de un objeto, que es una combinacion de variables locales y procedimientos llamados metodos que juntos conforman una entidad de programación. La POO es un paradigma de la programación de computadores; esto hace referencia al conjunto de teorías, estándares, modelos y métodos que permiten organizar el conocimiento, proporcionando un medio bien definido para visualizar el dominio del problema e implementar en un lenguaje de programación la solución a ese problema. La POO se basa en el modelo objeto, donde el elemento principal es le objeto, el cual es una unidad que contiene todas sus características y comportamientos en sí misma, lo cual lo hace como un todo independiente, pero que se interrelaciona con objetos de su misma clase o de otras clase, como sucede en el mundo real.
4.2 Algoritmos. En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y éste a su vez del matemático persa Al Juarismi ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.
Definición formal En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida). Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo. A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros. Sin embargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos. En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:
Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso –, definiendo así una secuencia de estados " computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual. En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la eliminación de GaussJordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos. En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente, en un lenguaje de programación suficientemente general): Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial. Medios de expresión de un algoritmo Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico. La descripción de un algoritmo usualmente se hace en tres niveles: 1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución. 3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.
Pseudocódigo El pseudocódigo ( falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los |diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas. El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él. Así el pseudodocódigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema.
Sistemas formales La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones μ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.
Implementación Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.
4.2.1
Diagramas de bloque, flujo, simbología.
¿Qué es un diagrama de flujo? Es una descripción grafica de un procedimiento para la resolución de un problema. Son frecuentemente usados para descubrir algoritmos y programas de computador. Los diagramas de flujos están compuestos por figuras conectadas con flechas. Para ejecutar un proceso comienza por el Inicio y se siguen las acciones indicadas por cada figura: El tipo de figura indica el tipo de paso que representa. Del Software, DFD es un software diseñado para contribuir y analizar algoritmos se puede crear diagramas de flujos de datos para la representación de algoritmos de programación
estructurada a partir de las herramientas de edición que para este propósito suministra el programa .Después de hacer haber ingresado el representado por el diagrama, podrá, ejecutarlo analizarlo y depurarlo en un entorno interactivo diseñado para este fin. La interfaz grafica de DFD facilita en gran medida el trabajo con diagramas ya que simula la representación estándar de diagramas de flujo en hojas de papel. LOS COMPONENTES DE UN DIAGRAMA DE FLUJO SON: Proceso Flujo Almacén Terminador PROCESO: El primer componente de diagrama de flujo de datos se conoce como Proceso. El proceso nuestra una parte del sistema que transforman Entradas y Salidas. Algunas analistas prefieren usar un ovalo o un rectángulo con esquinas redondeadas, otros prefieren usar un rectángulo. Las diferencias entre estas tres formas son puramente cosméticas, aunque obviamente es importante usar la misma forma de la manera consistente para representar todas las funciones de un sistema.
FLUJO: Un flujo se representa gráficamente por medio de una flecha que entra y sale de proceso; el flujo se usa para describir el movimiento, de bloques o paquetes de información de una parte del sistema a otra. Los flujos realmente representan Datos, es decir, Bits caracteres, mensajes, números, de puntos, flotante y los diversos tipos de información con los que las computadoras pueden tratar. Los flujos también muestran la dirección: Una cabeza de flecha en cualquier extremo(o posiblemente ambos) del flujo indica si los datos (o el material) se está moviendo hacia adentro a hacia fuera por ejemplo indica claramente que el numero se está mandando hacia el proceso denominado validar numero telefónicos, y el flujo denominado honorarios de entrega de chóferes. Los datos que se mueven a dicho flujo viajaran ya sea de un proceso a otro. ALMACÉN: Se utiliza para modelar una colección de paquetes de datos en reposo. Se denota por dos líneas paralelas, de modo característico el nombre que se utiliza para identificar para los paquetes que entran y salen del almacén por medios de flujo. PEDIDOS: Para el analista con conocimiento de proceso de datos es tentador referirse a los almacenes como archivos o bases de datos; pro un almacén también pudiera consistir en datos almacenados también pudiera consistir en datos almacenados en tarjetas perforadas, microfilm, microfichas, discos ópticos, etc. y un almacén también puede ser en conjunto de fichas de papel en una caja de cartón , nombres de fichas de papel en un directorio, diversos archivos en un archivero, o varias formas no computarizadas. Los almacenes se conectan por flujos a los procesos. Así el contexto en el que se muestra en un DFD (Diagrama de Flujo de Datos) es uno de los siguientes:
Un flujo desde un almacén. UN flujo hacia un almacén. TERMINADOR: Se representa como un rectángulo como los terminadores ser representa en entidades externas con las cuales el sistema se comunica, continuamente, puede ser una persona, o un grupo. Por ejemplo: una organización externa n o una agencia gubernamental, o un grupo o departamento que este dentro de la misma compañía u organización, pero fuera del control del sistema que se está modelando. En algunos casos, un terminador puede ser otro sistema, como algún otro sistema computacional con el cual se comunica este.
Existen tres cosas importantes que debemos recordar acerca de los terminadores. Son externos al sistema que se está modelando. Es evidente que ni el analista ni el diseñador del sistema están en posibilidades de cambiar los contenidos de un terminador o la manera en que esta trabaja. Las relaciones que existen entre lo terminadores no se muestran en el modelo DFD (Diagrama de Flujo de Datos). REGLAS PARA LA CREACIÓN DE DIAGRAMAS: 1. Los diagramas de flujo deben escribirse de arriba hacia abajo y/o de Izquierda a derecha. 2. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica su dirección que fluye la información procesos, se deben utilizar solamente líneas de flujo horizontal o vertical (nunca diagonales). 3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores, se debe tener en cuenta que solo se van a utilizar conectores cuando sean estrictamente necesario. 4. No deben quedar líneas de flujo sin conectar. 5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras. 6. Todos los símbolos pueden tener más de una línea de entrada, a excepto del símbolo final. 7. Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida.
Ejemplo de Diagrama de Flujo: Diagrama de flujo que encuentra la suma de los primeros 50 números naturales. El quinto bloque es un símbolo de suma de decisiones y ramificaciones lo q hay dentro del bloque es una pregunta que se le hace a las valores que actualmente incluyen en el proceso. EXPLICACIÓN DEL DIAGRAMA DE FLUJO. El primer bloque indica el inicio del diagrama de flujo. El segundo bloque, es un símbolo de procesos. En este bloque se asume que las variables suman y N ha sido declarada previamente y las inicializa en o para comenzar al conteo y la suma de valores.
Tercer bloque, es también un símbolo de procesos. En este paso se incrementa en 1 la variable N(N=N+1), por lo que en la primera pasada esta valdrá 1, ya que estaba inicializada en 0.
Cuarto bloque, es exactamente lo mismo que el anterior.
Pero en este, ya se agrega el valor de N a la variable que contendrá la suma (en el primer caso contendrá 1, ya que N=1).
VENTAJAS DEL ENFOQUE DE FLUJOS DE DATOS El enfoque de flujo de datos tiene cuatro ventajas principales sobre la explicación narrativa de la forma en que se mueven los datos a trabes del sistema .Las ventajas son. 1. Libertad para realizar en forma muy temprana la implementación de técnicas de sistema. 2. Una mayor comprensión de las interrelaciones de los sistemas y subsistemas. 3. Comunicación del conocimiento del sistema actual a los usuarios por medio de diagramas de flujo de datos. 4. Análisis de un sistema propuesto para determinar si han sido definidas los datos y procesos necesarios. SÍMBOLOS USADOS EN EL DIAGRAMA DE FLUJO DE DATOS SIGNIFICADO DE LOS SÍMBOLOS DE FLUJO El cuadrado doble es representado y usado para una actividad externa (otro departamento, un negocio, una persona, o una maquina) que puedan enviar datos y recibirlas del sistema. La entidad externa es llamada una fuente de destino de datos y es considerada externa al estudio, cada entidad externa es etiquetada con un nombre adecuado. La f lecha muestra el movimiento de datos de un punto a otro , está señalada hacia suceden simultáneamente pueden ser representadas simplemente mediante el uso de flechas paralelas, debido a que una flecha representada datos acerca de una persona lugar o casa, también :Debe ser descrita con un nombre. Un rectángulo con esquinas redondeadas es usado para mostrar la aparición de un proceso de transformación. Los procesos siempre denotan un cambio o transformación de los datos.
USO DE DIAGRAMAS DE FLUJO DE DATOS Los diagramas de flujo de datos son útiles a lo largo del proceso de análisis y diseños, .Existen compromisos para decidir que tanto deben ser explotados de los flujos de datos. Se desperdiciara tiempo y se sacrificara complusibilidad si los diagramas de flujo de datos son exclusivamente complejos. Por otro lado, si los diagramas de flujo de datos están muy poco explotados, pueden ocurrir errores u omisiones que pueden eventualmente afectar el sistema que está en desarrollo. Por último, recuerde que los diagramas del sistema de flujo pueden ser usados para documentar niveles altos o bajos del análisis y para ayudar a sustentar la lógica subyacente en los flujos de datos de la organización.
CARACTERÍSTICAS DE LOS DIAGRAMAS DE FLUJO DE DATOS Muestran que debe hacer el sistema sin referencias. Son diagramas explícitos y comprensibles. Dan la posibilidad de representan el sistema a diferentes niveles de complejidad, desde lo más global a lo más detallado solo requieren de 4 símbolos. Son fácil de mantenimiento, pues los cambios afectan solo algunos de sus elementos y no al todo. ¿CUÁLES SO LAS VENTAJAS DE LOS DIAGRAMAS DE FLUJO DE DATOS? Fácil lectura, con esto se constituye en un instrumento de mucha versatilidad. Facilitan la interacción Usuario-Analista.
4.2.2 pseudocódigos y codificación. Pseudocódigo Un pseudocódigo (falso lenguaje), es una serie de normas léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación, con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniería de software. No hay ningún compilador o intérprete de pseudocódigo informático (en el caso de que lo hubiera serían los lectores de dicho pseudocódigo informatico, por ej. una idea de un jefe de programación a el staff de programadores), y por tanto no puede ser ejecutado en un ordenador, pero las similitudes con la mayoría de los lenguajes informáticos lo hacen fácilmente convertible. El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común, instrucciones de programación y palabras clave que definen las estructuras básicas. Su objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un problema. No siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay una estructura semántica ni arquitectura estándar. Es una herramienta ágil para el estudio y diseño de aplicaciones, veamos un ejemplo, que podríamos definir como: lenguaje imperativo, de tercera generación, según el método de programación estructurada.
Codificacion encoding, codificar). Es el proceso por el cual la información de una fuente es convertida en símbolos para ser comunicada. En otras palabras, es la aplicación de las reglas de un código. El proceso contrario es la decodificación (o decoding), es decir, la conversión de esos símbolos a información que pueda ser entendida por el receptor.
Codificación de caracteres La codificación de caracteres es el método que permite convertir un carácter de un lenguaje natural (alfabeto o silabario) en un símbolo en otro sistema de representación, como un número o una secuencia de pulsos eléctricos en un sistema electrónico, aplicando normas o reglas de codificación.
Codificación digital La codificación consiste en la traducción de los valores de tensión eléctrica analógicos que ya han sido cuantificados (ponderados) al sistema binario, mediante códigos preestablecidos. La señal analógica va a quedar transformada en un tren de impulsos digital (sucesión de ceros y unos). La codificación que se realiza mediante el sistema binario está basada en el álgebra de Boole.
4.3 Elementos del lenguaje de programación. Lenguaje de programación.
Captura de la microcomputadora Commodore PET-32 mostrando un programa en el lenguaje de programación BASIC, bajo el emulador VICE en una distribución GNU/Linux. Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana .1 Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación. También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa). Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina. Prueba y depuración del programa. Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten diseñar el contenido de los documentos). Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.
Historia.
Código Fortran en una tarjeta perforada, mostrando el uso especializado de las columnas 1-5, 6 y 73-80. Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje específico conocido como código máquina, el cual la máquina comprende fácilmente, pero que lo hace excesivamente complicado para las personas. De hecho sólo consiste en cadenas extensas de números 0 y 1. Para facilitar el trabajo, los primeros operadores de computadoras decidieron hacer un traductor para reemplazar los 0 y 1 por palabras o abstracción de palabras y letras provenientes del inglés; éste se conoce como lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). El lenguaje ensamblador sigue la misma estructura del lenguaje máquina, pero las letras y palabras son más fáciles de recordar y entender que los números.
La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos, denominados también lenguajes de alto nivel. La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer a Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso aunque Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora. A finales de 1953, John Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar la computadora central IBM 704. El histórico equipo Fortran de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre. El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el primer compilador Fortran entregado en abril de 1957. Esto era un compilador optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador. En 1960, se creó COBOL, uno de los lenguajes usados aún en 2010 en informática de gestión. A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un método más eficiente para programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo fue BASIC en las versiones introducidas en los microordenadores de la década de 1980. Mientras que una tarea tan sencilla como sumar dos números puede necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará con solo una.
Elementos Todos los lenguajes de programación tienen algunos elementos de formación primitivos para la descripción de los datos y de los procesos o transformaciones aplicadas a estos datos (tal como la suma de dos números o la selección de un elemento que forma parte de
una colección). Estos elementos primitivos son definidos por reglas sintácticas y semánticas que describen su estructura y significado respectivamente.
4.3.1 Palabras reservadas. Palabra reservada. En los lenguajes de programación, una palabra reservada es una palabra que tiene un significado gramatical especial para ese lenguaje y no puede ser utilizada como un identificador en ese lenguaje. Por ejemplo, en SQL, un usuario no puede ser llamado "group", porque la palabra group es usada para indicar que un identificador se refiere a un grupo, no a un usuario. Al tratarse de una palabra clave su uso queda restringido. Ocasionalmente la especificación de un lenguaje de programación puede tener palabras reservadas que están previstas para un posible uso en futuras versiones. En Java const y goto son palabras reservadas — no tienen significado en Java, pero tampoco pueden ser usadas como identificadores. Al reservar los términos pueden ser implementados en futuras versiones de Java, si se desea, sin que el código fuente más antiguo escrito en Java deje de funcionar.
Palabras reservadas e independencia del lenguaje. En la CLI de .NET, todos los lenguajes tienen que proporcionar un mecanismo para utilizar los identificadores públicos que son palabras reservadas en ese lenguaje. Para ver por qué es necesario, supongamos que se devine una clase en defined a class in VB.NET como sigue: Public Class this End Class Entonces, se compila esta clas en un ensamblado de .NET y distribuirlo como parte de un conjunto de herramientas. Un programador de C#, que quiere definir una variable de tipo ―this‖ encontraría un problema: ―this‖ es una palabra reservada en C#. El siguiente fragmento en C# no compilará: this x = new this(); Un tema similar aparece cuando se accede a miembros, sobrescribiendo métodos virtuales e identificando espacios de nombres. En C#, colocando la arroba (@) antes del identificador, se forzará a ser considerado como un identificador en vez de una palabra reservada por el compilador. El signo arroba no es considerado parte del identificador.
4.3.2
Tipos de datos básicos.
Un tipo de dato es un rango numérico o de caracteres que dan propiedades a las variables. Por ejemplo, vamos a reflexionar matemáticamente. En matemáticas tenemos los números NATURALES que son los enteros desde el 0 al infinito. Los números ENTEROS que van desde el menos infinito al mas infinito y en un conjunto más amplio tenemos los REALES que añaden los decimales. Por tanto el 5 puede ser un número REAL, ENTERO y NATURAL. El -5 puede ser ENTERO o REAL y por ejemplo el -5,23 es un número REAL puesto que es un conjunto más amplio. Si hablamos de caracteres, tenemos un rango desde a-z tanto mayúscula como minúscula y cualquier carácter del teclado. Podemos tener el carácter 5 que no debemos de confundir con el ENTERO 5 o el REAL 5. Por tanto en cualquier lenguaje de programación deben de aparecer estos tipos de datos: ENTERO, REAL, CARÁCTER. Vamos a ver como c++ trabaja estos tipos de datos y cuáles son sus palabras reservadas dentro del lenguaje: Para los ENTEROS usamos la palabra reservada int, para los REALES usamos la palabra reservada double, y para los CARÁCTER usamos char . Por tanto como dijimos en el artículo anterior la sintaxis para declarar variables es la siguiente: nombreVariable = ; El nombre de la variable debe de comenzar con una letra y en c++ se distinguen entre mayúsculas o minúsculas. Por tanto no es lo mismo num1 que Num1. El valor que le demos a la variable tiene que ser consecuente con el tipo de dato. Podemos declarar variables sin valor poniendo solo nombreVariable; Esto lo que hace es generar un espacio en memoria (variable) con valor vacío. Existen otros tipos de datos básicos en c++, el BOOLEANO que toma los valores verdadero o falso (true o false), y su palabra reservada es bool. Tabla con los tipos de datos y los valores que pueden tomar. Ver que hay muchos pero son los mismos que se comentan anteriormente cambiando el rango. Los Primeros Pasos Para Programar se dan practicando los tipos de datos que se comento en las líneas anteriores.
A diferencia de Clipper u otros lenguajes la tipificación de datos en Delphi es mucha más rica y ajustada a las necesidades de programación.
Ambito de visibilidad El ámbito de visibilidad se determina según la parte del programa donde aplicamos la declaración de las variables. Un programa se divide en bloques de código, normalmente estos bloques son PROCEDIMIENTOS o FUNCIONES, y las variables declaradas en ellos no son visibles por el resto, a excepción de: · Si se declaran en la sección implementation de la unidad (unit), para ser compartidas en dicha unidad. · Si se declaran como constantes, const.
Tiempo de Vida El tiempo de vida de las variables al igual que su ámbito de visibilidad también depende de donde las estemos declaramos.
Variables Dinámicas Las variables dinámicas son aquellas declaradas dentro de un procedimiento y función, siendo su tiempo de vida y ámbito de visibilidad mientras dure la ejecución del procedimiento o función. Ejemplo: var Nombre: string[40];
Variables Estáticas Las variables estáticas son aquellas que sé inicializan sólo una vez durante toda la ejecución del programa, su tiempo de vida es todo el programa y su ámbito de visibilidad depende de sí se encuentra o no dentro de un procedimiento o función. Ejemplo: const Contador: Integer = 1;
4.3.3 Declaración de variables, constantes, procedimientos y funciones (Subrutinas).
Declaración de variables. Las variables se escriben usando caracteres, inclusive los números con un tamaño máximo de 255 letras, siempre empezando con una letra. Ejemplo de variables: número1, a, b, c, num6, promedio, suma números, a12, as12mn, etc. Vea que en todas las variables empezamos con letras. La declaración de variables se hace de la siguiente manera: En este caso la variable a de tipo entero, aceptará valores enteros, como 2, -20, 15, 0, -658, etc.
Tipos de datos. Los tipos de datos simples son:
CADENA DE CARACTERES: Se derivan de los de tipo caracter, se declaran así: char mensaje[20]; En este caso la variable mensaje aceptará un texto o cadena cuya longitud será de 20 caracteres como máximo. Luego las variables pueden sufrir algunas modificaciones como las mencionamos a continuación y los tipos de datos pueden quedar clasificados de la siguiente manera:
Los tipos de datos básicos tienen varios modificadores que los preceden. Se usa un modificador para alterar el significado de un tipo base para encajar con las necesidades de diversas situaciones. LOS MODIFICADORES: signed, unsigned, long y short. Signed, unsigned, long y short pueden ser usados con los tipos char e int. Aunque permitido, el uso de signed en enteros es redundante porque la declaración de un entero por defecto asume un número con signo. LECTURA Y ESCRITURA DE VARIABLES El lenguaje C usa salida formateada. La función printf tiene un carácter especial para formateo % un carácter enseguida define un cierto tipo de formato para una variable, por ejemplo d indica que el resultado será entero como se indica en la tabla a continuación. Ejemplo.
Por ejemplo: printf("
%c %d %f ",ape, i, x);
Explicación: La sentencia(s) de formato se encierra entre comillas " ", y enseguida las variables. Asegurarse que el orden de formateo y los tipos de datos de las variables coincidan -debe existir correspondencia entre las variables y los formatos- en este caso, el valor de ape será de tipo carácter, i entero decimal, x de coma flotante. scanf() es la función para entrar valores a variables. Su formato es similar a printf. Por ejemplo: scanf("%c %d %f %s",&nombre, &i, &x, cad); Observar que se antepone & a los nombres de las variables, excepto a la variable de tipo cadena de caracteres que es de tipo string. LAS CONSTANTES Una constante es una variable, a la cual se le asigna un valor y este no puede cambiar.
Las constantes se declaran usando la palabra clave const, por ejemplo: const a = 6; NOTAS: - Es usual inicializar una constante con un valor, ya que no puede ser cambiada de alguna otra forma.
OPERADORES EL PARÉNTESIS Se usan para agrupar datos. No es lo mismo: 4+8/2 que (4+8)/2, si evaluamos en el primer caso tendremos como resultado 8 y en el otro 6, e ahí la importancia del paréntesis bien usado. EL OPERADOR DE ASIGNACIÓN: Es el =, por ejemplo: m=4;
letra='y';
Se lee: El número 4 es asignado a la variable m El carácter y es asignado a la variable letra OPERADORES ARITMÉTICOS Operadores aritméticos más usuales: Para: a=5 y b=3
OPERADORES RELACIONALES Para: a=5 y b=3
OPERADORES LÓGICOS Los operadores lógicos se usan con sentencias condicionales o relacionales, los operadores básicos lógicos son: Para: a=5 , b=3, c=5 y d=3.
ORDEN DE PRECEDENCIA DE LOS OPERADORES Es necesario ser cuidadosos con el significado de expresiones tales como a + b * c, dependiendo de lo que se desee hacer. Para a=5 , b=3 y c=5 a + b * c = 20 (a + b) * c = 40 a + (b * c) = 20 Tenga en cuenta los tres resultados anteriores, y vea l a importancia del paréntesis, dependiendo de la operación que desea realizar será utilizado. Sin embargo todos los operadores tienen una prioridad: - Los operadores de mayor prioridad son evaluados antes que los que tienen menor prioridad. - Los operadores que tienen la misma prioridad son evaluados de izquierda a derecha, por lo que: En a + b - c es evaluado como (a + b) - c. En a - b - c es evaluado como (a - b) - c.
Las () es un símbolo de agrupación.
Las variables sirven para almacenar valores, y tienen cuatro características: · Un nombre · Un tipo de datos · Un ámbito de visibilidad · Un tiempo de vida
Referencia a Variables Las variables sé referencian por un nombre, para que cuando las llamemos por dicho nombre nos devuelva el valor que contiene. Pero previamente se han de declarar y asignar un tipo de datos. Para el nombre sólo se tienen en cuenta los 63 primeros caracteres, y ha de empezar por una letra o subguión _
Declaración de variables Declarar una variable es darle un nombre a esta, y podemos hacerlo anteponiendo la sentencia:
var . Ejemplo: Var Contador: Integer;
Asignación de Valores Una vez declarada la variable con su nombre y tipo de datos que tendrá, es necesario inicializarla con un valor, para ello utilizaremos los signos := Ejemplo: Contador := Contador + 1;
4.3.4 Operaciones aritméticas, lógicas y relacionales. Operadores : Un operador es el símbolo que determina el tipo de operación o relación que habrá de establecerse entre los operandos para alcanzar un resultado. Los operadores se clasifican en tres grupos:
Aritméticos. Relacionales. Lógicos.
ARITMETICOS: Son aquéllos que permiten la realización de cálculos aritméticos. Utilizan operandos numéricos y proporcionan resultados numéricos. Operador operación. suma resta multiplicación división real división entera Mod residuo exponenciación
OPERADORES LOGICOS: Son aquéllos que permiten la combinación de condiciones para formar una sola expresión lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también. Operador Relación
not Negación (No) and Conjunción (Y) or Disyunción (O) xor Disyunción Exclusiva (O/SOLO) Se obtiene Verdadero si: NOT El operando es falso AND Ambos operandos son verdaderos OR Al menos un operando es verdadero XOR Solo uno de los operandos son verdadero
OPERADORES RELACIONALES: Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.
Operador Significado
Menor que Mayor que Igual que Menor o igual que Mayor o igual que Diferente de
4.4
Uso del depurador (debbuger) para depurar y dar seguimiento a los programas.
Depurador.
Winpdb depurándose a sí mismo.
Un depurador (en inglés, debugger), es un programa usado para probar y depurar (eliminar los errores) de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. Algunas depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto. Si es un depurador de nivel de fuente o depurador simbólico, comúnmente ahora visto en entornos de desarrollo integrados, cuando el programa "se estrella" o alcanza una condición predefinida, la depuración típicamente muestra la posición en el código original. Si es un depurador de bajo nivel o un depurador de lenguaje de máquina, muestra la línea en el fuente desensamblado (a menos que también tenga acceso en línea al código fuente original y pueda exhibir la sección apropiada del código del ensamblador o del compilador). Un "estrellamiento" sucede cuando el programa no puede continuar normalmente debido a un error de programación. Por ejemplo, el programa pudo haber intentado usar una
instrucción no disponible en la versión actual del CPU o haber intentado tener acceso a memoria protegida o no disponible. Típicamente, los depuradores también ofrecen funciones más sofisticadas tales como correr un programa paso a paso (un paso o animación del programa), parar el programa (breacking), es decir, pausar el programa para examinar el estado actual en cierto evento o instrucción especificada por medio de un breakpoint, y el seguimiento de valores de algunas variables. Algunos depuradores tienen la capacidad de modificar el estado del programa mientras que está corriendo, en vez de simplemente observarlo. También es posible continuar la ejecución en una posición diferente en el programa bypaseando un estrellamiento o error lógico. La importancia de un buen depurador no puede ser exagerada. De hecho, la existencia y la calidad de tal herramienta para un lenguaje y una plataforma dadas a menudo puede ser el factor de decisión en su uso, incluso si otro lenguaje/plataforma es más adecuado para la tarea. La ausencia de un depurador, una vez estando acostumbrado a usar uno, se ha dicho que "hace que usted se sienta como un hombre ciego en un cuarto oscuro buscando un gato negro que no está allí".1 Sin embargo, el software puede (y a menudo) se comporta diferentemente corriendo bajo un depurador que normalmente, debido a los cambios inevitables que la presencia de un depurador hará a la temporización interna de un programa de software. Como resultado, incluso con una buena herramienta de depuración, es a menudo muy difícil rastrear problemas de tiempo de corrida en complejos sistemas distribuidos con múltiples hilos. La misma funcionalidad que hace a un depurador útil para eliminar errores permite ser usado como herramienta de craqueo de software para evadir la protección anticopia, la gestión de derechos digitales, y otras características de protección de software. A menudo también lo hace útil como herramienta general de verificación de pruebas, cobertura de fallas, o analizador de desempeño, especialmente si son mostradas las longitudes de trayectoria de instrucción. La mayoría de los motores de depuración actuales, tales como gdb y dbx proporcionan interfaces basadas en línea de comandos. Los frontales de depuración son extensiones populares a los motores de depuración, que proporcionan integración al IDE, animación del programa, y características de visualización. Algunos depuradores de los primeros mainframes tales como el Oliver y el SIMON proporcionaron esta misma funcionalidad para el IBM System/360 y posteriores sistemas operativos, hasta los años 1970.
Dependencia del lenguaje Algunos depuradores operan en un simple lenguaje específico mientras que otros pueden manejar múltiples lenguajes transparentemente. Por ejemplo si el programa objetivo principal es escrito en COBOL, pero llama a subrutinas en assembler y también subrutinas en PL/1, el depurador puede cambiar modos dinámicamente para acomodar los cambios en el lenguaje a medida que ocurren.
Protección de memoria Algunos depuradores también incorporan protección de memoria para evitar violaciones del almacenamiento tales como desbordamiento de búfer. Esto puede ser extremadamente importante en los ambientes de procesamiento de transacciones donde la memoria es dinámicamente asignada desde "pools" de memoria en una base de tarea por tarea.
Soporte de hardware para la depuración La mayoría de los microprocesadores modernos tienen al menos una de estas características en su diseño de CPU para hacer la depuración más fácil:
Soporte en hardware para ejecutar un programa paso a paso, tal como el trap flag. Un conjunto de instrucciones conformado con los requerimientos de virtualización de Popek y Goldberg, hace más fácil escribir el software depuración que corre en el mismo CPU que el software que está siendo depurado; tal CPU puede ejecutar los bucles internos del programa bajo prueba a velocidad completa, y todavía permanecer bajo control del depurador. In-system programming (ISP) (programación en sistema) permite a un depurador de hardware externo reprogramar un sistema bajo prueba, por ejemplo, adición o eliminación de instrucciones de puntos de ruptura (breakpoints). Muchos sistemas con tal soporte de ISP también tienen otro soporte de hardware de depuración. Soporte de hardware para breakpoints de código y datos, tales como comparadores de direcciones y comparadores de valores de datos, o con considerablemente más trabajo implicado, hardware de fallo de página. El acceso de JTAG a las interfaces de depuración de hardware tales como en procesadores de la arquitectura ARM o usando el conjunto de comandos Nexus. Los procesadores usados en sistemas empotrados típicamente tienen extenso soporte de depuración JTAG. Los microcontroladores con tan poco como seis pines necesitan usar sustitutos de bajo conteo de pines para JTAG, tal como BDM, Spy-Bi-Wire, o DebugWire en el Atmel AVR. DebugWire, por ejemplo, usa señalización bidireccional en el pin del RESET.
Uso El depurador lanza el programa a depurar. Éste se ejecuta normalmente hasta que el depurador detiene su ejecución, permitiendo al usuario examinar la situaci ón.
El depurador permite detener el programa en:
Un punto determinado mediante un punto de ruptura. Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional. Un momento determinado cuando se cumplan ciertas condiciones. Un momento determinado a petición del usuario.
Durante esa interrupción, el usuario puede:
Examinar y modificar la memoria y las variables del programa. Examinar el contenido de los registros del procesador. Examinar la pila de llamadas que han desembocado en la situación actual. Cambiar el punto de ejecución, de manera que el programa continúe su ejecución en un punto diferente al punto en el que fue detenido. Ejecutar instrucción a instrucción. Ejecutar partes determinadas del código, como el interior de una función, o el resto de código antes de salir de una función.
El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aquí se han mostrado las más comunes.
Información de depuración Para poder aprovechar todas las posibilidades de depuración es necesario que, al compilar el programa a depurar, se indique al compilador que debe incluir instrucciones e información extra para la depuración del código. Dicha información extra consiste básicamente en la correspondencia entre las instrucciones del código ejecutable y las instrucciones del código fuente que las originan, así como información sobre nombres de variables y funciones. Aún si no se incluye esta información de depuración, sigue siendo posible monitorizar la ejecución del programa. Sin embargo, resultará más difícil y compleja debido a esa falta de información del contexto en el que se ejecuta el programa.
4.5 Diseño, edición, compilación y ejecución de aplicaciones. EDICIÓN, COMPILACIÓN Y EJECUCIÓN DE PROGRAMAS Su uso es como el de cualquier editor de textos convencional, aunque incluye alguna herramienta de utilidad para el programador. 1.1 Au toform ato de código
Resulta de gran utilidad el formato automático de código: a medida que se va Escribiendo el programa, el editor reconoce las diferentes estructuras, resaltando las palabras clave de Java, realizando la tabulación automáticamente o señalando los símbolos de apertura y cierre correspondientes a {,.}, (, ), [, ], .... Si en un momento dado se pierde el formato del código, puede recuperarse automáticamente mediante el menú contextual, con la opción REFORMAT CODE. 1.2 Comp ilación y ejecución
Otras de las opciones de utilidad en dicho menú contextual son las de COMPILACIÓN (F9) o EJECUCIÓN (F6), a las que también se puede acceder desde la barra de herramientas a través de los símbolos correspondientes y, Respectivamente. La ejecución de un programa cambia el entorno al escritorio RUNNING, en el cual están accesibles las ventanas de Entrada Salida (que actúa de terminal estándar de E/S) y ejecución Puede detenerse una ejecución en curso desplegando el menú contextual sobre el nombre del programa (proceso) en ejecución.