PLF - Unidad 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Unidad 1: Conceptos fundamentales

Cada lenguaje de programacin es una creacin y como tal ha sido cuidadosamente diseado.
Algunos lenguajes han sido diseados por personas nicas, como por ejemplo Pascal. Otros, han sido
diseados por un grupo grande de personas, tales como PL/l y Ada. La experiencia sugiere que
aquellos lenguajes diseados por personas nicas o grupos pequeos, tienden a ser ms compactos y
coherentes que aquellos lenguajes diseados por grandes grupos.
Un lenguaje de programacin, digno de su nombre, debe reunir ciertos requisitos.
El lenguaje de programacin debe ser universal. Es decir, cualquier problema debe tener una solucin
que puede ser programada en el lenguaje y dicha solucin ser implementada en cualquier computador.
Este requisito es uno de los ms fuertes y pocos lenguajes lo poseen. Se dice que cualquier lenguaje
en el cual pueden definirse funciones recursivas se considera universal. De otro lado, un lenguaje sin
recursin ni iteracin no puede ser universal. Existen ciertos lenguajes de aplicacin que no son
universales, pero s podran ser razonablemente descritos as mismos, como lenguajes de
programacin.

1.1.- Estilos de Programacin


Estilo de programacin (tambin llamado estndares de cdigo o convencin de cdigo) es un trmino
que describe convenciones para escribir cdigo fuente en ciertos lenguajes de programacin.
El estilo de programacin es frecuentemente dependiente del lenguaje de programacin que se haya
elegido para escribir. Por ejemplo el estilo del lenguaje de programacin C variar con respecto al del
lenguaje BASIC.
Estilo K&R es el ms utilizado en el lenguaje C y PHP, el estilo fue llamado de esta forma
porque fue usado por Kernighan y Ritchies en su libro The C Programming Lenguage.
Estilo Allman fue definido por Eric Allman, se trata de crear una nueva lnea para las llaves,
e identar el cdigo debajo de ellas.
Estilo BSD KNF tambin conocido como estilo Kernel Normal From, es la manera ms usada
para el cdigo de la distribucin del software del sistema operativo de Berkeley.
Estilo Whitesmiths tambin llamado estilo wishart, se coloca las llaves asociadas con la
instrucciones de control identada.
Estilo GNU este coloca una llave sobre la lnea las llaves son identadas por 2 espacios y el
cdigo que contiene identada por 2 espacios adicionales.
Diferentes tipos de paradigmas de programacin
Un paradigma de programacin es una propuesta tecnolgica que es adoptada por una comunidad de
programadores cuyo ncleo central es incuestionable en cuanto a que unvocamente trata de resolver
uno o varios problemas claramente delimitados. La resolucin de estos problemas debe suponer
consecuentemente un avance significativo en al menos un parmetro que afecte a la ingeniera de
software. Tiene una estrecha relacin con la formalizacin de determinados lenguajes en su momento
de definicin. Un paradigma de programacin est delimitado en el tiempo en cuanto a aceptacin y
uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o
totalmente.

