Anda di halaman 1dari 12

UNIDAD I

CONCEPTOS BSICOS
A continuacin se desarrolla algunos conceptos bsicos e importantes,
para una buena comprensin de las tcnicas de programacin que se
pretende con ello realizar un seguimiento y dominar.

1.1 EL SISTEMA DE PROCESAMIENTO DE LA INFORMACIN.

Una computadora es un aparato electrnico que maneja mucha informacin


y a altas velocidades. Entonces es importante, para un estudiante de
ingeniera, saber la manera en que se organiza la informacin en una
computadora y saber cmo se puede manejar y utilizar dicha informacin.

Por otro lado es importante saber algo sobre datos e informacin. Aunque
en un diccionario comn y corriente los trminos datos e informacin son
sinnimos; en el campo de la informtica es necesario diferenciarlos, pues,
datos se refiere a la representacin de algn concepto (nmeros enteros,
nmeros reales, cadenas, etc.), mientras que informacin significa datos
procesados y organizados (por ejemplo nmeros ordenados).

Partiendo de lo anterior podemos afirmar que un sistema de


procesamiento de informacin es un sistema que transforma datos brutos
en informacin organizada, significativa y til, el cual se resume en la
Figura 1.1.

Entrada Sistema de procesamiento Salida


DATOS de informacin INFORMACIN

Figura 1.1. Sistema del proceso de informacin

Dos conceptos importantes que se deben tener en cuenta para el


procesamiento de la informacin son el hardware y software. El hardware
es el conjunto de componentes fsicos de una computadora (CPU, disco
duro, monitor, impresora, etc.) mientras que el software es el conjunto de
programas que controlan el funcionamiento de la computadora (Windows,
Word, Excel, AutoCAD, Pascal, Turbo C++, etc.).
1.2 DEFINICIN DE ALGORITMO.

Un algoritmo se define como un conjunto de instrucciones que se realiza


paso a paso para solucionar un problema que termina en un nmero finito
de pasos.

Las caractersticas fundamentales que debe cumplir todo algoritmo son:


- Debe ser preciso e indicar el orden de realizacin de cada paso.
- Debe ser definido, es decir, si se sigue un algoritmo dos veces, se debe
obtener el mismo resultado cada vez.
- Debe ser finito, es decir, si se sigue un algoritmo, se debe terminar en
algn momento.

La definicin de un algoritmo debe describir tres partes: Entrada, Proceso


y Salida.

1.3 ALGORITMOS COTIDIANOS.

Se refiere a todos aqullos algoritmos que ayudan a resolver problemas


cotidianos y que los hacemos casi sin darnos cuenta de que estamos
siguiendo una metodologa para resolverlos.

Algunos ejemplos :
* Disee un algoritmo para cambiar una llanta a un coche.
1. Inicio.
2. Traer la gata.
3. Levantar el coche con la gata.
4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Ajustar los tornillos.
10. Bajar la gata.
11. Fin

* Determine el mayor de tres nmeros enteros.


1. Comparar el primero y el segundo entero, deduciendo cul es el mayor.
2. Comparar el mayor anterior con el tercero y deducir cul es el mayor.
Este ser el resultado.

Los pasos anteriores se pueden descomponer en otros pasos ms


simples en los que se denomina refinamiento del algoritmo.

1. Obtener el primer nmero (entrada), denominado NUM1


2. Obtener el segundo nmero (entrada), denominado NUM2
3. Compara NUM1 con NUM2 y seleccionar el mayor; si los dos enteros
son iguales, seleccionar NUM1. Llamar a este nmero MAYOR.
4. Obtener el tercer nmero (entrada), y se denomina NUM3.
5. Compara MAYOR con NUM3 y seleccionar el mayor; si los dos enteros
son iguales, seleccionar el MAYOR. Denominar a este nmero
MAYOR.
6. Presentar el valor MAYOR (salida).

1.4 DEFINICIN DE LENGUAJES ALGORTMICOS.

Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno


de estos lenguajes permiten describir los pasos con mayor o menor detalle.

La clasificacin de los lenguajes para algoritmos puede enunciarse de la


siguiente manera:

1.4.1 Lenguaje Natural

Es aqul que describe en espaol, para nuestro caso, los pasos a


seguir utilizando un vocabulario cotidiano. Se le conoce como
lenguaje jerga cuando se utilizan trminos especializados de una
determinada ciencia, profesin o grupo.

1.4.2 Lenguaje de Diagrama de Flujo

Es aqul que se vale de diversos smbolos para representar las ideas


o acciones a desarrollar. Es til para organizar las acciones o pasos
de un algoritmo pero requiere de etapas posteriores para
implementarse en un sistema de cmputo.

1.4.3 Lenguaje de Programacin de Algoritmos

Es aqul que se utiliza para introducir en la computadora un algoritmo


especfico. Se les conoce tambin como Lenguaje de
Programacin.

1.5 LENGUAJE DE PROGRAMACIN.

Es un conjunto de palabras, smbolos y reglas sintcticas mediante los


cuales puede indicarse a la computadora los pasos a seguir para resolver
un problema.

Los lenguajes de programacin pueden clasificarse por diversos criterios,


siendo el ms comn su nivel de semejanza con el lenguaje natural, y su
capacidad de manejo de niveles internos de la mquina.

1.5.1 Lenguaje Mquina

Son aqullos que estn escritos en lenguajes directamente inteligibles


por la mquina (computadora), ya que sus instrucciones son cadenas
binarias (cadenas o series de caracteres de dgitos 0 y 1) que
especifican una operacin y las posiciones (direccin) de memoria
implicadas en la operacin se denominan instrucciones de mquina
o cdigo mquina. El cdigo mquina es el conocido cdigo
binario.

- Ventajas del lenguaje mquina


Posibilidad de cargar (transferir un programa a la memoria) sin
necesidad de traduccin posterior, lo que supone una velocidad de
ejecucin superior a cualquier otro lenguaje de programacin.

- Desventajas del Lenguaje Mquina


Tiene dificultad y lentitud en la codificacin, gran dificultad para
verificar y poner a punto los programas y los programas slo son
ejecutables en el mismo procesador.

En la actualidad, las desventajas superan a las ventajas, lo que hace


prcticamente no recomendables.

1.5.2 Lenguajes de Bajo Nivel

Son ms fciles de utilizar que los lenguajes mquina, pero al igual


que ellos, dependen de la mquina en particular. El lenguaje de bajo
nivel por excelencia es el ensamblador. Las instrucciones en
lenguaje ensamblador son instrucciones conocidas como
nemotcnicos. Por ejemplo, nemotcnicos tpicos de operaciones
aritmticas son: en ingls ADD, SUB, DIV, etc.; en espaol SUM,
RES, DIV, etc.

Una instruccin tpica de suma sera:


ADD M, N, P

Esta instruccin significa "sumar el contenido en la posicin de


memoria M al nmero almacenado en la posicin de memoria N y
situar el resultado en la posicin de memoria P". Evidentemente es
ms sencillo recordar la instruccin anterior con un nemotcnico que
su equivalente en cdigo mquina.

0110 1001 1010 1011

Ventajas del lenguaje ensamblador frente al lenguaje mquina


- Mayor facilidad de codificacin y, por tanto, mayor su velocidad de
clculo.

Desventajas del lenguaje ensamblador


- Dependencia total de la mquina lo que impide la transportabilidad
de los programas (posibilidad de ejecutar un programa en diferentes
mquinas). Por ejemplo el lenguaje ensamblador del PC es distinto
del lenguaje ensamblador del Apple Machintosh.

- La formacin de los programadores es ms compleja que la


correspondiente a los programadores de alto nivel, ya que exige no
slo las tcnicas de programacin, sino tambin el conocimiento del
interior de la mquina.

Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se


centran bsicamente en aplicaciones de tiempo real, control de
procesos y de dispositivos electrnicos.

1.5.3 Lenguajes de Alto Nivel

Estos lenguajes son los ms utilizados por los programadores. Estn


diseados para que las personas escriban y entiendan los programas
de un modo mucho ms fcil que los lenguajes mquina y
ensambladores. Un programa escrito en lenguaje de alto nivel es
independiente de la mquina (las instrucciones no dependen del
diseo 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 modificacin en diferentes tipos de computadoras. A este
nivel se encuentran los lenguajes de programacin como Pascal, Ada,
Turbo C++, Visual Basic, Visual C++, etc..

Ventajas de los lenguajes de alto nivel


- El tiempo de formacin de los programadores es relativamente corto
comparado con otros lenguajes.
- La escritura de programas se basa en reglas sintcticas similares a
los lenguajes humanos. Nombres de las instrucciones tales como
READ, WRITE, PRINT, OPEN, etc.
- Las modificaciones y puestas a punto de los programas son ms
fciles.
- Reduccin del costo de los programas.
- Transportabilidad.

Desventajas de los lenguajes de alto nivel


- Incremento del tiempo de puesta a punto, al necesitarse diferentes
traducciones del programa fuente para conseguir el programa
definitivo.
- No se aprovechan los recursos internos de la mquina que se
explotan mucho mejor en lenguajes mquina y ensambladores.
- Aumento de la ocupacin de memoria.
- El tiempo de ejecucin de los programas es mucho mayor.
UNIDAD II
METODOLOGA PARA LA SOLUCIN DE
PROBLEMAS POR MEDIO DE COMPUTADORAS
Para resolver un problema utilizando sistemas de cmputo, debe seguirse
una serie de pasos que permiten avanzar por etapas bien definidas hacia la
solucin del problema. Estas etapas son las siguientes:
- Identificacin y definicin del problema.
- Anlisis de los datos.
- Diseo de la solucin (diseo del algoritmo).
- Codificacin.
- Prueba y depuracin.
- Documentacin.
- Mantenimiento.

2.1 IDENTIFICACIN Y DEFINICIN DEL PROBLEMA.

Todo problema se inicia con la identificacin y definicin del problema, esta


parte consta en s por el enunciado del problema, el cual debe ser claro y
completo. Es importante que conozcamos exactamente "que se desea
obtener al final del proceso"; mientras esto no se comprenda no puede
pasar a la siguiente etapa.

Para poder definir con precisin el problema se requiere que las


especificaciones de entrada y salida sean descritas con detalle ya que esto
es un requisito para lograr una solucin eficaz.

2.2 ANLISIS DE LOS DATOS.

Una vez que el problema ha sido definido y comprendido, deben analizarse


los siguientes aspectos:
- Los resultados esperados.
- Los datos de entrada disponibles (analizar los datos de entrada)
- Herramientas a nuestro alcance para manipular los datos y alcanzar un
resultado (frmulas, tablas, accesorios diversos).
Ejemplo:

Si el problema consiste en determinar el rea de un crculo y la longitud de


la circunferencia; la definicin del problema sera leer el radio del crculo y
calcular e imprimir la superficie y longitud de la circunferencia.

Anlisis de los datos: Las entradas de datos en este problema se


concentran en el radio del crculo. Dado que el radio puede tomar cualquier
valor dentro del rango de los nmeros reales, el tipo de dato radio debe ser
real. Las salidas sern dos variables: superficie y circunferencia que
tambin sern de tipo real. En conclusin sera:

Entradas: Radio del crculo (variable radio).


Salidas: Superficie del crculo (variable area).
Circunferencia del crculo (variable circunferencia).
Variables: radio, area, circunferencia tipo real.

2.3 DISEO DE LA SOLUCIN (Diseo del Algoritmo).

En primer lugar es necesario saber que una computadora por si sola no


tiene capacidad para solucionar problemas, entonces para que una
computadora pueda solucionar algn problema se le tiene que proporcionar
todos los pasos que se tienen que seguir para solucionar el problema; esos
pasos constituyen el algoritmo.

En el diseo del algoritmo es recomendable tener en cuenta que cuando se


trata de problemas aparentemente complejos, una forma eficaz de
resolverlos es dividirlos en subproblemas ms simples y estos a su vez en
sub subproblemas ms simples an; hasta conseguir que la solucin total
del problema sea la unin de todas las soluciones de los problemas
pequeos; estos subproblemas se conocen como mdulos. Esta forma de
disear un algoritmo se le conoce como diseo descendente y la
estrategia que se utiliz se llama divide y vencers. Adicionalmente a lo
anterior en el diseo de algoritmos es necesario saber que en una primera
descripcin de los pasos, algunos quedan muy ambiguos o incompletos lo
cual conlleva a revisar una segunda o tercera vez hasta que todos los pasos
sean lo ms claro posible; a esto se le conoce como refinamiento de pasos.
En el Cuadro 2.1 se muestra el diseo de un algoritmo simple y un algoritmo
refinado, el cual se refiere al ejemplo anterior del rea y longitud de la
circunferencia.

Algoritmo Simple Algoritmo Refinado


1) Leer radio. 1) Leer radio.
2) Calcular rea. 2) area=3.141592*radio*radio
3) Calcular longitud. 3) longitud=2*3.141592*radio
4) Escribir resultados. 4) Imprimir area y longitud.
Cuadro 2.1

Por otro lado en el diseo de algoritmos se tiene dos herramientas


importantes que se utilizan: el pseudocdigo y los diagramas de flujo.
Un diagrama de flujo es un diagrama que utiliza smbolos estndar
mostrados en la Figura 2.1 y los pasos del algoritmo se unen con lneas de
flujo, que indican la secuencia que se deben ejecutar.

Smbolo Descripcin Smbolo Descripcin


Representa al inicio y Representa entrada o
final de un programa salida de datos
Se utiliza para realizar Smbolo de decisin. Se
procesos de clculo o utiliza con operaciones
cambio de valor de las SI lgicas y en comparacin
variables de variables.
NO

Smbolo de conector, el
Sirve para simbolizar cual sirve para enlazar
una decisin mltiple dos partes cualesquiera
de un diagrama de flujo a
travs de un conector en
la salida y entrada.

Lneas conectoras y
lneas indicadoras de Llamadas a
direccin o lnea de flujo subprogramas (funciones
de acuerdo al sentido y procedimientos)
de la flecha

Figura 2.1. Smbolos grficos para elaborar los diagramas de flujo.

2.4 CODIFICACIN.
Se refiere a la obtencin de un programa definitivo que pueda ser
comprensible para la mquina. Incluye una etapa que se reconoce como
compilacin.

Si la codificacin original se realiz en papel, previo a la compilacin deber


existir un paso conocido como transcripcin.

Figura 2.2. Proceso de codificacin de un programa desde un algoritmo.

Programa Fuente

Este programa est escrito en un lenguaje de programacin. (pascal,


C++,Visual Fox, Visual Basic, etc). Adems que es entendible por el
programador.
Programa Ejecutable

Este programa est en lenguaje de mquina y que slo es entendible por la


mquina.

2.5 PRUEBA Y DEPURACIN.


Una vez que se ha obtenido el programa ejecutable, ste es sometido a
prueba a fin de determinar si resuelve o no el problema planteado en forma
satisfactoria.

Las pruebas que se le aplican son de diversa ndole y generalmente


dependen del tipo de problema que se est resolviendo. Comnmente se
inicia la prueba de un programa introduciendo datos vlidos, invlidos e
incongruentes y observando como reacciona en cada ocasin.

El proceso de depuracin consiste en localizar los errores y corregirlos en


caso de que estos existan. Si no existen errores, puede entenderse la
depuracin como una etapa de refinamiento en la que se ajustan detalles
para optimizar el desempeo del programa.

2.6 DOCUMENTACIN.

Debido a que el programa resultante en esta etapa se encuentra totalmente


depurado (sin errores), se procede a la utilizacin para resolver problemas
del tipo que dio origen a su diseo, pero en vista de que esta utilizacin no
podr ser supervisada en todas las ocasiones por el programador, debe
crearse un manual o gua de operacin que indique los pasos a seguir
para utilizar el programa.

2.7 MANTENIMIENTO.

Se refiere a las actualizaciones que deban aplicarse al programa cuando las


circunstancias as lo requieran. Este programa deber ser susceptible de
ser modificado para adecuarlo a nuevas condiciones de operacin.

Cualquier actualizacin o cambio en el programa deber reflejarse en su


documentacin.
UNIDAD III
INTRODUCCIN A LA PROGRAMACIN
ESTRUCTURADA APLICADA A C++
3.1 ELEMENTOS BSICOS DE UN PROGRAMA.

