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ía, procesos 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 prueba, se depura, se 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.
·
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
En matemáticas, lógica, ciencias 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 omega y theta 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.
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 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).
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.
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.
DESVENTAJAS DE LOS DIAGRAMAS DE FLUJO.
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 {}.
#include <stdio.h>
FUNCIONES:
Librerías y Funciones
del Lenguaje
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
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
|
|
\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.
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.
Link De Descarga de las librerías:
- https://es.scribd.com/doc/241831101/Librerias-docx