Por ejemplo:
Probablemente el paradigma de programacin que actualmente es el ms usado a todos los niveles es
la orientacin a objeto. El ncleo central de este paradigma es la unin de datos y procesamiento en
una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto".
Tradicionalmente datos y procesamiento se han separado en reas diferente del diseo y la
implementacin de software. Esto provoc que grandes desarrollos tuvieran problemas de fiabilidad,
mantenimiento, adaptacin a los cambios y escalabilidad. Con la orientacin a objetos y
caractersticas como el encapsulado, polimorfismo o la herencia se permiti un avance significativo
en el desarrollo de software a cualquier escala de produccin.
Tipos de paradigmas de programacin
Programacin Imperativa
La programacin imperativa, en contraposicin a la programacin declarativa es un paradigma de
programacin que describe la programacin en trminos del estado del programa y sentencias que
cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al
computador cmo realizar una tarea.
La implementacin de hardware de la mayora de computadores es imperativa; prcticamente todo el
hardware de los computadores est diseado para ejecutar cdigo de mquina, que es nativo al
computador, escrito en una forma imperativa. Esto se debe a que el hardware de los computadores
implementa el paradigma de las Mquinas de Turing. Desde esta perspectiva de bajo nivel, el estilo
del programa est definido por los contenidos de la memoria, y las sentencias son instrucciones en el
lenguaje de mquina nativo del computador (por ejemplo el lenguaje ensamblador).
Los lenguajes imperativos de alto nivel usan variables y sentencias ms complejas, pero an siguen
el mismo paradigma. Las recetas y las listas de revisin de procesos, a pesar de no ser programas de
computadora, son tambin conceptos familiares similares en estilo a la programacin imperativa; cada
paso es una instruccin, y el mundo fsico guarda el estado (Zoom).
Programacin lgica
La programacin lgica consiste en la aplicacin del corpus de conocimiento sobre lgica para el
diseo de lenguajes de programacin; no debe confundirse con la disciplina de la lgica
computacional.
La programacin lgica es un tipo de paradigmas de programacin dentro del paradigma de
programacin declarativa. El resto de los subparadigmas de programacin dentro de la programacin
declarativa son: programacin funcional, programacin basada en restricciones, programas DSL (de
dominio especfico) e hbridos. La programacin lgica gira en torno al concepto de predicado, o
relacin entre elementos. La programacin funcional se basa en el concepto de funcin (que no es
ms que una evolucin de los predicados), de corte ms matemtico.
Programacin funcional
En ciencias de la computacin, la programacin funcional es un paradigma de programacin
declarativa basado en la utilizacin de funciones aritmticas que no maneja datos mutables o de
estado. Enfatiza la aplicacin de funciones, en contraste con el estilo de programacin imperativa,

que enfatiza los cambios de estado. La programacin funcional tiene sus races en el clculo lambda,
un sistema formal desarrollado en los 1930s para investigar la definicin de funcin, la aplicacin de
las funciones y la recursin. Muchos lenguajes de programacin funcionales pueden ser vistos como
elaboraciones del clculo lambda.
Los lenguajes de programacin funcional, especialmente los que son puramente funcionales,
han sido enfatizados en el ambiente acadmico principalmente y no tanto en el desarrollo de software
comercial. Sin embargo, lenguajes de programacin importantes tales como Scheme, Erlang,
Objective Caml y Haskel, han sido utilizados en aplicaciones comerciales e industriales por muchas
organizaciones. La programacin funcional tambin es utilizada en la industria a travs de lenguajes
de dominio especfico como R (estadstica), Mathematica (matemticas simblicas), J y K (anlisis
financiero), F# en Microsoft.NET y XSLT (XML). Lenguajes de uso especfico usados comnmente
como SQL y Lex/Yacc, utilizan algunos elementos de programacin funcional, especialmente al
procesar valores mutables. Las hojas de clculo tambin pueden ser consideradas lenguajes de
programacin funcional.
Programacin declarativa
La Programacin Declarativa, es un paradigma de programacin que est basado en el desarrollo de
programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones,
restricciones, ecuaciones o transformaciones que describen el problema y detallan su solucin. La
solucin es obtenida mediante mecanismos internos de control, sin especificar exactamente cmo
encontrarla (tan slo se le indica a la computadora que es lo que se desea obtener o que es lo que se
est buscando). No existen asignaciones destructivas, y las variables son utilizadas con Transparencia
referencial
Programacin estructurada
La programacin estructurada es una forma de escribir programas de ordenador (programacin de
computadora) de manera clara. Para ello utiliza nicamente tres estructuras: secuencia, seleccin e
iteracin; siendo innecesario el uso de la instruccin o instrucciones de transferencia incondicional
(GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN).
Programacin dirigida por eventos
La programacin dirigida por eventos es un paradigma de programacin en el que tanto la estructura
como la ejecucin de los programas van determinados por los sucesos que ocurran en el sistema,
definidos por el usuario o que ellos mismos provoquen.
Para entender la programacin dirigida por eventos, podemos oponerla a lo que no es: mientras en la
programacin secuencial (o estructurada) es el programador el que define cul va a ser el flujo del
programa, en la programacin dirigida por eventos ser el propio usuario o lo que sea que est
accionando el programa el que dirija el flujo del programa. Aunque en la programacin secuencial
puede haber intervencin de un agente externo al programa, estas intervenciones ocurrirn cuando el
programador lo haya determinado, y no en cualquier momento como puede ser en el caso de la
programacin dirigida por eventos.
Un ejemplo claro lo tenemos en los sistemas de programacin Lxico y Visual Basic, en los que a
cada elemento del programa (objetos, controles, etctera) se le asignan una serie de eventos que
generar dicho elemento, como la pulsacin de un botn del ratn sobre l o el redibujado del control.

