sábado, 29 de septiembre de 2007

Progamacion

Publicare una de las formas posibles de programación básica, programación básica en paralelo y programación básica con algoritmos y métodos numéricos . Posteriormente se publicará una programación avanzado con un núcleo de UNIX (opensolaris) aplicando todo lo que se ha aprendido con la finalidad de hacer un sistema.

Por favor agradecería que me comentaran si no le entienden para publicarlo mas detallado.

Gracias por su atención y comprensión




Aristóteles diría: “no somos Griegos ningunos atenienses, nosotros somos ciudadanos del mundo.”


1.- Algoritmos Estructura de datos (Lenguaje C)
2.- Programación Estructurada (Lenguaje C)
3.- Estructura y Programación de computadoras (Lenguaje C++)
4.- Programación Orientada a Objetos (Lenguaje C++)
5.- Programación Avanzada y Métodos Numéricos (Lenguaje C++)
6.- Diseño de sistemas Digitales
7.- Sistemas Operativos
8.- Bases de Datos
9.- Microprocesadores
10.- Compiladores


SÚPER BÁSICO

COMPILADOR

Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, a este progreso de traducción se le llama compilación. generando un programa equivalente que la maquina será capaz de interpretar. Este proceso se le conoce como compilación .

Se divide en dos parte:

Front End: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos.

Back End: Es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por el front End.

Tipos de compilación:

Compiladores Cruzados: generan código para un sistema distinto del que están funcionando

Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia pero manteniendo la funcionalidad del programa original.

Compiladores Optimizadores: realizan cambios en el código para mejorar su eficiencia pero manteniendo la funcionalidad del programa original.

compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.

Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.

Compilador Jit: forma parte de un intérprete y compilan partes del código según se necesitan.



EDITOR DE TEXTO

U
n editor de texto es un programa que permite escribir y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto.

Se distinguen de los procesadores de textos en que se usan para escribir sólo texto, sin formato y sin imágenes.
Hay una gran variedad de editores de texto. Algunos son de uso general, mientras que otros están diseñados para escribir o programar en un lenguaje. Algunos son muy sencillos, mientras que otros tienen implementadas gran cantidad de funciones.
El archivo creado por un editor de texto incluye por convención en DOS y Microsoft Windows la extensión .txt, aunque pueda ser cambiada a cualquier otra con posterioridad. El formato hoy en día es comúnmente de 7- o 8-bits en ASCII o UTF-8, rara vez EBCDIC.
Al trasladar archivos de texto de un sistema operativo a otro se debe considerar que existen al menos dos convenciones diferentes para señalar el término de una linea: Unix y Linux usan sólo retorno de carro en cambio Microsoft Windows usa al término de cada línea retorno de carro y salto de línea.


Editor de texto en Linux

Editor de texto en windows


PARESEO

(Parcing). Proceso de analizar una secuencia de símbolos a fin de determinar su estructura gramatical con respecto a una gramática formal dada. Formalmente es llamado análisis de sintaxis. Un parseador (parser) es un programa de computación que lleva a cabo esta tarea.

El parseo transforma una entrada de texto en una estructura de datos (usualmente un árbol) que es apropiada para ser procesada. Generalmente los parseadores primero identifican los símbolos de la entrada y luego construyen el árbol de parseo para esos símbolos.



DEPURADOR

Un depurador (en inglés, debugger), es un programa que permite depurar o limpiar de errores otro programa informático.

Uso

Al iniciarse la depuración, el depurador lanza el programa a depurar. Éste se ejecuta normalmente hasta que el depurador detiene su ejecución, permitiendo al usuario examinar la situación.

El depurador permite detener el programa en:

  • Un punto determinado mediante un punto de ruptura.
  • Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional.
  • Un momento determinado cuando se cumplan ciertas condiciones.
  • Un momento determinado a petición del usuario.

Durante esa interrupción, el usuario puede:

  • Examinar y modificar la memoria y las variables del programa.
  • Examinar el contenido de los registros del procesador.
  • Examinar la pila de llamadas que han desembocado en la situación actual.
  • Cambiar el punto de ejecución, de manera que el programa continúe su ejecución en un punto diferente al punto en el que fue detenido.
  • Ejecutar instrucción a instrucción.
  • Ejecutar partes determinadas del código, como el interior de una función, o el resto de código antes de salir de una función.

