domingo, 22 de septiembre de 2013

Unidad 1B: Metodología de la programación

¿Qué es un lenguaje de programación?

En informática, se conoce como lenguaje de programación a un programa destinado a la construcción de otros programas informáticos. Su nombre se debe a que comprende un lenguaje formal que está diseñado para organizar algoritmos y procesos lógicos que serán luego llevados a cabo por un ordenador o sistema informático, permitiendo controlar así su comportamiento físico, lógico y su comunicación con el usuario humano.
Dicho lenguaje está compuesto por símbolos y reglas sintácticas y semánticas, expresadas en forma de instrucciones y relaciones lógicas, mediante las cuales se construye el código fuente de una aplicación o pieza de software determinado. Así, puede llamarse también lenguaje de programación al resultado final de estos procesos creativos.

Generaciones de lenguajes de programación

Primera generación: Los primeros ordenadores se programaban directamente en código de máquina (basado en sistema binario), que puede representarse mediante secuencias de ceros y unos sistema binario. Cada modelo de ordenador tiene su propio código, por esa razón se llama lenguaje de máquina u ordenadores.


1GL:  Código máquina y Ensambladores

La primera generación de lenguajes de programación consistía enteramente de una secuencia de 0s y 1s que los controles de la computadora interpretan como instrucciones, eléctricamente.
Representan los primeros lenguajes de programación que la computadora podía entender, son conocidos como lenguaje máquina.

Segunda generación: Los lenguajes simbólicos, asimismo propios de la máquina, simplifican la escritura de las instrucciones y las hacen más legibles. También surgieron en esta generación los lenguajes ensambladores.

2GL:  Primeros lenguajes de alto nivel, no estructurados – Fortran, Cobol, Basic
La segunda generación de lenguajes de programación consistía se identificaron como lenguajes ensambladores. Un lenguaje ensamblador convierte las secuencias de 0s y 1s a un lenguaje entendido por los seres humanos, como “añadir”, “sumar”, etc.

El código escrito en un lenguaje ensamblador se convierte en lenguaje de máquina (1GL)
Tercera generación: Los lenguajes de alto nivel sustituyen las instrucciones simbólicas por códigos independientes de la máquina, parecidas al lenguaje humano o al de las Matemáticas.

3GL:  Lenguajes estructurados: Algol, Pascal, C, ADA.

Lenguajes Específicos: Lisp, Prolog, Smalltalk

La tercera generación de lenguajes de programación se conoce como lenguajes de alto nivel. Un lenguaje de alto nivel tiene una gramática y sintaxis similar a las palabras en una oración. Un compilador se encarga de traducir el lenguaje de alto nivel a lenguaje ensamblador o código máquina.

Todos los lenguajes de programación de software necesitan ser traducidos a código de máquina para una computadora para utilizar las instrucciones que contienen.

Cuarta generación:

Se ha dado este nombre a ciertas herramientas que permiten construir aplicaciones sencillas combinando piezas prefabricadas. Hoy se piensa que estas herramientas no son, propiamente hablando, lenguajes. Algunos proponen reservar el nombre de cuarta generación para la programación orientada a objetos.
Estos lenguajes tienen una estructura lo más parecido al idioma inglés, algunas características son:
- Acceso a base de datos.    - Capacidades Gráficas.       - Generación de código automáticamente.
- Puede programarse visualmente como Visual Basic (Programación Visual).
4GL:  Lenguajes Declarativos: SQL Generadores de aplicaciones, Herramientas CASE (Computer Aided Software Engineering, ingeniería de software asistida por computador).
Programación Visual: Visual Basic, Visual C
Lenguajes Orientados a Objeto C++, Java, Eiffel
La cuarta generación de lenguajes de programación avanza en la sintaxis utilizada. Lenguajes 4GL se utilizan típicamente para acceder a bases de datos.
Quinta generación:
se llama así a veces a los lenguajes de la inteligencia artificial, aunque con el fracaso del proyecto japonés de la quinta generación el nombre ha caído en desuso.
5GL:  Imitación de la mente humana

