miércoles, 22 de junio de 2011

UNIDAD IX: DATOS COMPLEJOS (PILAS, COLAS, LISTAS, GRAFOS Y ÁRBOLE)

PILAS
Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. Como consecuencia, los elementos de una pila serán eliminados en orden inverso al que se insertaron. Es decir, el último elemento que se metió a la pila será el primero en salir de ella. 
En la vida cotidiana existen muchos ejemplos de pilas, una pila de platos en una alacena, una pila de latas en un supermercado, una pila de papeles sobre un escritorio, etc.


Representación en Memoria 

Las pilas no son estructuras de datos fundamentales, es decir, no están definidas como tales  en los lenguajes de programación. Las pilas pueden representarse mediante el uso de: 

• Arreglos.
• Listas enlazadas.

La representación gráfica de una pila es la siguiente:





COLAS

Son listas lineales de información a las cuales de accede de un modo determinado siendo el de tipo FIFO (First In, First Out) (Primero en Entrar, Primero en Salir), lo que quiere decir que el primer dato en entrar es también el primer dato  en salir, en las colas no se permite el acceso aleatorio a ningún elemento concreto. Las recuperaciones de operaciones son destructivas (elimina el elemento) de la cola, si no es almacenado en otro lugar se destruye.

Su utilización principal en las simulaciones, planificación de sucesos, y los procesos de entrada y salida con buffer. 
Existen muchísimos ejemplos de colas en la vida real, como por ejemplo: personas esperando en un teléfono público, niños esperando para subir a un juego mecánico, estudiantes esperando para subir a un camión escolar, etc.

Representación en Memoria 

Podemos representar a las colas de dos formas: 

• Como arreglos 
• Como listas ordenadas 

En lo sucesivo, al apuntador del primer elemento lo llamaremos F, al último elemento A y MAXIMO para definir el número máximo de elementos en la cola. 

Las colas lineales se representan gráficamente de la siguiente manera:




LISTAS

Son colecciones de elementos, donde cada uno de ellos, además de almacenar información, almacena la dirección del siguiente elemento. Una lista es una estructura lineal de datos. Es decir, cada uno de sus componentes y un predecesor únicos, con excepción del último y del primero. 

Las listas pueden implementarse mediante arreglos,  resultando así una estructura estática. También puede ser una memoria dinámica (La cantidad de memoria ocupada puede modificarse durante la ejecución del programa). Una lista enlazada o encadenada es una colección de elementos ó nodos, en donde cada uno contiene datos y un enlace o liga. 

A continuación se muestra el esquema de una lista:


GRAFOS

Un grafo es un conjunto de puntos (vértices) en el  espacio, que están conectados por un conjunto de líneas (aristas). 

Los grafos son estructuras de datos dinámicas no lineales, utilizadas comúnmente en el análisis de redes, en diseño de circuitos eléctricos, en estrategias de mercados, cartografía, mapas conceptuales, matemáticas, planificación de procesos y muchas área del conocimiento. 

Aristas

Son las líneas con las que se unen las aristas de un grafo y con la que se construyen también caminos.  
Si la arista carece de dirección se denota indistintamente  {a, b} o  {b, a}, siendo a y b los vértices que une.  
Si {a ,b} es una arista, a los vértices a y b se les llama sus extremos.  

Aristas Adyacentes: Se dice que dos aristas son adyacentes si convergen en el mismo vértice.  
Aristas Paralelas: Se dice que dos aristas son paralelas si vértice inicial y el final son el mismo.  
Aristas Cíclicas: Arista que parte de un vértice para entrar en el mismo.  
Cruce: Son dos aristas que cruzan en un punto.  

Vértices

Son los puntos o nodos con los que esta conformado  un grafo. Llamaremos grado de un vértice al número de aristas de las que es extremo. Se dice que un vértice es `par' o `impar' según lo sea su grado.  

Vértices Adyacentes: si tenemos un par de vértices de un grafo (U, V) y si tenemos un arista que los une, entonces U y V son vértices adyacentes y se dice que U es el vértice inicial y V el vértice adyacente. 
Vértice Aislado: Es un vértice de grado cero.  
 Vértice Terminal: Es un vértice de grado 1. 


ÁRBOLES
Es una estructura de datos formada por nodos los cuales están conectados por aristas. Un árbol se define como un tipo de grafo que no contiene ciclos.

