viernes, 3 de octubre de 2014


FUNDAMENTOS DE PROGRAMACIÓN.




DATOS : 

JESÚS ANDRES INTRIAGO VELES.




CARRERA : 

ING. EN COMPUTACIÓN Y REDES.



MATERIA:

FUNDAMENTOS DE PROGRAMACIÓN.



SEMESTRE : PRIMERO.




      UNIVERSIDAD : 

UNIVERSIDAD ESTATAL DEL SUR DE MANABÌ.





INFORMACIÓN GENERAL.

UNIDAD ACADÉMICA: Ciencias Informáticas y Sistemas.
CARRERA: Ingeniería en Computación y Redes.
Asignatura/Módulo: FUNDAMENTOS DE PROGRAMACIÓN
Código: BA-200
Prerrequisitos: SNNA
Correquisitos: -
Número de Créditos:  4
Área Académica: Profesionales
Nivel (semestre): Primero
Período académico: Mayo – Octubre 2014
Paralelo:  Matutino
DOCENTE:  
Nombre: Edwin  Antonio Mero Lino
E-mail: edwin_a122@hotmail.es
Tutorías:
Despacho: Oficina de la Carrera
Grado Académico o título profesional:
Ing. Computación y Redes
Experiencia profesional:                                
Docente de la carrera Ingeniería en Computación y Redes, desde 2008 hasta la actualidad



SILABO FUNDAMENTOS DE PROGRAMACIÓN.

CONTENIDO
SESON
TAREA
UNIDAD 01: FUNDAMENTOS DE PROGRAMACIÓN: CONCEPTOS BÁSICOS
1.1  Diagnóstico General.

1
Diagnosticar a los estudiantes.
Lectura del sílabo.
1.2  Introducción.
1.3  Algoritmos.
1
Identificar los distintos algoritmos existentes.
1.4  Diagramas de Flujo.
1.5  Lenguaje de Programación.
1.6  Compiladores.
1
Identificar los diagramas de flujo, lenguajes de programación y compiladores.
UNIDAD 02: ALGORITMOS
2.1  Tipos de Algoritmos.
1
Investigar acerca de los tipos de algoritmos existentes.
2.2  Análisis de Problemas.
1
Analizar los problemas de algoritmos.
2.3  Representación de Algoritmos.
1
Representar los algoritmos en su naturaleza.
2.4  Diseño de Algoritmos.
1
Diseñar algoritmos.
2.5  Ejercicios de Aplicación.
2
Aplicar los ejercicios utilizando los distintos algoritmos.
UNIDAD 03: CONTROL DE FLUJO
3.1  Estructuras Secuenciales.
1
Analizar las estructuras secuenciales.
3.2  Estructuras Selectivas.
1
Analizar las estructuras selectivas.
3.3  Estructuras Iterativas.
1
Analizar las estructuras iterativas
3.4  Estructuras Repetitivas.
1
Analizar las estructuras repetitivas.
3.5  Ejercicios de Aplicación.
1
Aplicar ejercicios utilizando las estructuras de control de flujo.
UNIDAD 04: DIAGRAMAS DE FLUJO
4.1  Ventajas y Desventajas de los Diagramas de Flujo.
1
Investigar las ventajas y desventajas de los diagramas de flujo.
4.2  Tipos de Diagramas de Flujo.
1
Realizar diagramas de flujo.
4.3  Simbología a utilizar en un Diagrama de Flujo.
1
Investigar los distintos símbolos a utilizar en un diagrama de flujo.
4.4  Construcción de Diagramas de Flujo.
2
Construir diagramas de flujo en Borland C++.
4.5  Ejercicios de Aplicación.
3
Aplicación de ejercicios utilizando diagramas de flujo.
UNIDAD 05: INTRODUCCIÓN A LA PROGRAMACIÓN
5.1  Características del Lenguaje de Programación C.
1
Investigar acerca de las características de lenguaje C++.
5.2  Estructura Básica del Lenguaje.
1
Realizar un taller sobre la estructura básica del lenguaje.
5.3  Librerías y Funciones del Lenguaje.
3
Exponer las librerías y funciones del lenguaje.
5.4  Desarrollo de ejercicios en el Lenguaje C.
5
Desarrollar ejercicios utilizando todos los componentes del Lenguaje.