La quinta generación de lenguajes de programación es utilizada para redes neuronales. Una red neuronal es una forma de inteligencia artificial que trata de imitar la mente humana. 




Hechos/conceptos (contenidos soporte)

  •  Herramientas y anotaciones para el diseño de algoritmos. Diagramas de flujo. Pseudocódigo. Tablas de decisión.
  • Estructura general de un programa. Partes de un programa (entrada, proceso, salida).
  • Clasificación de las instrucciones. De declaración. Primitivas. De control. Compuestas.
  • Variables auxiliares. Contadores. Acumuladores. Switches
  • Técnicas de programación. Programación convencional. Programación estructurada (teorema y herramientas). Programación modular (subprogramas, procedimientos, funciones, recursos). 



Existen varias clases de programación, dependiendo de los métodos utilizados y las técnicas empleadas.
Los tipos o técnicas de programación son bastante variados, aunque puede que muchos de los lectores sólo conozcan una metodología para realizar programas. En la mayoría de los casos, las técnicas se centran en programación modular y programación estructurada, pero existen otros tipos de programación. Los explicaremos a lo largo del artículo.

Programación estructurada (PE)

La programación estructurada esta compuesta por un conjunto de técnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo.

Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores.

Esta técnica incorpora:

  • Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas.
  • Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad.
  • Estructuras básicas: existen tres tipos de estructuras básicas:
    • Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra.
    • Estructuras selectivas: en estas estructuras se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.
    • Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces.

Las principales ventajas de la programación estructurada son:

  • Los programas son mas fáciles de entender
  • Se reduce la complejidad de las pruebas
  • Aumenta la productividad del programador
  • Los programas queden mejor documentados internamente.

Un programa esta estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos.

Programación modular

En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad.

En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.

A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones.

Programación orientada a objetos (POO)

Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilización de los objetos.

El elemento principal de la programación orientada a objetos es el objeto.
El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento.

El polimorfismo y la herencia son unas de sus principales características y por ello dedicaremos más adelante un artículo exclusivamente a tratar estos dos términos.

En DesarrolloWeb.com hemos publicado anteriormente una explicación de lo que es la programación orientada a objetos.

Programación concurrente

Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez.

Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea.

Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las acciones.

Programación funcional

Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones.

Programación lógica

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes). 
 Tipos de Programación


LENGUAJE C

INTRODUCCION

El lenguaje C fue inventado e implementado por primera vez por Dennis Ritchie en un
DEC PDP-11 en Bell Laboratories.
Es el resultado de un proceso de desarrollo comenzado con un lenguaje anterior
denominado B, inventado por Ken Thompson. En los años 70 el lenguaje B llevó al
desarrollo del C. En 1978, Brian Kernighan y Dennis Ritchie publicaron el libro The C
Programming Language que ha servido hasta la actualidad como definición eficiente de
este lenguaje.
Durante muchos años el estándar de C fue la versión proporcionada con la versión cinco
del sistema operativo UNIX. En 1983, el instituto de estándares americanos estableció
un estándar que definiera el lenguaje C, conocido como ANSI C. Hoy día, todos los
principales compiladores de C llevan implementado el estándar ANSI.

El lenguaje C se denomina como un lenguaje de nivel medio, puesto que combina
elementos de lenguajes de alto nivel (Fortran, Pascal, Basic…) con el funcionalismo del
lenguaje ensamblador.
C permite la manipulación de bits, bytes y direcciones (los elementos básicos con que
funciona la computadora).
Otras características del C es que posee muy pocas palabras clave (32, donde 27 fueron
definidas en la versión original y cinco añadidas por el comité del ANSI, enum, const,
signed, void y volatile). Todas las palabras clave de C están en minúsculas (C distingue
entre las mayúsculas y minúsculas). En la siguiente tabla se muestran las 32 palabras
clave: 

