Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Programacin de computadoras
La programacin informtica o programacin algortmica, acortada como programacin, es el proceso de
disear, codificar, depurar y mantener el cdigo fuente de programas de computadora. El cdigo fuente es
escrito en un lenguaje de programacin. El propsito de la programacin es crear programas que exhiban un
comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente conocimientos en varias
reas distintas, adems del dominio del lenguaje a utilizar, algoritmos especializados y lgica formal.
Programar no involucra necesariamente otras tareas tales como el anlisis y diseo de la aplicacin (pero s
el diseo del cdigo), aunque s suelen estar fusionadas en el desarrollo de pequeas aplicaciones.
2. Lenguajes Algortmicos
Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso.
Tipos de Algoritmos
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Inicio.
Traer gato.
Levantar el coche con el gato.
Aflojar tornillos de las llantas.
Sacar los tornillos de las llantas.
la llanta.
Poner la llanta de repuesto.
Poner los tornillos.
Apretar los tornillos.
Bajar el gato.
Fin
Un algoritmo es un mtodo para resolver un problema. Un algoritmo es una serie de pasos organizados que
describe el proceso que se debe seguir, para dar solucin a un problema especfico.
La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En el algoritmo
de receta de cocina citado anteriormente se tendr:
Entrada: ingredientes y utensilios empleados.
Proceso: elaboracin de la receta en la cocina.
Salida: terminacin del plato (por ejemplo, cordero).
Ejemplo 1
Se desea disear un algoritmo para saber si un nmero es primo o no.
Un nmero es primo si slo puede dividirse por s mismo y por la unidad (es decir, no tiene ms divisores
que l mismo y la unidad). Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etc., no son primos, ya que son divisibles por
nmeros distintos a ellos mismos y a la unidad. As, 9 es divisible por 3, 8 lo es por 2, etc.
El algoritmo de resolucin del problema pasa por dividir sucesivamente el nmero por 2, 3, 4, etc.
1. Inicio.
2. Poner X igual a 2 (x = 2, x variable que representa a los divisores
del nmero que se busca N).
3. Dividir N por X (N/X).
4. Si el resultado de N/X es entero, entonces N es un nmero primo y bifurcar al punto 7; en caso
contrario, continuar el proceso.
5. Suma 1 a X (X X + 1).
6. Si X es igual a N, entonces N es un nmero primo; en caso contrario,
bifurcar al punto 3.
7. Fin.
Por ejemplo, si N es 131, los pasos anteriores seran:
1. Inicio.
2. X = 2.
3 y 4. 131/X. Como el resultado no es entero, se contina el proceso.
5. X 2 + 1, luego X = 3.
6. Como X no es 131, se bifurca al punto 3.
3 y 4. 131/X resultado no es entero.
5. X 3 + 1, X = 4.
6. Como X no es 131 bifurca al punto 3.
3 y 4.131/X..., etc.
7. Fin.
Ejemplo 2
Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de datos la ficha del cliente; si el
cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazar el pedido.
Ejemplo 1.3
Realizar la suma de todos los nmeros pares entre 2 y 1.000.
El problema consiste en sumar 2 + 4 + 6 + 8 ... + 1.000. Utilizaremos las palabras SUMA y NUMERO
(variables, sern denominadas ms tarde) para representar las sumas sucesivas (2+4), (2+4+6), (2+4+6+8),
etctera. La solucin se puede escribir con el siguiente algoritmo:
1. Inicio.
2. establecer SUMA a 0.
3. establecer NUMERO a 2.
4. Sumar NUMERO a SUMA. El resultado ser el nuevo valor de la suma
(SUMA).
5. Incrementar NUMERO en 2 unidades.
6. Si NUMERO =< 1.000 bifurcar al paso 4;
7. en caso contrario, escribir el ltimo valor de SUMA y terminar el proceso.
8. Fin.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema
determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar.
Clase sumar_numeros
Metodo Ppal()
real N1,N2,SUMA
IMPRIMA DIGITE PRIMER NUMERO
LEA N1
IMPRIMA DIGITE SEGUNDO NUMERO
LEA N2
SUMA= N1+ N2
IMPRIMA LA SUMA ES, SUMA
Fin Metodo
Fin Clase
B) Diagrama de flujo
Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama
diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia
de la operacin.
Las operaciones que debe realizar el hardware son especificadas por una lista de instrucciones, llamadas
programas, o software. Un programa de software es un conjunto de sentencias o instrucciones al
computador. El proceso de escritura o codificacin de un programa se denomina programacin y las personas
que se especializan en esta actividad se denominan programadores. Existen dos tipos importantes de
software: software del sistema y software de aplicaciones. Cada tipo realiza una funcin diferente.
Lenguaje de programacin
Un lenguaje de programacin es aquella estructura que, con una cierta base sintctica y semntica, imparte
distintas instrucciones a un programa de computadora.
Hoy en da, la mayora de los programadores emplean lenguajes de programacin como C++, C, C#, Java,
Visual Basic (Visual Studio .NET), XML, HTML, Perl, PHP, JavaScript..., aunque todava se utilizan, sobre todo
profesionalmente, los clsicos COBOL, FORTRAN, Pascal o el mtico BASIC. Estos lenguajes se denominan
lenguajes de alto nivel y permiten a los profesionales resolver problemas convirtiendo sus algoritmos en
programas escritos en alguno de estos lenguajes de programacin
6. DEFINICIONES
Lenguaje mquina
El lenguaje mquina es el nico lenguaje que puede ejecutar una computadora, es especfico en cada
arquitectura, es un cdigo que es interpretado directamente por el microprocesador, est compuesto por un
conjunto de instrucciones ejecutadas en secuencia que representan acciones que la mquina podr tomar.
El lenguaje mquina es el nico que entiende directamente la computadora, utiliza el alfabeto binario que
consta de los dos nicos smbolos 0 y 1, denominados bits; fsicamente, se materializan con tensiones
comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios, 12 voltios respectivamente. Para representar datos
que contengan una informacin se utilizan una serie de unos y ceros cuyo conjunto indica dicha informacin.
Todo cdigo fuente en ltima instancia debe llevarse a un lenguaje mquina mediante el proceso de
compilacin o interpretacin para que la computadora pueda ejecutarlo.
Intrpretes
Un intrprete es un traductor que toma un programa fuente, lo traduce y, a continuacin, lo ejecuta. Los
programas intrpretes clsicos como BASIC, prcticamente ya no se utilizan, ms que en circunstancias
especiales. Sin embargo, est muy extendida la versin interpretada del lenguaje Smalltalk, un lenguaje
orientado a objetos puro. El sistema de traduccin consiste en: traducir la primera sentencia del programa a
lenguaje mquina, se detiene la traduccin, se ejecuta la sentencia; a continuacin, se traduce la siguiente
sentencia, se detiene la traduccin, se ejecuta la sentencia y as sucesivamente hasta terminar el programa.
Intrprete
La compilacin de programas
Compiladores
Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto nivel a lenguaje
mquina. La traduccin del programa completo se realiza en una sola operacin denominada compilacin
del programa; es decir, se traducen todas las instrucciones del programa en un solo bloque. El programa
compilado y depurado (eliminados los errores del cdigo fuente) se denomina programa ejecutable porque
ya se puede ejecutar directamente y cuantas veces se desee; slo deber volver a compilarse de nuevo en el
caso de que se modifique alguna instruccin del programa. De este modo el programa ejecutable no necesita
del compilador para su ejecucin. Los lenguajes compiladores tpicos ms utilizados son: C, C++, Java, C#,
Pascal, FORTRAN y COBOL.
Las fases o etapas constituyen el ciclo de vida del software, ayudarn en el proceso de resolucin de un
problema, estas consisten en:
Las dos primeras etapas conducen a un diseo detallado escrito de forma de algoritmo1. Durante la tercera
etapa (Codificacin) se implementa el algoritmo en un cdigo escrito en un lenguaje de programacin
reflejando las ideas desarrolladas en las fases de anlisis y diseo [Joyanes, 2003].
Las dos primeras fases conducen a un diseo detallado escrito en forma de algoritmo. Durante la tercera fase
(codificacin) se implementar el algoritmo en un cdigo escrito en un lenguaje de programacin, reflejando
las ideas desarrolladas en las fases de anlisis y diseo.
Las fases de compilacin y ejecucin traducen y ejecutan el programa. En las fases de verificacin y
depuracin el programador busca errores de las etapas anteriores y los elimina. Comprobar que mientras
ms tiempo se gaste en la fase de anlisis y diseo, menos se gastar en la depuracin del programa. Por
ltimo, se debe realizar la documentacin del programa.
Antes de conocer las tareas a realizar en cada fase, se considera el concepto y significado de la palabra
algoritmo.
Caractersticas de un algoritmo
preciso (indica el orden de realizacin en cada paso),
definido (si se sigue dos veces, obtiene el mismo resultado cada vez),
finito (tiene fin; un nmero determinado de pasos).
Para poder identificar y definir bien un problema es conveniente responder a las siguientes preguntas:
Qu entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad).
Cul es la salida deseada? (tipo de datos de los resultados y cantidad).
Qu mtodo produce la salida deseada?
Requisitos o requerimientos adicionales y restricciones a la solucin.
Anlisis del problema
Cada subprograma es resuelto mediante un mdulo (subprograma) que tiene un solo punto de entrada y
un solo punto de salida.
Cualquier programa bien diseado consta de un programa principal (el mdulo de nivel ms alto) que llama
a subprogramas (mdulos de nivel ms bajo) que a su vez pueden llamar a otros subprogramas. Los
programas estructurados de esta forma se dice que tienen un diseo modular y el mtodo de romper el
programa en mdulos ms pequeos se llama programacin modular. Los mdulos pueden ser planeados,
codificados, comprobados y depurados independientemente (incluso por diferentes programadores) y a
continuacin combinarlos entre s. El proceso implica la ejecucin de los siguientes pasos hasta que el
programa se termina:
1. Programar un mdulo.
2. Comprobar el mdulo.
3. Si es necesario, depurar el mdulo.
4. Combinar el mdulo con los mdulos anteriores.
El proceso que convierte los resultados del anlisis del problema en un diseo modular con refinamientos
sucesivos que permitan una posterior traduccin a un lenguaje se denomina diseo del algoritmo.
El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar
posteriormente.
Ejemplo 1
Es un algoritmo la siguiente instruccin?
Problema: Escribir una lista de todos los enteros positivos Solucin: Es imposible ejecutar la instruccin
anterior dado que hay infinitos enteros positivos.
Ejemplo 2
Problema: Calcular la paga neta de un trabajador conociendo el nmero de horas trabajadas, la tarifa
horaria y la tasa de impuestos.
Solucin: Debemos definir el problema.
En esta fase, como se ha mencionado anteriormente, se determina cmo hace el programa la tarea solicitada.
Los mtodos ms eficaces para el proceso de diseo se basan en el conocido divide y vencers, esto es
dividiendo el problema en subproblemas y a continuacin dividir estos subproblemas en otros de nivel ms
bajo hasta que pueda ser implementada la solucin.
Existen diferentes herramientas de programacin, las ms utilizadas para disear algoritmos son:
1. Diagramas de flujo: Es una representacin grfica de un algoritmo. Los smbolos normalizados por el
Instituto Norteamericano de Normalizacin (ANSI) y los ms frecuentes empleados se muestran a
continuacin.
Desde el punto de vista del lenguaje algortmico, los pasos para la resolucin de un problema son:
1. Diseo del algoritmo, que describe la secuencia ordenada de pasos sin ambigedades que conducen
a la solucin de un problema dado. (Anlisis del problema y desarrollo del algoritmo.)
2. Expresar el algoritmo como un programa en un lenguaje de programacin adecuado. (Fase de
codificacin.)
3. Ejecucin y validacin del programa por la computadora.
Para llegar a la realizacin de un programa es necesario el diseo previo de un algoritmo, de modo que sin
algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la
computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de
programacin y ejecutarse en una computadora distinta; sin embargo, el algoritmo ser siempre el mismo.
As, por ejemplo, en una analoga con la vida diaria, una receta de un plato de cocina se puede expresar en
espaol, ingls o francs, pero cualquiera que sea el lenguaje, los pasos para la elaboracin del plato se
realizarn sin importar el idioma del cocinero.
En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes que los lenguajes
de programacin o las computadoras. Un lenguaje de programacin es tan slo un medio para expresar un
algoritmo y una computadora es slo un procesador para ejecutarlo. Tanto el lenguaje de programacin
como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efecte
el proceso correspondiente.
Dada la importancia del algoritmo en la ciencia de la computacin, un aspecto muy importante ser el diseo
de algoritmos. A la enseanza y prctica de esta tarea denominada algoritmia se dedica gran parte de este
libro.
El diseo de la mayora de los algoritmos requiere creatividad y conocimientos profundos de la tcnica de la
programacin. En esencia, la solucin de un problema se puede expresar mediante un algoritmo.
Codificacin de un programa
Para realizar la conversin del algoritmo en programa se deben sustituir las palabras reservadas en espaol
por sus homnimos en ingls, y las operaciones/instrucciones indicadas en lenguaje natural por el lenguaje
de programacin correspondiente.
/ Determina si un ao es bisiesto
#include<iostream>
int main() {
int anio;
// define variables
// lee datos
cout << "DETERMINA SI ES AO BISIESTO:" << endl ;
cout << "Ingrese numero entero (Ao): ";
cin >> anio;
// determina si el ao es bisiesto
if (((anio%4==0) && ((anio%100!=0) || (anio%400==0)))) {
cout << "Es ao bisiesto" << endl;
} else {
cout << "No es ao bisiesto" << endl << endl;
}
// pausa antes de finalizar el programa
system("PAUSE");
return 0;
}
Documentacin interna
Debido a que las mquinas actuales soportan grandes memorias (512 Mb o 1.024 Mb de memoria central
mnima en computadoras personales) no es necesario recurrir a tcnicas de ahorro de memoria, por lo que
es recomendable que se incluya el mayor nmero de comentarios posibles, pero eso s, que sean
significativos.
Si tras la compilacin se presentan errores (errores de compilacin) en el programa fuente, es preciso volver
a editar el programa, corregir los errores y compilar de nuevo. Este proceso se repite hasta que no se
producen errores, obtenindose el programa objeto que todava no es ejecutable directamente. Suponiendo
que no existen errores en el programa fuente, se debe instruir al sistema operativo para que realice la fase
de montaje o enlace (link), carga, del programa objeto con las bibliotecas del programa del compilador. El
proceso de montaje produce un programa ejecutable. La Figura 2.5 describe el proceso completo de
compilacin/ejecucin de un programa.
Una vez que el programa ejecutable se ha creado, ya se puede ejecutar (correr o rodar) desde el sistema
operativo con slo teclear su nombre (en el caso de DOS). Suponiendo que no existen errores durante la
ejecucin (llamados errores en tiempo de ejecucin), se obtendr la salida de resultados del programa.
Las instrucciones u rdenes para compilar y ejecutar un programa en C, C++,... o cualquier otro lenguaje
depender de su entorno de programacin y del sistema operativo en que se ejecute Windows, Linux, Unix,
etc.
Verificacin y depuracin de un programa
La verificacin o compilacin de un programa es el proceso de ejecucin del programa con una amplia
variedad de datos de entrada, llamados datos de test o prueba, que determinarn si el programa tiene o no
errores (bugs). Para realizar la verificacin se debe desarrollar una amplia gama de datos de test: valores
normales de entrada, valores extremos de entrada que comprueben los lmites del programa y valores de
entrada que comprueben aspectos especiales del programa.
La depuracin es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.
Cuando se ejecuta un programa, se pueden producir tres tipos de errores:
1. Errores de compilacin. Se producen normalmente por un uso incorrecto de las reglas del lenguaje de
programacin y suelen ser errores de sintaxis. Si existe un error de sintaxis, la computadora no puede
comprender la instruccin, no se obtendr el programa objeto y el compilador imprimir una lista de todos
los errores encontrados durante la compilacin.
2. Errores de ejecucin. Estos errores se producen por instrucciones que la computadora puede comprender
pero no ejecutar. Ejemplos tpicos son: divisin por cero y races cuadradas de nmeros negativos. En estos
casos se detiene la ejecucin del programa y se imprime un mensaje de error.
3. Errores lgicos. Se producen en la lgica del programa y la fuente del error suele ser el diseo del
algoritmo.
Estos errores son los ms difciles de detectar, ya que el programa puede funcionar y no producir errores de
compilacin ni de ejecucin, y slo puede advertirse el error por la obtencin de resultados incorrectos. En
este caso se debe volver a la fase de diseo del algoritmo, modificar el algoritmo, cambiar el programa fuente
y compilar y ejecutar una vez ms.