El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aquí se han mostrado las más comunes.

Información de depuración

Para poder aprovechar todas las posibilidades de depuración es necesario que, al compilar el programa a depurar, se indique al compilador que debe incluir instrucciones e información extra para la depuración del código. Dicha información extra consiste básicamente en la correspondencia entre las instrucciones del código ejecutable y las instrucciones del código fuente que las originan, así como información sobre nombres de variables y funciones.

Aún si no se incluye esta información de depuración, sigue siendo posible monitorizar la ejecución del programa. Sin embargo, resultará más difícil y compleja debido a esa falta de información del contexto en el que se ejecuta el programa.

Otros usos

Un depurador también puede usarse para realizar ingeniería inversa o evitar protecciones de copia. Mediante el uso del depurador se puede conocer el funcionamiento interno del programa examinado, ayudando al proceso de ingeniería inversa o permitiendo desarrollar técnicas para evadir las restricciones impuestas por el programa.

Efectos secundarios

Es importante notar que un programa que está siendo depurado puede presentar un comportamiento diferente a si se ejecuta en solitario debido a que el depurador cambia ligeramente los tiempos internos del programa. Estos cambios en los tiempos de ejecución afectan especialmente a sistemas complejos multihebra o sistemas distribuidos.

Ejemplos de depuradores

Véase también

DDD es un interfaz gráfico para el depurador gdb. La principal ventaja de ddd es la facilidad para mostrar los contenidos de las posiciones de memoria durante la ejecución de nuestro programa.


si abrimos la página (o un formulario del CRM) que contenga código JavaScript que ejecute la sentencia debugger, se nos mostrará un diálogo ofreciéndonos inicar la depuración. Si tenemos instalado Visual Studio nos dará la opción de utilizarlo como depurador para esa web



LIGADOR


Un ligador es un programa de sistema que combina dos o mas programas objeto separados y permite que se hagan referencias unos a otros, o sea, que cada uno de estos programas pueden hacer referencia a código ó variables de los otros programas con los que está enlazado.
En muchos programas el cargador hace la labor del programa de enlace, por que existe solo un "linking loader" y no existe programa de enlace independiente. Es importante señalar que no se necesita un programa de enlace ni un cargador separado para cada traductor en el sistema, ya que estos programas trabajan con el programa objeto, sin importar el lenguaje fuente. Por otro lado es importante que cada compilador o ensamblador produzca el programa objeto usando el mismo formato. Cada programa objeto es un archivo de récord.



CÓDIGO FUENTE

El código fuente puede definirse:

  • Un conjunto de líneas que conforman un bloque de texto, escrito según las reglas sintácticas de algún lenguaje de programación destinado a ser legible por humanos.
  • Un Programa en su forma original, tal y como fue escrito por el programador, no es ejecutable directamente por el computador, debe convertirse en lenguaje de maquina mediante compiladores, ensambladores o intérpretes.

Normalmente está destinado a ser traducido a otro código, llamado código objeto, ya sea lenguaje máquina nativo para ser ejecutado por una computadora o bytecode para ser ejecutado por un intérprete.

Este proceso se denomina compilación y permite la realización de programas.

El proceso de formateado del código fuente para ayudar a su legibilidad se denomina estilo de programación.

Ejemplo pagina web Siladin


Este es uno de los códigos fuente que tienen las paginas web


INTERPRETE DE COMANDOS

Línea de comandos, Intérprete de mandatos, Intérprete de línea de mandatos, Intérprete de comandos, Terminal, Consola, Shell ó su acronimo en inglés CLI por Command line interface, es un programa informático que actúa como Interfaz de usuario para comunicar al usuario con el sistema operativo mediante una ventana que espera comandos textuales ingresados por el usuario en el teclado, los interpreta y los entrega al sistema operativo para su ejecución. La respuesta del sistema operativo es mostrada al usuario en la misma ventana. A continuación, la shell queda esperando más instrucciones. Se interactúa con la información de la manera más simple posible, sin gráficas, solo el texto crudo.

Por extensión también se llama Intérprete de comandos a algunas interfaces de programas (mayores) que comunican al usuario con el software o al Cliente (informática) de un Servidor, como por ejemplo, bancos de datos (MySQL, Oracle) u otros programas (openSSL, FTP) etc.