Árbol Vacío: Un árbol puede estar vacío; es decir no contener ningún nodo. 
Raíz: es el nodo que está al tope del árbol. Un árbol solo tiene una raíz.

Camino: es la secuencia de nodos que hay que visitar para llegar de un nodo a otro de un árbol.

Padre: En un árbol toda rama va de un nodo n1 a un nodo n2, se dice que n1 es padre de n2.

Hijo: todo nodo puede tener más de una arista que lo lleva a otro nodo por debajo de él. Estos nodos que se encuentran por debajo de un nodo dado se llaman hijos.

Hojas: son aquellos  nodos que no tienen hijos.  En un árbol solo puede haber una raíz pero puede haber muchas hojas.
Subárbol: Cualquier nodo se puede considerar como la raíz de un subárbol.






UNIDAD VIII: FUNCIONES Y PROCEDIMIENTOS EN TURBO PASCAL

PROCEDIMIENTOS

Un procedimiento es un programa que realiza una tarea específica. Puede recibir cero o más  valores del programa que llama y devolver cero o más valores al programa que realizó la  llamada. Un procedimiento está compuesto de un grupo de sentencias a las que se asigna  un nombre (identificador) y constituye una unidad de programa. La tarea asignada al procedimiento se ejecuta siempre que Pascal encuentra el nombre del procedimiento.  Los procedimientos es obligatorio declararlos y deben ser declarados antes de que puedan ser referenciados en el cuerpo del programa. En Pascal reciben el nombre de PROCEDURE. 

Declaración de un procedimiento  

Al igual que los identificadores, los procedimientos deben declararse dentro del cuerpo del programa. La declaración de un procedimiento NO indica a la computadora que ejecute las instrucciones dadas, sino que indica a la computadora cuáles son estas instrucciones y dónde están localizadas cuando sea necesario.


Cabecera del procedimiento 

Proporciona el nombre del mismo y, en caso de existir, una lista de parámetros formales.  

Ventajas de utilizar procedimientos  

  • La organización de un programa en procedimientos lo hace más fácil de escribir y depurar. Los procedimientos no deben exceder de 25 líneas. 
  • Facilita el diseño descendente.  
  • Los procedimientos se pueden ejecutar más de una vez en un programa y/o en diferentes programas, ahorrando tiempo de programación.  
  • El uso de procedimientos facilita la división de las tareas entre un equipo de programadores y se pueden comprobar individualmente.  


PARÁMETROS

Un parámetro es un método para pasar información (valores a variables) del programa principal a un procedimiento y viceversa.
Un parámetro es, prácticamente, una variable cuyo valor debe ser ya sea proporcionado por el programa principal al procedimiento o ser devuelto desde el procedimiento hasta el programa principal.


 Tipos de parámetros

  • Parámetros de entrada: Sus valores deben ser proporcionados por el programa principal. 
  • Parámetros de salida: Son parámetros cuyos valores se calcularán en el procedimiento y se deben devolver al programa principal para su proceso posterior.

Transferencia de información desde y/o hasta los procedimientos  

Existen dos tipos de procedimientos: 

  • Procedimientos sin parámetros: No existe comunicación entre el programa principal y los procedimientos ni viceversa. 
  • Procedimientos con parámetros: Existe comunicación entre el programa principal y  los procedimientos o entre dos procedimientos. 

FUNCIONES 
Una función es un subprograma que recibe como argumentos o parámetros datos de un tipo numérico o no numérico (char, string, bolean u otros) y devuelve un resultado. Esta característica le diferencia de un procedimiento. Una función es un subprograma que devuelve un único resultado al programa o subprograma 
que le llamó

CLASES USUALES DE FUNCIONES
• Las primeras son de tipo computacional que son diseñadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operación.  
• Las segundas funciones son aquellas que manipulan información y regresan un valor que indican la terminación o la falla de esa manipulación.  
• Las terceras son aquellas que no regresan ningún valor, es decir son estrictamente procedurales.  

Comparación entre funciones y procedimientos  

• En vez de la palabra procedure se debe utilizar la palabra function  
• Al igual que en los procedimientos, el nombre de una función es un identificador. Sin embargo, el nombre de la función se refiere a la posición de memoria que contiene el valor devuelto por la función.  
• La lista de los parámetros formales son los identificadores utilizados para recibir valores del programa.  
• El tipo de datos del resultado coincide con el tipo expresado en la cabecera de la función.  
• En el cuerpo de la función tiene que existir una sentencia de asignación como la siguiente: Nombre_función := valor_función 
• La función sólo devuelve un valor, el procedimiento puede devolver cero, uno o varios valores.  
• El tipo de dato del resultado de la función debe estar indicado en la cabecera  y puede ser tipo char, integer, real o bolean. 