La programacin dirigida por eventos es la base de lo que llamamos interfaz de usuario, aunque puede
emplearse para desarrollar interfaces entre componentes de Software como mdulos del ncleo
tambin.
En los primeros tiempos de la computacin, los programas eran secuenciales, tambin llamados
Batch. Un programa secuencial arranca, lee parmetros de entrada, procesa estos parmetros, y
produce un resultado, todo de manera lineal y sin intervencin del usuario mientras se ejecuta.
Programacin modular
La programacin modular es un paradigma de programacin que consiste en dividir un programa en
mdulos o subprogramas con el fin de hacerlo ms legible y manejable. Se presenta histricamente
como una evolucin de la programacin estructurada para solucionar problemas de programacin
ms grandes y complejos de lo que sta puede resolver.
Al aplicar la programacin modular, un problema complejo debe ser dividido en varios subproblemas
ms simples, y estos a su vez en otros subproblemas ms simples. Esto debe hacerse hasta obtener
subproblemas lo suficientemente simples como para poder ser resueltos fcilmente con algn
lenguaje de programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers anlisis
descendente (Top-Down).
Un mdulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se
divide el problema complejo original. Cada uno de estos mdulos tiene una tarea bien definida y
algunos necesitan de otros para poder operar. En caso de que un mdulo necesite de otro, puede
comunicarse con ste mediante una interfaz de comunicacin que tambin debe estar bien definida.
Si bien un mdulo puede entenderse como una parte de un programa en cualquiera de sus formas y
variados contextos, en la prctica es comn representarlos con procedimientos y funciones.
Adicionalmente, tambin pueden considerarse mdulos las libreras que pueden incluirse en un
programa o, en programacin orientada a objetos, la implementacin de un tipo de dato abstracto
Programacin orientada a objetos
La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de
programacin que usa objetos y sus interacciones, para disear aplicaciones y programas
informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y
encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad,
existe variedad de lenguajes de programacin que soportan la orientacin a objetos.
Programacin con restricciones
La Programacin con restricciones es un paradigma de la programacin en informtica, donde las
relaciones entre las variables son expresadas en trminos de restricciones (ecuaciones). Actualmente
es usada como una tecnologa de software para la descripcin y resolucin de problemas
combinatorios particularmente difciles, especialmente en las reas de planificacin y programacin
de tareas (calendarizacin).
Este paradigma representa uno de los desarrollos ms fascinantes en los lenguajes de programacin
desde 1990 y no es sorprendente que recientemente haya sido identificada por la ACM (Asociacin
de Maquinaria Computacional) como una direccin estratgica en la investigacin en computacin.

Se trata de un paradigma de programacin basado en la especificacin de un conjunto de restricciones,