auto
double
int
struct
break
else
long
switch
case
enum
register
typedef
char
extern
return
union
const
float
short
unsigned
continue
for
signed
void
default
goto
sizeof
volatile
do
if
static
while

Los programas en C consisten en una o más funciones. La única función que debe estar
absolutamente presente es la denominada main, siendo la primera función que es
llamada cuando comienza la ejecución del programa. Aunque main no forma
técnicamente parte del lenguaje C, hay que tratarla como si lo fuera, pues si se emplea
para nombrar una variable, probablemente confundirá al compilador.
La forma general de un programa en C es:

instrucciones del preprocesador
declaraciones globales
tipo_devuelto main(lista de parámetros)
{
        secuencia de sentencias
}


tipo_devuelto función_1(lista de parámetros)
{
       secuencia de sentencias
}
tipo_devuelto función_2(lista de parámetros)
{
       secuencia de sentencias
}
…..
…..
tipo_devuelto función_n(lista de parámetros)
{
       secuencia de sentencias
}
El programa así escrito se denomina programa fuente y puede estar escrito en uno o
varios ficheros.
Para que el programa pueda ser ejecutado se debe compilar y enlazar (linkar) con todas
aquellas funciones de la biblioteca que se necesiten.
El proceso de compilar consiste en traducir el programa fuente a código o lenguaje
máquina.
El proceso de linkaje (enlazado) consiste en añadir rutinas (propias o bibliotecas
existentes en el mercado) que también están en código máquina, es decir, están en
objeto.
Una vez enlazado el programa objeto, tenemos un programa ejecutable que se puede
ejecutar en el ordenador.
Estos procesos son realizados por un programa llamado compilador.
El compilador en las máquinas Alpha del C. P. D. es el DEC OSF/1 Versión 4.0. Para
compilar y enlazar un programa con este compilador basta con hacer
cc nombre_del_programa.c
para crear, si no hay errores, un ejecutable (a.out). Existen múltiples opciones en el
compilador que se pueden comprobar con el comando de ayuda de los sistemas
operativos.

Los ejemplos del curso siguen la sintaxis aceptada por el estándar ANSI, con lo que son
portables con cualquier otro compilador que lo lleve implementado.


3 ELEMENTOS
3.1
Comentarios
Los comentarios son textos que no son procesados por el compilador. Sirven como
información al programador.
Para que un texto sea comentario debe estar entre los símbolos /* (marca el comienzo) y
*/ (marca el final de comentario).
3.2
Identificadores
Se usan para referenciar las variables, las funciones, las etiquetas y otros objetos
definidos por el usuario. La longitud del identificador puede variar entre uno o varios
caracteres (se recomienda no más de 31 y si el identificador está envuelto en el proceso
de enlazado al menos los seis primeros deben ser significativos).
El primer carácter debe ser una letra o un símbolo subrayado y los caracteres siguientes
pueden ser letras, números o símbolos de subrayado. Las minúsculas y las mayúsculas
se tratan como distintas.
Un identificador no puede ser igual a una palabra clave de C y no debe tener el mismo
nombre que una función ya escrita o que se encuentre en la biblioteca de C.
3.3
Constantes
Las constantes son expresiones con un significado invariable.
La representación más simple de un concepto de este lenguaje son las constantes.
Pueden ser:
-
Números enteros: Su formato es “signo dígitos marcadores”. El signo puede ser “-“
(negativo) o “+” (positivo, por defecto). Los dígitos se pueden escribir en notación
decimal, octal (base 8, un 0 seguido de una secuencia de números del 0 al 7) o en
hexadecimal (base 16, un 0 seguido por una x (o X) y una secuencia de dígitos del 0
al 9 y de la A B a la F). Los marcadores definen el tipo de entero (ver capítulo
siguiente), la ‘l’ (o L) asocia un entero long y la “u” (o U) de tipo unsigned. Por
ejemplo 1234lu.
Números reales (con parte decimal): Su formato es “signo dígitos e signo_exponente
exponente marcador”. El signo indica el signo de la mantisa. Dígitos indica una
secuencia de números que pueden llevar un punto separando la parte entera y la
decimal. e indica el comienzo del valor del exponente de base 10. Exponente es una
constante entera decimal. Marcador es una (f o F) y/o (l o L), donde las primeras
indican una constante float y las segundas una doble precisión. Por ejemplo –
13.13e-17f (es –13.13 por 10 a la –17).
-