RECURSIVIDAD

En Pascal, a un procedimiento o función le es permitido no sólo invocar a otro procedimiento o función, sino también invocarse a sí mismo. Una invocación de éste tipo se dice que es recursiva.  
La función recursiva más utilizada como ejemplo es la que calcula el factorial de un número entero no negativo, partiendo de las siguientes definiciones:  
factorial (0) = 1 
factorial (n) = n*factorial(n-1), para n>0  

Permite que un procedimiento se llame a si mismo como un subprocedimiento. A través de esta poderosa herramienta se pueden expresar muchos algoritmos, sin embargo es poco utilizada, motivado quizás por el desconocimiento de los principales fundamentales que la sustentan.

miércoles, 1 de junio de 2011

Taller de 10 %

Evaluación de Laboratorio 3 y 4.                                      10%,    2ptos c/u

☺Escribir un programa en Pascal que sume, reste, multiplique y divida dos números:
x = 10       y = 2

☺Escribir un programa en Pascal que calcule el área de un rectángulo:
lado1 = 3 lado2 = 4
Área del rectángulo=lado1 * lado2

☺Escribir un programa en Pascal que calcule el área de un triángulo:
Base = 7          altura = 4        área del triángulo = (base * altura)/2

Escribir un programa que calcule la longitud y el área de una circunferencia:
Radio = 4  longitud de la circunferencia = 2 * PI * radio
                        Área de la circunferencia = PI * radio2

Escribir un programa en Pascal que evalúe la siguiente expresión:
(a+7*c)/(b+2-a)+2*b              a = 3,b = 6,c = 4

OJO con esta evaluación sera entregada el día 7/06/11 antes de presentar el parcial, recuerden que se esta evaluando el 5 % restante de laboratorio y el 5% del taller de teoría.

Buena Suerte y estudien todo lo referente al 2do corte para el martes

martes, 31 de mayo de 2011

UNIDAD VII: FUNCIONES INCORPORADAS EN TURBO PASCAL

FUNCIONES INCORPORADAS EN TURBO PASCAL



FUNCION

EFECTO

TIPO DE PARÁMETRO

TIPO DE RESULTADO

Abs(x)
Calcula valor absoluto de x
Entero o real
Entero o real
* Arctan(x)
Calcula arcotangente de x
Entero o real
Real
* Cos(x)
Calcula coseno de x
Entero o real
Real
Exp(x)
Calcula exponencial de x ( ex )
Entero o real
Real
Frac(x)
Devuelve parte decimal de x
Real
Real
Int(x)
Devuelve parte entera de x
Real
Real
Ln(x)
Calcula logaritmo natural de x
Entero o real
Real
Pi
Devuelve el valor de Pi (3.1415…)
Real
Real

Round(x)

Redondea el valor de x al entero positivo más próximo.
Roun(-x) = Round(x)

Entero o real

Entero
* Sin(x)
Calcula seno de x
Entero o real
Real
Sqr(x)
Calcula cuadrado de x
Entero o real
Entero o real
Sqrt(x)
Calcula raiz cuadrada de x (x>=0)
Entero o real
Real
Trunc(x)
Suprime la parte decimal de x
Real
Entero
Log10(x)
Logaritmo base 10
Entero o real
Real
Mod
Calcula el resto de una división
Entero o real
Entero o real

NOTA1: las funciones marcadas con un * significa que el argumento es siempre en radianes.
NOTA2: la expresión XY se escribe en Turbo Pascal de la siguiente manera: 
Exp(Y*Ln(x))

martes, 10 de mayo de 2011

Unidad IV: Laboratorio

Laboratorio I del II corte:

Realizar un Ensayo de la Historia de Turbo Pascal. valor  2,5 pts.
Solo en Hojas Blancas máximo 3 Hojas. (Mano Escrito)

Fecha de Entrega: 11/05/2011. Hora. 7:40 am

miércoles, 27 de abril de 2011

UNIDAD III: TECNICAS DE PROGRAMACION

TÉCNICAS DE PROGRAMACIÓN