las cuales deben ser satisfechas por cualquier solucin del problema planteado, en lugar de especificar
los pasos para obtener dicha solucin.
La programacin con restricciones se relaciona mucho con la programacin lgica y con la
investigacin operativa. De hecho cualquier programa lgico puede ser traducido en un programa con
restricciones y viceversa. Muchas veces los programas lgicos son traducidos a programas con
restricciones debido a que la solucin es ms eficiente que su contraparte.
La diferencia entre ambos radica principalmente en sus estilos y enfoques en el modelado del mundo.
Para ciertos problemas es ms natural (y por ende ms simple) escribirlos como programas lgicos,
mientras que en otros es ms natural escribirlos como programas con restricciones.
El enfoque de la programacin con restricciones se basa principalmente en buscar un estado en el
cual una gran cantidad de restricciones sean satisfechas simultneamente. Un problema se define
tpicamente como un estado de la realidad en el cual existe un nmero de variables con valor
desconocido. Un programa basado en restricciones busca dichos valores para todas las variables.
Programacin orientada a componentes
La programacin orientada a componentes (que tambin es llamada basada en componentes) es una
rama de la ingeniera del software, con nfasis en la descomposicin de sistemas ya conformados en
componentes funcionales o lgicos con interfaces bien definidas usadas para la comunicacin entre
componentes.
Se considera que el nivel de abstraccin de los componentes es ms alto que el de los objetos y por
lo tanto no comparten un estado y se comunican intercambiando mensajes que contienen datos.
Programacin Orientada a Aspectos
La Programacin Orientada a Aspectos (POA) es un paradigma de programacin relativamente
reciente cuya intencin es permitir una adecuada modularizacin de las aplicaciones y posibilitar una
mejor separacin de incumbencias. Gracias a la POA se pueden encapsular los diferentes conceptos
que componen una aplicacin en entidades bien definidas, eliminando las dependencias entre cada
uno de los mdulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la
dispersin del cdigo y las implementaciones resultan ms comprensibles, adaptables y reusables.
Varias tecnologas con nombres diferentes se encaminan a la consecucin de los mismos objetivos y
as, el trmino POA es usado para referirse a varias tecnologas relacionadas como los mtodos
adaptativos, los filtros de composicin, la programacin orientada a sujetos o la separacin
multidimensional de competencias.
1.2 Evaluacin de expresiones
Una expresin es una combinacin de operandos y operadores. La evaluacin de una expresin
consiste en reducirla, esto es, realizar todas las operaciones contenidas en ella para obtener un valor
final. Para evaluar una expresin es necesario conocer la prioridad de los operadores, con lo cual se
puede determinar cul operacin se va a realizar antes que las dems.
Una expresin entre parntesis se evala primero que las dems. Si hay parntesis se evala primero
la expresin contenida en los parntesis ms internos.

Son el mtodo fundamental que tiene el programador de expresar computaciones. Las expresiones
estn compuestas de operadores, operandos, parntesis y llamadas a funciones. Los operadores
pueden ser:
Unarios: Cuando tan solo tienen un operando. Son operadores prefijos.
Binarios: 2 Operandos. Son operadores infijos.
Ternarios: 3 operandos.
Orden de la evaluacin de los operadores.
El orden en que se evalan los operandos viene dado por unas reglas:
Reglas de procedencia
Reglas de asociatividad
Uso de parntesis
Evaluacin de expresiones
Toda expresin regresa un valor. Si hay ms de un operador, se evalan primero operadores mayor
precedencia, en caso de empate, se aplica regla de asociatividad. Para evaluar una expresin no hay
que hacer nada del otro mundo, pues es bien sencillo. Slo hay que saber sumar, restar, si un nmero
es mayor que otro. Hay tres reglas de prioridad a seguir para evaluar una expresin:
Primero, los parntesis (si tiene)
Despus, seguir el orden de prioridad de operadores
Por ltimo, si aparecen dos o ms operadores iguales, se evalan de izquierda a derecha.
Las expresiones son secuencias de constantes y/o variables separadas por operadores vlidos. Se
puede construir una expresin vlida por medio de:
1. Una sola constante o variable, la cual puede estar precedida por un signo + .
2. Una secuencia de trminos (constantes, variables, funciones) separados por operadores.
Adems debe considerarse que:
Toda variable utilizada en una expresin debe tener un valor almacenado para que la
expresin, al ser evaluada, d como resultado un valor.
Cualquier constante o variable puede ser reemplazada por una llamada a una funcin.
Como en las expresiones matemticas, una expresin en Pascal se evala de acuerdo a la
precedencia de operadores
JERARQUA DE OPERADORES
El orden general de evaluacin de los operadores de una expresin va de izquierda a derecha, con la
excepcin de las asignaciones que lo hacen de derecha a izquierda. Podemos seguir las siguientes tres
reglas de evaluacin de expresiones:
(Regla 1) En todas las expresiones se evalan primero las expresiones de los parntesis ms
anidados (interiores unos a otros); y stos modifican la prioridad segn la cantidad de stos,
los cuales tienen que estar balanceados (el mismo nmero de parntesis que abren debe ser
igual al nmero de los parntesis que cierran).
(Regla 2) Todas las expresiones se evalan tomando en cuenta la jerarqua de los operadores.
(Regla 3) Todas las expresiones se evalan de izquierda a derecha.