-
Caracteres: Su forma es ‘carácter’ (carácter entre apostrofos). El carácter puede ser
escribible (es imprimible desde teclado) o de escape en los que hay que poner un
carácter especial (\) para avisar al compilador. Todos los caracteres escribibles se
pueden poner en forma de escape con el código octal correspondiente (‘a’ es igual a
‘\141’). El carácter nulo (NULL) se puede representar como ‘\0’. Este carácter es
puesto siempre por el compilador al final de cualquiera cadena de caracteres.
Cadenas de caracteres: Es una secuencia de caracteres (escribibles o de escape)
encerrada entre dobles comillas.
-
Para asignar un identificador a una constante se realiza con la directiva #define 

3.4
Variables
Una variable es una posición de memoria con nombre que se usa para mantener un valor
que puede ser modificado en el programa. Todas las variables deben ser declaradas
antes de poder usarlas. Una variable puede ser fijada a una constante con la sintaxis
const tipo identificador = valor (por ejemplo const int a=10). También existe otro
modificador del tipo de acceso (volatile) que permite cambiar el valor de una variable
por medios no explícitamente especificados por el programa, por ejemplo la dirección
de una variable global que apunta a un puerto externo (volatile unsigned char
*puerto=0x30;).
3.5
Operadores
Los operadores son palabras o símbolos que hacen que un programa actúe sobre las
variables.
En C existen seis tipos de operadores. Aritméticos, relacionales, de asignación, lógico,
de dirección y de movimiento.
3.6
Sentencias
Una sentencia es una expresión en C donde se esperan unas consecuencias,
normalmente son asignaciones, operaciones, llamadas a funciones, etc.
3.7
Macros del preprocesador
Una macro es una codificación de instrucciones que implican una o varias acciones. El
preprocesador toma como entrada el programa fuente en C antes que el compilador y
ejecuta todas las macros que encuentra.


4 TIPOS
Cuando en C, se dice que un objeto es de un tipo, se quiere decir que ese objeto
pertenece a un conjunto específico de valores con los cuales se pueden realizar un
conjunto de operaciones también determinadas.
Existen cinco tipos básicos: carácter, entero, coma flotante, coma flotante de doble
precisión y void.
Los demás tipos se basan en alguno de estos tipos básicos. El tamaño y el rango de estos
tipos de datos varían con cada tipo de procesador y con la implementación del
compilador de C.
El tipo void, o bien declara explícitamente una función como que no devuelve valor
alguno, o bien crea punteros genéricos.
La siguiente tabla muestra todas las combinaciones que se ajustan al estándar ANSI
junto con sus rangos mínimos y longitudes aproximadas en bits.

                                Tamaño en bits                    Rango
Char                                         8                      127 a 127
unsigned char                            8                      0 a 255
signed char                               8                      -127 a 127
int                                           16                    -32767 a 32767
unsigned int                              16                    0 a 65535
signed int                                 16                    -32767 a 32767
short int                                   16                    -32767 a 32767
unsigned short int                      16                    0 a 65535
signed short int                         16                    -32767 a 32767
long int                                    32                    -2147483647 a 2147483647
signed long int                          32                    -2147483647 a 2147483647
unsigned long int                       32                    0 a 4294967295
float                                         32                    seis dígitos de precisión
doublé                                     64                    diez dígitos de precisión
long doublé                               64                    diez dígitos de precisión



2 comentarios:

  1. Revisar esta unidad y apoyar sus estudios con mas documentacion en internet.


    Sólo hay un bien: el conocimiento. Sólo hay un mal: la ignorancia.
    Enviar frase
    Sócrates

    ResponderEliminar