Dada la importancia de esta herramienta, existe ya desde los comienzos de la computación. Existen para diversos sistemas operativos, diversos hardware, con diferente funcionalidad. Suelen incorporar características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir programas por lotes o (scripts o guiónes).

Es posible que un sistema operativo tenga varios intérpretes de comandos, es más, la visión lógica de un sistema operativo cambia según el intérprete de comandos usado. Ejemplo: Win32 sobre Windows o POSIX sobre LINUX.

Casi cualquier programa puede diseñarse para ofrecer al usuario alguna clase de Intérprete de comandos. Por ejemplo, casi todos los juegos de PC en primera persona tienen un Intérprete de comandos incorporada, utilizada para diagnostico y labores administrativas.

Su contraparte es la Interfaz gráfica de usuario que ofrece una estética mejorada a costa de mayor consumo de recursos computacionales, una mayor vulnerabilidad por complejidad y , en general, una reducción en la funcionalidad ofrecida.




como podemos ver la Konsola interactúa como interprete

PSEUDOCÓDIGO

Un pseudocódigo (falso lenguaje), es una serie de normas léxicas y gramaticaleslenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación, con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniería de software. parecidas a la mayoría de los

No hay ningún compilador o intérprete de pseudocódigo informático (en el caso de que lo hubiera serían los lectores de dicho pseudocódigo informatico, por ej. una idea de un jefe de programación a el staff de programadores), y por tanto no puede ser ejecutado en un ordenador, pero las similitudes con la mayoría de los lenguajes informáticos lo hacen fácilmente convertible.

El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común, instrucciones de programación y palabras clave que definen las estructuras básicas. Su objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un problema.

No siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay una estructura semántica ni arquitectura estándar. Es una herramienta ágil para el estudio y diseño de aplicaciones, veamos un ejemplo, que podríamos definir como: lenguaje imperativo, de tercera generación, según el método de programación estructurada.

Pseudocódigo = Pseudo (Supuesto) + Código (Instrucción).




CÓDIGO OBJETO


Se llama código objeto en programación al código resultante de la compilacióncódigo fuente.
Consiste en lenguaje máquina o bytecode y se distribuye en varios archivos que corresponden a cada código fuente compilado.

Para obtener un programa ejecutable se han de enlazar todos los archivos de código fuente con un programa llamado enlazador (linker).


PROBLEMAS Y ALGORITMOS


Casi siempre, los humanos efectuamos cotidianamente una serie de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema. Esta serie de pasos, procedimientos o acciones, comenzamos a aplicarlos muy temprano en la mañana cuando, por ejemplo, decidimos tomar n baño. Posteriormente cuando pensamos en desayunar también seguimos una serie de pasos que nos permiten alcanzar un resultado especifico: tomar el desayuno. La historia se repite innumerables veces durante el día.

“FORMALMENTE DEFINIMOS UN ALGORITMO COMO UN CONJUNTO DE PASOS, PROCEDIMIENTOS O ACCIONES QUE NOS PERMITEN ALCANZAR UN RESULTADO O RESOLVER UN PROBLEMA”

Supongamos que simplemente tenemos que abrir una puerta. Lo hemos hecho tantas veces que difícilmente nos ponemos a enumerar los pasos para alcanzar este objetivo. Lo haceos de manera automática. Lo mismo ocurre cuando tenemos que subir algunas escaleras etc. Esos son algoritmos las cuales programarlos o desarrollarlos es lo mas fácil, claro con la practica.


De mi parte voy hacer todo lo posible para explicarme lo mejor que se pueda, are todo lo posible por enseñarles a resolver un problema, enseñar y analizar al mismo tiempo y ha poder enseñar a pensar.

Las características que los algoritmos deben reunir son las siguientes:

PRECISION: Los pasos a seguir en el alritmo deben de ser precisados claramente.

DETERMINISO : El algoritmo, dado un conjunto de datos identicos de entrada y siempre debe arrojar los mismos resultados.

FINITUD: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser longitud finita.

Tambien consta de tres secciones o modulos principales como en la figura siguiente:



DIAGRAMAS DE FLUJO