DESARROLLO DEL SILABO

QUE ES UN ALGORITMO
Por algoritmo, se entiende a un conjunto finito de instrucciones que se deben seguir para resolver un problema. No obstante, desde el punto de vista de la programación de ordenadores, la definición del algoritmo como la especificación de una serie de pasos, es incompleta. Debe observarse que los ordenadores son equipos que tienen limitaciones físicas en cuanto a capacidad de almacenamiento y procesamiento. Por consiguiente debemos refinar un poco más nuestra definición de algoritmo para hacerla aplicable de manera efectiva en el ámbito de la informática.
El algoritmo es un conjunto de pasos, instrucciones o acciones que se deben seguir para resolver un problema. Existen una gran cantidad de algoritmos, hay que coger el más efectivo. Hay dos tipos de algoritmos que son los cualitativos y cuantitativos, cualitativos son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven para llegar a la obtención de una respuesta o solución de un problema, y cuantitativos son todos aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a un resultado satisfactorio.

CARACTERÍSTICAS
·       Tiene que ser preciso.
·       Tiene que estar bien definido.
·       Tiene que ser finito.
·        La programación es adaptar el algoritmo al ordenador.
·        El algoritmo es independiente según donde lo implemente.

 DIAGRAMA DE FLUJO
El diagrama de flujo o diagrama de actividades es la representación gráfica del algoritmo o proceso.
Se utiliza en disciplinas como programación, economíaprocesos industriales y psicología cognitiva.
En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de actividades muestra el flujo de control general.
En SysML el diagrama de actividades ha sido extendido para indicar flujos entre pasos que mueven elementos físicos o energía. Los cambios adicionales permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.
Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin de proceso.

TIPOS DE DIAGRAMA DE FLUJO
Formato vertical: En él, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.
Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.





LENGUAJE DE PROGRAMACIÓN
Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.



Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se pruebase depurase compila y se mantiene el código fuente de un  programa informático se le llama programación.



También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
·         El desarrollo lógico del programa para resolver un problema en particular.
·         Escritura de la lógica del programa empleando un lenguaje de programación específico.
·         Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
·         Prueba y depuración del programa.
·         Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML.
Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.





COMPILADORES
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio, o simplemente texto. Este proceso de traducción se conoce como compilación.
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior. De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.

TIPOS DE COMPILADORES
Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categorías:  
  •      Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
  •    Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
  •         Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.
  •        Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
  •       Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.

Algoritmo

Los diagramas de flujo sirven para representar algoritmos de manera gráfica.
En matemáticaslógicaciencias de la computación y disciplinas relacionadas, un algoritmo es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el producto, el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.

TIPOS DE ALGORITMOS
·         Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven para llegar a la obtención de una respuesta o solución de un problema cualquier
·         Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Son aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a un resultado satisfactorio

