Algoritmos
Algoritmos
Algoritmos
programación
Tema de investigación:
2.1 Características del lenguaje de programación
2.2 Estructura básica de un programa
2.3 Traducción de un programa
2.4 Ejecución De un programa
2.5 Elementos del lenguaje
2.6 Errores en tiempo de ejecución
ÍNDICE
INTRODUCCIÓN …………………………………….……..……………… 3
BIBLIOGRAFÍA …………………………………………………………. 25
1
OBJETIVO GENERAL
OBJETIVOS PARTICULARES
2
INTRODUCCIÓN
MARCO TEÓRICO
1.1 Características de lenguaje de programación
1.1.2 Definición
“En este capítulo se pretende dar una vista general sobre los aspectos
pragmáticos de los lenguajes de programación” (Francisco Gortázar Bellas,
2016, p.321)
Los lenguajes de programación se ejecutan en un computador y tienen una
determinada semántica que define cuál será el resultado de la ejecución de un
programa. Definen un conjunto de tipos de datos primitivos que representan
los posibles valores que pueden devolver las expresiones del lenguaje.
2.1 Estructura básica de un programa
2.2 Definición
Existen dos partes o bloques que componen un programa: Bloque de
declaraciones: en este se detallan todos los objetos que utiliza el programa
(constantes, variables, archivos, etc). Bloque de instrucciones: conjunto de
acciones u operaciones que se han de llevar a cabo para conseguir los
resultados esperados.
3.1 Traducción de un programa
3.2 Definición
Es el proceso por el cual se traducen las instrucciones escritas en un
determinado lenguaje de programación a lenguaje máquina. Además de un
traductor, se pueden necesitar otros programas para crear un programa objeto
ejecutable.
3
“Los sistemas de traducción asistida por ordenador (TAO) son un
conjunto de programas informáticos que ayudan al profesional a traducir
textos de forma rápida ágil y de un alto nivel de calidad” (Antoni Oliver,
Joaquim Moré, 2007, p.28.)
4.1 Ejecución de un programa
4.2 Definición
Un programa de ejecución es un objeto que realiza una determinada acción
cuando se abre. Puede encontrar programas de ejecución en los paneles, en la
barra de menús de un panel y en el escritorio. Un programa de ejecución se
representa mediante un icono en todas estas ubicaciones.
5.1 Elementos de lenguaje
5.2 Definición
Datos, literales, y constantes, identificadores, variables, parámetros,
operadores, entradas, y salida de datos.
“Estas reglas de como ande escribirse los elementos del lenguaje en forma
de símbolos utilizan ala vez otros símbolos que se denominan matasimbolos”
(José A. Cerrada Somolinos, Manuel E. Collado Machuca, 2010, p.27).
6.1 Errores en tiempo de ejecución
6.2 Definición
Un error en tiempo de ejecución es un problema de software o hardware que
impide que Internet Explorer funcione correctamente. Los errores en tiempo
de ejecución se pueden producir cuando un sitio web usa código HTML que
no es compatible con la funcionalidad del explorador web.
“Los errores en tiempo de ejecución no tiene que ser motivo de pánico a
pesar que la expresión (error en tiempo de ejecución) una elección poco
afortunada de un tema espinoso” ( Peter Monadjemi, 2000, p.401).
4
CARACTERÍSTICAS DEL LENGUAJE DE PROGRAMACIÓN
Una vez que se ha visto cómo abordar un problema y cómo escribir un
algoritmo que lo modelase se verán a continuación las herramientas de que se
dispone, los lenguajes de programación para programar un algoritmo, cómo
construir un programa, y cómo programarlo utilizando pseudocódigo.
¿Cuál es el propósito de un lenguaje?
Los lenguajes de computación pueden ser de
propósito general o específicos. C, C++, Java,
Pascal, etc. Son lenguajes de programación de
propósito general SQL, PROMELA,
Actionscripts son lenguajes específicos
6
Tienen una sintaxis: un conjunto de reglas que definen qué expresiones de
texto es correctas. Por ejemplo, en C todas las sentencias deben terminar en
‘;’.
Los lenguajes de programación se ejecutan en un computador y tienen una
determinada semántica que define cuál será el resultado de la ejecución de un
programa.
Definen un conjunto de tipos de datos primitivos que representan los posibles
valores que pueden devolver las expresiones del lenguaje.
Tienen mecanismos de abstracción para definir nuevos tipos de datos a partir
de los primitivos o nuevas funciones y procedimientos.
Todos los lenguajes de programación permiten combinar ideas simples en
ideas más complejas mediante los siguientes tres mecanismos:
Expresiones primitivas, que representan las entidades más simples del
lenguaje
Mecanismos de combinación con los que se construyen elementos compuestos
a partir de elementos más simples
Mecanismos de abstracción con los que dar nombre a los elementos
compuestos y manipularlos como unidades
Abstracción
El concepto de abstracción es fundamental en informática. Para modelar un
dominio (sistema de información de una universidad, sistema de sensores de
una planta química, etc.) es necesario definir distintas abstracciones que nos
permitan tratar sus elementos.
Una abstracción agrupa un conjunto de elementos (datos y procedimientos) y
le da un nombre. Por ejemplo, cuando hablamos del sistema de información de
una universidad identificamos elementos como:
Estudiantes
Asignaturas
Matrícula
7
Expediente académico
Existen abstracciones propias de la computación, que se utilizan en múltiples
dominios. Por ejemplo, abstracciones de datos como:
Listas
Árboles
Grafos
Tablas hash
También existen abstracciones que nos permiten tratar con dispositivos y
ordenadores externos:
Fichero
Raster gráfico
Protocolo TCP/IP
Uno de los trabajos principales de un informático es la construcción de
abstracciones que permitan ahorrar tiempo y esfuerzo a la hora de tratar con la
complejidad del mundo real.
8
La mayoría de los programas siguen una de dos estructuras:
1.- Programas de lotes
Estos se ejecutan típicamente desde una línea de comando o automáticamente
desde otra aplicación y tienden al siguiente patrón
Inicialización interna de los datos
Lectura de los datos ingresados
Procesamiento de los datos
Visualización o ejecución de los resultados
2.- Programas controlados por eventos
La mayor parte de las interfaces responden a eventos
Los programas controlados por eventos son generalmente así:
Inicialización interna de los datos
Espera de los eventos
Identificación de los eventos y actuación en consecuencia
Estructura lógica.
Desde el punto de vista lógico, puede considerarse que los programas
comprenden dos tipos de elementos diferentes: estructuras de datos y
algoritmos. O, dicho en otras palabras: datos, e instrucciones para su
9
manipulación. Su representación codificada adopta dos formas: una entendible
por la máquina (ejecutable y ficheros de datos) y otra entendible por el
humano (fuente). Para el conjunto de ambas puede considerarse una escala
conceptual que, si vamos de lo general a lo particular, podemos representarla
como sigue:
Traducción de un programa: complicación, enlace de un programa,
errores en tiempo de compilación.
Un compilador es un programa informático que traduce un programa escrito
en un lenguaje de programación a otro lenguaje de programación, generando
un programa equivalente que la máquina será capaz de interpretar. Usualmente
el segundo lenguaje es lenguaje de máquina, pero también puede ser un
código intermedio (bytecode), o simplemente texto. Este proceso de
traducción se conoce como compilación.
Un compilador es un programa que permite traducir el código fuente de un
programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior
(típicamente lenguaje de máquina). De esta manera un programador puede
diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser
humano, para luego compilarlo a un programa más manejable por una
computadora.
Partes de un compilador
La construcción de un compilador involucra la división del proceso en una
serie de fases que variará con su complejidad. Generalmente estas fases se
agrupan en dos tareas: el análisis del programa fuente y la síntesis del
programa objeto.
Análisis: Se trata de la comprobación de la corrección del programa fuente, e
incluye las fases correspondientes al Análisis Léxico (que consiste en la
descomposición del programa fuente en componentes léxicos), Análisis
Sintáctico (agrupación de los componentes léxicos en frases gramaticales) y
Análisis Semántico (comprobación de la validez semántica de las sentencias
aceptadas en la fase de Análisis Sintáctico).
Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje
objeto y suele estar formado por una o varias combinaciones de fases de
Generación de Código (normalmente se trata de código intermedio o de
10
código objeto) y de Optimización de Código (en las que se busca obtener un
código lo más eficiente posible).
Alternativamente, las fases descritas para las tareas de análisis y síntesis se
pueden agrupar en Front-end y Back-end:
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. Esta
parte suele ser independiente de la plataforma o sistema para el cual se vaya a
compilar, y está compuesta por las fases comprendidas entre el Análisis
Léxico y la Generación de Código Intermedio.
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.
Esta división permite que el mismo Back End se utilice para generar el código
máquina de varios lenguajes de programación distintos y que el mismo Front
End que sirve para analizar el código fuente de un lenguaje de programación
concreto sirva para generar código máquina en varias plataformas distintas.
Suele incluir la generación y optimización del código dependiente de la
máquina.
El código que genera el Back End normalmente no se puede ejecutar
directamente, sino que necesita ser enlazado por un programa enlazador
(linker).
Tipos de compiladores
Esta taxonomía de los tipos de compiladores no es excluyente, por lo que
puede haber compiladores que se adscriban a varias categorías:
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 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.
11
Compiladores JIT (Just In Time): forman parte de un intérprete y compilan
partes del código según se necesitan.
Proceso de compilación
Es el proceso por el cual se traducen las instrucciones escritas en un
determinado lenguaje de programación a lenguaje máquina. Además de un
traductor, se pueden necesitar otros programas para crear un programa objeto
ejecutable. Un programa fuente se puede dividir en módulos almacenados en
archivos distintos. La tarea de reunir el programa fuente a menudo se confía a
un programa distinto, llamado preprocesador. El preprocesador también puede
expandir abreviaturas, llamadas a macros, a proposiciones del lenguaje fuente.
Normalmente la creación de un programa ejecutable (un típico.exe para
Microsoft Windows o DOS) conlleva dos pasos. 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 a lenguaje máquina). El
segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel
generado de todos los ficheros y subprogramas que se han mandado compilar
y se añade el código de las funciones que hay en las bibliotecas del
compilador para que el ejecutable pueda comunicarse directamente con el
sistema operativo, traduciendo así finalmente el código objeto a código
máquina, y generando un módulo ejecutable.
Fase de síntesis
Consiste en generar el código objeto equivalente al programa fuente. Sólo se
genera código objeto cuando el programa fuente está libre de errores de
análisis, lo cual no quiere decir que el programa se ejecute correctamente, ya
que un programa puede tener errores de concepto o expresiones mal
calculadas. Por lo general el código objeto es código de máquina relocalizarle
o código ensamblador.
Generación de código intermedio
Después de los análisis sintáctico y semántico, algunos compiladores generan
una representación intermedia explícita del programa fuente. Se puede
considerar esta representación intermedia como un programa para una
máquina abstracta. Esta representación intermedia debe tener dos propiedades
importantes; debe ser fácil de producir y fácil de traducir al programa objeto.
Optimización de código
La fase de optimización de código consiste en mejorar el código intermedio,
de modo que resulte un código máquina más rápido de ejecutar. Esta fase de la
etapa de síntesis es posible sobre todo si el traductor es un compilador
(difícilmente un intérprete puede optimizar el código objeto).
14
Si el programa fuente es sintácticamente correcto, el compilador generará el
código objeto, en caso contrario mostrará una lista con los errores
encontrados, no generándose ningún programa objeto, para que procedamos a
su depuración.
Los compiladores emiten mensajes de error o de advertencia durante las fases
de compilación, de enlace o de ejecución de un programa:
15
productividad y, de hecho, es usado en parte de los proyectos Google y
YouTube.
Traduciendo el código escrito del programa (lo que se denomina código
fuente), a su equivalente en lenguaje máquina. A este proceso se le llama
compilar y al programa traductor se le denomina compilador. Ejemplos de esto
son: El lenguaje C, que combina en sus sintaxis características de medio y
bajo nivel y el compilador gcc usado en el proyecto GNU.
16
4 º. Si no hay errores se obtendrá el código objeto y el enlazador construirá el
archivo ejecutable.
5 º. Una vez tengamos el archivo ejecutable, será el sistema operativo el
encargado de colocar el programa en la memoria central y ejecutarlo.
6 º. Comprobar el funcionamiento del programa.
7 º. Si se detecta errores o un mal funcionamiento del programa, activar el
depurador para trazar el programa y ejecutarlo sentencia a sentencia.
8 º. Una vez que hayamos encontrado la causa del error, volveremos al editor
y lo corregimos.
9 º. El proceso de compilar, enlazar y ejecutar el programa lo repetiremos
hasta que no se produzcan errores.
Fase de ejecución de un programa
Una vez que tenemos el programa en lenguaje máquina, para poderlo ejecutar
hay que introducirlo en la memoria.
17
Elementos del lenguaje: datos, literales y constantes, identificadores,
variables, parámetros, operadores, entrada y salida de datos.
1.1 CLASIFICACION DEL SOFTWARE DE: SISTEMAS Y
APLICACIÓN
1.2 ALGORITMO
1.3 LENGUAJE DE PROGRAMACIÓN
1.4 PROGRAMA
1.5 PROGRAMACIÓN
1.6 PARADIGMA DE PROGRAMACIÓN
1.7 EDITOR DE TEXTO
1.8 COPILADORES E INTÉRPRETES
3.2. ESTRUCTURA BÁSICA DE UN PROGRAMA.
3.3 TRADUCCIÓN DE UN PROGRAMA: COMPILACIÓN, ENLACE
DE UN PROGRAMA, ERRORES EN TIEMPO DE COMPILACIÓN.
18
3.4 EJECUCIÓN DE UN PROGRAMA.
3.5 ELEMENTOS DEL LENGUAJE: DATOS, LITERALES Y
CONSTANTES, IDENTIFICADORES, VARIABLES, PARÁMETROS,
OPERADORES, ENTRADA Y SALIDA DE DATOS.
3.6 ERRORES EN TIEMPO DE EJECUCIÓN.
4.1 ESTRUCTURAS SECUENCIALES.
4.2 ESTRUCTURAS SELECTIVAS: SIMPLE, DOBLE Y MÚLTIPLE.
4.3 ESTRUCTURAS ITERATIVAS: REPETIR MIENTRAS, HASTA,
DESDE.
4.4 DISEÑO E IMPLEMENTACIÓN DE FUNCIONES
2.1 ANÁLISIS DEL PROBLEMA
2.2 REPRESENTACION DE ALGORITMOS: GRÁFICA Y
PSEUDOCÓDIGO.
2.3. DISEÑO DE ALGORITMOS APLICADOS A PROBLEMAS.
2.4 DISEÑO ALGORITMICO DE FUNCIONES
MAPA DEL SITIO
3.5 ELEMENTOS DEL LENGUAJE: DATOS, LITERALES Y
CONSTANTES, IDENTIFICADORES, VARIABLES, PARÁMETROS,
OPERADORES, ENTRADA Y SALIDA DE DATOS.
ELEMENTOS DEL LENGUAJE TURBO C
ESTRUCTURA DE LENGUAJE C. La estructura básica de un programa en
lenguaje C, contempla lo siguiente: Archivos cabecera (header files) Son
aquellos en los cuales el compilador de turbo C, tomara la definición de las
funciones que se usan dentro del Programa. Directivas del preprocesador de
turbo C Macro definiciones Declaración de funciones Variables Globales
/*ejemplos*/ # include # include # include if endif # define NEGRO 1000
void Funcion1(int a, int b); int a, char g, float b;
Programa Principal main() Indicador de inicio de {bloque de instrucciones. Se
definen variables locales. Instrucciones Indicador de cierre del bloque de
19
instrucciones. Definición de funciones int c; c = Funcion1(2,3); z=(a*c)/b; }
Funcion1 (int a, int b) { a=a+b; ,… }
NO TIENE PRIMITIVAS DE ENTRADA/SALIDA. - Es decir Turbo C no
tiene palabras o comandos que impliquen entrada o salida de documentos, tal
como PASCAL (read, write) pero se cuenta con 2 funciones que hacen lo
mismo: scanf( ) y print( ). TIENE 32 PALABRAS RESERVADAS (todas son
minúsculas): auto auto break case char const continue default if double else
enum extern float for goto static int long register return short signed sizeof
huge struct switch ypedef union unsigned void volatile do
.- TIENE 11 PALABRAS DEL TURBO C EXTENDIDO asm _cs _ss cded
interruptl near EJEMPLO DE UN PROGRAMA EN C. _ds far pascal _es
huge
/*Este pequeño programa intenta demostrar algunas características de la
programación en lenguaje C*/ # include main () { printf(“hola, usuarios de C\
n”); } OBSERVACIONES DEL EJEMPLO ANTERIOR.
/*---------------------------------------------------/* indican un comentarlo. Main es
el nombre de una función. ( ) el paréntesis que sigue al nombre de función
encierra la lista de argumentos. { } Inicio y término de las instrucciones del
cuerpo de una función. Printf(“hola, usuarios de C\n”); es la llamada a una
función la cual escribirá en pantalla el mensaje entre comillas. “------“ es una
cadena de carácteres o una constante de cadena. \n en notación C es el
indicativo de una nueva línea. TIPOS DE DATOS EN C Tipo char int Clase
Signed unsigned Short [int] Int Long [int] Unsigned Short [int] Unsigned long
[int] Float Double Long double
Float
TIPOS DE DATOS Y RANGO. Tipo Char Int Float Double Void Numero de
bits 8 16 32 64 0 Rango 127 a -128 32767 a -32768 32767 a -32768 12 digjtos
de precisión cero. MODIFICADORES DE TIPO. Existen 3 modificadores de
tipo, que de acuerdo a la necesidad que se tenga se aplican y son: long, shot y
unsigned. Por defecto son signadas, es decir se le pueden aplicar el
modificador unsigned. El modificado (short se aplica únicamente al tipo int,
reduciendo con esto el rango, siendo este de 0 a 255. El modificador long es
aplicable únicamente a double: extendiendo su rango a 80 bits.
DECLARACIÓN DE VARIABLES y CONSTANTES NOMBRE DE
VARIABLES. Los nombres de las variables no pueden ser palabras
20
reservadas. Los nombres pueden ser formados por letras, dígitos y el guión
bajo. El primer carácter debe ser una letra. El subrayado se toma como una
letra, El lenguaje C es sensitivo al tipo de letra, es decir, los siguientes tres
nombres de variables son diferentes: Var, var, VAR.
Por lo anterior, se puede concluir en lo referente a la definición de variables y
constantes que: El lenguaje C, es sensible al tamaño de las palabras. Al
nombrar variables, estas no podrán ser palabras reservadas, únicamente
podrán ser caracteres, dígitos y el guión bajo.
21
Con respecto a los errores en tiempo de ejecución, encontrar la causa que los
provoca es una labor en ocasiones complicada, razón por la cual los EID
(Entornos Integrados de Desarrollo, p.ej. DevC++) nos proporcionan una
herramienta llamada Depurador que nos ayuda a encontrar los errores lógicos
y demás errores producidos en tiempo de ejecución.
Un depurador (debugger), es un programa diseñado específicamente para la
detección, verificación y corrección de errores. Los depuradores nos permiten
trazar el programa (ejecutarlo sentencia a sentencia) y visualizar el contenido
de las variables y direcciones de memoria durante la ejecución del programa.
Además, permiten alterar el flujo de ejecución del mismo, cambiar los valores
de las variables e introducir puntos de parada.
Conclusión general
La programación es fundamental para acrecentar el avance tecnológico dentro
de las industrias que para llevar a cabo sus funciones necesitan de sitios y
aplicaciones creadas a partir de los códigos. No es novedad que vivimos en un
mundo computarizado donde la tecnología forma parte de todo lo que
hacemos.
Conclusión personal
BIBLIOGRAFÍA
https://sites.google.com/site/teccorzo/home/unidad-3/3-1-caracteristicas-del-
lenguaje-de-programacion
https://sites.google.com/site/teccorzo/3-2-estructura-basica-de-un-programa
https://sites.google.com/site/teccorzo/3-4-ejecucion-de-un-programa
https://sites.google.com/site/teccorzo/3-5-elementos-del-lenguaje-datos-
literales-y-constantes-identificadores-variables-parametros-operadores-
entrada-y-salida-de-datos
https://sites.google.com/site/teccorzo/3-6-errores-en-tiempo-de-ejecucion
Traducción y tecnologías De Antoni Oliver, Joaquim Moré · 2007
23
Lenguajes de programación y procesadores. De Francisco Gortázar Bellas,
Raquel Martínez Unanue, Víctor Diego Fresno Fernández · 2016
Fundamentos de programación De José A. Cerrada Somolinos, Manuel E.
Collado Machuca · 2010 VBA con Office 2000
El fácil acceso a la programación de marcos con Word, Excel, Access,
Outlook y FrontPage; incluye CD-ROM con todos los ejemplos del libro. De
Peter Monadjemi · 2000
24