wikipnfi.wikispaces.comde... · web viewconcepto de algoritmos y programas. lenguaje algorítmico y...

54
REALIZADO POR: Anderson González Andrés García Gregorio López

Upload: nguyenminh

Post on 17-May-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

REALIZADO POR:Anderson GonzálezAndrés GarcíaGregorio LópezJessica BlancoTony Da cámaraJoseph Huizi

Marzo 2012

Page 2: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

ALGORÍTMICA Y PROGRAMACIÓN TRIMESTRE 1

UNIDAD 1

ALGORITMOS Y PROGRAMAS

Concepto de Algoritmos y Programas.

Lenguaje algorítmico y de programación.

Partes de un algoritmo.

Características y elementos para construir un algoritmo.

Formas de representar un algoritmo: Lenguaje Natural, pseudocódigo y diagrama de

flujo. Traza de un algoritmo (corrida en frío).

DESCRIPCION DE LA UNIDAD 1

ALGORITMOS Y PROGRAMAS

Es un conjunto prescrito 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. 

Un algoritmo es el medio por el que se explica cómo puede resolverse un

problema, mediante aproximaciones paso a paso. Se puede formular de muchas formas

con el cuidado de que no exista ambigüedad.

CARACTERISTICAS DE LOS ALGORITMOS

Las principales características de los algoritmos son:

El algoritmo debe ser sencillo e indicar el orden de realización de cada paso

Un algoritmo debe estar definido.

El algoritmo de ser finito.

Un algoritmo describe la transformación de una entrada en la salida

Page 3: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

La entrada se refiere a algo que existe y es utilizado por el algoritmo para

transformarlo en los resultados que uno planifica.

LENGUAJE DE ALGORÍTMICA Y PROGRAMACIÓN

Lenguaje máquina: Todo se programa con 1 y 0, que es lo único que entiende el

ordenador.

Ventaja: No necesita ser traducido.

Inconveniente: La dificultad, la confusión, para corregir errores, es propia de cada

máquina.

De bajo nivel o ensamblador: Se utilizan mnemotécnicos (abreviaturas).

Ventaja: No es tan difícil como el lenguaje máquina.

Inconvenientes: Cada máquina tiene su propio lenguaje, necesitamos un proceso de

traducción.

El programa escrito en ensamblador se llama programa fuente y el programa que

se obtiene al ensamblarlo se llama programa objeto.

Lenguajes de alto nivel: Los más cercanos al lenguaje humano.

PARTES DE UN ALGORITMO

Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir:

entrada, proceso y salida.

Entrada: Corresponde al insumo, a los datos necesarios que requiere el proceso

para ofrecer los resultados esperados.

Proceso: Pasos necesarios para obtener la solución del problema o la situación

planteada.

Page 4: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Salida: Resultados arrojados por el proceso como solución.

En el ejemplo del algoritmo de la sumatoria de los dos números, tenemos:

Entrada: Valores de de las variables A y B.

Proceso: Asignar a la variable Suma, el valor de A mas el valor de B.

Salida: Impresión del valor de la variable Suma, que contiene la sumatoria de los

valores de A y B.

CARACTERÍSTICAS Y ELEMENTOS PARA CONSTRUIR UN ALGORITMO

VARIABLES

Son elementos que toman valores específicos de un tipo de datos concreto. La

declaración de una variable puede realizarse comenzando con var. Principalmente,

existen dos maneras de otorgar valores iniciales a variables:

1. Mediante una sentencia de asignación.

2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read').

Estructuras secuenciales

La estructura secuencial es aquella en la que una acción sigue a otra en secuencia.

Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente

y así sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso

de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el

nombre de la variable que recibe el valor. La asignación se puede clasificar de la

siguiente forma:

1. Simples: Consiste en pasar un valor constante a una variable (a ← 15)

2. Contador: Consiste en usarla como un verificador del número de veces que se

realiza un proceso (a ← a + 1)

3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)

4. De trabajo: Donde puede recibir el resultado de una operación matemática que

involucre muchas variables (a ← c + b*2/4).

Page 5: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

FORMAS DE REPRESENTAR UN ALGORITMO: LENGUAJE NATURAL, PSEUDOCÓDIGO Y

DIAGRAMA DE FLUJO

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.

También es posible incluir un teorema que demuestre que el algoritmo es correcto,

un análisis de complejidad o ambos.

Diagrama de flujo

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos

conectados con flechas para indicar la secuencia de instrucciones y están regidos

por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que

abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son

usados como introducción a los algoritmos, descripción de un lenguaje y descripción de

procesos a personas ajenas a la computación.

Page 6: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

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

Page 7: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de

multiplicación tradicional, el algoritmo de Euclides, lacriba de Eratóstenes y

muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.

Traza de un algoritmo (corrida en frío)

La traza de un algoritmo (o programa) indica la secuencia de acciones

(instrucciones) de su ejecución, así como, el valor de las variables del algoritmo (o

programa) después de cada acción (instrucción).

UNIDAD 2

ESTÁNDARES DE CALIDAD EN EL DISEÑO DE ALGORITMOS

Y CONSTRUCCIÓN DE PROGRAMAS

Introducción a los estándares de calidad.

Forma de trazabilizar un algoritmo.

Formas y técnicas de documentar algoritmos y programas.

Introducción a la elaboración del manual del sistema, usuario y programas.

Técnicas de escritura y pruebas de algoritmos y programas.

DESCRIPCION DE LA UNIDAD 2

INTRODUCCION A LOS ESTANDARES DE CALIDAD

        

Sin importar cualquiera que sea el tipo de software a ser desarrollado sea de

sistemas (Son programas que sirven a otros programas en el trabajo de desarrollo como

compiladores editores, tiempo real(software encargado de analizar datos del mundo en

forma real talos como análisis de datos, control autorizado monitoreo de datos),gestión a

esta categoría se incluyen el software comercial a nivel empresarial nominas,

inventarios),ingeniería y científicos(es software que posee un amplio manejo numérico

Page 8: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

empleado en biología, astronomía, CAD),comportado (software que se encuentra

residente en memoria, tales como: controles automáticos en los vehículos, sistema

operativo), computación personal (software comercial de uso local como procesadores

de texto,hojaselectrocnicas,navegadoresweb,calendarios,agendas,recetarios) inteligencia