ANÁLISIS DE ALGORITMOS
El análisis de algoritmos es una parte importante de la Teoría de complejidad computacional más amplia, que provee estimaciones teóricas para los recursos que necesita cualquier algoritmo que resuelva un problema computacional dado. Estas estimaciones resultan ser bastante útiles en la búsqueda de algoritmos eficientes.
A la hora de realizar un análisis teórico de algoritmos es común calcular su complejidad en un sentido asintótico, es decir, para un tamaño de entrada suficientemente grande. La cota superior asintótica, y las notaciones omegatheta se usan con esa finalidad. Por ejemplo, la búsqueda binaria decimos que se ejecuta en una cantidad de pasos proporcional a un logaritmo, en O, coloquialmente "en tiempo logarítmico". Normalmente las estimaciones asintóticas se utilizan porque diferentes implementaciones del mismo algoritmo no tienen por qué tener la misma eficiencia. No obstante la eficiencia de dos implementaciones "razonables" cualesquiera de un algoritmo dado está relacionadas por una constante multiplicativa llamada constante oculta.
La medida exacta (no asintótica) de la eficiencia a veces puede ser computada pero para ello suele hacer falta aceptar supuestos acerca de la implementación concreta del algoritmo, llamada modelo de computación. Un modelo de computación puede definirse en términos de un ordenador abstracto, como la Máquina de Turing, y postulando que ciertas operaciones se ejecutan en una unidad de tiempo. Por ejemplo, si al conjunto ordenado al que aplicamos una búsqueda binaria tiene 'n' elementos, y podemos garantizar que una única búsqueda binaria puede realizarse en un tiempo unitario, entonces se requieren como mucho log2 N + 1 unidades de tiempo para devolver una respuesta.
Las medidas exactas de eficiencia son útiles para quienes verdaderamente implementan y usan algoritmos, porque tienen más precisión y así les permite saber cuánto tiempo pueden suponer que tomará la ejecución. Para algunas personas, como los desarrolladores de videojuegos, una constante oculta puede significar la diferencia entre éxito y fracaso.
Las estimaciones de tiempo dependen de cómo definamos un paso. Para que el análisis tenga sentido, debemos garantizar que el tiempo requerido para realizar un paso se encuentre acotado superiormente por una constante. Hay que mantenerse precavido en este terreno; por ejemplo, algunos análisis cuentan con que la suma de dos números se hace en un paso. Este supuesto puede no estar garantizado en ciertos contextos. Si por ejemplo los números involucrados en la computación pueden ser arbitrariamente grandes, dejamos de poder asumir que la adición requiere un tiempo constante.


Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:
1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.
2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.
3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.
También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos. 

DISEÑO DE ALGORITMOS
Las dos herramientas más utilizadas para diseñar algoritmos son el Pseudocódigo y el Diagrama de flujo.

 1. Pseudocódigo.-
Es un lenguaje simplificado para describir un algoritmo utilizando una mezcla de frases en lenguaje común, y palabras claves que indican el inicio y el fin del algoritmo y las instrucciones específicas a realizar.
Por ejemplo, el siguiente pseudocódigo corresponde al algoritmo para calcular el área del rectángulo: el algoritmo calcula el área (a) de un rectángulo cualquiera, si se le suministra la longitud de la base (b) y la longitud de la altura (h).






