
BITACORA DEL EQUIPO 1
5.3.3
4.7.- PROCESO DE CREACIÓN DE UN EJECUTABLE
Normalmente la creación de un programa ejecutable (un típico .exe para Windows) conlleva dos pasos:
1.-El primer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un lenguaje de programación almacenado en un archivo a código en bajo nivel, (normalmente en código objeto no directamente al lenguaje máquina).
2.- El segundo paso se llama enlazado (del inglés link o linker) se junta el código de bajo nivel generado de todos los ficheros que se han mandado compilar y se añade el código de las funciones que hay el las bibliotecas del compilador para que el ejecutable pueda comunicarse con el sistemas operativo y traduce el código objeto a código máquina.
Estos dos pasos se pueden mandar hacer por separado, almacenando el resultado de la fase de compilación en archivos objetos (un típico .obj para Microsoft Windows, .o para Unix), para enlazarlos posteriormente, o crear directamente el ejecutable con lo que la fase de compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios lenguajes (generalmente C, C++ y Asm), que se podrían compilar de forma independiente y enlazar juntas para formar un único ejecutable.
Estructura básica de un programa en C
La mejor forma de aprender un lenguaje es programando con él. El programa más sencillo que se puede escribir en C es el siguiente:
main( )
{
}
Como nos podemos imaginar, este programa no hace nada, pero contiene la parte más importante de cualquier programa C y además, es el más pequeño que se puede escribir y que se compile correctamente. En el se define la función main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una función C siempre va seguida de paréntesis, tanto si tiene argumentos como si no. La definición de la función está formada por un bloque de sentencias, que esta encerrado entre llaves {}.
todo programa sin embargo consta de:
1.-una cabeza o inicio
2.-la declaración de variables
3.-declaracion de sentencias u operaciones
4.- un fin
A continuación se muestra una pequeña tabla donde se ilustra el orden de prioridad:
OPERADOR | | PRIORIDAD |
^ | | Alta |
*, /, Div | | |
+, -, Mod | | |
Relaciones | | Baja |
Expresión postfija:
Ventajas:
Conversión postfija - infija
1.- Colocar todos los paréntesis de la expresión
2.- Reemplazar los paréntesis derechos con los operadores correspondientes
3.- Eliminar todos los paréntesis
Ejemplo:
A / B - C + D * E - A * C
1.- ( ( ( ( A / B ) - C ) + ( D * E ) ) - (A * C ) )
2.-( ( ( ( AB/C- (DE*+(AC*-
3.- AB/C- DE*+AC*-
Conversión infija - postfija
1.- Pasamos todos los operandos a la salida
2.- Almacenamos los operadores en una pila hasta que se tengan que pasar a la salida
Ejemplos
A + B * C => ABC*+
Siguiente token pila salida
------- vacía ---------
A vacía A
+ + A
B + AB
El algoritmo debe determinar si * ingresa a la pila o si se retira el +.
Como la prioridad de * es mayor se debe almacenar
* +* AB
C +* ABC
La expresión ha finalizado. Se retiran los operadores de la pila: ABC*+
*Operando:
Tabla: Operadores relacionales. | ||||||||||||||
|
Ejemplos:
Si a = 10, b = 20, c = 30
a + b > c | | Falso |
a - b <> | | Verdadero |
a - b = c | | Falso |
a * b < > c | | Verdadero |
4.3.1.- DEFINICION
Un identificador es el nombre utilizado para referenciar variables, constantes, tipos, funciones y otros objetos definidos por el usuraio.
Un identificador puede tener uno o mas caracteres (letras, digitos y caracter de subrayado), siendo significativos los primeros 32. Este tipo de datos son creados por el programador de acuerdo a sus necesidades de diseño.
Dentro de los identificadores se encuentran las constantes y las variables.
Constantes y variables;
Una constante es aquella que no cambia de valor durante la ejecucion de un programa, se representa en la forma descrita para cada categoría.
las Variables son aquellas que pueden modificar su valor durante la ejecución de un programa. Su representación se da a través de letras y símbolos generalmete de tipo numéricos a los que se les asigna un valor.
ejemplos:
| Constantes | Variables |
Numéricos | 36 450.35 0.58 | A Nom Edad Ciudad Estatura |
Cadena | ‘A’ ‘Juan’ ‘La Paz’ “capital” | |
Lógicos | Falso Verdadero |
*Sistema Binario:
Es el sistema digital por excelencia debido a su sencillez, aunque no el único. Su base es 2 y
Emplea 2 caracteres: 0 = desactivado y 1 = activado. Estos valores reciben el nombre de bits (dígitos binarios). Así, podemos decir que la cantidad 10011 está formada por 5 bits.
Este sistema es de especial importancia en la electrónica digital, donde sólo son posibles dos valores.
Está compuesto por 16 símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Su base es 16. Es uno de los sistemas más utilizados en electrónica, ya que además de simplificar la escritura de los números binarios, todos los números del sistema se pueden expresar en cuatro bits binarios al ser 16 = 24.
La conversión de un número hexadecimal a uno binario es muy sencilla al igual que en el sistema octal.
La conversión entre binario y hexadecimal es igual al de la conversión octal y binario, pero teniendo en cuenta los caracteres hexadecimales, ya que se tienen que agrupar de 4 en 4. La conversión de binario a hexadecimal se realiza según el ejemplo siguiente:
Sistema binario | Sistema Hexadecimal |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
Ejemplo: 1011111,1100012
Agrupando obtenemos el siguiente resultado:
0101 1111, 1100 01002
Sustituyendo según la tabla logramos la conversión esperada:
4.2.1. DEFINICION DE PROGRAMA:
Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.
Estos lenguajes se clasifican en tres grandes categorías :
Lenguaje Máquina
Lenguaje de Bajo nivel (ensamblador)
Lenguaje de Alto nivel.
Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario el cual esta estrechamente relacionado con el algebra booleana y las matematicas discretas.
Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos.
- Por ejemplo, nemotécnicos típicos de operaciones aritméticas son : en inglés : ADD, SUB, DIV, etc. ; en español : SUM, RES, DIV, etc.
Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.
actualmente, como estudiantes nosotros nos dedicamos principalmente al aprendizaje del uso de los lenguajes de alto nivel, especificamente los lenguajes orientados a objetos.
a continuación se muestra una lista de los lenguajes de alto nivel más importantes:
Antes que todo, es conveniente dar una defición general de software para poder introducirnos en este tema.
Ayudan a administrar y dar mantenimiento a la computadora, te ayudan a correr los diferentes programas, recuperar información, aumentar la eficiencia de la máquina y organizar la información del sistema. tales como la herramienta desfragmentadora de disco, o el skandisk, etc.
3.- APLICACIONES PERSONALES:Son programas diseñados para quitar lo tedioso a las tareas personales. Ej. el control de cheques, agenda de direcciones, operaciones bancarias, envío de correo electrónico, etc, se puede decir que son aplicaciones que se adaptan a las necesidades especificas de cada tipo de personas segun sus actividades.
4.- APLICACIONES DE ENTRETENIMIENTO:Aquí se encuentran todas las aplicaciones como los videojuegos, los cuales existen aquellos que vienen por defecto junto con el sistema operativo de la máquina, como cartablanca, solitario, buscaminas, etc. y aquellos que se pueden descargar de internet o comprarse, todos ellos son muy populares, especialmente entre la gente joven y los estudiantes.
En este se explica detalladamente lo que realiza el algoritmo para resolver el problema planteado. en un diseño de algoritmo que sea complejo puede subdividirse en subprogramas para el estudio o la revision de los pasos que lleven a la solucion y sea menos el indice de errores que tenga al momento de la prueba, y a este diseño se le conoce como diseño modular pues es sencillo revisar cada proceso ya antes dividido para su rapida especificacion y prueba.
Los algoritmos no se implementan sólo como programas, algunas veces en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada. Se puede decir en pocas palabras que nuestra vida es un ejemplo de algoritmo, pues al desarrollar nuestros quehacer diarios desarrollamos una serie de pasos ordenados, así podremos quedar satisfechos con los resultados.
El ingreso de la notación algebraica en el desarrollo de algoritmos logró un gran avance para los programadores ya que fue una forma mas tangible de desarrollar sus programas, por medio de la lógica.a) Descripción Narrada
En otros tipos de representacion se escribe asi_:
LAS VENTAJAS DE USAR FUJOGRAMAS:
estos se utilizan para representar y diseñar un algoritmo y pues son una prueba de escritorio el cual nos sirve para tener una nocion de lo que puede llegar a realizar dicho procedimiento.
son usados como modelos de estructura para saber lo que hara futuramente y tienen que diseñarse y comprenderse todos los pasos de su elaboracion.
DESVENTAJAS DE USAR FLUJOGRAMAS:
los diagrmas que lleven muchos pasos es decir los mas complejos suelen ser muy laborioso y se puede tornar tedioso para el diseñador de algortimos.
en un proceso de decision puede seguirse varios caminos y puede llegar a ser que se pierda informacion o no se elabore adecuadamente.
en estos no se puede incluir detalles que ayuden al buen seguimiento de un proceso.
3.1 Diseño Algoritmico
PSEUDOCODIGO: No es mas que escribir lo que realiza un algoritmo de forma entendible con instrucciones regularmente en ingles o en su defecto en otro idioma, ya que contiene su estructura y este es:
1.-inicio
2.-introduce las variables
3.-proceso realizado para el resultado
4.-impresion en pantalla del resultado
5.-fin
por ejemplo el pseudocodigo de un algoritmo que dado un numero x me diga si es menor o mayor que cero. seria:
inicio
leer valor
decision mayor que cero
imprime en pantalla el resultado
fin
DIAGRAMA DE FLUJO: Se dice que es la representacion grafica de los algoritmos en si, este consta de una simbologia como es proceso, entrada, salida, monitor, decision, conector, teclado y otros simbolos que nos ayudan a representar los diferentes estados de un algoritmo, esto facilita la representacion de un algoritmo asi es como la realizacion del pseudocodigo se reconoce por su simbologia empleada en estos diagramas para su entendimiento.
Las etapas del proceso son seis: Modelado del Negocio, Modelado de Requisitos, Modelado del Análisis, Modelado del Diseño, Implementación y Validación.
En la primera etapa del Modelado del Negocio identifican los procesos del negocio, se definen los casos de uso del negocio, se identifican los roles (diagrama de roles) y se modelan los flujos de tareas asociado a cada proceso de negocio, mediante escenarios y diagramas de procesos que muestran la interacción entre roles para conseguir el objetivo. Dado la pequeña magnitud de la aplicación a construir, no ha sido necesario realizar el Modelado del Negocio para esta práctica.
En la segunda etapa, por la que comenzamos directamente, se define el Modelado de Requisitos mediante los Casos de Uso (CdU) y el Modelo Conceptual.
Un CdU es creado para cada actividad que es soportada por el sistema, y proporciona un buen nivel de granuralidad para el desarrollo posterior. En ellos se describen principalmente los pasos que va a seguir la interacción con el sistema que el CdU representa.
En las etapas de Modelado del Análisis y Diseño se define para cada CdU un diagrama de secuencia del sistema, que muestra los eventos que un actor genera durante la interacción con el sistema. Cada evento da origen a una operación del sistema. Los contratos describen los efectos de cada una de las operaciones; suponen pues, una descripción más detallada sobre el comportamiento del sistema en términos de cambios de estado a los objetos del Modelo Conceptual tras la ejecución de una actividad con el sistema. Es por esto que la parte principal de un contrato sean las Pre y sobre todo, las Post condiciones, en las que se indican los objetos o asociaciones creadas o eliminadas, así como la modificación de atributos.
Se ha organizado el documento de manera que cada CdU se engloba en un apartado, en el que se muestra la siguiente información:
La especificación textual del CdU, siguiendo la plantilla recomendada por Larman para la descripción de CdU. Cualquier suposición al margen del enunciado original de la práctica se incluirá antes de cada especificación.
Diagrama de secuencia del sistema para ese CdU, en el que, como ya hemos comentado, se muestra los eventos que el actor genera al interactuar con el sistema para ejecutar ese CdU.
Los contratos de cada una de las operaciones que aparecen en el diagrama de secuencia, junto con sus correspondientes diagramas de colaboracion. Para todos ellos se ha intentado aplicar lo máximo posible los patrones GRASP, logrando así un mejor diseño.
Finalmente se realiza la etapa de generación de Código e Implementación. En este Proyecto sólo realizamos la generación de Código de forma automática, pero no se lleva a cabo ninguna implementación concreta, ni por tanto, el proceso de Validación.
El diseño de la solución llama al equipo de trabajo a planter multiples soluciones posibles a la problemática, para analizarlas y determinar cual es la mejor opción, partiendo de eso, se procede a desarrollar a diseñarla y representarla, en esta caso, usando UML.