artificial (software de procesamiento  especial sistemas expertos. Sistemas basados en el

conocimiento, generalmente no usan algoritmos numéricos) .Todos los tipos de

software mencionados requieren que los analistas, diseñadores y desarrolladores

apliquen características y elementos de calidad para que se logren productos a las

necesidades del usuario, estas necesidades s comienzan a encontrar un camino de

solución a través de la aplicación de elementos de calidad, así se presentan dos de los

más valiosos como son eficiencia y la eficacia.

                El uso eficiente y eficaz de la tecnología de los computadores es un objetivo

que aun esta distante.

Referencia bibliográfica donde puede encontrarse esta información más detallada:

http://erickjoseluis.blogspot.com/2011/04/introduccion-los-estandares-de-calidad.html

FORMA DE TRAZABILIZAR UN ALGORITMO

ESTÁNDARES DE CALIDAD EN EL DISEÑO DE ALGORITMOS Y

CONSTRUCCIÓN DE PROGRAMAS

Todos los tipos de software a ser desarrollados requieren un control de calidad,

sea software de sistemas (Son programas que sirven a otros programas en el trabajo de

desarrollo como compiladores, editores), ingeniería y científico (es software queposee

un amplio manejo numérico usado en biología, astronomía, CAD), computación

personal (software comercial de uso local como procesadores de texto,hojas

electrónicas, navegadores web, calendarios, agendas, recetarios), inteligencia artificial

(software de procesamiento especial sistemas expertos, sistemas basados en el

conocimiento, algoritmos no numéricos).

Hoy en día hay muchos programadores pero no todos desarrollan sus programas

Page 9: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

con calidad, a este tipo de productos se les llama software basura, algunos ni cuentan

con un respaldo del programador, o simplemente no tiene un soporte de calidad que se

adapte al usuario. Por eso se presentan dos de los más valiosos controles de calidad,

como son la eficiencia y la eficacia. La ingeniería del software pretende utilizar los

recursos computacionales de tal manera que se produzcan soluciones eficientes y

eficaces a los problemas informáticos, el éxito de un proyecto.

Construcción de un programa

El desarrollo de software es un proceso por el cual, dado un problema, se encuentra un

programa (o un conjunto de programas) que lo resuelva eficientemente.

Análisis del Problema

Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:

Los datos de entrada. Cuál es la información que se desea producir (salida), los métodos

y fórmulas que se necesitan para procesar los datos. Una recomendación muy practica

es el que nos pongamos en el lugar de la computadora y analicemos que es lo que

necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.

Niveles de construcción de un programa

Programas de bajo nivel:

Son programas que explotan las características propias de la computadora por ejemplo

rutinas graficas, manejos de puertos, interfaces con el usuario, etc. Con este tipo de

programas no puede seguirse estrictamente las fases del diseño y generalmente son

rutinas que deben ser optimizadas, aun sacrificando su claridad (suelen ser rutinas que

solo estudiaran especialistas).

Programas de alto nivel:

Son programas que entregan resultados independientemente de la maquina. Para

construirlos hay que enlazar herramientas ya disponibles. En este tipo de programas

conviene seguir estrictamente las fases del diseño y generalmente no deben ser

optimizadas, ya que requiere claridad para que las entienda un no especialista. Para

facilitar el proceso de mantenimiento, hay que evitar mezclar niveles al construir

Page 10: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

rutinas.

INTRODUCCIÓN A LOS ESTÁNDARES DE CALIDAD

En algunos momento se definió a la Calidad como: Lo que se hace bien y a la

primera, concepto erróneo ya que, no se puede determinar la calidad de un servicio,

producto o proceso, tomando en cuenta solo el aspecto de desarrollo, olvidando por

completo al proceso de depuración que inherentemente involucra una serie de

corrección de errores, por lo que, la definición de calidad esta mas allá de la

observación de una parte de dicho proceso. La mayoría de los clientes busca calidad al

mejor precio, sin embargo, lo que puede ser excelente para algunos, no lo es para otros.

Cuando un individuo adquiere un producto o servicio, lo hace para satisfacer una

necesidad, pero siempre espera que la nueva adquisición funcione como lo esperado, o

al menos como se lo prometieron en el anuncio publicitario. Muchas veces la calidad se

paga, justificando de esta forma el dicho de que lo barato sale caro.

El significado de calidad puede adquirir múltiples interpretaciones, ya que todo

dependerá del nivel de satisfacción o conformidad del cliente. Sin embargo, las

calidades el resultado de un esfuerzo arduo, se trabaja de forma eficaz para poder

satisfacer el deseo del consumidor. Dependiendo de la forma en que un producto o

servicio sea aceptado o rechazado por los clientes, podremos decir si éste es bueno o

malo. Muchas veces el nivel de calidad se mide de acuerdo a la reacción y preferencias

del cliente. Desde el mismo momento en que éste llega al establecimiento comercial,

sabe exactamente qué va a comprar y dónde ubicarlo, va directo al lugar donde se

encuentra el producto de su preferencia. En ocasiones, no encontrará lo que está

buscando y por tanto se decidirá por otro producto de mayor o menor precio, sin

embargo, cuando su nivel de preferencia se afinca en una determinada marca, el cliente

prefiere seguir buscando en otros establecimientos en vez de resolverse con un producto

sustitutivo.

FORMAS DE TRAZABILIZAR UN ALGORITMO

Page 11: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

La traza de un Algoritmo se puede definir como la ejecución manual de forma

secuencial de las sentencias que lo componen.

La función principal que posee realizar la traza de un algoritmo es la de

comprobar que éste funciona correctamente o para realizar la etapa de depuración en la

que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar su

eficacia y velocidad.

Formas de representar un algoritmo:

* Pseudocódigo: Es una técnica para el diseño de programas que permite definir las

estructuras de datos.

* Diagrama De Flujo: Es una técnica que representa de forma grafica los algoritmos,