Las palabras subrayadas se llaman palabras reservadas, se deben utilizar sangrías que facilitan la lectura del algoritmo Las instrucciones en pseudocódigo son fáciles de codificar en un lenguaje de programación.
2. Diaframa de flujo.-
El diagrama de flujo es la representación gráfica de un algoritmo; para ello se utiliza un conjunto de símbolos estándares mundialmente utilizados y desarrollados por organizaciones tales como ANSI (American National Institute) e ISO (International Standard Organization para la elaboración de diagramas;
En el diagrama cada símbolo representa una acción en concreto; y cada instrucción del algoritmo se visualiza dentro del símbolo adecuado. Los símbolos se conectan con flechas para indicar el orden en que se ejecutan las instrucciones.
Por ejemplo, el siguiente diagrama de flujo corresponde al algoritmo para calcular el área del rectángulo



El ovalo rotulado con la palabra Inicio indica el comienzo del algoritmo, el paralelogramo es el símbolo de entrada de datos e indica que se lee el valor de la base (b) y el valor de la altura (h), el rectángulo es el símbolo de proceso e indica que se realiza un proceso sobre los datos de entrada para calcular el área (a) multiplicando la base por la altura, (utilizaremos el * como operador de multiplicación), el siguiente es el símbolo de salida y representa un documento e indica que se muestra el valor del área obtenido, en cualquier dispositivo de salida, finalmente el ovalo rotulado con la palabra Fin indica que se ha llegado al fin del algoritmo.
Los símbolos que se utilizaran para dibujar los diagramas de flujo son los siguientes:






EJERCICIO DE APLICACIÓN
Cambiar la rueda pinchada de un automóvil teniendo un gato mecánico en buen estado, una rueda de reemplazo y una llave inglesa.
Inicio
PASO 1
.  Aflojar los tornillos de la rueda pinchada con la llave inglesa.
PASO 2.   Ubicar el gato mecánico en su sitio.
PASO 3. Levantar el gato hasta que la rueda pinchada pueda girar libremente.
PASO 4.    Quitar los tornillos y la rueda pinchada.
PASO 5.    Poner rueda de repuesto y los tornillos.
PASO 6.    Bajar el gato hasta que se pueda liberar.
PASO 7.    Sacar el gato de su sitio.
PASO 8.    Apretar los tornillos con la llave inglesa.
Fin

Un estudiante se encuentra en su casa (durmiendo) y debe ir a la universidad, ¿qué debe haga el estudiante?

Inicio
Dormir
haga 1 hasta que suene el despertador (o lo llame la mamá).
Mirar la hora.
¿Hay tiempo suficiente?
Si hay, entonces 
    Bañarse.
    Vestirse.
    Desayunar.
Sino,
Vestirse.
Cepillarse los dientes.
Despedirse de la mamá y el papá.
¿Hay tiempo suficiente?
Si, Caminar al paradero.
Sino, Correr al paradero.
Hasta que pase un bus para la universidad haga :
Esperar el bus
Ver a las demás personas que esperan un  bus.
Tomar el bus.
Mientras no llegue a la universidad haga 
Seguir en el bus.
Pelear mentalmente con el conductor. Timbrar.
Bajarse.
Entrar a la universidad.
Fin

ESTRUCTURA SECUENCIALES

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. 
Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en
Pseudocódigo y en diagramas de flujos: 

·          Tengo un teléfono y necesito llamar a alguien pero no sé cómo hacerlo.




El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial. Ahora veremos los componentes que pertenecen a ella:


ESCRITURA O SALIDA DE DATOS 

Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instrucción presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa así como sigue:




LECTURA O ENTRADA DE DATOS 

La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a continuación de la instrucción.
Esta operación se representa así: 


Ejemplo: Escriba un algoritmo que pregunte por dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujos. 



ESTRUCTURA SELECTIVA
DEFINICIÓN.- Estas estructuras se identifican porque en la fase de solución del problema existe algún punto en el cual es necesario establecer una pregunta, para decidir si ciertas acciones deben realizarse o no.

Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if – then – else o en español si – entonces - sino) y en flujograma con una figura geométrica en forma de rombo.

Las estructuras selectivas o alternativas se clasifican en:

SIMPLES:
Se identifican porque están compuestos únicamente de una condición.
La estructura si – entonces evalúa la condición y en tal caso: Si la condición es verdadera, entonces ejecuta la acción Si (o acciones si son varias). Si la condición es falsa, entonces no se hace nada. Representación de decisión simple:

COMPUESTAS:

En la solución de problemas encontramos numerosos casos en los que luego de tomar una decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión. Dicho proceso puede repetirse numerosas veces.
• En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque está anidado dentro del otro.


ESTRUCTURAS ITERATIVAS.
Son operaciones que se deben ejecutar un número repetido de veces. El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama Ciclo, Bucle o Lazo.
Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.
Fases de un Programa Cíclico:
1. Entrada de datos e instrucciones previas
2. Lazo o bucle
3. Instrucciones finales o resto del proceso
4. Salida de resultado

EJEMPLO DE BUCLE INFINITO:


En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos está indicando que hay que volver a evaluar la expresión. En ese caso como el bucle es infinito, no se tiene una condición para terminar y se estará haciendo siempre. En el siguiente ejemplo, ya se agregó una condición, la cual nos permitirá finalizar la ejecución del bucle en el caso en que la condición se cumpla.

EJEMPLO DE BUCLE FINITO:





BUCLES REPETITIVOS:

A continuación, te muestro tres diseños de estructuras cíclicas: las independientes son cuando los bucles se realiza uno primero hasta que se cumple la condición y solo en ese caso se entra al bucle B.
En los ciclos anidados, al entrar a una estructura de repetición, dentro de ella se encuentra otra. La más interna se termina de realizar y se continúa con la externa hasta que la condición se cumple.
En los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras goto (saltos) para pasar al bucle externo y se quedan entrelazados.
Esto puede ocasionar que el programa pierda el control de cuál proceso se está ejecutando y podamos obtener resultados erróneos. Veamos gráficamente el diseño de estas tres formas cíclicas:


