El objetivo que el estudiante
pueda resolver los distintos problemas como ser, matemáticos, administrativos,
contables, gráficos, etc. un diagrama de flujo, luego el uso del
compilador de C con la computadora.
Es necesario entender que para llegar a ser un programador
principalmente se necesita tiempo, esfuerzo, ganas de aprender, estar siempre
motivado, investigar, además de metódico, ordenado, y por sobre todo
mucha paciencia.
En la programación se necesita pensar los problemas de forma
lógica, es necesario analizar el problema, luego hacer un diseño mediante un
diagrama de flujo, que pueda representar la solución y finalmente volcar la
solución del problema a código.
Vamos por parte..
¿Qué es un programa?
Conjunto de instrucciones que entiende una computadora para
realizar una actividad. Todo programa tiene un objetivo bien definido: un
procesador de texto es un programa que permite cargar, modificar e imprimir
textos, un programa de ajedrez permite jugar al ajedrez contra el ordenador u
otro contrincante humano.
La
actividad fundamental del programador es resolver problemas empleando el
ordenador como herramienta fundamental.
Para
poder resolver un problema, es necesario plantear un algoritmo. Un algoritmo,
es un método para resolver un problema mediante una serie de pasos precisos,
definidos y finitos.
El proceso de resolución de un problema con una
computadora conduce a la escritura de un programa y a su ejecución en la misma.
Aunque el proceso de diseñar programas es “esencialmente”, un proceso creativo,
se puede considerar una serie de fases o pasos comunes, que generalmente deben
seguir todos los programadores.
Las fases de resolución de un problema con computadora:
· Análisis del problema: El problema se analiza teniendo presente la especificación
de los requisitos dados por el cliente de la empresa o por otra persona que
encarga el programa.
· Diseño del algoritmo: Una vez analizado el problema, se diseña una solución que
conducirá a un algoritmo que resuelva el problema.
· Codificación (implementación): La solución se escribe en la sintaxis del lenguaje de alto
nivel (por ejemplo, C) y se obtiene un programa.
· Ejecución, verificación y depuración: El programa se ejecuta, se comprueba rigurosamente y se
elimina todos los errores (denominados “bugs”, en inglés) que puedan
aparecer.
· Mantenimiento: El programa se actualiza y modifica, cada vez que sea
necesario, de modo que se cumplan todas las necesidades de cambio de sus
usuarios.
· Documentación: Escritura de las diferentes fases del ciclo de vida del
software, esencialmente el análisis, diseño y codificación, unidos a manuales
de usuario y referencia, así como normas para el mantenimiento.
- Las
fases
Un algoritmo debe producir un resultado en un tiempo finito. Los métodos que utilizan algoritmos se denominan métodos algorítmicos, en oposición a los métodos que implican algún juicio o interpretación denominados métodos heurísticos.
Los
métodos algorítmicos se pueden implementar en computadoras; sin embargo, los
procesos heurísticos no han sido convertidos fácilmente en las computadoras. En
los últimos años las técnicas de inteligencia artificial han hecho posible la
implementación del proceso heurístico en computadoras.
Ejemplos de algoritmos son: instrucciones para montar en
una bicicleta, hacer una receta de cocina, obtener el máximo divisor de dos
números, etc. Los algoritmos se pueden expresar por fórmulas, diagramas
de flujo y pseudocódigos. Esta última representación
es la más utilizada en lenguajes estructurados como C.
Características
de un algoritmo
· preciso (indicar el orden de realización en cada
paso)
· definido (si se sigue dos veces, obtiene el mismo
resultado)
· finito (tiene fin un número determinado de pasos)
- Análisis del problema
La primera fase de la resolución de un problema es el 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.
Para poder definir bien un problema es conveniente responder
a las siguientes preguntas:
¿Qué
entradas se requieren? (tipo y cantidad)
¿Cuál
es la salida? (tipo y cantidad)
¿Qué método produce la salida
deseada?
- Diseño del algoritmo
En la etapa de
análisis del proceso de programación se determina qué hace el
programa. En la etapa de diseño se determina como hace el
programa la tarea solicitada.
Los métodos más eficaces para el proceso de diseño se basan en el
conocido por divide y vencerás. Es decir, la resolución de un
problema complejo se realiza dividiendo el problema
en subproblemas y a continuación dividir estos subproblemas en otros de
nivel más bajo, hasta que pueda ser implementada una solución
en la computadora.
Este método se conoce técnicamente como diseño descendente (top-down)
o modular.
El proceso de romper el problema en cada etapa y expresar cada paso en
forma más detallada se denomina refinamiento sucesivo.
Cada subprograma es resuelto mediante un módulo (subprograma)
que tiene un solo punto de entrada y un solo punto de salida.
Cualquier programa bien diseñado consta de un programa principal (el
módulo de nivel más alto) que llama a subprograma ( módulo de nivel bajo) que a
su vez pueden llamar a otros subprogramas. Los programas estructurados de esta
forma se dice que tienen un diseño modular y el método de
romper el programa en módulos más pequeños se llama programación
modular.
Los módulos pueden ser planeados, codificados, comprobados y depurados
independientemente (incluso por diferente programadores) y a continuación
combinarlos entre sí. El proceso implica la ejecución de los siguientes pasos
hasta que el programa se termina:
1. Programar un módulo.
2. Comprobar el módulo.
3. Si es necesario, depurar el módulo.
4. Combinar el módulo con
los anteriores.
El
proceso que convierte los resultados del análisis del problema en un diseño
modular con refinamiento sucesivo que permitan una posterior traducción a un
lenguaje se denomina diseño del algoritmo.
El
diseño del algoritmo es independiente el lenguaje de programación en le que se
vaya a codificar posteriormente.
- Herramientas de
programación.
Las
dos herramientas más utilizadas comúnmente para diseñar algoritmos son: diagramas
de flujo y pseudocódigos.
Diagramas de flujo
Un diagrama de flujo es
una representación de gráfica de un algoritmo.
Pseudocódigo
El pseudocódigo es una herramienta de
programación en la que las instrucciones se escriben en palabras similares al inglés
o español, que facilitan tanto la escritura como la lectura de programas.
En esencia, el pseudocódigo se puede definir como un lenguaje de
especificaciones de algoritmos.
La representación de un problema mediante un gráfico, para éste caso vamos a usar el diagrama de flujo.
Diagrama de flujo
La simbología para representar el diagrama de flujo son:


Se expone un problema utilizando diagramas de flujo.
Para plantear un diagrama de flujo debemos tener muy en claro el problema a resolver.
Problema: Se debe calcular el sueldo mensual de un operario conociendo la cantidad de horas trabajadas y el pago por hora.
identificar datos conocidos:
-Horas trabajadas en el mes.
-Pago por hora.
-Pago por hora.
Proceso:
Cálculo del sueldo multiplicando la cantidad de horas por el pago por hora.
Información resultante: Sueldo mensual.
Cuando hacemos un análisis todo problema está constituido por:
- Datos conocidos: Datos con los que se cuenta al plantear el problema.
- Proceso: Operaciones a realizar con los datos conocidos.
- Información resultante: Es la información que resuelve el problema.
- Proceso: Operaciones a realizar con los datos conocidos.
- Información resultante: Es la información que resuelve el problema.
Luego de hacer el análisis del problema. Podemos utilizar el diagrama de flujo, una forma gráfica para representar la solución del problema, de esta manera se nos hace más fácil después pasarlo código de cualquier lenguaje de programación.
diagrama de flujo


Utilizando un diagrama resulta más fácil entender la resolución del problema. El diagrama de flujo, claramente nos identifica los datos datos de entrada, las operaciones y los datos de salida.
Los datos de entrada se representa con una figura geométrica llamada paralelogramo. Es opcional quien quiera dibujar un paralelogramo por cada dato ingresado o de lo contrario dibujar el paralelogramo y dentro colocar todos los datos ingresados.
Las operaciones se representan con un rectángulo. Por cada operación debemos dibujar un rectángulo.
Los datos de salida lo representamos con una figura como una hoja rota. Lo mismo, queda a criterio de cada uno representar un dato de salida por cada hoja rota o de lo contrario todos los datos de salida en una sola figura.
- Software para aprender el lenguaje C
Existen varios compiladores para aprender a programar en C. Para Windows,
Mac, Linux. Nosotros utilizaremos el compilador Dev C++. Se puede descargar aquí...
Descargar manual del compilador Dev-C++...
-Ejemplo de codificación
del diagrama de flujo en lenguaje C
Tener en cuenta que debemos
ingresar el caracter "." en lugar del caracter "," si
ingresamos un costo por hora con decimales.
Cuando lo ejecutamos se crea el
programa ejecutable "programa1.exe" que es el resultado de la compilación
del código fuente que escribimos en el editor en el archivo
"programa1.c".
Conceptos que deben quedar claros:
1. Por el momento haremos todo el algoritmo dentro de la
función main()
2. Si observamos el diagrama de flujos vemos que debemos
definir tres variables: (horasTrabajadas, costoHora, sueldo), aquí es donde
debemos definir que tipos de datos se almacenarán en las mismas. La cantidad de
horas normalmente será un valor entero (ej. 100 - 150 - 230 etc.), pero el
costo de la hora es muy común que sea un valor real (ej. 5.35 - 7.50 etc.) y
como el sueldo resulta de multiplicar las horas trabajadas por el costo por
hora el mismo deberá ser real.
La definición de las variables dentro
de la función main():
int horasTrabajadas;
float costoHora;
float sueldo;
La palabra clave int para definir
variables enteras (en C las palabras claves deben ir siempre en
minúsculas, sino se produce un error sintáctico). La palabra clave debemos
indicar el nombre de la variable, por ejemplo: horasTrabajadas. Se propone que
el nombre de la variable comience con minúscula y en caso de estar constituida
por dos palabras o más deben ir en mayúsculas el primer caracter (un nombre de
variable no puede tener espacios en blanco, empezar con un número, ni tampoco
utilizar caracteres especiales).
Debemos buscar siempre nombres de
variables que nos indiquen que almacenan (no es conveniente llamar a nombres de
variables con letras individuales salvo en casos puntuales).
3. Mostrar mensajes en la pantalla utilizamos la función
"printf":
printf("Ingrese las horas
trabajadas por el empleado:");
Con esta sintaxis todo lo que se
encuentra contenido entre comillas aparecerá exactamente en la pantalla.
Si necesitamos mostrar el contenido
de una variable debemos disponer el carácter %f si mostramos una variable float o %i si
mostramos una variable int (luego de la cadena a mostrar disponemos separado
por coma la variable a mostrar):
printf("%f",sueldo);
4. Para hacer la entrada de datos por teclado en C
debemos utilizar la función "scanf"
scanf("%i",&horasTrabajadas);
La función scanf tiene un primer
parámetro entre comillas dobles y dentro el caracter % y la letra i si se carga
un entero y la letra f si se carga un float.
El segundo parámetro es el nombre
de la variable a cargar antecedida por el caracter &.
5. Las operaciones que indicamos en el diagrama de flujo
mediante la figura rectángulo la codificamos
sueldo = horasTrabajadas * costoHora;
6. Por ahora, veremos que siempre nuestro programa
finaliza llamando a la función getch() (detiene la ejecución del programa hasta
que se presiona una tecla) y la instrucción return 0 (le avisa al sistema
operativo que el programa finalizó correctamente):
getchar();
return 0;


No hay comentarios:
Publicar un comentario