aunque su empleo ha disminuido considerablemente por la aparición de los lenguajes de

programación.

*Diagrama N-S: también conocido como diagrama de Chapín es una técnica de

especificación de algoritmos que combina la descripción textual, propia del

pseudocódigo, con la representación gráfica del diagrama de flujo.

FORMAS Y TÉCNICAS DE DOCUMENTAR UN ALGORITMO Y UN

PROGRAMA

Son comentarios, etiquetas de texto, que facilitan la comprensión del programa

Documentación

La documentación del programa es fundamental para diseñadores y usuarios .En

pseudocódigo solo se documentarán los algoritmos internamente, esto es, se efectuarán

comentarios de ciertas acciones o grupos de acciones para permitir al diseñador o al

equipo del diseño releer el algoritmo con facilidad. Para documentar internamente un

Page 12: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

algoritmo en pseudocódigo se empleará la doble barra () y a continuación el texto o la

frase explicativa.

Al ejecutar el algoritmo, este texto a la derecha de la debe ser ignorado, pues no

constituye a una acción algorítmica.

Documentar el código de un programa es añadir suficiente información como

para explicar lo que hace, punto por punto, de forma que no sólo los ordenadores sepan

qué hacer, sino que además los humanos entiendan qué están haciendo y por qué.

Porque entre lo que tiene que hacer un programa y cómo lo hace hay una distancia

impresionante: todas las horas que el programador ha dedicado a pergeñar una solución

y escribirla en el lenguaje que corresponda para que el ordenador la ejecute

ciegamente .Documentar un programa no es sólo un acto de buen hacer del programador

por aquello de dejar la obra rematada. Es además una necesidad que sólo se aprecia en

su debida magnitud cuando hay errores que reparar o hay que extender el programa con

nuevas capacidades o adaptarlo a un nuevo escenario. Hay dos reglas que no se deben

olvidar nunca:

Todos los programas tienen errores y descubrirlos sólo es cuestión de tiempo y

de que el programa tenga éxito y se utilice frecuentemente

Todos los programas sufren modificaciones a lo largo de su vida, al menos todos

aquellos que tienen éxito.

Por una u otra razón, todo programa que tenga éxito será modificado en el

futuro, bien por el programador original, bien por otro programador que le

sustituya. Pensando en esta revisión de código es por lo que es importante que el

programa se entienda: para poder repararlo y modificarlo.

INTRODUCCIÓN A LA ELABORACIÓN MANUAL DE USUARIO

Page 13: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Manual De Usuario

Expone los procesos que el usuario puede realizar con el sistema implantado. Para lograr esto, es necesario que se detallen todas y cada una de las características que tienen los programas y la forma de acceder e introducir información. Permite a los usuarios conocer el detalle de qué actividades ellos deberán desarrollar para la consecución de los objetivos del sistema. Reúne la información, normas y documentación necesaria para que el usuario conozca y utilice adecuadamente la aplicación desarrollada.

Objetivos

Que el usuario conozca cómo preparar los datos de entrada.Que el usuario aprenda a obtener los resultados y los datos de salida.Servir como manual de aprendizaje.Servir como manual de referencia.Definir las funciones que debe realizar el usuario.Informar al usuario de la respuesta a cada mensaje de error.

Pasos a seguir para definir como desarrollar el manual de usuario.

Identificar los usuarios del sistema: personal que se relacionará con el sistema.Definir los diferentes tipos de usuarios: se presentan los diferentes tipos de usuarios que usarían el sistema. Ejemplo: usuarios directos, indirectos.Definir los módulos en que cada usuario participará: Se describen los módulos o procesos que se ejecutarán por cada usuario en forma narrativa breve y clara.

Importancia Del Manual De Usuario

El Manual de Usuario facilita el conocimiento de:

Los documentos a los que se pueden dar entrada por computadora.Los formatos de los documentos.Las operaciones que utiliza de entrada y salida de los datos.El orden del tratamiento de la computadora con los datos introducidos.El momento en que se debe solicitar una operación deseada.Los resultados de las operaciones realizadas a partir de los datos introducidos.

Al elaborar el Manual de Usuario, hay que tener en cuenta a quién va dirigido es decir, el manual puede ser manejado desde el director de la empresa hasta el introductor de datos. Por consiguiente, debe redactarse de forma clara y sencilla para que lo entienda cualquier tipo de usuario.

Contenido

Page 14: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Diagrama general del sistema

Muestra en forma condensada el flujo general de la información y de las actividades que se realizan en el sistema. Proporciona una visión general del sistema. Representar los diagramas utilizando para ello diagramas de bloques.

Diagrama particular detallado.

Presentar gráficamente todos los pasos que se efectúen dentro del departamento usuario a quien está dirigido este manual. Deben especificarse los archivos de entrada, salida, los resultados, revisiones y procesos manuales.

Explicación Genérica De Las Fases Del Sistema

En este punto se explica en forma específica y detallada todas las operaciones que aparecen representadas en forma gráfica en el diagrama particular. Se analizan cada una de las fases señalando:

El proceso principal que se desarrolla.La entrada de la información.La obtención de un resultado parcial.El envío de información a otra dependencia.

Instalación Del Sistema

La instalación del sistema proporciona detalles completos sobre la forma de instalar el sistema en un ambiente particular.

Iniciación Al Uso Del Sistema

En este punto se explica cómo iniciarse en el sistema y cómo se pueden utilizar sus cualidades comunes. Esta documentación debe decir al usuario cómo salir de un problema cuando las cosas funcionan mal.

Manual De Referencia

Es el documento definitivo de cara al usuario y debe ser completo. Describe con detalle las cualidades del sistema y su uso, los informes de error generados y las situaciones en que surgen esos errores.

Dependiendo del sistema, los documentos al usuario se pueden proporcionar por separado o reunidos en varios volúmenes. Los sistemas de ayuda en línea evitan que el usuario pierda tiempo en consultas manuales.

Caducidad De Documento Fuente Y Destino Final

Como el usuario trabajará con documentos fuentes, éstos podrán tener un período de retención y un destino especificado.

Page 15: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