ESTRUCTURAS REPETITIVAS

Las estructuras repetitivas son aquellas que sirven para evitar la molestia de andar repitiendo unas acciones varias veces. Estas sirven para que una acción se ejecute un determinado número de veces, y depende del cumplimiento de una determinada acciones (una condición).

Las estructuras repetitivas permiten ejecutar acciones que pueden descomponerse en otras acciones primitivas, esta estructura debe tener una entrada y una salida en la cual se ejecute la acción un determinado o indeterminado número de veces. Las estructuras repetitivas pueden ser: WHILE (mientras), FOR (para), DO WHILE (hacer mientras).


En este blog hablaremos de la estructura FOR:


Esta estructura se compone de tres expresiones. La primera expresión es aquella que asigna un valor inicial (acción a ejecutar), la segunda expresión es la que determina como y cuando se continúa o no el bucle, una condición que debe ser satisfecha para que se continúe la ejecución (expresión lógica), y la tercera expresión  permite que el valor inicial (índice) se modifique en cada pasada.






Ejemplo: Realizar un programa que imprima en pantalla los números del 1 al 100






Inicialmente f vale 1 y como no es superior a 100 se ejecuta el bloque, imprimimos el contenido de f, al finalizar el bloque repetitivo se incrementa la variable f en 1, como 2 no es superior a 100 se repite el bloque de instrucciones.


Cuando la variable del for llega a 101 sale de la estructura repetitiva y continúa la ejecución del algoritmo que se indica después del círculo.

La variable f (o como sea que se decida llamarla) debe estar definida como una variable más.
 

VENTAJAS Y DESVENTAJAS DE DIAGRAMAS DE FLUJO.


  • VENTAJAS DE LOS DIAGRAMAS DE FLUJO.

·                     Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.

·                     Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.

·                     Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.

·                     Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.


·                     Al igual que el pseudocodigo, el diagrama de flujo con fines de análisis de algoritmos de programacion puede ser ejecutado en un ordenador, con un IDE como Free DFD.

DESVENTAJAS DE LOS DIAGRAMAS DE FLUJO.

 
  • Desventajas de los diagramas de flujo diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño acciones a seguir tras la salida de un símbolo de decisión, pueden ser difíciles de seguir si existen diferentes caminos no existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir.


CARACTERÍSTICAS DEL 
LENGUAJE DE PROGRAMACIÓN C

Es un lenguaje de programación de propósito general que ofrece economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no está especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.
Este lenguaje ha sido estrechamente ligado al sistema operativo Unix, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistema operativo ni a ninguna máquina concreta. se le suele llamar lenguaje de programación de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar cualquier tipo de aplicación.
la base del c proviene del bcpl, escrito por Martin Richards, y del b escrito por ken Thompson en 1970 para el primer sistema Unix en un dec pdp-7. Estos son lenguajes sin tipos, al contrario que el c que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, números enteros y en coma flotante, de varios tamaños. Además se pueden crear tipos derivados mediante la utilización de punteros, vectores, registros y uniones. el primer compilador de c fue escrito por dennis ritchie para un dec pdp-11 y escribió el propio sistema operativo en c.introducción al lenguaje c (2).
la base del c proviene del bcpl, escrito por Martin Richards, y del b escrito por ken Thompson en 1970 para el primer sistema Unix en un dec pdp-7. Estos son lenguajes sin tipos, al contrario que el c que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, números enteros y en coma flotante, de varios tamaños. Además se pueden crear tipos derivados mediante la utilización de punteros, vectores, registros y uniones. El primer compilador de c fue escrito por dennis ritchie para un dec pdp-11 y escribió el propio sistema operativo en c.
c trabaja con tipos de datos que son directamente tratables por el hardware de la mayoría de computadoras actuales, como son los caracteres, números y direcciones. Estos tipos de datos pueden ser manipulados por las operaciones aritméticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los básicos, debiendo ser el programador el que los desarrolle. Esto permite que el código generado sea muy eficiente y de ahí el éxito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros mecanismos de almacenamiento de datos que no sea el estático y no proporciona mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y los compiladores de fácil implementación en distintos sistemas. Por contra, estas carencias se compensan mediante la inclusión de funciones de librería para realizar todas estas tareas, que normalmente dependen del sistema operativo.
Originariamente, el manual de referencia del lenguaje para el gran público fue el libro de kernighan y ritchie, escrito en 1977. es un libro que explica y justifica totalmente el desarrollo de aplicaciones en c, aunque en él se utilizaban construcciones, en la definición de funciones, que podían provocar confusión y errores de programación que no eran detectados por el compilador. como los tiempos cambian y las necesidades también, en 1983 ANSI establece el comité x3j11 para que desarrolle una definición moderna y comprensible del c. el estándar está basado en el manual de referencia original de 1972 y se desarrolla con el mismo espíritu de sus creadores originales. La primera versión de estándar se publicó en 1988 y actualmente todos los compiladores utilizan la nueva definición. Una aportación muy importante de ANSI consiste en la definición de un conjunto de librerías que acompañan al compilador y de las funciones contenidas en ellas. Muchas de las operaciones comunes con el sistema operativo se realizan a través de estas funciones. Una colección de ficheros de encabezamiento, headers, en los que se definen los tipos de datos y funciones incluidas en cada librería. los programas que utilizan estas bibliotecas para interactuar con el sistema operativo obtendrán un comportamiento equivalente en otro sistema.