Un diagrama de flujo representa la esquematización gráfica de un algoritmo, muestra graficamente los pasos o precesos para alcanzar la solucion de un problema. Si el diagrama de flujo está completo y correcto, el paso del mismo a un lenguaje de programación es relativamente simple y directo.

Un diagrama de flujo debe ilustrar gráficamente los pasos o precesos a seguir para alcanzar la solucion de un problema. Los símbolos presentados, colocados adecuadamente, permiten crear una estructura gráfica flexible que ilustra los pasos a seguir para alcanzar un resultado específico. El diagrama de flujo facilitará mas tarde la escritura del programa en algún lenguaje de programación.


Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas, verticales y horizontales, no deben de ser inclinadas y tampoco deben de cruzarse. El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda a derecha, la notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación, la solución presentada en el diagrama puede escribirse posteriormente y fácilmente en diferentes lenguajes de programación, es conveniente poner comentarios cuando se hace una tarea compleja que expresen o ayuden hacer los que hicimos, Si el diagrama de flujo requiriera más de una hoja para su construcción, debemos utilizar los conectores adecuados y enumerar las páginas convenientes, No se puede tener mas de una linea de símbolo.


DATOS NUMERICOS

Dentro de los tipos de datos numéricos encontramos los enteros y los reales. los enteros son números que pueden estar precedidos del signo + ó - y que no tienen parte decimal (-12, -714, 784, 45 etc). Los reales son números que pueden estar precedido del signo + ó -, y que tienen parte decimal (7.5, -4.8, 1245 etc).

DATOS ALFANUMERICOS

Dentro de este tipo de datos encontramos los de tipo caracter (simple) y cadena de caracteres (estructurado). Son datos cuyos contenido pueden ser letras del abecedario (a,b,c,d...,z) digitos (0,1,2,..,9) ó simbolos especiales (#,$,*), y que van encerrados entre comillas o dobles comillas dependiendo del lengaje de programacion. Debemos remarcar que aunque este típo de datos pueden contener números, no pueden ser utilizados para realizar operaciones aritméticas. (´a´, ' b´ ,´$´,). Un datos tipo de cadena de caracteres contiene un conjunto. La longitud de una cadena depende de los lenguajes de programacion, aunque normalmente se acepte una longitud máxima de 255 ("abcde", "b", "$", "Carlos Gomez")

DATOS LIGICOS

Un tipo de datos encontramos los booleanos. Son datos que soólo pueden tomar dos valores: verdadero (true) o falso (falso)

IDENTIFICADORES, CONSTANTES Y VARIABLES.

IDENTIFICADORES.

Los datos a procesar por una computadora, ya sean simple o estructurados, deben almacenarse en casillas o celdas de mamoria para su posterior utilizacion.
Llamaremos identificador al nombre que se les da a las casillas de momoria. Un identificador se forma de acuerdo a ciertas reglas (las mismas pueden tener alguna variante dependiendo del lenguaje de promación utilizado):

CONSTANTES

Las constantes son datos que no cambian durante la ejecucion de un programa. Para nombrar las constantes que utilizamos los identificadores que mencionamos anteriormente. Puede haber constantes enteras, reales, caracter, cadena de caracter, booleanas, etc.

VARIABLES

Las variables son objeto que pueden cambiar su valor durante la ejecucion de un programa. Para nombrar las variables utilizaremos los identificadores que hemos explicado con anterioridad. Al igual que las constantes, pueden existir tipos de variables como tipos de datos.

OPERACIONES ARITMETICAS

Para poder realizar operaciones aritméticas necesitamos de operadores aritméticos. Estos operadores nos permitirán realizar operaciones aritméticas entre operandos: números, constantes o variables. El resultado de una operación aritmética sera un número.

Ejemplo:

LAS REGLAS PARA RESOLVER UNA EXPRESION ARITMETICA.

1.- Si una expresión contiene subexpresiones entre paréntesis. éstas se evaluan primero; respentando claro está la jerarquia de los operadores aritméticos en esta subexpresión. si las subexpresiones que se encuentran en el último nivel de anidamiento.

2.- Los operadores aritméticos se aplican teniendo en cuenta la jerarquía y de izquierda a derecha.

Ejemplos:

Segundo ejemplo:





Gracias.