Las técnicas de programación constituyen parte fundamental en el proceso de desarrollo e Ingeniería del Software dentro del ámbito informático.
Cada técnica tiene sus propias características, y distintos métodos de resolución de problemas, así como la implementación de estándares de ciertas compañías o instituciones, y es de gran importancia aprender a implementarlas a la hora de adentrarse en la evolución de cualquier proyecto de desarrollo de software.

PROGRAMACIÓN ESTRUCTURADA

a) Secuenciales: cuando se requiere que una instrucción siga después de otra.
b) Selección o decisión: se utiliza cuando se requiere tomar decisiones lógicas, la ejecución de las instrucciones dependerá de que se cumplan o no, una o varias condiciones.
c) Repetición o Iteración: se utiliza cuando un proceso debe repetirse un número determinado o no de veces, una vez se haya establecido cierta condición para finalizar el proceso de repetición.
Asimismo dentro de las estructuras básicas existen acciones o procesos a los cuales son sometidos los datos, entre ellos, tenemos:
  • a. Asignación
  • b. Condicionado (a través de las expresiones lógicas)
  • c. Alternativas (estructura condicional)
  • d. Iterativas
  • e. De entrada y salida
TÉCNICAS MODERNAS DE PROGRAMACIÓN

Programación modular
En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad.En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.
A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones.

Programación orientada a objetos (POO)
Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilización de los objetos. 
El elemento principal de la programación orientada a objetos es el objeto.
El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento.

Programación concurrente
Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez.

Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea.
Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las acciones.

Programación funcional
Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones.

Programación lógica
Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).

lunes, 25 de abril de 2011

Evaluacion de la Unidad II: Taller

Preguntas del Taller de 5 %



  1. Realizar un algoritmo que permita determinar de un total de 3 Edades la edad menor y la edad mayor. (0,5 %)
  2. Realizar un algoritmo que permita realizar la Ecuación de Segundo Grado, y un Diagrama de Flujo del mismo. (2 %)
  3. Realizar un Diagrama de Flujo y un Diagrama de Bloque de un Proceso de producción de un alimento que debe ser determinado por el alumno. 

Fecha de Entrega: 26/04/2011 a las 9:15 am

Recuerden prueba del 5% de toda la Unidad II   26/04/2011 a las 9:15 am

domingo, 17 de abril de 2011

Unidad II: Algoritmos y Estructuras de Datos

Programa

  • Secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones de acuerdo con los datos que se estén procesando.
  • Es un algoritmo desarrollado para ser utilizado por la computadora
  • Expresión de un algoritmo en un lenguaje preciso que puede llegar a entender una máquina de cómputo.

Fases para la creación de un programa


  •  Definición del Problema


Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
  • Análisis del Problema


Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
Los datos de entrada.
Cual 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.
  •  Diseño del Algoritmo


Las características de un buen algoritmo son:
Debe tener un punto particular de inicio.
Debe ser definido, no debe permitir dobles interpretaciones.
Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.
Debe ser finito en tamaño y tiempo de ejecución.
  • Codificación


Es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.
  • Prueba y Depuración


Los errores humanos dentro de la programación de computadora son muchos y aumentan considerablemente con la complejidad del problema. El Proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.
La prueba consiste en la captura de datos hasta que el programa no presente errores (los más comunes son los sintácticos y lógicos).
  • Documentación


Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. La documentación se divide en tres partes:
  • Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso.
  • Documentación Externa: Se define en un documento escrito los siguientes puntos:
Descripción del Problema
Nombre del Autor
Algoritmo (diagrama de flujo o pseudocódigo)
Diccionario de Datos
Código Fuente (programa)
  • Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado.

  • Mantenimiento
Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.

Estructura de Datos

  • IDENTIFICADOR: Un identificador es una serie de caracteres formados por letras, dígitos y el carácter subrayado ( _ ) que no inicie con dígito, asi mismo es el nombre que damos a todo lo que manipulamos dentro de un programa (variable, constantes, funciones, etc). Por ejemplo variables, constantes, funciones, tipos definidos por el usuario etc.
  • TIPOS DE DATOS. Todos los datos tienen un tipo asociado con ellos. 


  • VARIABLES. Una variable es un identificador que puede tomar diferentes valores dependiendo del tipo que esta se declare.
  •  INICIALIZACIÓN DE VARIABLES: Inicializar una variable es el darle un valor después que se ha declarado pero antes de que se ejecuten las sentencias en las que se emplea.
  •  CONSTANTES. Constantes son los valores que no pueden ser modificados. En C, pueden ser de cualquier tipo de datos. Además de los ejemplificados anteriormente, Podemos crear constantes de caracteres con barra invertida. Estos corresponden a los caracteres que son imposibles introducir desde el teclado.
  •  OPERADORES: Un operador es un símbolo que indica al compilador que realice manipulaciones lógicas o matemático específicas.
  • Operadores LógicosEstos operadores se utilizan para establecer relaciones entre valores lógicos.
And  --  Y
Or  -- O
Not  --  Negación

  • Operadores Aritméticos: 
+  --  suma
-   --  resta
*  --  multiplicación 
/  --   divisional 
  • operadores Relacionales: se utilizan para establecer relación entre 2 variables:
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
= igual que
< > diferente de que

  • PALABRAS RESERVADAS. Son palabras que tienen un significado especial para el lenguaje y no se pueden utilizar como identificadores.
  • COMENTARIOSLos comentarios pueden aparecer en cualquier parte del programa, mientras estén situados entre los delimitadores /* comentario */. Los comentarios son útiles para identificar los elementos principales de un programa o para explicar la lógica subyacente de estos.

Algoritmos 

  • Realizar un algoritmo que permita determinar el mayor de dos números:
Inicio
       Definir, N1, N2
escribir (ingrese el primer numero, N1)
leer (N1)

escribir (ingrese el segundo numero, N2)
leer (N2)

si N1 > N2   entonces

escribir (el numero mayor es N1)

si N2 > N1   entonces

escribir (el numero mayor es N2)

si N1 = N2   entonces

escribir (los números son iguales)

si fin
si fin
si fin

Fin

  • Realizar un algoritmo que permita determinar de un total de tres notas la nota mayor y menor:
Inicio
       Definir, N1, N2, N3,Nmax, Nmin
escribir (ingrese la nota, N1)
leer (N1)
escribir (ingrese la nota, N2)

leer (N2)

escribir (ingrese el segundo numero, N3)
leer (N3)
Nmax = 0
Nmin = 0

si N1 > Nmax   entonces

Nmax = N1

si N2 > Nmax   entonces

Nmax = N2

si N3 > Nmax   entonces

Nmax = N3
si fin
si fin
si fin

escribir (la nota maxima es, Nmax)

si N1 < Nmin   entonces

Nmin = N1

si N2 < Nmin   entonces

Nmin = N2

si N3 < Nmin   entonces

Nmin = N3
si fin
si fin
si fin

escribir (la nota minima es, Nmin)
Fin



Diagrama de Bloques
Un diagrama de bloques de procesos de producción es un diagrama utilizado para indicar la manera en la que se elabora cierto producto alimenticio, especificando la materia prima, la cantidad de procesos y la forma en la que se presenta el producto terminado.

  • Tipos






  • Elaboración:


El primer bloque especifica la materia prima de la que proviene el producto. Los siguientes bloques son procesos escritos de manera infinitivo y llevan siempre o una indicación de proceso (izquierda) y gastos másicos (derecha).
  • Las indicaciones de proceso son variantes del tipo físicas que se deben considerar para que el producto sea de elaboración adecuada. Cada país tiene sus propios estándares para elaborar productos. Las indicaciones de proceso son básicamente la temperatura, la presión y los tiempos de reposo.
  • Los gastos másicos son adicciones de ciertas sustancias ajenas a la materia prima auxiliares a un proceso.



Archivo:Blockdiagramexemple.png

Diagrama de Flujo
Es una representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como la programación, la economía, los procesos industriales y la psicología. Estos diagramas utilizan símbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de término.
La ventaja de utilizar un algoritmo es que se lo puede construir independiente mente de un lenguaje de programación, pues al momento de llevarlo a código se lo puede hacer en cualquier lenguaje.


Dichos diagramas se construyen utilizando ciertos símbolos de uso especial como son rectángulos, diamantes, óvalos, y pequeños círculos, estos símbolos están conectados entre sí por flechas, conocidas como líneas de flujo. 

Reglas de los diagramas de flujo
  • Debe de indicar claramente dónde inicia y dónde termina el diagrama.
  • Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin.
  • Organizar los símbolos de tal forma que siga visualmente el flujo de arriba hacia abajo y de izquierda a derecha.
  • No usar lenguaje de programación dentro de los símbolos.
  • Centrar el diagrama en la página.
  • Las líneas deben ser verticales u horizontales, nunca diagonales.

  • u horizontales, nunca diagonales.