ESTRUCTURA BÁSICA DE UN PROGRAMA EN C


La mejor forma de aprender un lenguaje es programando con él. El programa más sencillo que se puede escribir en C es el siguiente:

main( )
{
}

Como nos podemos imaginar, este programa no hace nada, pero contiene la parte más importante de cualquier programa C y además, es el más pequeño que se puede escribir y que se compile correctamente. En el se define la función main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una función C siempre va seguida de paréntesis, tanto si tiene argumentos como si no. La definición de la función está formada por un bloque de sentencias, que esta encerrado entre llaves {}.
Un programa algo más complicado es el siguiente:

#include <stdio.h>
main( )
{
printf("Hola amigos!\n");
}

Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera línea indica que se tengan en cuenta las funciones y tipos definidos en la librería stdio (standard input/output). Estas definiciones se encuentran en el fichero header stdio.h. Ahora, en la función main se incluye una única sentencia que llama a la función printf. Esta toma como argumento una cadena de caracteres, que se imprimen van encerradas entre dobles comillas " ". El símbolo \n indica un cambio de línea.
Hay un grupo de símbolos, que son tratados como caracteres individuales, que especifican algunos caracteres especiales del código ASCII. Los más importantes son:





\a
Alerta
\b
Espacio atrás
\f
Salto de página
\n
Salto de línea
\r
Retorno de carro
\t
Tabulación horizontal
\v
Tabulación vertical
\\
Barra invertida
\'
Comilla simple
\"
Comillas dobles
\OOO
Visualiza un carácter cuyo código ASCII es OOO en octal
\xHHH
Visualiza un carácter cuyo código ASCII es HHH en hexadecimal

Un programa C puede estar formado por diferentes módulos o fuentes. Es conveniente mantener los fuentes de un tamaño no muy grande, para que la compilación sea rápida. También, al dividirse un programa en partes, puede facilitar la legibilidad del programa y su estructuración. Las diferentes fuentes son compilados de forma separada, únicamente los fuentes que han sido modificados desde la última compilación, y después combinados con las librerías necesarias para formar el programa en su versión ejecutable.

TIPOS BÁSICOS Y VARIABLES

Los tipos de datos básicos definidos por C son caracteres, números enteros y números en coma flotante. Los caracteres son representados por char, los enteros por short, int, long y los números en coma flotante por float y double. Los tipos básicos disponibles y su tamaño son:

Char
Carácter
(normalmente 8 bits)
Short
Entero corto con signo
(normalmente 16 bits)
Int
Entero con signo
(depende de la implementación)
Unsigned
Entero sin signo
(depende de la implementación)
Long
Entero largo con signo
(normalmente 32 bits)
Float
Flotante simple
(normalmente 32 bits)
Double
Flotante doble
(normalmente 64 bits)