1.3 Definicin de funciones


Las funciones se crearon para evitar tener que repetir constantemente fragmentos de cdigo. Una
funcin podra considerarse como una variable que encierra cdigo dentro de s. Por lo tanto cuando
accedemos a dicha variable (la funcin) en realidad lo que estamos es diciendo al programa que
ejecute un determinado cdigo predefinido anteriormente.
Un problema complejo se puede dividir en pequeos subproblemas ms sencillos. Estos
subproblemas se conocen como Mdulos y su complementacin en un lenguaje se llama
subprograma (procedimientos y funciones).
Un subprograma realiza las mismas acciones que un programa, sin embargo, un subprograma lo
utiliza solamente un programa para un propsito especfico.
Un subprograma recibe datos de un programa y le devuelve resultados (el programa llama o
invoca al subprograma, este ejecuta una tarea especfica y devuelve el control al programa que
lo llamo).
Definicin de funciones: Una definicin de funcin se presenta de la siguiente manera:
Funcin nombre_funcion (p1, p2, , pn)
Inicio
Bloque de instrucciones
Fin
Donde:

Funcin Es la palabra clave que nos indica una definicin de funcin.


Nombre_funcion .. Es el identificador con el cual se reconoce a la funcin en el cuerpo del
algoritmo principal.
P1,p2,,pn Es el grupo de parmetros que define a la funcin.

Llamado a una funcin


Cuando definimos una funcin solo le indicamos al algoritmo que esta funcin existe, pero una
definicin de funcin no implica la realizacin de las instrucciones que la constituyen. Para hacer uso
de una funcin, el algoritmo principal la debe llamar. Por ejemplo:
Funcin F(X)
Inicio
F = X /(1 + X^2)
Fin
Inicio
Imprimir Este es el algoritmo principal
Leer N
R = F(N) llamado de la funcin
Imprimir El resultado de la funcin es:,R

Fin

1.4 Disciplina de tipos


Los tipos se infieren, es decir se comprueban, de forma esttica, en tiempo de compilacin. En los
lenguajes de programacin con disciplina de tipos, cada tipo representa una coleccin de valores o
datos similares. El conocer los tipos de las funciones ayuda a documentar los programas y evitar
errores en tiempo de ejecucin.
Un lenguaje tiene disciplina de tipos si los errores de tipos se detectan siempre es necesario
determinar los tipos de todos los operandos, ya sea en tiempo de compilacin o de ejecucin.
En los lenguajes de programacin con disciplina de tipos, cada tipo representa una coleccin de
valores (datos) similares. Una funcin cuyo tipo sea A1 -> ... An -> espera n parmetros con tipos
A1, ... An y devuelve un resultado de tipo R. El conocer los tipos de las funciones ayuda a documentar
los programas y a evitar errores en tiempo de ejecucin.
Disciplina esttica de tipos: Los programas bien tipados se pueden conocer en tiempo de compilacin.
Un programa bien tipado se puede utilizar sin efectuar comprobaciones de tipo en tiempo de
ejecucin, estando garantizado que no se producirn errores de tipo durante el cmputo.

1.5 Tipos de datos


En lenguajes de programacin un tipo de dato es un atributo de una parte de los datos que indica a la
computadora (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar.
En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones sobre estos
valores. Casi todos los lenguajes de programacin explcitamente incluyen la notacin del tipo de
datos, aunque lenguajes diferentes pueden usar terminologa diferente. La mayor parte de los
lenguajes de programacin permiten al programador definir tipos de datos adicionales, normalmente
combinando mltiples elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato.
Por ejemplo, un programador puede crear un nuevo tipo de dato llamado "Persona" que especifica
que el dato interpretado como Persona incluir un nombre y una fecha de nacimiento.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy