SlideShare a Scribd company logo
1 of 24
Download to read offline
La Resolución de Problemas utilizando la Computadora

Aunque el proceso de diseñar programas es un proceso creativo, se pueden considerar
una serie de fases o pasos comunes, que generalmente deben seguir todos los
programadores.

La resolución de problemas con computadoras se puede dividir en tres fases:

   •   Análisis del problema
   •   Diseño del algoritmo
   •   Resolución del algoritmo en la computadora

El análisis y el diseño del algoritmo requiere la descripción del problema en
subproblemas a base de refinamientos sucesivos y una herramienta de programación:

   •   Diagrama de flujo
   •   Diagrama N-S
   •   Pseudocódigo

Durante la tercera etapa se implementa este algoritmo en un código escrito en un
lenguaje de programación, reflejando las ideas obtenidas en las fases de análisis y
diseño.

Antes de conocer las tareas a realizar en cada fase, definiremos el concepto y
significado de la palabra algoritmo.

¿Qué es Algoritmo?

Se deriva de la traducción al latín de la palabra árabe Alkhowarismi, nombre de un
matemático y astrónomo árabe que escribió un tratado sobre manipulación de números
y ecuaciones en el siglo IX.

Un algoritmo es un método para resolver un problema mediante una serie de pasos
precisos, definidos y finitos.

Características del Algoritmo

   •   preciso, tiene que indicar el orden de realización en cada paso.
   •   definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se
       debe obtener el mismo resultado.
   •   finito, es decir, que el algoritmo tiene que tener un número determinado de
       pasos.
   •   Debe producir un resultado en un tiempo finito.

Ejemplos de algoritmos son:

Ver una película

   1. Buscar el videocasette de la película
2.   SI el televisor y la video se encuentran apagados, encenderlos
   3.   Sacar el video del estuche
   4.   Introducirlo en la videocasetera
   5.   Tomar el control del televisor y la video
   6.   Dirijirme a el sofa
   7.   Ponerme comodo
   8.   Disfrutar la película

Fíjate como he descrito en estos pasos el algoritmo para poder ver una película en la
video, este pequeño algoritmo cumple con los requisitos descritos arriba, ya que cada
paso precisa un orden y tiene un orden de pasos finitos. En este algoritmo aparece la
palabra SI remarcada en mayúsculas, el uso de esta palabra la veremos mas adelante,
cuando discutamos sobre el control del flujo del programa o estructuras de control.

Los algoritmos se pueden expresar por fórmulas, diagramas de flujo, y pseudocódigos
conocidos como herramientas de programación. Está última representación es la mas
utilizada por su sencillez y parecido a el lenguaje humano.

Como ejercicio te recomendaría que escribieras algunos algoritmos de sucesos en tu
vida cotidiana, como por ejemplo: encender el auto,ir al cine,etc..

Fases para la Resolución de Problemas

En esta sección describire brevemente las fases o pasos a seguir para la resolución de
problemas con ayuda de la computadora.

Análisis del Problema

Esta fase requiere una clara definición donde se contemple exactamente lo que debe
hacer el programa y el resultado o solución deseada.

Dado que se busca una solución se precisan especificaciones de entrada y salida.

Para poder definir bien un problema es conveniente responder a las siguientes
preguntas:

   •    ¿Qué entradas se requieren? (cantidad y tipo)
   •    ¿Cuál es la salida deseada? (cantidad y tipo)
   •    ¿Qué método produce la salida deseada?

Diseño del Algoritmo

En la fase de análisis en el proceso de programación se determina que hace el programa.
En la fase de diseño se determina como hace el programa la tarea solicitada.

Los métodos utilizados para el proceso del diseño se basan en el conocido divide y
vencerás. Es decir la resolución de un problema complejo se realiza diviendo el
problema en subproblemas y a continuación dividir estos subproblemas en otros de
nivel mas bajo, hasta que sea implementada una solución en la computadora. Este
método se conoce tecnicamente como diseño descendente (top-down) o modular.
Cada programa bien diseñado consta de un programa principal (el módulo de nivel mas
alto) que llama a subprogramas (módulos) de nivel mas bajo, que a su vez pueden
llamar a otros subprogramas.

Los módulos pueden ser planeados, codificados, comprobados y depurados
independientemente y a continuación combinarlos entre sí. Este proceso implica la
ejecución de estos pasos hasta que el programa se ha terminado:

   •   Programar un módulo
   •   comprobar el módulo
   •   Si es necesario, depurar el módulo
   •   Combinar el módulo, con el resto de los otros módulos

El diseño del algoritmo es independiente del lenguaje de programación en el que se
vaya a codificar posteriormente.

Implementación del Algoritmo

Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos:

   •   Codificación
   •   Compilación y ejecución
   •   Verificación
   •   Depuración
   •   Documentación

Codificación: Es la escritura en un lenguaje de programación de la representación de un
algoritmo. Dado que el diseño del algoritmo es independiente del lenguaje de
programación utilizado en su implementación, el código puede ser escrito con igual
facilidad en un lenguaje o en otro.

Compilación y ejecución: Una vez que el algoritmo se ha convertido en un programa
fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo
posteriormente en un disco. Esta operación se realiza con un editor de texto,
posteriormente el programa fuente se convierte en un archivo de programa que se
guarda en un disco.

El programa fuente debe ser traducido a lenguaje máquina. Este proceso se realiza con
el compilador y el sistema operativo que se encarga practicamente de la compilación. Si
al compilar el programa fuente se presentan errores (errores de compilación), es
necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se
repite hasta que ya no se presenten mas errores, obteniendose el programa objeto, el
cual todavía no es ejecutable directamente. Al ya no existir errores en el programa
fuente se debe instruir al sistema operativo para que efectue la fase de montaje o enlace,
del programa fuente con las librerias del programa del compilador. Este proceso de
montaje produce un programa ejecutable.

Cuando se ha creado un programa ejecutable este se puede ya ejecutar desde el sistema
operativo con solo teclear su nombre.
Suponiendo que no existen errores durante la ejecución (errores en tiempo de
ejecución), se obtendrá la salida de resultados correctos del programa.

Tipos de Datos

Los diferentes objetos de información con los que un programa trabaja se denominan
datos.

Todos los datos tienen un tipo asociados con ellos que nos servirá para poder conocer
con que información trabajaremos. Es decir, cuando ingresemos el sueldo de un
trabajador necesitamos que este contenga decimales, o al solicitar la edad de una
persona está tiene que estar con números enteros, etc. Además la suma entre caracteres
no tiene sentido.

La asignación de tipos a los datos tiene dos objetivos principales:

   •   Detectar errores de operaciones aritméticas en los programas
   •   Determinar como ejecutar las operaciones

Tipos de Datos Comunes

Estos son los tipos de datos mas útilizados en los lenguajes de programación:

   •   Númericos
   •   Caracteres y
   •   Lógicos

Tipos Númericos

Dentro de estos tipos se puede hacer mención de los tipos enteros, reales o de coma
flotante, y de los exponenciales.

Tipos Carácter

Los tipos carácter se dividen también en caracteres ASCII, como por ejemplo: a A & * ,
etc.. El otro grupo de caracteres son los strings o cadenas de caracteres, como por
ejemplo: "Hola Mundo".

Tipos Lógicos

Los tipos lógicos solamente pueden tomar los valores verdadero o falso.

Operadores utilizados en Programación

En todos los lenguajes de programación se útilizan operadores para efectuar operaciones
aritmeticas. Combinando las variables y constantes en expresiones aritméticas por
medio de funciones adecuadas.

Una expresión es un conjunto de datos o funciones unidos por operadores aritméticos,
los cuales se muestran en la siguiente tabla:
Operador                     Significado
+                            Suma
-                            Resta
*                            Multiplicación
/                            División
^                            Exponenciación
Mod                          Módulo

Operadores Lógicos

En ocasiones en los programas se necesitan realizar comparaciones entre distintos
valores, esto se realiza utilizando los operadores relaciones, los cuales se listan a
continuación:

Operador                     Significado
<                            Menor que
>                            Mayor que
<=                           Menor o igual que
>=                           Mayor o igual que
=                            Igual a
<>                           Distinto a, diferente de




. Introducción a la programación

1.1 Definición de algoritmo

Un algoritmo es una secuencia de pasos lógicos necesarios para llevar a cabo
una tarea especifica, como la solución de un problema. Los algoritmos son
independientes tanto del lenguaje de programación en que se expresan como
de la computadora que los ejecuta. En cada problema el algoritmo se puede
expresar en un lenguaje diferente de programación y ejecutarse en una
computadora distinta; sin embargo el algoritmo será siempre el mismo.

Por ejemplo en una analogía con la vida diaria, una receta de un plato de
cocina se puede expresar en español, ingles o francés, pero cualquiera que
sea el lenguaje, los pasos para la elaboración del plato se realizaran sin
importar el cocinero.

Los pasos a seguir en la solución de una ecuación de segundo grado.

Los pasos matemáticos para la solución de un número factorial.

Las instrucciones para la liquidación de una nomina.

Las acciones que se deben seguir para la obtención de una estadística.
Para llegar a la realización de un programa es necesario el diseño previo de un
algoritmo, de modo que sin algoritmo no puede existir un programa.

Características de los algoritmos

Las características fundamentales que debe cumplir todo algoritmo son:

   •    Un algoritmo debe ser preciso e indicar el orden de realización de cada
        paso.
   •    Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se
        debe obtener el mismo resultado cada vez.
   •    Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar
        en algún momento; o sea debe de tener un número finito de pasos.

La definición de un algoritmo debe describir tres partes: Entrada, Proceso y
Salida.

En el algoritmo citado anteriormente se tendrá:

Entrada ingredientes y utensilios empleados

Proceso elaboración de la receta de cocina

Salida terminación del plato (por ejemplo, cordero)

Un algoritmo exige que se tengan varias propiedades importantes:

Los pasos de un algoritmo deben ser simples y exentos de ambigüedades
(diferentes significados), deben seguir un orden cuidadosamente prescrito,
deben ser efectivos y deben de resolver el problema en un número finito de
pasos.

El siguiente ejemplo muestra un algoritmo para cambiar un foco quemado.

Cambiar un foco quemado podría resumirse en dos pasos:

   1. Quitar el foco quemado
   2. Colocar un foco nuevo

Pero, si tuviera que entrenar un robot domestico para que efectúe esta tarea,
tendrá que ser mas especifico y claro en los pasos a seguir, dar mas detalles
(suponga que el foco se encuentra en el techo de una habitación):

   1.   Situar escalera bajo el foco quemado.
   2.   Elegir un foco de reemplazo (de la misma potencia que el anterior).
   3.   Subir por la escalera hasta alcanzar el foco.
   4.   Girar el foco contra las manecillas del reloj hasta que esté suelto.
   5.   Ubicar el foco nuevo en el mismo lugar que el anterior.
   6.   Enroscar en el sentido de las manecillas del reloj hasta que quede
        apretado.
7. Bajar de la escalera.

1.2 Lenguajes de programación (Lenguaje máquina, ensamblador y de
alto nivel)

Al igual que los idiomas sirven de vehículo de comunicación entre seres
humanos, existen lenguajes que realizan la comunicación entre ellos y las
computadoras. Estos lenguajes permiten expresar las instrucciones que el
programador desea que la computadora ejecute.

Los principales tipos de lenguajes utilizados en la actualidad son tres:

   •   Lenguaje maquina
   •   Lenguaje de bajo nivel (ensamblador)
   •   Lenguajes de alto nivel

Lenguajes máquina

Se llama lenguaje máquina a las instrucciones que se dan directamente a la
computadora, utilizando una serie de dígitos binarios o bits, representados por
los números 0 y 1 que especifican una operación. Aunque este lenguaje es el
que entiende la computadora, es muy difícil de manejar en la comunicación
humana. Las instrucciones en lenguaje maquina dependen del hardware de la
computadora y, por lo tanto, diferirán de una computadora a otra.

Lenguajes de bajo nivel (ensamblador)

Los lenguajes de bajo nivel 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 (assembler lenguaje).
Las instrucciones en lenguaje ensamblador son conocidas como
mnemotécnicos.

Por ejemplo, mnemotécnicos típicos de operaciones aritméticas son:

en ingles, ADD, SUB, DIV, etc.

en español, SUM,RES,DIV, etc.

Una instrucción típica de suma seria:

ADD M, N, P

Esta instrucción podría significar "sumar el número contenido en la posición de
memoria M al número almacenado en la posición de memoria N y situar el
resultado en la posición de memoria P". Evidentemente es mucho más sencillo
recordar la instrucción anterior con un mnemotécnico que su equivalente en
código máquina.

0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador no puede ser ejecutado
directamente por la computadora (en esto se diferencia esencialmente del
lenguaje máquina) sino que requiere una fase de traducción al lenguaje
máquina.

El programa original escrito en lenguaje ensamblador se denomina programa
fuente y el programa traducido en lenguaje maquina se conoce como programa
objeto, ya directamente entendible por la computadora.

El traductor de programas fuente a objeto es un programa llamado
ensamblador (assembler), existente en casi todas las computadoras.

NOTA: No se debe confundir el programa ensamblador, encargado de efectuar
la traducción del programa fuente escrito a lenguaje maquina, con el lenguaje
ensamblador (assembly language), lenguaje de programación con una
estructura y gramática definidas.

Los lenguajes ensambladores presentan la ventaja frente a los lenguajes
maquina de su mayor facilidad de codificación y, en general, su velocidad de
cálculo.

Los inconvenientes más notables de los lenguajes ensambladores son:

   •   Dependencia total de la maquina lo que impide la transportabilidad de
       los programas (posibilidad de ejecutar un programa en diferentes
       maquinas).
   •   La formación de los programadores es más compleja que la
       correspondiente a los programadores de alto nivel, ya que exige no sólo
       las técnicas de programación, sino también el conocimiento del interior
       de la máquina.
   •   Hoy día los lenguajes ensambladores tienen sus aplicaciones muy
       reducidas en la programación de aplicaciones y se centran en
       aplicaciones de tiempo real, control de procesos y de dispositivos
       electrónicos, etc.

Lenguajes de alto nivel

Los lenguajes de alto nivel son los mas 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. Otra razón
es que un programa escrito en un lenguaje de alto nivel es independiente de la
máquina; esto es, las instrucciones del programa de la computadora no
dependen del diseño del hardware o de una computadora en particular. En
consecuencia, los programas escritos en lenguajes de alto nivel son portables o
transportables, lo que significa la posibilidad de poder ser ejecutados con poca
o ninguna modificación en diferentes tipos de computadoras; al contrario que
los programas en lenguaje máquina o ensamblador que sólo se pueden
ejecutar en un determinado tipo de computadora.

Los lenguajes de alto nivel presentan las siguientes ventajas:
•   El tiempo de formación de los programadores es relativamente corto
       comparado con otros lenguajes.
   •   La escritura de programas se basa en reglas sintácticas 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 más fáciles.
   •   Reducción del coste de los programas.
   •   Transportabilidad.

Los inconvenientes se concretan en:

   •   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 máquina que se explotan
       mucho mejor en lenguajes máquina y ensambladores.
   •   Aumento de la ocupación de memoria.
   •   El tiempo de ejecución de los programas es mucho mayor.

Al igual que pasa con los lenguajes ensambladores, los programas fuente
tienen que ser traducidos por programas traductores, llamados compiladores e
interpretes.

Los lenguajes de programación de alto nivel existentes en la actualidad son
muy numerosos, aunque la práctica demuestra que su uso mayoritario se
reduce a BASIC, COBOL, PASCAL, C, C++,... y en el campo de la primera
enseñanza a LOGO, PILOT...


1.3 Traductores de lenguaje

Los traductores de lenguajes son programas que traducen a su vez los
programas fuente escritos en lenguajes de alto nivel a código máquina.

Los traductores se dividen en:

   •   Compiladores
   •   Interpretes

Interpretes

Un interprete es un traductor que toma un programa fuente, lo traduce y a
continuación lo ejecuta (dicho programa por medio de la computadora
desarrolla una tarea especifica).

Un lenguaje que soporte un traductor de tipo intérprete se denomina lenguaje
interpretado. BASIC es el modelo por excelencia interpretado.

Los programas fuente en BASIC se escriben con ayuda de un programa
denominado editor que suele venir incorporado al programa intérprete.
Compiladores

Un compilador es un programa que traduce los programas fuente escritos en
lenguajes de alto nivel a lenguaje máquina.

Los programas escritos en lenguajes de alto nivel (en el editor del lenguaje) se
llaman programas fuente y el programa traducido programa objeto o código
objeto. El compilador traduce (sentencia a sentencia) el programa fuente.

Lenguajes compiladores típicos son: PASCAL, COBOL, C..

Fases de la compilación

La compilación es el proceso de la traducción de programas fuente a
programas objeto.

El programa objeto obtenido de la compilación no ha sido traducido
normalmente a código máquina sino a ensamblador. Para conseguir el
programa máquina real se debe utilizar un programa llamado montador o
enlazador (linker). El proceso de montaje conduce a un programa en lenguaje
máquina directamente ejecutable:
Por ejemplo:

El proceso de ejecución de un Programa en C++ tiene los siguientes pasos:

   1. Escritura del programa fuente con un editor (programa que permite a
      una computadora actuar de modo similar a una máquina de escribir
      electrónica) y guardarlo en un dispositivo de almacenamiento (un disco).
   2. Introducir el programa fuente en memoria.
   3. Compilar el programa con el compilador C++.
   4. Verificar y corregir errores de compilación (listado de errores).
   5. Obtención del programa objeto.
   6. El montador obtiene el programa ejecutable.
   7. Se ejecuta el programa y si no existen errores, se tendrá la salida del
      mismo.
1.4 Definición de programa

Un programa de computadora es un conjunto de instrucciones (ordenes dadas
a la máquina) que producirán la ejecución de una determinada tarea. En
esencia, un programa es un medio para conseguir un fin. El fin será
normalmente definido como la información necesaria para solucionar un
problema.

El proceso de programación es, por consiguiente, un proceso de solución de
problemas (como ya se vio anteriormente) y el desarrollo de un programa
requiere las siguientes fases:

   1. Definición y análisis del problema.
   2. Diseño de algoritmos.

      - diagrama de flujo;

      - pseudocódigo.
3.   Codificación del programa.
   4.   Depuración y verificación del programa.
   5.   Documentación.
   6.   Mantenimiento.

En este curso el objetivo fundamental son las fases 1 y 2.


1.5 Diagrama de flujo (Representación gráfica)

Un diagrama de flujo (flowchart) es una de las técnicas de representación de
algoritmos más antigua y a la vez más utilizada, aunque su empleo ha
disminuido considerablemente, sobre todo desde la aparición de lenguajes de
programación estructurados. Un diagrama de flujo es un diagrama que utiliza
los símbolos (cajas) y que tiene los pasos del algoritmo escritos en esas cajas
unidas por flechas, denominadas líneas de flujo, que indican la secuencia en
que se deben ejecutar.

Los símbolos estándar normalizados por ANSI (abreviatura de American
National Standards Institute) son muy variados, aquí se presentan algunos:
Principios de programacion
Ejemplo básico de un diagrama de flujo:




 El diagrama citado representa la resolución de un programa que deduce el
salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas,
precio de la hora, y sabiendo que los impuestos aplicados son el 10 % sobre el
salario bruto.


1.6 Pseudocódigo

El pseudocódigo es un lenguaje de especificación de algoritmos.

En sí es una mezcla de lenguaje de programación y de lenguaje natural. La
idea del pseudocódigo consiste en aprovechar la flexibilidad y poder expresivo
del lenguaje natural por un lado, y las reglas de composición de los lenguajes
de programación de alto nivel por el otro.

El pseudocódigo utiliza para representar las acciones sucesivas palabras
reservadas en inglés - similares a sus homónimas en los lenguajes de
programación -, tales como start, end, stop, if-then-else, while etc. La
escritura del pseudocódigo exige normalmente la indentación (sangría en el
margen izquierdo) de diferentes líneas. La representación en pseudocódigo del
diagrama de flujo del ejemplo anterior sería:
Start

              {cálculo de impuesto y salario}

              read nombre, hora, precio_hora

              salario_bruto  horas * precio_hora

              tasa  0.1 *salario_bruto

              salario_neto  salario_bruto - tasa

              write nombre, salario_bruto, tasa, salario_neto

end



 El algoritmo comienza con la palabra start y finaliza con la palabra end, en
inglés (en español, inicio y fin). Entre estas palabras, sólo se escribe una
instrucción o acción por línea.

La línea encerrada entre llaves { ... } se denomina comentario. Es una
información al lector del programa y no realiza ninguna instrucción ejecutable;
sólo tiene efecto de documentación interna del programa. Algunos autores
suelen utilizar corchetes en lugar de llaves [ ... ].


1.7 Lenguaje algorítmico

El lenguaje algorítmico extrae las mejores características de los dos enfoques
anteriores y los combina en un lenguaje especial para expresar algoritmos. Del
pseudocódigo se tomó la facilidad de descripción de la prosa, al que se agrego
lo conciso del diagrama de flujo.

La traducción del lenguaje algorítmico a un lenguaje de programación debe
resultar sencilla, sin importar cual se utilice. La decisión final sobre el lenguaje
de programación a emplear depende de muchos factores, como la naturaleza
de la aplicación particular y las características del lenguaje.


1.8 Metodología de solución

La principal razón para que las personas aprendan a programar en general y
los lenguajes de programación en particular es utilizar la computadora como
una herramienta para la resolución de problemas ayudado por una
computadora. La resolución de un problema consta de ocho etapas:
1. Definición y delimitación del problema a solucionar (enunciado del
      problema)
   2. Pseudocódigo o diagrama de flujo (algoritmo)
   3. Prueba de escritorio
   4. Codificación
   5. Digitación
   6. Compilación o interpretación del programa
   7. Ejecución del Programa
   8. Evaluación de los resultados

1. - Definición y delimitación del problema a solucionar

El problema debe estar bien definido si se desea llegar a una solución
satisfactoria para poder definir con precisión el problema se requiere que las
especificaciones de entrada y salida sean descritas con detalle. Una buena
definición del problema, junto con una descripción detallada de las
especificaciones de entrada y salida, son los requisitos más importantes para
llegar a una solución eficaz.




El análisis del problema exige una lectura previa del problema a fin de obtener
una idea general de lo que se solicita. La segunda lectura deberá servir para
responder a las preguntas:

   •   ¿Qué información debe proporcionar la resolución del problema?
   •   ¿Qué datos se necesitan para resolver el problema?

La respuesta a la primera pregunta indicará los resultados deseados o las
salidas del problema. La respuesta a la segunda indicará qué datos se
proporcionan o las entradas del problema.

2. - Pseudocódigo o diagrama de flujo (algoritmo)

Una computadora no tiene la capacidad para solucionar problemas más que
cuando se le proporcionan los sucesivos pasos a realizar. Estos pasos
sucesivos que indican las instrucciones a ejecutar por la máquina constituyen,
como ya conocemos, el algoritmo.

En esta etapa es donde se determinan los pasos o instrucciones que deben
llevarse a cabo y el orden lógico de su ejecución para dar una eficiente solución
al problema.

La información proporcionada al algoritmo constituye su entrada y la
información producida por el algoritmo constituye su salida.
3. - Prueba de escritorio (prueba de un algoritmo)

Para comprobar que un algoritmo realiza la tarea para la cual fue diseñado,
debe ejecutarse a mano. Para esto deben utilizarse datos representativos y
anotarse los valores que toman las variables en cada paso. Esto se conoce
como corrida de escritorio.

4. - Codificación

El programa que implementa el algoritmo debe ser escrito en un lenguaje de
programación y siguiendo las reglas gramaticales o sintaxis del mismo. La fase
de conversión del algoritmo en un lenguaje de programación se denomina
codificación, ya que el algoritmo escrito en un lenguaje específico de
programación (lenguaje de alto nivel) se denomina código.

5. - Digitación

Tras la codificación del programa las instrucciones se convierten a un medio
legible para la computadora; a igual procedimiento se someten los datos (en
disquetes, cassettes, cintas, etc.), utilizando dispositivos como digitadoras o
consolas.

6. - Compilación o interpretación del programa

En esta etapa la computadora chequea si todas las instrucciones están escritas
correctamente desde el punto de vista de la sintaxis y gramática de cada
lenguaje y las transcribe, dentro de la memoria, del lenguaje de alto nivel al
lenguaje máquina para obtener el llamado programa objeto.

7. - Ejecución del Programa

El programa objeto es ejecutado por la computadora para llegar a los
resultados esperados, utilizando los dispositivos, unidades y memoria
necesaria, según cada caso o programa.

8. - Evaluación de los resultados

Obtenidos los resultados se les evalúa para verificar que sean correctos. En
caso contrario, se revisa en las etapas anteriores para detectar la falla o error,
entrar a corregirla y reiniciar desde este punto los pasos para resolver de nuevo
y en forma correcta el problema.


1.9 Prueba de un algoritmo (Ejemplos)

Ejemplo No. 1

Diseñe un algoritmo que dadas 4 calificaciones (Cal1, Cal2, Cal3, Cal4), calcule
la calificación promedio y escriba el resultado final junto con un mensaje
explicativo.
Análisis del problema

Entrada: Leer las calificaciones individuales

Proceso: Calcular la calificación promedio

Salida: Escribir resultado con mensaje explicativo

Diagrama de flujo




Pseudocódigo

Inicio

{Calculo del promedio de calificaciones}

Leer Cal1, Cal2, Cal3, Cal4

Prom  (Cal1+Cal2+Cal3+Cal4)/4
Escribir ("Resultado final es", Prom)

Fin

Ejemplo No. 2

En cierto curso de computación, la calificación final del estudiante se determina
a partir de su rendimiento en tres aspectos del trabajo anual. Existe una
calificación de la mitad del curso, que cuenta un 30% del total; el trabajo de
laboratorio que lleva una calificación, cuenta un 20% del total; y el examen
final, cuenta el 50% restante.

Diseñe un algoritmo que, dadas las calificaciones individuales, calcule la
calificación final, escriba la salida final proporcionando el nombre del
estudiante, sus calificaciones individuales y la calificación final. La variable se
llama Final.

Análisis del problema

Calcular la calificación final a partir de las calificaciones parciales

                              Entrada: Lectura del nombre del estudiante,
                              calificación del laboratorio, calificación de mitad del
                              curso, calificación del examen final.

                              Salida: Nombre del estudiante, las tres calificaciones
                              obtenidas y el promedio final, con comentarios
                              correspondientes.

Solución del problema

      1. Lectura del nombre del alumno y de sus calificaciones en cada una de
         las partes
      2. Calculo e impresión de la calificación final junto con el nombre del
         alumno

Variables:

Nombre (para nombre del alumno)

Cal_Lab (para la calificación del laboratorio)

Cal_mitcurso (para la calificación de mitad del curso)

Cal_ExaFin (para la calificación del examen final)

Final (para la calificación final)

1. - Obtener los datos de entrada
Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin)

2. - Calcular la calificación final

Final  0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin

3. - Imprimir los resultados

4. - Termino

Algoritmo

Inicio

Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin)

Final  0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin

Escribir ("Nombre del alumno", Nombre)

Escribir ("Calificación de laboratorio", Cal_Lab)

Escribir ("Calificación de mitad del curso", Cal_mitcurso)

Escribir ("Calificación del examen final", Cal_ExaFin)

Escribir ("Calificación final", Final)

Fin

Del ejemplo anterior suponga que se dan los siguientes valores:

Alberto Rodríguez, 72, 68, 65

Solución

0.20*72 = 14.4

0.30*68 = 20.4

0.50*65 = 32.5

suma = 67.3

Resultado

Nombre del alumno Alberto Rodríguez

Calificación de laboratorio 72
Calificación de mitad del curso 68

Calificación del examen final 65

Calificación final 67.3

Andrés Miramontes, 75, 75, 75

Solución

0.20*75 = 15.0

0.30*75 = 22.5

0.50*75 = 37.5

suma = 75.0

Resultado

Nombre del alumno Andrés Miramontes

Calificación de laboratorio 75

Calificación de mitad del curso 75

Calificación del examen final 75

Calificación final 75.0



Ejemplo No. 3

Dados tres números, determine si la suma de cualquier pareja de ellos es igual
al tercer número. Si se cumple esta condición escribir "Iguales", y en caso
contrario, escribir "Distintas". (Diagrama de flujo y pseudocódigo)

Solución

Suponga que los números son:

396

la respuesta es "Iguales", ya que 3+6=9.

Pero si los números fueran:

234
El resultado será "Distintas".

Algoritmo de resolución:

1. - Leer los tres valores, A, B y C.

2. - Si A+B=C escribir "Iguales" y parar.

3. - Si A+C=B escribir "Iguales" y parar.

4. - Si B+C=A escribir "Iguales" y parar.

5. - Escribir "Distintas" y parar.

Diagrama de flujo:




Ejemplo No. 4
Escribir un algoritmo para calcular el área de un triángulo dada la base y la
altura.

Solución:

Análisis

La fórmula geométrica del área o superficie de un triángulo es:

A = (1/2)B*H B = base H = altura

variables: Base, Altura

Suponga que B = 4.5 H = 7.2

A = (1/2) 4.5 * 7.2 = 16.2

Diagrama de flujo

More Related Content

What's hot

1.4 problemas con estructuras selectivas
1.4 problemas con estructuras selectivas1.4 problemas con estructuras selectivas
1.4 problemas con estructuras selectivasSNPP
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructuradakcarbache
 
Que es la complejidad de un algoritmo
Que es la complejidad de un algoritmoQue es la complejidad de un algoritmo
Que es la complejidad de un algoritmojaviierr24
 
Ejercicios raptor (2)
Ejercicios raptor (2)Ejercicios raptor (2)
Ejercicios raptor (2)alexisrm11
 
Modelo de desarrollo concurrente
Modelo de desarrollo concurrenteModelo de desarrollo concurrente
Modelo de desarrollo concurrentesamuel ospino
 
Metodologias de desarrollos ágiles vs tradicionales.pptx
Metodologias de desarrollos ágiles vs tradicionales.pptxMetodologias de desarrollos ágiles vs tradicionales.pptx
Metodologias de desarrollos ágiles vs tradicionales.pptxMargotVenegas2
 
Diseño de Algoritmos
Diseño de AlgoritmosDiseño de Algoritmos
Diseño de AlgoritmosLuisDiaz863
 
Sistema de ventas, compras y almacén
Sistema de ventas, compras y almacénSistema de ventas, compras y almacén
Sistema de ventas, compras y almacénLeo Ruelas Rojas
 
Que es raptor
Que es raptorQue es raptor
Que es raptorpepepaso
 
Herramientas Case
Herramientas CaseHerramientas Case
Herramientas Caseguestf131a9
 
Metodologia incremental
Metodologia incrementalMetodologia incremental
Metodologia incrementalAnel Sosa
 

What's hot (20)

METODOLOGIA RUP
METODOLOGIA RUPMETODOLOGIA RUP
METODOLOGIA RUP
 
1.4 problemas con estructuras selectivas
1.4 problemas con estructuras selectivas1.4 problemas con estructuras selectivas
1.4 problemas con estructuras selectivas
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Tutorial de Raptor
Tutorial de RaptorTutorial de Raptor
Tutorial de Raptor
 
Pseudocódigo
PseudocódigoPseudocódigo
Pseudocódigo
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Que es la complejidad de un algoritmo
Que es la complejidad de un algoritmoQue es la complejidad de un algoritmo
Que es la complejidad de un algoritmo
 
Condicional múltiple
Condicional múltipleCondicional múltiple
Condicional múltiple
 
Manual de Uso PseInt
Manual de Uso PseIntManual de Uso PseInt
Manual de Uso PseInt
 
Manual de practicas de dreamweaver
Manual de practicas de dreamweaverManual de practicas de dreamweaver
Manual de practicas de dreamweaver
 
Ejercicios raptor (2)
Ejercicios raptor (2)Ejercicios raptor (2)
Ejercicios raptor (2)
 
Modelo de desarrollo concurrente
Modelo de desarrollo concurrenteModelo de desarrollo concurrente
Modelo de desarrollo concurrente
 
Metodologias de desarrollos ágiles vs tradicionales.pptx
Metodologias de desarrollos ágiles vs tradicionales.pptxMetodologias de desarrollos ágiles vs tradicionales.pptx
Metodologias de desarrollos ágiles vs tradicionales.pptx
 
UML
UMLUML
UML
 
Diseño de Algoritmos
Diseño de AlgoritmosDiseño de Algoritmos
Diseño de Algoritmos
 
Sistema de ventas, compras y almacén
Sistema de ventas, compras y almacénSistema de ventas, compras y almacén
Sistema de ventas, compras y almacén
 
Que es raptor
Que es raptorQue es raptor
Que es raptor
 
La importancia de los usos de los algoritmos y diagramas de flujo.
La importancia de los usos de los algoritmos y diagramas de flujo.La importancia de los usos de los algoritmos y diagramas de flujo.
La importancia de los usos de los algoritmos y diagramas de flujo.
 
Herramientas Case
Herramientas CaseHerramientas Case
Herramientas Case
 
Metodologia incremental
Metodologia incrementalMetodologia incremental
Metodologia incremental
 

Viewers also liked

Esquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personalEsquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personalhelp center
 
Solución de problemas aplicando la computadora
Solución de problemas aplicando la computadoraSolución de problemas aplicando la computadora
Solución de problemas aplicando la computadorarestradal
 
Unidad siete estructura de datos
Unidad siete estructura de datosUnidad siete estructura de datos
Unidad siete estructura de datosRené Sosa Arana
 
Esquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personalEsquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personalitisistemasjt
 
3 resolucion de problemas con la computadora
3 resolucion de problemas con la computadora3 resolucion de problemas con la computadora
3 resolucion de problemas con la computadoraMIGUEL
 
Tema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datosTema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datosRufi Flores
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacionpepe1234554321
 
resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas panchofronteras
 
Resolucion De Problemas Con Computadora
Resolucion De Problemas Con ComputadoraResolucion De Problemas Con Computadora
Resolucion De Problemas Con ComputadoraBrivé Soluciones
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccionClariza
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programamartell024
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoRosbelia Balza
 
10 ejercicios-de-do-while
10 ejercicios-de-do-while10 ejercicios-de-do-while
10 ejercicios-de-do-whileDelvi Ramirez
 

Viewers also liked (20)

Esquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personalEsquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personal
 
El libro de texto (segunda parte)
El libro de texto (segunda parte)El libro de texto (segunda parte)
El libro de texto (segunda parte)
 
Solución de problemas aplicando la computadora
Solución de problemas aplicando la computadoraSolución de problemas aplicando la computadora
Solución de problemas aplicando la computadora
 
Unidad siete estructura de datos
Unidad siete estructura de datosUnidad siete estructura de datos
Unidad siete estructura de datos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Esquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personalEsquema resolucion de problemas computadora personal
Esquema resolucion de problemas computadora personal
 
3 resolucion de problemas con la computadora
3 resolucion de problemas con la computadora3 resolucion de problemas con la computadora
3 resolucion de problemas con la computadora
 
Seudocodigo
SeudocodigoSeudocodigo
Seudocodigo
 
Analisis de algoritmos - Introduccion
Analisis de algoritmos - IntroduccionAnalisis de algoritmos - Introduccion
Analisis de algoritmos - Introduccion
 
Tema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datosTema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datos
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas
 
Resolucion De Problemas Con Computadora
Resolucion De Problemas Con ComputadoraResolucion De Problemas Con Computadora
Resolucion De Problemas Con Computadora
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccion
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programa
 
Estructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeIntEstructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeInt
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
 
10 ejercicios-de-do-while
10 ejercicios-de-do-while10 ejercicios-de-do-while
10 ejercicios-de-do-while
 

Similar to Principios de programacion

Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFresyMetal
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujocasdilacol
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadoraFaridCastillo2
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadoraJulioVizcarra5
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programazeta2015
 
Algoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptxAlgoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptxTIRZOANTONIOMEDINACA1
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Dulcevelazquez6
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 

Similar to Principios de programacion (20)

Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.com
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Clase 1 lógica de programación
Clase 1 lógica de programaciónClase 1 lógica de programación
Clase 1 lógica de programación
 
Algoritmos y diagramas de flujo
Algoritmos y diagramas de flujoAlgoritmos y diagramas de flujo
Algoritmos y diagramas de flujo
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programa
 
Programación
ProgramaciónProgramación
Programación
 
Algoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptxAlgoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptx
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

More from rulo182

Servidores windows
Servidores windowsServidores windows
Servidores windowsrulo182
 
Introduccion electricidad
Introduccion electricidadIntroduccion electricidad
Introduccion electricidadrulo182
 
Circuitos digitales
Circuitos digitalesCircuitos digitales
Circuitos digitalesrulo182
 
Sistemas de calidad iso
Sistemas de calidad isoSistemas de calidad iso
Sistemas de calidad isorulo182
 
Diseño web visual basic 2005
Diseño web visual basic 2005Diseño web visual basic 2005
Diseño web visual basic 2005rulo182
 
Precauciones al usar_internet
Precauciones al usar_internetPrecauciones al usar_internet
Precauciones al usar_internetrulo182
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónrulo182
 
Introducción a los algoritmos
Introducción a los algoritmosIntroducción a los algoritmos
Introducción a los algoritmosrulo182
 
Diseño de bases de datos
Diseño de bases de datosDiseño de bases de datos
Diseño de bases de datosrulo182
 
Administracion de proyectos
Administracion de proyectosAdministracion de proyectos
Administracion de proyectosrulo182
 
Manual de instalacion de un segundo sist. operativo [19 paginas en español]
Manual de instalacion de un segundo sist. operativo [19 paginas   en español]Manual de instalacion de un segundo sist. operativo [19 paginas   en español]
Manual de instalacion de un segundo sist. operativo [19 paginas en español]rulo182
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computadorrulo182
 
Windows NT
Windows NTWindows NT
Windows NTrulo182
 
Las computadoras portatiles
Las computadoras portatilesLas computadoras portatiles
Las computadoras portatilesrulo182
 
Redes y telefonia
Redes y telefoniaRedes y telefonia
Redes y telefoniarulo182
 
Arquitectura servidores
Arquitectura servidoresArquitectura servidores
Arquitectura servidoresrulo182
 
Configuraciones del hardware
Configuraciones del hardwareConfiguraciones del hardware
Configuraciones del hardwarerulo182
 
Bases de datos en sitios web
Bases de datos en sitios webBases de datos en sitios web
Bases de datos en sitios webrulo182
 

More from rulo182 (18)

Servidores windows
Servidores windowsServidores windows
Servidores windows
 
Introduccion electricidad
Introduccion electricidadIntroduccion electricidad
Introduccion electricidad
 
Circuitos digitales
Circuitos digitalesCircuitos digitales
Circuitos digitales
 
Sistemas de calidad iso
Sistemas de calidad isoSistemas de calidad iso
Sistemas de calidad iso
 
Diseño web visual basic 2005
Diseño web visual basic 2005Diseño web visual basic 2005
Diseño web visual basic 2005
 
Precauciones al usar_internet
Precauciones al usar_internetPrecauciones al usar_internet
Precauciones al usar_internet
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Introducción a los algoritmos
Introducción a los algoritmosIntroducción a los algoritmos
Introducción a los algoritmos
 
Diseño de bases de datos
Diseño de bases de datosDiseño de bases de datos
Diseño de bases de datos
 
Administracion de proyectos
Administracion de proyectosAdministracion de proyectos
Administracion de proyectos
 
Manual de instalacion de un segundo sist. operativo [19 paginas en español]
Manual de instalacion de un segundo sist. operativo [19 paginas   en español]Manual de instalacion de un segundo sist. operativo [19 paginas   en español]
Manual de instalacion de un segundo sist. operativo [19 paginas en español]
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computador
 
Windows NT
Windows NTWindows NT
Windows NT
 
Las computadoras portatiles
Las computadoras portatilesLas computadoras portatiles
Las computadoras portatiles
 
Redes y telefonia
Redes y telefoniaRedes y telefonia
Redes y telefonia
 
Arquitectura servidores
Arquitectura servidoresArquitectura servidores
Arquitectura servidores
 
Configuraciones del hardware
Configuraciones del hardwareConfiguraciones del hardware
Configuraciones del hardware
 
Bases de datos en sitios web
Bases de datos en sitios webBases de datos en sitios web
Bases de datos en sitios web
 

Principios de programacion

  • 1. La Resolución de Problemas utilizando la Computadora Aunque el proceso de diseñar programas es un proceso creativo, se pueden considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores. La resolución de problemas con computadoras se puede dividir en tres fases: • Análisis del problema • Diseño del algoritmo • Resolución del algoritmo en la computadora El análisis y el diseño del algoritmo requiere la descripción del problema en subproblemas a base de refinamientos sucesivos y una herramienta de programación: • Diagrama de flujo • Diagrama N-S • Pseudocódigo Durante la tercera etapa se implementa este algoritmo en un código escrito en un lenguaje de programación, reflejando las ideas obtenidas en las fases de análisis y diseño. Antes de conocer las tareas a realizar en cada fase, definiremos el concepto y significado de la palabra algoritmo. ¿Qué es Algoritmo? Se deriva de la traducción al latín de la palabra árabe Alkhowarismi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Características del Algoritmo • preciso, tiene que indicar el orden de realización en cada paso. • definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo resultado. • finito, es decir, que el algoritmo tiene que tener un número determinado de pasos. • Debe producir un resultado en un tiempo finito. Ejemplos de algoritmos son: Ver una película 1. Buscar el videocasette de la película
  • 2. 2. SI el televisor y la video se encuentran apagados, encenderlos 3. Sacar el video del estuche 4. Introducirlo en la videocasetera 5. Tomar el control del televisor y la video 6. Dirijirme a el sofa 7. Ponerme comodo 8. Disfrutar la película Fíjate como he descrito en estos pasos el algoritmo para poder ver una película en la video, este pequeño algoritmo cumple con los requisitos descritos arriba, ya que cada paso precisa un orden y tiene un orden de pasos finitos. En este algoritmo aparece la palabra SI remarcada en mayúsculas, el uso de esta palabra la veremos mas adelante, cuando discutamos sobre el control del flujo del programa o estructuras de control. Los algoritmos se pueden expresar por fórmulas, diagramas de flujo, y pseudocódigos conocidos como herramientas de programación. Está última representación es la mas utilizada por su sencillez y parecido a el lenguaje humano. Como ejercicio te recomendaría que escribieras algunos algoritmos de sucesos en tu vida cotidiana, como por ejemplo: encender el auto,ir al cine,etc.. Fases para la Resolución de Problemas En esta sección describire brevemente las fases o pasos a seguir para la resolución de problemas con ayuda de la computadora. Análisis del Problema Esta fase requiere una clara definición donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. Dado que se busca una solución se precisan especificaciones de entrada y salida. Para poder definir bien un problema es conveniente responder a las siguientes preguntas: • ¿Qué entradas se requieren? (cantidad y tipo) • ¿Cuál es la salida deseada? (cantidad y tipo) • ¿Qué método produce la salida deseada? Diseño del Algoritmo En la fase de análisis en el proceso de programación se determina que hace el programa. En la fase de diseño se determina como hace el programa la tarea solicitada. Los métodos utilizados para el proceso del diseño se basan en el conocido divide y vencerás. Es decir la resolución de un problema complejo se realiza diviendo el problema en subproblemas y a continuación dividir estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solución en la computadora. Este método se conoce tecnicamente como diseño descendente (top-down) o modular.
  • 3. Cada programa bien diseñado consta de un programa principal (el módulo de nivel mas alto) que llama a subprogramas (módulos) de nivel mas bajo, que a su vez pueden llamar a otros subprogramas. Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente y a continuación combinarlos entre sí. Este proceso implica la ejecución de estos pasos hasta que el programa se ha terminado: • Programar un módulo • comprobar el módulo • Si es necesario, depurar el módulo • Combinar el módulo, con el resto de los otros módulos El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente. Implementación del Algoritmo Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos: • Codificación • Compilación y ejecución • Verificación • Depuración • Documentación Codificación: Es la escritura en un lenguaje de programación de la representación de un algoritmo. Dado que el diseño del algoritmo es independiente del lenguaje de programación utilizado en su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro. Compilación y ejecución: Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operación se realiza con un editor de texto, posteriormente el programa fuente se convierte en un archivo de programa que se guarda en un disco. El programa fuente debe ser traducido a lenguaje máquina. Este proceso se realiza con el compilador y el sistema operativo que se encarga practicamente de la compilación. Si al compilar el programa fuente se presentan errores (errores de compilación), es necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se repite hasta que ya no se presenten mas errores, obteniendose el programa objeto, el cual todavía no es ejecutable directamente. Al ya no existir errores en el programa fuente se debe instruir al sistema operativo para que efectue la fase de montaje o enlace, del programa fuente con las librerias del programa del compilador. Este proceso de montaje produce un programa ejecutable. Cuando se ha creado un programa ejecutable este se puede ya ejecutar desde el sistema operativo con solo teclear su nombre.
  • 4. Suponiendo que no existen errores durante la ejecución (errores en tiempo de ejecución), se obtendrá la salida de resultados correctos del programa. Tipos de Datos Los diferentes objetos de información con los que un programa trabaja se denominan datos. Todos los datos tienen un tipo asociados con ellos que nos servirá para poder conocer con que información trabajaremos. Es decir, cuando ingresemos el sueldo de un trabajador necesitamos que este contenga decimales, o al solicitar la edad de una persona está tiene que estar con números enteros, etc. Además la suma entre caracteres no tiene sentido. La asignación de tipos a los datos tiene dos objetivos principales: • Detectar errores de operaciones aritméticas en los programas • Determinar como ejecutar las operaciones Tipos de Datos Comunes Estos son los tipos de datos mas útilizados en los lenguajes de programación: • Númericos • Caracteres y • Lógicos Tipos Númericos Dentro de estos tipos se puede hacer mención de los tipos enteros, reales o de coma flotante, y de los exponenciales. Tipos Carácter Los tipos carácter se dividen también en caracteres ASCII, como por ejemplo: a A & * , etc.. El otro grupo de caracteres son los strings o cadenas de caracteres, como por ejemplo: "Hola Mundo". Tipos Lógicos Los tipos lógicos solamente pueden tomar los valores verdadero o falso. Operadores utilizados en Programación En todos los lenguajes de programación se útilizan operadores para efectuar operaciones aritmeticas. Combinando las variables y constantes en expresiones aritméticas por medio de funciones adecuadas. Una expresión es un conjunto de datos o funciones unidos por operadores aritméticos, los cuales se muestran en la siguiente tabla:
  • 5. Operador Significado + Suma - Resta * Multiplicación / División ^ Exponenciación Mod Módulo Operadores Lógicos En ocasiones en los programas se necesitan realizar comparaciones entre distintos valores, esto se realiza utilizando los operadores relaciones, los cuales se listan a continuación: Operador Significado < Menor que > Mayor que <= Menor o igual que >= Mayor o igual que = Igual a <> Distinto a, diferente de . Introducción a la programación 1.1 Definición de algoritmo Un algoritmo es una secuencia de pasos lógicos necesarios para llevar a cabo una tarea especifica, como la solución de un problema. Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo el algoritmo será siempre el mismo. Por ejemplo en una analogía con la vida diaria, una receta de un plato de cocina se puede expresar en español, ingles o francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración del plato se realizaran sin importar el cocinero. Los pasos a seguir en la solución de una ecuación de segundo grado. Los pasos matemáticos para la solución de un número factorial. Las instrucciones para la liquidación de una nomina. Las acciones que se deben seguir para la obtención de una estadística.
  • 6. Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa. Características de los algoritmos Las características fundamentales que debe cumplir todo algoritmo son: • Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. • Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. • Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe de tener un número finito de pasos. La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En el algoritmo citado anteriormente se tendrá: Entrada ingredientes y utensilios empleados Proceso elaboración de la receta de cocina Salida terminación del plato (por ejemplo, cordero) Un algoritmo exige que se tengan varias propiedades importantes: Los pasos de un algoritmo deben ser simples y exentos de ambigüedades (diferentes significados), deben seguir un orden cuidadosamente prescrito, deben ser efectivos y deben de resolver el problema en un número finito de pasos. El siguiente ejemplo muestra un algoritmo para cambiar un foco quemado. Cambiar un foco quemado podría resumirse en dos pasos: 1. Quitar el foco quemado 2. Colocar un foco nuevo Pero, si tuviera que entrenar un robot domestico para que efectúe esta tarea, tendrá que ser mas especifico y claro en los pasos a seguir, dar mas detalles (suponga que el foco se encuentra en el techo de una habitación): 1. Situar escalera bajo el foco quemado. 2. Elegir un foco de reemplazo (de la misma potencia que el anterior). 3. Subir por la escalera hasta alcanzar el foco. 4. Girar el foco contra las manecillas del reloj hasta que esté suelto. 5. Ubicar el foco nuevo en el mismo lugar que el anterior. 6. Enroscar en el sentido de las manecillas del reloj hasta que quede apretado.
  • 7. 7. Bajar de la escalera. 1.2 Lenguajes de programación (Lenguaje máquina, ensamblador y de alto nivel) Al igual que los idiomas sirven de vehículo de comunicación entre seres humanos, existen lenguajes que realizan la comunicación entre ellos y las computadoras. Estos lenguajes permiten expresar las instrucciones que el programador desea que la computadora ejecute. Los principales tipos de lenguajes utilizados en la actualidad son tres: • Lenguaje maquina • Lenguaje de bajo nivel (ensamblador) • Lenguajes de alto nivel Lenguajes máquina Se llama lenguaje máquina a las instrucciones que se dan directamente a la computadora, utilizando una serie de dígitos binarios o bits, representados por los números 0 y 1 que especifican una operación. Aunque este lenguaje es el que entiende la computadora, es muy difícil de manejar en la comunicación humana. Las instrucciones en lenguaje maquina dependen del hardware de la computadora y, por lo tanto, diferirán de una computadora a otra. Lenguajes de bajo nivel (ensamblador) Los lenguajes de bajo nivel 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 (assembler lenguaje). Las instrucciones en lenguaje ensamblador son conocidas como mnemotécnicos. Por ejemplo, mnemotécnicos típicos de operaciones aritméticas son: en ingles, ADD, SUB, DIV, etc. en español, SUM,RES,DIV, etc. Una instrucción típica de suma seria: ADD M, N, P Esta instrucción podría significar "sumar el número contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P". Evidentemente es mucho más sencillo recordar la instrucción anterior con un mnemotécnico que su equivalente en código máquina. 0110 1001 1010 1011
  • 8. Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora (en esto se diferencia esencialmente del lenguaje máquina) sino que requiere una fase de traducción al lenguaje máquina. El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje maquina se conoce como programa objeto, ya directamente entendible por la computadora. El traductor de programas fuente a objeto es un programa llamado ensamblador (assembler), existente en casi todas las computadoras. NOTA: No se debe confundir el programa ensamblador, encargado de efectuar la traducción del programa fuente escrito a lenguaje maquina, con el lenguaje ensamblador (assembly language), lenguaje de programación con una estructura y gramática definidas. Los lenguajes ensambladores presentan la ventaja frente a los lenguajes maquina de su mayor facilidad de codificación y, en general, su velocidad de cálculo. Los inconvenientes más notables de los lenguajes ensambladores son: • Dependencia total de la maquina lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes maquinas). • La formación de los programadores es más compleja que la correspondiente a los programadores de alto nivel, ya que exige no sólo las técnicas de programación, sino también el conocimiento del interior de la máquina. • Hoy día los lenguajes ensambladores tienen sus aplicaciones muy reducidas en la programación de aplicaciones y se centran en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos, etc. Lenguajes de alto nivel Los lenguajes de alto nivel son los mas 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. Otra razón es que un programa escrito en un lenguaje de alto nivel es independiente de la máquina; esto es, las instrucciones del programa de la computadora no dependen del diseño del hardware o de una computadora en particular. En consecuencia, los programas escritos en lenguajes de alto nivel son portables o transportables, lo que significa la posibilidad de poder ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras; al contrario que los programas en lenguaje máquina o ensamblador que sólo se pueden ejecutar en un determinado tipo de computadora. Los lenguajes de alto nivel presentan las siguientes ventajas:
  • 9. El tiempo de formación de los programadores es relativamente corto comparado con otros lenguajes. • La escritura de programas se basa en reglas sintácticas 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 más fáciles. • Reducción del coste de los programas. • Transportabilidad. Los inconvenientes se concretan en: • 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 máquina que se explotan mucho mejor en lenguajes máquina y ensambladores. • Aumento de la ocupación de memoria. • El tiempo de ejecución de los programas es mucho mayor. Al igual que pasa con los lenguajes ensambladores, los programas fuente tienen que ser traducidos por programas traductores, llamados compiladores e interpretes. Los lenguajes de programación de alto nivel existentes en la actualidad son muy numerosos, aunque la práctica demuestra que su uso mayoritario se reduce a BASIC, COBOL, PASCAL, C, C++,... y en el campo de la primera enseñanza a LOGO, PILOT... 1.3 Traductores de lenguaje Los traductores de lenguajes son programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código máquina. Los traductores se dividen en: • Compiladores • Interpretes Interpretes Un interprete es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta (dicho programa por medio de la computadora desarrolla una tarea especifica). Un lenguaje que soporte un traductor de tipo intérprete se denomina lenguaje interpretado. BASIC es el modelo por excelencia interpretado. Los programas fuente en BASIC se escriben con ayuda de un programa denominado editor que suele venir incorporado al programa intérprete.
  • 10. Compiladores Un compilador es un programa que traduce los programas fuente escritos en lenguajes de alto nivel a lenguaje máquina. Los programas escritos en lenguajes de alto nivel (en el editor del lenguaje) se llaman programas fuente y el programa traducido programa objeto o código objeto. El compilador traduce (sentencia a sentencia) el programa fuente. Lenguajes compiladores típicos son: PASCAL, COBOL, C.. Fases de la compilación La compilación es el proceso de la traducción de programas fuente a programas objeto. El programa objeto obtenido de la compilación no ha sido traducido normalmente a código máquina sino a ensamblador. Para conseguir el programa máquina real se debe utilizar un programa llamado montador o enlazador (linker). El proceso de montaje conduce a un programa en lenguaje máquina directamente ejecutable:
  • 11. Por ejemplo: El proceso de ejecución de un Programa en C++ tiene los siguientes pasos: 1. Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo similar a una máquina de escribir electrónica) y guardarlo en un dispositivo de almacenamiento (un disco). 2. Introducir el programa fuente en memoria. 3. Compilar el programa con el compilador C++. 4. Verificar y corregir errores de compilación (listado de errores). 5. Obtención del programa objeto. 6. El montador obtiene el programa ejecutable. 7. Se ejecuta el programa y si no existen errores, se tendrá la salida del mismo.
  • 12. 1.4 Definición de programa Un programa de computadora es un conjunto de instrucciones (ordenes dadas a la máquina) que producirán la ejecución de una determinada tarea. En esencia, un programa es un medio para conseguir un fin. El fin será normalmente definido como la información necesaria para solucionar un problema. El proceso de programación es, por consiguiente, un proceso de solución de problemas (como ya se vio anteriormente) y el desarrollo de un programa requiere las siguientes fases: 1. Definición y análisis del problema. 2. Diseño de algoritmos. - diagrama de flujo; - pseudocódigo.
  • 13. 3. Codificación del programa. 4. Depuración y verificación del programa. 5. Documentación. 6. Mantenimiento. En este curso el objetivo fundamental son las fases 1 y 2. 1.5 Diagrama de flujo (Representación gráfica) Un diagrama de flujo (flowchart) es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparición de lenguajes de programación estructurados. Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar. Los símbolos estándar normalizados por ANSI (abreviatura de American National Standards Institute) son muy variados, aquí se presentan algunos:
  • 15. Ejemplo básico de un diagrama de flujo: El diagrama citado representa la resolución de un programa que deduce el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio de la hora, y sabiendo que los impuestos aplicados son el 10 % sobre el salario bruto. 1.6 Pseudocódigo El pseudocódigo es un lenguaje de especificación de algoritmos. En sí es una mezcla de lenguaje de programación y de lenguaje natural. La idea del pseudocódigo consiste en aprovechar la flexibilidad y poder expresivo del lenguaje natural por un lado, y las reglas de composición de los lenguajes de programación de alto nivel por el otro. El pseudocódigo utiliza para representar las acciones sucesivas palabras reservadas en inglés - similares a sus homónimas en los lenguajes de programación -, tales como start, end, stop, if-then-else, while etc. La escritura del pseudocódigo exige normalmente la indentación (sangría en el margen izquierdo) de diferentes líneas. La representación en pseudocódigo del diagrama de flujo del ejemplo anterior sería:
  • 16. Start {cálculo de impuesto y salario} read nombre, hora, precio_hora salario_bruto  horas * precio_hora tasa  0.1 *salario_bruto salario_neto  salario_bruto - tasa write nombre, salario_bruto, tasa, salario_neto end El algoritmo comienza con la palabra start y finaliza con la palabra end, en inglés (en español, inicio y fin). Entre estas palabras, sólo se escribe una instrucción o acción por línea. La línea encerrada entre llaves { ... } se denomina comentario. Es una información al lector del programa y no realiza ninguna instrucción ejecutable; sólo tiene efecto de documentación interna del programa. Algunos autores suelen utilizar corchetes en lugar de llaves [ ... ]. 1.7 Lenguaje algorítmico El lenguaje algorítmico extrae las mejores características de los dos enfoques anteriores y los combina en un lenguaje especial para expresar algoritmos. Del pseudocódigo se tomó la facilidad de descripción de la prosa, al que se agrego lo conciso del diagrama de flujo. La traducción del lenguaje algorítmico a un lenguaje de programación debe resultar sencilla, sin importar cual se utilice. La decisión final sobre el lenguaje de programación a emplear depende de muchos factores, como la naturaleza de la aplicación particular y las características del lenguaje. 1.8 Metodología de solución La principal razón para que las personas aprendan a programar en general y los lenguajes de programación en particular es utilizar la computadora como una herramienta para la resolución de problemas ayudado por una computadora. La resolución de un problema consta de ocho etapas:
  • 17. 1. Definición y delimitación del problema a solucionar (enunciado del problema) 2. Pseudocódigo o diagrama de flujo (algoritmo) 3. Prueba de escritorio 4. Codificación 5. Digitación 6. Compilación o interpretación del programa 7. Ejecución del Programa 8. Evaluación de los resultados 1. - Definición y delimitación del problema a solucionar El problema debe estar bien definido si se desea llegar a una solución satisfactoria para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. Una buena definición del problema, junto con una descripción detallada de las especificaciones de entrada y salida, son los requisitos más importantes para llegar a una solución eficaz. El análisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita. La segunda lectura deberá servir para responder a las preguntas: • ¿Qué información debe proporcionar la resolución del problema? • ¿Qué datos se necesitan para resolver el problema? La respuesta a la primera pregunta indicará los resultados deseados o las salidas del problema. La respuesta a la segunda indicará qué datos se proporcionan o las entradas del problema. 2. - Pseudocódigo o diagrama de flujo (algoritmo) Una computadora no tiene la capacidad para solucionar problemas más que cuando se le proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la máquina constituyen, como ya conocemos, el algoritmo. En esta etapa es donde se determinan los pasos o instrucciones que deben llevarse a cabo y el orden lógico de su ejecución para dar una eficiente solución al problema. La información proporcionada al algoritmo constituye su entrada y la información producida por el algoritmo constituye su salida.
  • 18. 3. - Prueba de escritorio (prueba de un algoritmo) Para comprobar que un algoritmo realiza la tarea para la cual fue diseñado, debe ejecutarse a mano. Para esto deben utilizarse datos representativos y anotarse los valores que toman las variables en cada paso. Esto se conoce como corrida de escritorio. 4. - Codificación El programa que implementa el algoritmo debe ser escrito en un lenguaje de programación y siguiendo las reglas gramaticales o sintaxis del mismo. La fase de conversión del algoritmo en un lenguaje de programación se denomina codificación, ya que el algoritmo escrito en un lenguaje específico de programación (lenguaje de alto nivel) se denomina código. 5. - Digitación Tras la codificación del programa las instrucciones se convierten a un medio legible para la computadora; a igual procedimiento se someten los datos (en disquetes, cassettes, cintas, etc.), utilizando dispositivos como digitadoras o consolas. 6. - Compilación o interpretación del programa En esta etapa la computadora chequea si todas las instrucciones están escritas correctamente desde el punto de vista de la sintaxis y gramática de cada lenguaje y las transcribe, dentro de la memoria, del lenguaje de alto nivel al lenguaje máquina para obtener el llamado programa objeto. 7. - Ejecución del Programa El programa objeto es ejecutado por la computadora para llegar a los resultados esperados, utilizando los dispositivos, unidades y memoria necesaria, según cada caso o programa. 8. - Evaluación de los resultados Obtenidos los resultados se les evalúa para verificar que sean correctos. En caso contrario, se revisa en las etapas anteriores para detectar la falla o error, entrar a corregirla y reiniciar desde este punto los pasos para resolver de nuevo y en forma correcta el problema. 1.9 Prueba de un algoritmo (Ejemplos) Ejemplo No. 1 Diseñe un algoritmo que dadas 4 calificaciones (Cal1, Cal2, Cal3, Cal4), calcule la calificación promedio y escriba el resultado final junto con un mensaje explicativo.
  • 19. Análisis del problema Entrada: Leer las calificaciones individuales Proceso: Calcular la calificación promedio Salida: Escribir resultado con mensaje explicativo Diagrama de flujo Pseudocódigo Inicio {Calculo del promedio de calificaciones} Leer Cal1, Cal2, Cal3, Cal4 Prom  (Cal1+Cal2+Cal3+Cal4)/4
  • 20. Escribir ("Resultado final es", Prom) Fin Ejemplo No. 2 En cierto curso de computación, la calificación final del estudiante se determina a partir de su rendimiento en tres aspectos del trabajo anual. Existe una calificación de la mitad del curso, que cuenta un 30% del total; el trabajo de laboratorio que lleva una calificación, cuenta un 20% del total; y el examen final, cuenta el 50% restante. Diseñe un algoritmo que, dadas las calificaciones individuales, calcule la calificación final, escriba la salida final proporcionando el nombre del estudiante, sus calificaciones individuales y la calificación final. La variable se llama Final. Análisis del problema Calcular la calificación final a partir de las calificaciones parciales Entrada: Lectura del nombre del estudiante, calificación del laboratorio, calificación de mitad del curso, calificación del examen final. Salida: Nombre del estudiante, las tres calificaciones obtenidas y el promedio final, con comentarios correspondientes. Solución del problema 1. Lectura del nombre del alumno y de sus calificaciones en cada una de las partes 2. Calculo e impresión de la calificación final junto con el nombre del alumno Variables: Nombre (para nombre del alumno) Cal_Lab (para la calificación del laboratorio) Cal_mitcurso (para la calificación de mitad del curso) Cal_ExaFin (para la calificación del examen final) Final (para la calificación final) 1. - Obtener los datos de entrada
  • 21. Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin) 2. - Calcular la calificación final Final  0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin 3. - Imprimir los resultados 4. - Termino Algoritmo Inicio Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin) Final  0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin Escribir ("Nombre del alumno", Nombre) Escribir ("Calificación de laboratorio", Cal_Lab) Escribir ("Calificación de mitad del curso", Cal_mitcurso) Escribir ("Calificación del examen final", Cal_ExaFin) Escribir ("Calificación final", Final) Fin Del ejemplo anterior suponga que se dan los siguientes valores: Alberto Rodríguez, 72, 68, 65 Solución 0.20*72 = 14.4 0.30*68 = 20.4 0.50*65 = 32.5 suma = 67.3 Resultado Nombre del alumno Alberto Rodríguez Calificación de laboratorio 72
  • 22. Calificación de mitad del curso 68 Calificación del examen final 65 Calificación final 67.3 Andrés Miramontes, 75, 75, 75 Solución 0.20*75 = 15.0 0.30*75 = 22.5 0.50*75 = 37.5 suma = 75.0 Resultado Nombre del alumno Andrés Miramontes Calificación de laboratorio 75 Calificación de mitad del curso 75 Calificación del examen final 75 Calificación final 75.0 Ejemplo No. 3 Dados tres números, determine si la suma de cualquier pareja de ellos es igual al tercer número. Si se cumple esta condición escribir "Iguales", y en caso contrario, escribir "Distintas". (Diagrama de flujo y pseudocódigo) Solución Suponga que los números son: 396 la respuesta es "Iguales", ya que 3+6=9. Pero si los números fueran: 234
  • 23. El resultado será "Distintas". Algoritmo de resolución: 1. - Leer los tres valores, A, B y C. 2. - Si A+B=C escribir "Iguales" y parar. 3. - Si A+C=B escribir "Iguales" y parar. 4. - Si B+C=A escribir "Iguales" y parar. 5. - Escribir "Distintas" y parar. Diagrama de flujo: Ejemplo No. 4
  • 24. Escribir un algoritmo para calcular el área de un triángulo dada la base y la altura. Solución: Análisis La fórmula geométrica del área o superficie de un triángulo es: A = (1/2)B*H B = base H = altura variables: Base, Altura Suponga que B = 4.5 H = 7.2 A = (1/2) 4.5 * 7.2 = 16.2 Diagrama de flujo