TÉCNICAS DE ESCRITURA Y PRUEBAS DE ALGORITMOS Y PROGRAMAS

Lenguaje Natural Diagramas de Flujo PseudoCòdigo

Diagramas de Flujo

Se basan en la utilización de diversos símbolos para representar operaciones

específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan

por medio de flechas para indicar la secuencia de operación.

Pseudocódigo

Es una descripción de un algoritmo de programación informático de alto nivel

compacto e informal que utiliza las convenciones estructurales de un lenguaje de

programación verdadero, pero que está diseñado para la lectura humana en lugar de la

lectura en máquina, y con independencia de cualquier otro lenguaje de programación.

Lenguaje natural

Es el lenguaje hablado o escrito por humanos para propósitos generales de

comunicación. Son aquellas lenguas que han sido generadas espontáneamente en un

grupo de hablantes con propósito de comunicarse, a diferencia de otras lenguas, como

puedan ser una lengua construida, los lenguajes de programación o los lenguajes usados

en el estudio de la lógica formal, especialmente la lógica matemática.

UNIDAD 3

Page 16: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

DATOS Y ENTIDADES PRIMITIVAS

Concepto y diferencia entre dato e información, tipos de datos.

Los Operadores: Concepto y tipos de operadores.

Las Expresión: concepto, tipos y evaluación de expresiones, Los Identificadores:

Concepto, Reglas de escritura, las variables: clasificación de variables según su

contenido (numéricas, lógicas y alfanuméricas) y su uso (de trabajo, contador y

acumulador), constantes.

DESCRIPCIÓN DE LA UNIDAD 3

Tipos de Datos:

Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter,

tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del

conjunto de valores que puede tomar una variable

Tipos de Datos Simples:

Datos Numéricos: Permiten representar valores escalares de forma numérica, esto

incluye a los números enteros y reales. Este tipo de datos permiten realizar operaciones

aritméticas comunes.

Datos Lógicos: Son aquellos que solo pueden tener dos valores, cierto o falso, ya que

representan el resultado de una comparación entre otros datos, numéricos o

alfanuméricos.

Datos Alfanuméricos: Es una secuencia de caracteres alfanuméricos que permiten

representar valores identificables de forma descriptiva, esto incluye nombre de

personas, direcciones, etc. Es posible representar números como alfanuméricos, pero

estos pierden su propiedad matemática, es decir, no es posible hacer operaciones con

ellos. Este tipo de datos se representan encerrados entre comillas.

OPERADORES Y OPERANDOS

Page 17: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Operadores: Son elementos que relacionan de forma diferente, los valores de una o más

variables y/o constantes. Es decir, los operadores nos permiten manipular valores.

EXPRESIONES

Las expresiones son combinaciones de constantes, variables, símbolos de operación,

paréntesis y nombres de funciones especiales.

EVALUACIÓN DE EXPRESIONES

Como ya sabemos la sintaxis en lógica es la forma correcta de escribir una fórmula y la semántica es lo que significa. Como en lógica solamente tenemos dos valores una fórmula solamente puede ser verdadera o falsa. Para determinar su valor seguimos las reglas simples que dimos en las definiciones básicas de acuerdo a su tabla de verdad. Esto lo hacemos mediante interpretaciones. Una interpretación de una fórmula es un conjunto de valores que se les asignan a sus proposiciones atómicas.

Al interpretar una fórmula lo que finalmente vamos a obtener es un valor de verdad, bien sea verdadero o falso. Pero para poder encontrarlo muchas veces el proceso en laborioso porque puede estar formada por varias proposiciones atómicas. Primeramente se le asignan valores de verdad a los átomos y se puede encontrar el valor de la expresión.

PARA MAS INFORMACION CONSULTA EN: http://www.mitecnologico.com/Main/EvaluacionDeExpresiones

¿Qué son los identificadores?La mayoría de los elementos de un algoritmo escrito en pseudocódigo se diferencian entre sí por su nombre. Por ejemplo, los tipos de datos básicos se nombran como:

entero, real, lógico y carácter

Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a un elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato entero hace referencia a un tipo de dato que es distinto a todos los demás tipos de datos, es decir, los valores que puede tomar un dato de tipo entero, no son los mismos que los que puede tomar un dato de otro tipo.

Los identificadores entero, real, logico y caracter están predefinidos, forman parte del lenguaje algorítmico. No obstante, en un algoritmo también pueden existir identificadores definidos por el programador. Por ejemplo, un algoritmo puede utilizar variables y constantes definidas por el programador. Además, los algoritmos también se deben nombrar mediante un identificador.

Page 18: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

En pseudocódigo, a la hora de asignar un nombre a un elemento de un algoritmo, se debe de tener en cuenta que todo identificador debe cumplir unas reglas de sintaxis. Para ello, en nuestro pseudocódigo CEE (C en Español), vamos a seguir las mismas reglas de sintaxis que existen en lenguaje C:

1. Consta de uno o más caracteres.2. El primer carácter debe ser una letra o el carácter subrayado (_), mientras que, todos

los demás pueden ser letras, dígitos o el carácter subrayado (_). Las letras pueden ser minúsculas o mayúsculas del alfabeto inglés. Así pues, no está permitido el uso de las letras 'ñ' y 'Ñ'.

3. No pueden exitir dos identificadores iguales, es decir, dos elementos de un algoritmo no pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador no pueda aparecer más de una vez en un algoritmo.

De la segunda regla se deduce que un identificador no puede contener caracteres especiales, salvo el carácter subrayado (_). Es importante resaltar que las vocales no pueden llevar tilde ni diéresis.

Ejemplo 1: Algunos identificadores válidos que pueden ser definidos por el programador son:

numerodia_del_mesPINGUINO1_ciudadZ

LAS VARIABLES

En programación, una variable es un espacio de memoria reservado para almacenar un valor que corresponde a un tipo de dato soportado por el lenguaje de programación. Una variable es representada y usada a través de una etiqueta (un nombre) que le asigna un programador o que ya viene predefinida.

Por ejemplo, en la variable de nombre "num", se almacena el número 8 (de tipo entero). De forma genérica, para utilizarla y sumarle un uno se debería programar: num = num + 1.Una variable puede ser del tipo boleano, entero, decimal de coma flotante, caracter, cadena de texto, arreglo, matriz, tipo definido por el usuario, etc. Estos son tipos de datos.

Una variable, por lo general, como su nombre lo indica, puede variar su valor durante la ejecución del programa. Dependiendo del lenguaje de programación usado, también puede cambiar el tipo de dato que almacena.

CONSULTAR EN: http://www.alegsa.com.ar/Dic/variable.php

TIPOS DE VARIABLES

Page 19: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Las variables pueden ser de los siguientes tipos: (El número indicado en segundo lugar indica el

número de Bytes que ocupa en memoria.)

Booleana (2) Admite los valores 0 y 1, o True (verdadero) y False (falso)

Byte (1) Números enteros, en el rango de 0 a 255

Integer (2) Números enteros en el rango de -32768 a 32767

Long (4) Números enteros en el rango de -2147483648 a 2147483647

Single (4) Punto flotante, simple precisión

Doble (8) Punto flotante, doble precisión.

Currency (8) Entero, con punto decimal fijo (Típico de monedas)

String (*) Cadenas alfanuméricas de longitud variable o fija

Date (8) Fechas

Objet (4) Referencia a objetos

Variant (**) Otros tipos de datos

Una variable tipo String ocupa el mismo número de bytes que caracteres tenga la cadena.

Una variable tipo Variant ocupa 16 bytes si se trata de un número y 22 bytes + longitud de la

cadena si se trata de un dato tipo cadena de caracteres.

Existen también variables definidas por el usuario (Ya verá la sentencia Type). En este tipo de

variables se pueden introducir muchos datos de distinto tipo. Los bytes necesarios para

almacenar esa variable dependerán de los datos que se hayan definido.

Dentro de las variables Objet (variables que se refieren a objetos) existe una gran variedad que

Page 20: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

a estas alturas del curso no debemos complicarnos con ellas. Pero para adelantar algo,

veremos que una variable puede ser del tipo Form - Formulario - , tipo Picture, etc. etc.

Cada tipo de variable ocupa unos determinados bytes. Si no se define una variable, VB toma

como tipo por defecto para la variable el tipo Variant. Este tipo ocupa mas bytes que, por

ejemplo, un integer. Si el tipo de dato que vamos a introducir en una variable es un integer, y

no la hemos declarado como tal, VB asumirá para esa variable que es del tipo Variant, lo que le

llevará a gastar más bytes de memoria (16) que los que necesitaría (2) si la hubiésemos

declarado previamente. Si esa variable va a estar en el rango de 0 a 255, y no declaramos

previamente que la variable va a ser del tipo Byte, o la declaramos como integer, p. e.,

estamos desperdiciando memoria RAM y posiblemente, retardando la ejecución del programa.

Lo mismo podemos decir del resto de las variables, y lo importante que es definirlas y

definirlas bien.

PARA MAS INFORMACION CONSULTAR EN:

http://javier-campusomega.blogspot.com/2009/03/tipos-de-variables.html

Page 21: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

UNIDAD 4

METODOLOGÍA PARA EL ANÁLISIS Y PLANTEAMIENTO DE PROBLEMAS

Identificación del Problema.

Identificación de los datos necesarios (entradas).

Identificación de los datos a obtener (salidas).

Descripción de las operaciones a utilizar (cálculos).

Descripción de los pasos para llegar a la solución (procesos).

DESCRIPCION DE LA UNIDAD 4

METODOLOGÍA PARA LA CONSTRUCCIÓN DE PROGRAMAS.

Presentaremos de forma muy general los principales pasos que se deben seguir para

resolver problemas aplicando técnicas de programación. Esta metodología será

desarrollada a lo largo de todo el curso, en la medida que se estudien las restantes

unidades del mismo.

FORMULACIÓN Y ANÁLISIS DEL PROBLEMA

Consiste en entender de qué se trata el problema planteado y esbozar su posible

solución, concluyendo con una clara definición de tres aspectos: 1º qué es lo que nos

piden, es decir, definición del resultado o solución deseada (para qué). 2º cómo obtener

lo que nos piden (qué hacer). 3º qué necesitamos para obtener los resultados pedidos

(con qué). Esto último nos facilitará la construcción de lo que denominaremos

Especificación Funcional.

- Especificación Funcional: Consiste en determinar las funciones que se van a realizar

(qué hacer) y sus respectivas entradas (con qué) y salidas (para qué):

Page 22: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Donde: entrada son los argumentos (variables o constantes) que se requieren para

resolver un problema, salida son los resultados (argumentos) que se desean obtener una

vez resuelto el problema y proceso es el procedimiento(s) u operación(es) que deben

efectuarse sobre las entradas para obtener las salidas deseadas.´

- Especificación de los Argumentos o Parámetros: Consiste en la documentación de los

argumentos o parámetros (sean estos de entrada, salida o intermedios) requeridos en la

solución del problema, mediante la elaboración de una tabla que contemple los

siguientes aspectos:

- Establecimiento de Restricciones y Atributos: Consiste en determinar bajo qué

restricciones se ha de operar y cuales son las medidas de rendimiento y calidad que debe

tener el sistema (programa).

DISEÑO

Consiste en diseñar cómo hace el programa la tarea solicitada. En forma general

consiste en dividir el programa en subprogramas y cada subprograma en módulos.

Page 23: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

El criterio de descomposición más utilizado es el de tipo funcional, el cual produce una

estructura jerárquica en la que cada módulo ejecuta una o más funciones y para cada

módulo se produce una especificación de programa o módulo, la cual contiene lo

siguiente:

Nombre del Programa o Módulo.

Función que desarrolla. Parámetros o Argumentos.

Parámetros o Argumentos de Entrada.

Parámetros o Argumentos de Salida.

Estructura de Datos Requerida.

Lenguaje de Programación.

Algoritmo.

Donde ALGORITMO es un conjunto finito de pasos en secuencia que indican como se

resuelve un determinado problema.

Page 24: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