Cuando se estudia las tcnicas de programacin se debe tener en cuenta


que en programacin es necesario diferenciar entre el diseo del algoritmo
y su implementacin en un lenguaje de programacin especfico (por
ejemplo en Pascal o C++); el diseo del algoritmo, como se dijo
anteriormente, consiste en identificar paso a paso la secuencia para la
solucin de un problema y dicha secuencia de pasos se puede
representarlo mediante un diagrama de flujo, un diagrama N-S
(Nassi - Schneiderman) o pseudocdigo; este ltimo tiene la ventaja de usar
un lenguaje natural para identificar el desarrollo del algoritmo usando
palabras como: inicio, fin, leer, escribir, si-entonces-sino,
mientras-fin_mientras, repetir-hasta, etc.. El pseudocdigo otorga la ventaja
al programador de slo concentrarse en la lgica y en las estructuras de
control y no preocuparse de las reglas ni sintaxis que todo lenguaje de
programacin tiene. A continuacin desarrollaremos los elementos bsicos
de un programa aplicado al lenguaje de programacin C++.

3.1.1 Estructura de un Programa en C++.


a) Seccin de cabecera del programa.

En esta seccin es recomendable poner a travs de un comentario


y en forma resumida, qu es lo que el programa va ha realizar; para
realizar comentarios en C++ se utiliza dos slash juntos (//); por
ejemplo:

// Programa para determinar el costo total a pagar de una factura.

Otro ejemplo podra ser:

// Programa para determinar el promedio de notas.

b) Seccin de inclusin de unidades.


En esta seccin se incluye todas las unidades del C++ que depende
del tipo de programa que se est haciendo; entre las unidades ms
conocidas se encuentra conio.h, stdio.h, iostream.h; math.h, etc.;
cada uno de los cuales debe ir precedido de #include; por ejemplo:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>

c) Seccin de declaracin de funciones y procedimientos.

En esta seccin se debe hacer slo la declaracin de funciones y


procedimientos que se conocen como subprogramas que se vern
ms adelante; pero como ejemplo podra declarar lo siguiente:
void maximo(float x,float y,float &max) // declaracin del procedimiento maximo.
float minimo(float x,float y); // declaracin de la funcin minimo.

d) Seccin de declaracin de constantes.

En esta seccin se declara todas las constantes que se usarn en el


programa; una constante es un identificador que no cambia de valor
durante la ejecucin del programa. En C++ una constantes se
puede declarar de dos forma distintas como se muestra en el
siguiente ejemplo:

#define isc 0.02 // Impuesto selectivo al consumo 2%


#define igv 0.19 // Impuesto general a las ventas 19%

O tambin se puede declarar de la siguiente manera:

const float isc=0.02; // Impuesto selectivo al consumo 2%


const float igv=0.19; // Impuesto general a las ventas 19%

e) seccin de declaracin de nuevos tipos de datos (estructuras


de datos).

En esta seccin se declara las nuevas estructuras de datos que


define el programador tales como arrays, registros, etc.; que se
vern ms adelante.

f) Seccin de declaracin de variables globales.

En esta seccin se declara todas las variables globales que se


usarn en el programa, los cuales son de distintos tipos (enteros,
reales, cadena, etc.) y estos dependen del problema que se tiene
que solucionar. Sobre lo que son variables se desarrollar
ampliamente ms adelante; por ejemplo para declarar las variables
a, b y mayor del tipo entero y d y e del tipo real sera:

float a,b,mayor;
int d,e;
g) Inicio del cuerpo del programa principal.

Esta parte del programa del C++ es el ms importante, y se inicia


con la palabra reservada main() y debe estar encerrada entre llaves
({ }). Tambin dentro de las llaves se puede declarar variables y
constantes locales como se ver ms adelante.

h) Desarrollo de las funciones y procedimientos declarados en el


tem c).

En esta seccin se debe desarrollar la parte de los subprogramas


declarados en la seccin del tem c), el cual tambin debe estar
entre llaves ({ }); y tambin dentro de dichas llaves se puede
declarar variables y constantes locales que slo funcionan dentro
del subprograma. Ms adelante se desarrollar con ms detalle
esta parte del C++.

Anda mungkin juga menyukai