La palabra unsigned en realidad es un modificador aplicable a tipos enteros, aunque si no se especifica un tipo se supone int. Un modificador es una palabra clave de C que indica que una variable, o función, no se comporta de la forma normal. Hay también un modificador signed, pero como los tipos son por defecto con signo, casi no se utiliza.
Las variables son definidas utilizando un identificador de tipo seguido del nombre de la variable.

VEAMOS EL SIGUIENTE PROGRAMA:

#include <stdio.h>
main()
{
float cels, farh;
farh = 35.0;
cels = 5.0 * ( farh - 32.0 ) / 9.0;
printf("-> %f F son %f C\n", farh, cels );
}


En el programa anterior se definen dos variables float, se asigna un valor a la primera y se calcula la segunda mediante una expresión aritmética. Las asignaciones en C también son una expresión, por lo que se pueden utilizar como parte de otra expresión, pero según que prácticas de este tipo no son muy recomendables ya que reducen la legibilidad del programa. En la instrucción printf, el símbolo %f indica que se imprime un número en coma flotante.
Hay un tipo muy importante que se representa por void que puede significar dos cosas distintas, según su utilización. Puede significar nada, o sea que si una función devuelve un valor de tipo void no devuelve ningún resultado, o puede significar cualquier cosa, como puede ser un puntero a void es un puntero genérico a cualquier tipo de dato. Más adelante veremos su utilización.


 FUNCIONES:

Un programa C está formado por un conjunto de funciones que al menos contiene la función main. Una función se declara con el nombre de la función precedido del tipo de valor que retorna y una lista de argumentos encerrados entre paréntesis. El cuerpo de la función está formado por un conjunto de declaraciones y de sentencias comprendidas entre llaves. Veamos un ejemplo de utilización de funciones:


#include <stdio.h>
#define VALOR 5
#define FACT 120
int fact_i ( int v )
{
int r = 1, i = 0;
while ( i <= v )
{
r = r * i;
i = i + 1;
}
return r;
}
int fact_r ( int v )
{
if ( v == 0 ) return 1;
else return v * fact_r(v-1);
}
main() {
int r, valor = VALOR;
if ( (r = fact_i(valor)) != fact_r(valor) ) printf("Codificación errónea!!.\n");
else if ( r == FACT ) printf("Codificación correcta.\n");
else printf("Algo falla!!.\n");
}


Se definen dos funciones, fact_i y fact_r, además de la función main. Ambas toman como parámetro un valor entero y devuelven otro entero. La primera calcula el factorial de un número de forma iterativa, mientras que la segunda hace lo mismo de forma recursiva.
Todas las líneas que comienzan con el símbolo # indican una directiva del precompilador. Antes de realizar la compilación en C se llama a un precompilador cuya misión  es procesar el texto  y realizar ciertas sustituciones textuales. Hemos visto que la directiva #incluye incluye el texto contenido en un fichero en el fuente que estamos compilando. De forma parecida, #define nombre texto sustituye todas las apariciones de nombre por texto. Así, en el fuente, la palabra VALOR se sustituye por el número 5.
El valor que debe devolver una función se indica con la palabra return. La evaluacion de la expresión debe dar una valor del mismo tipo de dato que el que se ha definido como resultado. La declaración de una variable puede incluir una inicialización en la misma declaración.
Se debe tener muy en cuenta que en C todos los argumentos son pasados 'por valor'. No existe el concepto de paso de parámetros 'por variable' o 'por referencia'. Veamos un ejemplo:


int incr ( int v ) { return v + 1; }
main() {
int a, b;
b = 3;
a = incr(b);
/* a = 4 mientras que b = 3. No ha cambiado después de la llamada. */
}


En el ejemplo anterior el valor del parámetro de la función incr, aunque se modifique dentro de la función, no cambia el valor de la variable b de la función main. Todo el texto comprendido entre los caracteres /* y */ son comentarios al programa y son ignorados por el compilador. En un fuente C los comentarios no se pueden anidar.



Librerías y Funciones del Lenguaje





Link De Descarga de las librerías:


  • https://es.scribd.com/doc/241831101/Librerias-docx