UNIDAD 5

PROGRAMACIÓN ESTRUCTURADA

Teoremas de la programación estructurada.

Estructuras de control

Estructuras de decisión: concepto, tipos y sintaxis: Condicional, simples, dobles,

múltiples, anidadas y selectivas.

Estructuras de control iterativas: Concepto y tipos, Ciclo Mientras y Repetir: sintaxis y

métodos para salir del ciclo. Ciclo para: Sintaxis. Ciclos anidados.

DESCRIPCION DE LA UNIDAD 5

TEOREMAS D ELA PROGRAMACIÓN ESTRUCTURADA

La programación estructurada es una técnica para escribir programas

(programación de computadora) de manera clara. Para ello se utilizan ú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.

A finales de los años 1970 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.

Page 25: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

El teorema del programa estructurado, propuesto 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 citadas.

ESTRUCTURAS DE CONTROL

Estructura secuencial

Una estructura de programa es secuencial si las instrucciones se ejecutan una tras otra, a

modo de secuencia lineal, es decir que una instrucción no se ejecuta hasta que finaliza la

anterior, ni se bifurca el flujo del programa.

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.

Page 26: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

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 (o conjunto) u otra/s, según un criterio o condición lógica establecida, sólo

uno de los caminos en la bifurcación será el tomado para ejecutarse.

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 lógica 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, luego de ésta el programa seguirá su

curso.

Page 27: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Ampliando 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 repita su

ejecución mientras se cumpla una condición, el número de iteraciones normalmente está

determinado por el cambio en la condición dentro del mismo bucle, aunque puede ser

forzado o explícito por otra condición.

Ejemplo:

a= 0

b= 7

DO WHILE b > a

PRINT a

a= a + 1

LOOP

Esta instrucción tiene tres palabras reservadas WHILE, DO y LOOP.

DO WHILE: señala el comienzo del bucle ("haga mientras") y después de estas

palabras se espera la condición lógica de repetición, si la condición es verdadera

pasa el control al cuerpo del bucle, en caso contrario el flujo salta directamente

al final de la estructura, saliendo de la misma.

Page 28: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

LOOP: señala el final del cuerpo de la estructura de bucle.

El bucle mientras, se repite mientras la condición sea verdadera, esta condición se

comprueba o chequea antes de ingresar al cuerpo del bucle, por lo que el mismo puede

que no se ejecute nunca (cuando la condición es falsa desde un principio) o bien que se

repita tantas veces como resulte y mientras la condición sea cierta.

En el ejemplo se tienen definidas dos variables a y b, que al iniciarse el bucle contienen

los valores a=0 y b=7.

La condición del bucle es b > a.

Si a=0 y b=7. la condición es verdadera, en el cuerpo del bucle se escribe el

valor de a en pantalla y luego se incrementa esa variable en una unidad.

Entonces pasa a ser a=1 y b=7.

... (se repite la secuencia)

...

Cuando a=6 y b=7. la condición sigue siendo verdadera, se escribe el valor de a

en pantalla y se incrementa en una unidad.

Cuando se llega a que a=7 y b=7. Entonces la condición ya resulta falsa y la

instrucción WHILE finaliza, saliendo por LOOP.

La salida por pantalla de este ejemplo es 0 1 2 3 4 5 6, y se iteró 7 veces.

El lenguaje utilizado en el ejemplo (BASIC), además de tener otras del tipo iterativas,

permite utilizar la misma estructura indicada, pero de la siguiente forma:

a= 0

b= 7

WHILE b > a

PRINT a

a= a + 1

WEND

Page 29: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Que es absolutamente análoga, en éste formato la palabra reservada WEND marca el fin

del bucle y no se utiliza ni DO ni LOOP.

Estructuras de control

En lenguajes de programación, las estructuras de control permiten modificar el flujo

de ejecución de las instrucciones de un programa.

Con las estructuras de control se puede:

De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-

Else y Select-Case)

Ejecutar un grupo de sentencias mientras exista una condición (Do-While)

Ejecutar un grupo de sentencias hasta que exista una condición (Do-Until)

Ejecutar un grupo de sentencias un número determinado de veces (For-Next)

Etc

Todas las estructuras de control tienen un único punto de entrada y un único punto de

salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de

control avanzadas. Esto es una de las cosas que permite que la programación se rija por

los principios de la programación estructurada.

Los lenguajes de programación modernos tienen estructuras de control similares.

Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es

su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.

Tipos de estructura de control

Algunas estructuras de control en el lenguaje Java

Antecedentes

El término "estructuras de control", viene del campo de la ciencia computacional.

Cuando se presentan implementaciones de Java para las estructuras de control, nos

Page 30: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

referimos a ellas con la terminología de la Especificación del lenguaje Java, que se

refiera a ella como instrucciones.

Ejecución secuencial

Pero por lo general las instrucciones se ejecutan una después de la otra, en el orden en

que están escritas, es decir, en secuencia. Este proceso se conoce como ejecución

secuencial.

Transferencia de control

En Java, como en otros lenguajes de programación por excelencia como C y/o C++, el

programador puede especificar que las siguientes instrucciones a ejecutarse tal vez no

sea la siguiente en secuencia. Esto se conoce como transferencia de control. Hay que

tener en cuenta que la instrucción goto es una palabra reservada pero no se utiliza ni se

recomienda. Un programa bien estructurado no necesita de esta instrucción. Si sabes

programar no utilizaras goto.

Estructuras de decisiones simples y dobles:

http://webdelprofesor.ula.ve/ingenieria/gilberto/pr1/08_EstructurasDeDecision.pdf

PROGRAMACIÓN EN C++ ITERACIONES Y DECISIONES

Para mas información visita:

http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/

Iteraciones_y_decisiones

Page 31: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

UNIDAD 6

PROGRAMACIÓN MODULAR

Funciones y procedimientos: Definición y Declaración.

Ámbito de variables: Datos locales y globales.

Llamada de una función y pase d parámetros.

DESCRIPCIÓN DE LA UNIDAD 6

Funciones y procedimientos: Definición y Declaración:

http://altair.lcc.uma.es/clases/laboratorio/curso200102/tema4.pdf

Procedimientos y funciones en C++

http://www.lcc.uma.es/~pastrana/LP/curso0506/Practica05/P05_05.pdf

ÁMBITO DE VARIABLES

Existe una clasificación de las variables, según dónde y cómo se declaren:

Variables locales o automáticas: son las que se declaran en el interior de un

bloque y valen solo allí. Solamente tienen visibilidad dentro de ese bloque y su

valor se pierde al finalizar éste. Estas variables se crean al entrar a ejecutarse el

bloque en el stack, y desaparecen al finalizar; esto hace que de llamada en

llamada de una misma función puedan ocupar distintas posiciones en la

memoria, y por lo tanto no conservan su valor.

Variables externas o globales: Son definidas fuera de las funciones, y ocupan

una posición de memoria fija. Para usarlas dentro de una función debo

declararlas (explícita o implícitamente). Como externa (forma explícita) o por el

contexto (forma implícita). La declaración es implícita si la declaración de la

Page 32: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

variable se encuentra antes en el archivo. Hay que tener en cuenta que estas

variables pueden ser modificadas desde cualquier función, y por lo tanto

aumenta la posibilidad de modificar inadvertidamente su valor.

Variables estáticas: son permanentes y privadas a la función que las declara.

Una variable estática global, es privada al archivo donde se la define. Una

variable estática declarada dentro de una función, trabaja como una variable

automática, con la diferencia que como ocupa un lugar permanente y fijo en la

memoria, guarda su valor de llamada en llamada. Una función es normalmente

externa, pero declarada estática es privada al archivo que la declara.

VISITA ESTE SITIO PARA MAYOR INFORMACIÓN:

http://www.ib.cnea.gov.ar/~servos/CursoC/ambitode.htm

PASÓ DE PARAMTROS A UNA FUNCIÓN:

http://webdelprofesor.ula.ve/ingenieria/amoret/pd1/clase14.pdf

UNIDAD 7

TÉCNICAS DE MANTENIMIENTO DE PROGRAMAS

Técnica de prueba caja negra.

Reingeniería de programas.

TÉCNICA DE PRUEBA CAJA NEGRA

Algunos de los métodos empleados en las pruebas de caja negra son los siguientes:

Métodos de prueba basados en grafos : en este método se debe entender los

objetos (objetos de datos, objetos de programa tales como módulos o

colecciones de sentencias del lenguaje de programación) que se modelan en el

Page 33: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

software y las relaciones que conectan a estos objetos. Una vez que se ha llevado

a cabo esto, el siguiente paso es definir una serie de pruebas que verifiquen que

todos los objetos tienen entre ellos las relaciones esperadas. En este método:

1. Se crea un grafo de objetos importantes y sus relaciones.

2. Se diseña una serie de pruebas que cubran el grafo de manera que se

ejerciten todos los objetos y sus relaciones para descubrir errores.

Beizer describe un número de modelados para pruebas de comportamiento que

pueden hacer uso de los grafos:

Modelado del flujo de transacción. Los nodos representan los pasos de alguna

transacción (por ejemplo, los pasos necesarios para una reserva en una línea

aérea usando un servicio en línea), y los enlaces representan las conexiones

lógicas entre los pasos (por ejemplo, vuelo.información.entrada es seguida de

validación /disponibilidad.procesamiento).

Modelado de estado finito. Los nodos representan diferentes estados del

software observables por el usuario (por ejemplo, cada una de las pantallas que

aparecen cuando un telefonista coge una petición por teléfono), y los enlaces

representan las transiciones que ocurren para moverse de estado a estado (por

ejemplo, petición-información se verifica durante inventario-disponibilidad-

búsqueda y es seguido por cliente-factura-información-entrada).

Modelado de flujo de datos. Los nodos objetos de datos y los enlaces son las

transformaciones que ocurren para convertir un objeto de datos en otro.

Modelado de planificación. Los nodos son objetos de programa y los enlaces

son las conexiones secuenciales entre esos objetos. Los pesos de enlace se usan

para especificar los tiempos de ejecución requeridos al ejecutarse el programa.

Gráfica Causa-efecto. La gráfica Causa-efecto representa una ayuda gráfica en

seleccionar, de una manera sistemática, un gran conjunto de casos de prueba.

Tiene un efecto secundario beneficioso en precisar estados incompletos y

ambigüedades en la especificación.

Page 34: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Un gráfico de causa-efecto es un lenguaje formal al cual se traduce una

especificación. El gráfico es realmente un circuito de lógica digital (una red

combinatoria de lógica), pero en vez de la notación estándar de la electrónica, se

utiliza una notación algo más simple. No hay necesitad de tener conocimiento de

electrónica con excepción de una comprensión de la lógica boleana (entendiendo

los operadores de la lógica y, o, y no).

Partición equivalente: Pressman, presenta la partición equivalente como un

método de prueba de caja negra que divide el campo de entrada de un programa

en clases de datos de los que se pueden derivar casos de prueba. Un caso de

prueba ideal descubre de forma inmediata una clase de errores que, de otro

modo, requerirían la ejecución de muchos casos antes de detectar el error

genérico. La partición equivalente se dirige a la definición de casos de prueba

que descubran clases de errores, reduciendo así el número total de casos de

prueba que hay que desarrollar.

Una clase de equivalencia representa un conjunto de estados válidos o no válidos

para condiciones de entrada. Típicamente, una condición de entrada es un valor

numérico específico, un rango de valores, un conjunto de valores relacionados o

una condición lógica.

El objetivo de partición equivalente es reducir el posible conjunto de casos de

prueba en uno más pequeño, un conjunto manejable que evalúe bien el software.

Se toma un riesgo porque se escoge no probar todo. Así que se necesita tener

mucho cuidado al escoger las clases.

La partición equivalente es subjetiva. Dos probadores quienes prueban un

programa complejo pueden llegar a diferentes conjuntos de particiones.

En el diseño de casos de prueba para partición equivalente se procede en dos

pasos :

1. Se identifican las clases de equivalencia. Las clases de equivalencia son

identificadas tomando cada condición de entrada (generalmente una

oración o una frase en la especificación) y repartiéndola en dos o más

grupos.

Page 35: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Es de notar que dos tipos de clases de equivalencia están identificados:

las clases de equivalencia válidas representan entradas válidas al

programa, y las clases de equivalencia inválidas que representan el resto

de los estados posibles de la condición (es decir, valores erróneos de la

entrada).

2. Se define los casos de prueba. El segundo paso es el uso de las clases de

equivalencia para identificar los casos de prueba. El proceso es como

sigue: se asigna un número único a cada clase de equivalencia. Hasta que

todas las clases de equivalencia válidas han sido cubiertas por los casos

de prueba, se escribe un nuevo caso de prueba que cubra la clase de

equivalencia válida. Y por último hasta que los casos de prueba hayan

cubierto todas las clases de equivalencia inválidas, se escribe un caso de

la prueba que cubra una, y solamente una, de las clases de equivalencia

inválidas descubiertas.

3.

Análisis de valores límite: los errores tienden a darse más en los límites del

campo de entrada que en el centro. Por ello, se ha desarrollado el análisis de

valores límites (AVL) como técnica de prueba. El análisis de valores límite lleva

a una elección de casos de prueba que ejerciten los valores límite.

El análisis de valores límite es una técnica de diseño de casos de prueba que

completa a la partición equivalente. En lugar de seleccionar cualquier elemento

de una clase de equivalencia, el AVL lleva a la elección de casos de prueba en

los extremos de la clase. En lugar de centrarse solamente en las condiciones de

entrada, el AVL obtiene casos de prueba también para el campo de salida.

Condiciones sublímite. Las condiciones limite normales son las más obvias de

descubrir. Estas son definidas en la especificación o son evidentes al momento

de utilizar el software. Algunos límites, sin embargo, son internos al software,

no son necesariamente aparentes al usuario final pero aún así deben ser probadas

por el probador. Estas son conocidas como condiciones sublímites o condiciones

límite internas. Una condición sublímite común es la tabla de caracteres ASCII,

por ejemplo, si se está evaluando una caja de texto que acepta solamente los

Page 36: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

caracteres AZ y az, se debe incluir los valores en la partición inválida justo

«debajo de» y «encima de» esos caracteres de la tabla ASCII, [", y {.

Prueba de la tabla ortogonal : hay aplicaciones donde el número de

parámetros de entrada es pequeño y los valores de cada uno de los parámetros

está claramente delimitado. Cuando estos números son muy pequeños (por

ejemplo, 3 parámetros de entrada tomando 3 valores diferentes), es posible

considerar cada permutación de entrada y comprobar exhaustivamente el

proceso del dominio de entrada. En cualquier caso, cuando el número de valores

de entrada crece y el número de valores diferentes para cada elemento de dato se

incrementa, la prueba exhaustiva se hace impracticable.

La prueba de la tabla ortogonal puede aplicarse a problemas en que el dominio

de entrada es relativamente pequeño pero demasiado grande para posibilitar

pruebas exhaustivas. El método de prueba de la tabla ortogonal es

particularmente útil al encontrar errores asociados con fallos localizados -una

categoría de error asociada con defectos de la lógica dentro de un componente

software.

La prueba de tabla ortogonal permite proporcionar una buena cobertura de

pruebas con bastantes menos casos de prueba que en la estrategia exhaustiva.

Adivinando el error: dado un programa particular, se conjetura, por la intuición

y la experiencia, ciertos tipos probables de errores y entonces se escriben casos

de prueba para exponer esos errores. Es difícil dar un procedimiento para esta

técnica puesto que es en gran parte un proceso intuitivo y ad hoc.

La idea básica es enumerar una lista de errores posibles o de situaciones

propensas a error y después escribir los casos de prueba basados en la lista. Por

ejemplo, la presencia del valor 0 en la entrada de un programa es una situación

con tendencia a error. Por lo tanto, puede ser que se escriba los casos de prueba

para los cuales los valores particulares de la entrada tienen valor 0 y para qué

valores particulares de la salida se colocan de manera forzada a 0.

Page 37: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

Información extraída de:

http://gemini.udistrital.edu.co/comunidad/grupos/arquisoft/fileadmin/Estudiantes/

Pruebas/HTML%20-%20Pruebas%20de%20software/node28.html

REINGENIERIA DE PROGRAMAS

Reingeniería del software se puede definir como: “modificación de un producto

software, o de ciertos componentes, usando para el análisis del sistema existente

técnicas de Ingeniería Inversa y, para la etapa de reconstrucción, herramientas de

Ingeniería Directa, de tal manera que se oriente este cambio hacia mayores niveles de

facilidad en cuanto a mantenimiento, reutilización, comprensión o evaluación.”

Cuando una aplicación lleva siendo usada años, es fácil que esta aplicación se vuelva

inestable como fruto de las múltiples correcciones, adaptaciones o mejoras que han

podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar

un cambio se producen efectos colaterales inesperados y hasta de gravedad, por lo que

se hace necesario, si se prevé que la aplicación seguirá siendo de utilidad, aplicar

reingeniería a la misma.

Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir:

* Pueden reducir los riegos evolutivos de una organización.

* Puede ayudar a las organizaciones a recuperar sus inversiones en software.

* Puede hacer el software más fácilmente modificable

* Amplía las capacidades de las herramientas CASE

* Es un catalizador para la automatización del mantenimiento del software

* Puede actuar como catalizador para la aplicación de técnicas de inteligencia

artificial para resolver problemas de reingeniería

La reingeniería del software involucra diferentes actividades como son:

* Análisis de inventarios

Page 38: wikipnfi.wikispaces.comde... · Web viewConcepto de Algoritmos y Programas. Lenguaje algorítmico y de programación. Partes de un algoritmo. Características y elementos para construir

* Reestructuración de documentos

* Ingeniería inversa

* Reestructuración de programas y datos

* Ingeniería directa con la finalidad de crear versiones de programas ya existentes

que sean de mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.

Para mas información acerca del tema visita: http://cnx.org/content/m17438/latest/