Está en la página 1de 116

Universidad Nacional de Pilar

Facultad de Ciencias Aplicadas


Centro de Computación

Introducción a los
lenguajes de
Programación

Docente: Lic. Liz Violeta Ruiz Díaz

Tipos de
Paradigmas
• Capacitar a los estudiantes para entender los
lenguajes de programación desde diferentes
puntos de vista:

▫ según el modelo subyacente (paradigma)


▫ según las componentes fundamentales presentes
en todo lenguaje de programación
(estructuras de datos, modo de ejecución, ...)
▫ como objetos formales dotados de una estructura
(sintaxis) y un significado (semántica), según
diversos enfoques (diseñador, implementador,
programador)
• Al finalizar el curso, serán capaces de:
▫ diferenciar las características propias de los
principales paradigmas
▫ conocer las características deseables en un
lenguaje
▫ resolver un mismo problema en diferentes estilos
▫ escribir pequeños programas en cada lenguaje.
Problema:

Asunto o un conjunto de cuestiones que se plantean


para ser resueltas

Algoritmo:

Conjunto finito, y no ambiguo de reglas expresadas en un cierto


orden que, para unas condiciones iniciales, permiten resolver el
problema en un tiempo finito
Propiedades de los Algoritmos

• Propiedades que debe poseer todo buen algoritmo:

 Propiedad de finitud: un algoritmo siempre debe terminar.

 Propiedad de definitud: toda regla de un algoritmo debe definir perfectamente


la acción a desarrollar para poder aplicarla sin que pueda haber lugar a ambigüedad

 Propiedad de generalidad: un algoritmo no debe contentarse con resolver un


problema particular aislado sino, por el contrario, toda una clase de problemas para
los que los datos de entrada y los resultados finales pertenecen respectivamente a
conjuntos específicos

 Propiedad de eficacia: un algoritmo debe ser eficaz, es decir, todas las


operaciones a realizar deben ser lo bastante básicas para poder ser efectuadas de
modo exacto y en un intervalo de tiempo finito.
ALGORITMO DE EUCLIDES

Paso 1. Tomar el número mayor como dividendo y el


menor como divisor.
Paso 2. Hallar el resto de la división entera.
Paso 3. Si el resto es igual a 0 entonces ir al Paso 4.
En caso contrario, tomar el divisor como nuevo
dividendo y el resto como divisor y volver al Paso 2.
Paso 4. El m.c.d. es el divisor de la última división
• Ejercicio de clase: analicemos sus propiedades:
finitud, definitud, generalidad y eficacia
Ejercicio de clase: realizar el algoritmo que
determina si un número es par o no
PROGRAMA paridad
ENTORNO:
num <- 0
ALGORITMO:
Borrar_pantalla( )
ESCRIBIR "Introduce un n£mero: "
LEER num
SI num = int( num / 2 ) * 2 ENTONCES
ESCRIBIR "es par"
SINO
ESCRIBIR "es impar"
FINSI
FINPROGRAMA
Para poder expresar nuestros algoritmos de
forma que puedan ser reconocidos y ejecutados
en un ordenador necesitamos los lenguajes de
programación

Programa: expresión de un algoritmo en un


lenguaje artificial formalizado
CUESTIONES IMPORTANTES

• No existe un método universal que permita


resolver cualquier problema
• En general, la resolución de problemas es un
proceso creativo donde el conocimiento, la
habilidad y la experiencia juegan un papel
importante
• El proceder de manera sistemática (sobre todo
si se trata de problemas complejos) puede
ayudar en la resolución
EN SINTESIS OBTENEMOS
Un programa escrito en un lenguaje de programación
necesita pasar por un proceso de compilación,
interpretación o intermedio, es decir, ser traducido al
lenguaje de máquina para que pueda ser ejecutado por el
ordenador.
 
LENGUAJE DE PROGRAMACION

• Es una técnica de comunicación estilizada que


se utiliza para controlar el comportamiento de
una maquina (usualmente un computador)

• Como los lenguajes humanos, los lenguajes de


programación tienen reglas sintácticas y
semánticas para definir el significado
COMPOSICION DE LOS LENGUAJES DE
PROGRAMACIÓN
SINTAXIS: especifica cómo se pueden construir los programas en un
lenguaje de programación

– Permite sólo el uso de determinadas combinaciones de símbolos


seleccionados y palabras clave
– Ejemplo (en Modula-2):

WHILE <expresión_booleana> DO <grupo_de_sentencias>


END;

SEMÁNTICA: permite asignar, de alguna forma,

• un significado a cada tipo de construcción


• permitida en el lenguaje, para poder escribir
• programas en él e interpretar su significado
CARACTERÍSTICAS DE LOS LENGUAJES DE PROGRAMACIÓN

• Tipos de datos
• Estructuras de datos
• Instrucciones y Control de flujo
• Filosofía de diseño
• Compilación e Interpretación
TIPOS DE DATOS

• Internamente, todos los datos de los


computadores tradicionales están guardados
simplemente como ceros o unos(binario)
• Un solo valor en memoria puede ser
interpretado de múltiples formas:
10010110
“Hola”
Azul – Rojo – Verde
150
ESTRUCTURAS DE DATOS

• Variables 205

• Arreglos
2 9 3 0 5 1 6 9 3

3 6 2

• Listas

0 2 3 4 6 9
INSTRUCCIONES Y CONTROL DE FLUJO

int a = 0;
while (a!=10){
if (a==5){
cout << “La variable a va en 5”;
}
a++;
}
b=a
FILOSOFÍA DE DISEÑO

• Cada lenguaje se desarrolla de acuerdo a un


diseño especial o una filosofía
• Estos están ligados al paradigma de
programación a utilizar
• Se refiere a la forma de hacer las cosas
COMPILACIÓN E INTERPRETACIÓN

• INTERPRETES: analizan las instrucciones una


a una y las ejecutan directamente

• COMPILADORES: convierten el código fuente a


código de maquina para ser ejecutado
posteriormente
REALIZA UNA COMPARACION A MODO DE CARACTERISTICAS
PRINCIPALES ;
DEFINICION – FUNCION – VENTAJAS – DESVENTAJAS DE
COMPILACION
REQUISITOS DE UN LENGUAJE DE
PROGRAMACION

• Universal
• Natural (expresivo)
• Implementable
• Eficiente (escribir, compilar, ejecutar)
• Robusto
• Mantenible
ABSTRACCIONES
Con mucha frecuencia se utilizan los términos TDA y Abstracción de Datos de manera equivalente, y esto es debido a la
similitud e interdependencia de ambos. Sin embargo, es importante definir por separado los dos conceptos.

Los Lenguajes de Programación son lenguajes formados por diferentes métodos o funciones y que son llamados en el
orden en que el programa lo requiere, o el usuario lo desea.
La abstracción de datos consiste en ocultar las características de un objeto y obviarlas, de manera que solamente
utilizamos el nombre del objeto en nuestro programa. Esto es similar a una situación de la vida cotidiana.

Cuando yo digo la palabra “perro”, usted no necesita que yo le diga lo que hace el perro. Usted ya sabe la forma que tiene
un perro y también sabe que los perros ladran. De manera que yo abstraigo todas las características de todos los perros en
un solo término, al cual llamo “perro”. A esto se le llama ‘Abstracción’ y es un concepto muy útil en la programación, ya que
un usuario no necesita mencionar todas las características y funciones de un objeto cada vez que éste se utiliza, sino que
son declaradas por separado en el programa y simplemente se utiliza el término abstracto (“perro”) para mencionarlo.
En el ejemplo anterior, “perro” es un Tipo de Dato Abstracto y todo el proceso de definirlo, implementarlo y mencionarlo es a
lo que llamamos Abstracción de Datos.
Vamos a poner un ejemplo real de la programación. Supongamos que en algún Lenguaje de Programación, un pequeño
programa saca el área de un rectángulo de las dimensiones que un usuario decida. Pensemos también que el usuario
probablemente quiera saber el área de varios rectángulos. Sería muy tedioso para el programador definir la multiplicación
de ‘base’ por ‘altura’ varias veces en el programa, además que limitaría al usuario a sacar un número determinado de áreas.
Por ello, el programador puede crear una función denominada ‘Área’, la cual va a ser llamada el número de veces que sean
necesitadas por el usuario y así el programador se evita mucho trabajo, el programa resulta más rápido, más eficiente y de
menor longitud. Para lograr esto, se crea el método Área de una manera separada de la interfaz gráfica presentada al
usuario y se estipula ahí la operación a realizar, devolviendo el valor de la multiplicación. En el método principal solamente
se llama a la función Área y el programa hace el resto.
ABSTRACCIONES

ABSTRACCIONES DE DATOS
EXPLICA EN
• tipos básicos de datos: enteros, reales, booleanos, CLASE CADA
• caracteres, punteros UNO DE LOS
• estructurados: matrices, registros TIPOS DE DATOS
• unidades: soporte a tipos abstractos de datos, módulos,
• paquetes, clases

ABSTRACCIONES DE CONTROL EXPLICA EN


CLASE CADA
• básicas: asignación, ir-a, secuencia UNO DE LOS
• estructuradas: if-then-else, bucles, procedimientos TIPOS DE
• (funciones) ABSTRACCIONES
• unidades: unidades de compilación separada, módulos, DE CONTROL
• paquetes, tareas concurrentes
CLASIFICACION DE LOS LENGUAJES
DE PROGRAMACION

• LENGUAJES DE BAJO NIVEL

 Orientado a instrucciones que el procesador


del ordenadores capaz de entender y ejecutar
 Escrito en binario
 Ejemplo: 1110 0010 0010 0001 0000 0000
0010 0000
• LENGUAJE ENSAMBLADOR

 Utiliza nombres de instrucciones (ADD, LOAD,


etc)
 Todavía muy cercano a la ejecución de la
máquina
 Ejemplo: sub.f c a b
LENGUAJES DE ALTO NIVEL

 Abstraen el problema a resolver de la máquina


y procesador concretos que lo van a ejecutar.
 Lenguajes científicos
 Lenguajes comerciales
 Lenguajes híbridos
 Ejemplo: c = a- b
 Ejemplos: C, Pascal, C++, Java, etc.
• INVESTIGA: Niveles de los lenguajes de programación:

TEMA= Lenguaje Maquina – Lenguaje Ensamblador – Lenguaje de Alto Nivel.


(CARACTERISTICAS, VENTAJAS, INCONVENIENTES)
LA TRADUCCION DE UN LENGUAJE - PASOS DE COMPILACION(Material
de apoyo proporcionado + investigación realizada)
HISTORIA DE LOS LENGUAJES DE
PROGRAMACION

1 Hija de Lord Byron


HISTORIA DE LOS PRIMEROS LENGUAJES
Ejemplos de lenguajes de
programación
HISTORIA

La notación BNF suele usarse para describir sintácticamente lenguajes de


programación. Se remonta al año 60, en que John Backus la usó para
describir el lenguaje Algol. De hecho, es el acrónimo de Backus Naur Form,
en homenaje a la destacada contribución de Backus (coordinador del grupo
que desarrolló el lenguaje FORTRAN), y de Peter Naur (coordinador del
grupo que desarrolló el lenguaje Algol) al diseño de lenguajes de
programación.
GRAMATICA BNF
 La definición formal de la sintaxis de un LP se conoce comúnmente
como gramática.

Una gramática se compone de un conjunto de reglas


(producciones) que definen las palabras (elementos léxicos) y
unidades sintácticas. Una gramática formal es una que usa una
notación definida (o metalenguaje) de manera estricta.
 Cuando se considera la estructura de una oración en Español, se le describe por lo
general como una secuencia de categorías:
  sujeto | verbo | complemento
 Podemos decir que una oración puede ser una oración declarativa o
una oración interrogativa, lo que denotamos:
<oración> ::= <declarativa> | <interrogativa>
Una gramática formal es un conjunto de reglas para reescribir cadenas de caracteres, junto con un símbolo inicial desde
el cual debe comenzar la reescritura. Por lo tanto, una gramática formal generalmente se piensa como una generadora
de lenguajes. Sin embargo, a veces también puede ser usada como la base para un "reconocedor": una función que
determina si una cadena cualquiera pertenece a un lenguaje o es gramaticalmente incorrecta.
• donde "::=" significa "se define cómo" y "|" significa "o"; comparándolo con el
lenguaje usado en las gramáticas formales, las palabras encerradas entre <palabra>
son categorías sintácticas o no terminales, es decir deben ser definidas; "::=" equivale
a "->" y "|" tiene el mismo significado. Así, por ejemplo, en gramáticas formales:
• O -> D | IS -> S V CS -> A NI -> ¿ V S P ? en nuestro metalenguaje:
• <oración> ::= <declarativa> | <interrogativa><declarativa> ::= <sujeto> <verbo>
<complemento><sujeto> ::= <artículo> <nombre>:<interrogativa> ::= ¿ <verbo>
<sujeto> <predicado> ?: Esta notación específica se conoce como BNF (Backus Naur
Form) desarrollada por John Backus alrededor de 1960 para la definición de ALGOL.
• Metalenguajes: Son lenguajes que sirven para definir otros lenguajes, cuyo objetivo es
llevar a cabo la estructuración de textos mediante un conjunto de etiquetas, de manera tal,
que puedan ser entendidos por los humanos y también procesado por los ordenadores.
Estos lenguajes están teniendo un gran auge sobre la plataforma de Internet, en la cual
son usados para la creación de documentos, y el intercambio o transferencia de
información. Ejemplo: como XML, SGML y HTML
NOCIONES BÁSICAS DE COMPILADORES:
El modelo básico de compilación: Analísis y Síntesis

EL MODELO BÁSICO DE COMPILACIÓN:


ANALÍSIS Y SÍNTESIS
MODELO DE COMPILACION: Análisis
 
• ANALISIS DEL LEXICO:
• El Analizador de Léxico lee los caracteres de entrada y produce como salida una secuencia de fichas que
serán, luego, analizadas por el Parser.
• Tipos de fichas (tokens):
▫ palabras claves,
▫ identificadores,
▫ constantes,
▫ cadenas de caracteres,
▫ operadores y
▫ símbolos especiales.
• El análizador del léxico realiza:
• 1) Eliminación de blancos, comentarios y fines de linea de la cadena (sentencia) de entrada.
• 2) Reconocimiento de las fichas usando un reconocedor de patrones (RP)
• • RP es un programa que implementa un automata finito que reconoce si una cadena pertenece o no un lenguaje.
• • Se requiere una gramática del léxico para hacer el reconocimiento.
 
• 3) Actualización de la Tabla de Símbolos
 
• La TS almacena cada identificador usado en el programa agregando información sobre su tipo, su uso y
su posición en memoria.
ANALISIS DE LA SINTAXIS:

• El Analizador de Sintaxis (PARSER) determina si un


programa es sintácticamente correcto, esto es, cumple con
las reglas de su sintaxis.
• La sintaxis de un lenguaje debe estar definida formalmente y
con precisión mediante una Gramática de Contexto Libre
(p.ej. BNF)
• Las fichas de cada sentencia se agrupan en frases
gramáticales representadas mediante:
» árboles de derivación (parse tree) ó
» arboles de sintaxis abstracta (syntax tree).
• Los árboles son usados para determinar si la sentencia es
gramaticalmente correcta.
Ejemplo:
Dada la gramática siguiente en BNF:
<exp> ::= <exp> <op> <exp> _
( <exp> ) _ - <exp> _ id
<op> := + _ - _ * _ / _ **
su correspondiente arbol de derivación para la secuencia de tokens:
id + id * id
  es el siguiente:
ANALISIS DE LA SEMANTICA:

• El Analizador de Semántica verifica que el


programa esté libre de errores semánticos.  
• • Realiza la VERIFICACION ESTATICA ( a
tiempo de compilación ) de:
• Tipos (StaticType Checking):
• » El verificador de tipos (VT) asegura que el tipo
de un constructo sea el que su contexto
requiere.
• » Debe verificar, entre otros, que:
• - un operador se le aplique a un operando (u operandos) compatible(s),
• - la de-referencia se aplique sólo a apuntadores,
• - la indexación sea hecha sólo en arreglos,
• - la invocación a una función tenga los argumentos correctos en tipo, orden y
número.
• » Un lenguaje es fuertemente basado en tipos (strongly typed) sí su compilador
puede garantizar que los programas por el compilados ejecutarán sin errores de
tipos.
• » No todos los chequeos pueden ser hechos a tiempo de compilación. P.ej. el
compilador no puede garantizar que el índice de un arreglo esté dentro de su rango.
• » EL VT puede también realizar la COERCION (conversión de tipos; p.ej., <entero>
+ <real>)
• » El VT es, también, responsable de resolver la sobrecarga de operadores y
funciones polimorficas.
• Flujos de Control: Verifica que la transferencia del flujo de control sea correcta.
• Unidad: Verifica, por ejemplo, que:
» un mismo identificador no sea declarado más de una
vez o que las etiquetas de un CASE sean distintas.

GENERACION DE CODIGO INTERMEDIO:


• El Generador de Código Intermedio genera una
representación intermedia (código para una
máquina abstracta), generalmente independiente
de la máquina, la cual facilita la posterior
conversión al código objeto.
• Algunos tipos de representaciones
intermedias:
• » Código de tres direcciones:
• tiene un máximo de tres operandos (ver
diagrama arriba)
• Formato: <id> := <id> <op> <id>
• » Código Byte:
• usada por el compilador de Java
» Notación postfija:
• Representación lineal del arbol de sintaxis.
• Ejemplo: la sentencia a:= b * c se representaría
como:
• id1 id2 id3 * assign.
Modelo de Compilación: Síntesis

Optimización del Código:


Mejora el código intermedio a fin de producir un
código objeto más eficiente
• Involucra el análisis del flujo de control, el análisis
del flujo de datos y la transformación del código.
• Transformaciones típicas:
• » Subexpresiones comunes: Las subexpresiones
comunes sólo requieren ser computadas una vez
si los valores de sus variables se mantienen
invariantes.
• » Optimización de lazos: Consiste mover las
expresiones invariantes de un lazo y ejecutarlas
antes de entrar a él.
GENERACION DEL CODIGO OBJETO:

• Se produce la conversión del código


intermedio optimizado al código objeto.
• El código objeto puede ser escrito en:
• L. de máquina absoluto
• L. de máquina relocalizable
• L. ensamblador
• L. de alto nivel.
Gramáticas de Contexto Libre

• La sintaxis de un LP se define formalmente mediante


gramáticas independientes del contexto.
• La gramática determina si una sentencia de un lenguaje es
sintácticamente correcta o no.
• • La gramática de un LP es requerida para:
• Conocer el LP y determinar si las sentencias de un programa están
bien formadas.
• Realizar el análisis léxico y sintáctico de un programa durante su
compilación.
• » Sólo a través de una gramática puede un compilador aplicar las
reglas sintácticas y determinar si un programa está bien formado o
no.
• Ejemplo:
• Las definiciones de identificador y número entero se expresan en la
gramática BNF (Backus-Naur Form) como sigue:
• <identificador> ::= <letra> {<letra> _ <digito>}
• <entero> ::= [ + _ - ] <digito> {<digito>}
• <digito> ::= 0 _ 1 _ 2 _ 3 _ 4 _ 5 _ 6 _ 7 _ 8 _ 9
• <letra> ::= a _ b _ c _ ... _ z _ A _ B _ ..._ Z
•  » Donde los símbolos de este meta-lenguaje significan lo siguiente:
• ::= significa "Definición: el símbolo no-terminal de la izq. se define como lo
• indica la expresión de la derecha"
• { } Repetición de 0 ó más de los símbolos encerrados entre llaves
• [ ] Opcionalidad: los símbolos internos al corchete son opcionales"
• _ O exclusivo: seleccione entre el símbolo antecesor ó el sucesor de _.
• < > Símbolo no-terminal de la gramática"
• Cualquier otro símbolo diferente a los anteriores es un símbolo terminal.
Ejemplo:
a0135 es un identificador; mientras que 0135 es un entero.

• Una gramática define un LP y nos permite determinar si una cadena de


caracteres es un símbolo o sentencia válida para un lenguaje L
determinado.
• El léxico de un LP consta de un conjunto de componentes denominados
símbolos terminales o tokens.
• Los símbolos terminales se definen a partir de constructores o símbolos no-
terminales y un conjunto de reglas sintácticas denominadas producciones .
Existen muchas variantes de EBNF. Nosotros describiremos, brevemente, la utilizada en el libro
“Pascal, Manual
del Usuario e Informe” [K. Jensen y N. Wirth]. En ella, los no terminales se representan como
secuencias de
símbolos, los terminales entre “” y el metasímbolo de reemplazo es =. Aparece el punto (.) como un
metasímbolo
para indicar el final de cada regla. Por ejemplo, la siguiente EBNF permite generar números
naturales.
natural = digit | digit natural .
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" .
También introduce nuevos metasímbolos como {}, que indica que lo que está encerrado entra dichas
llaves puede
repetirse un número indefinido de veces, inclusive cero. Por ejemplo, las reglas siguientes generan lo
mismo que las
dos anteriores:
natural = digit {digit}.
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" .

Asimismo se pueden usar los metasímbolos [ y ] para indicar que lo que se encuentra adentro es
opcional, es
decir, puede estar como no estar. Por ejemplo las siguientes reglas permiten generar números
enteros con o sin
signo:
entero = [“-”] natural.
natural = digit {digit}.
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" .
Entre todas las maneras posibles para programar
la resolución de un
problema, ¿cuál elegir? ¿qué es quema seguir?

PARADIGMA
INSERCION DE LOS PARADIGMAS EN EL SABER
HUMANO

Pues bién cada una de nuestras actividades diarias está


guiada por un paradigma. El término paradigma que
según la historia anterior seria un modelo de
comportamiento a imitar, se remonta a la época de los
griegos, quienes le denominaban "Parâdeima",
actualmente, según el diccionario al que consultes
encontarás entre otros muchos, que el paradigma es

. . . Ejemplo o modelo a seguir. Entidad ejemplar entre un


conjunto. Modelo básico de diseño y desarrollo de
programas. Forma rectora de pensar, formular e interpretar
las soluciones de un problema. Modelo conceptual que guía
un proceso de diseño y determina la forma final de un
programa.
EL USO DE LOS PARADIGMAS DE LA
PROGRAMACION EN LA ACTUALIDAD

En nuestro contexto, el paradigma debe ser concebido como una forma


aceptada de resolver un problema en la ciencia, que más tarde es utilizada
como modelo para la investigación y la formación de una teoría. También, el
paradigma debe ser concebido como un conjunto de métodos, reglas y
generalizaciones utilizadas conjuntamente por aquellos entrenados para
realizar el trabajo científico de investigación. ES DECIR,

los PARADIGMAS DE PROGRAMACIÓN nos indican las diversas formas


que, a lo largo de la evolución de los lenguajes, han sido aceptadas como
estilos para programar y para resolver los problemas por medio de una
computadora.
Así, a medida que fueron avanzando las ciencias de la computación surgen lo
que actualmente definimos como “paradigmas”
El PARADIGMA es
Un paradigma de programación es
MODELO un modelo básico de diseño e
CONCEPTUAL implementación de programas. Un
modelo que permite desarrollar
programas conforme a ciertos
que guía un principios o fundamentos
específicos que se aceptan como
válidos. En otras palabras, es una
colección de modelos conceptuales
| PROCESO DE DISEÑO | que juntos modelan el proceso de
diseño, orientan la forma de pensar
y solucionar los problemas y, por lo
tanto, determinan la estructura final
y determina un de un programa.

FORMATO DE PROGRAMA
En Síntesis
Podemos decir que, los paradigmas son marcos de
referencia que imponen reglas sobre cómo se deben
hacer las cosas, indican qué es válido dentro del
paradigma y qué está fuera de sus límites. Un
paradigma distinto implica nuevas reglas, elementos,
límites y maneras de pensar, o sea implica un cambio.
Los paradigmas pueden ser considerados como
patrones de pensamiento para la resolución de
problemas. Desde luego siempre teniendo en cuenta
los lenguajes de programación, según nuestro interés
de estudio.
PARADIGMAS DE LA PROGRAMACION
DEFINICIÓN TEÓRICA

Un paradigma está constituido por los supuestos teóricos


generales, las leyes y las técnicas para su aplicación que
adoptan los miembros de una determinada comunidad
científica.
Paradigmas y abstracción

Nuevos paradigmas aparecen mientras mas se aleja de la


Programación maquina, y mientras la industria se forma: necesidad
de reutilizar código!
CLASIFICACIÓN DE LOS PARADIGMAS
• A los paradigmas se los podría clasificar de
REALIZA UNA
diversas maneras según los criterios
COMPARACION A que se
MODO DE MAPA
prioricen. CONCEPTUAL
1.Paradigmas procedimentales
PARADIGMAS JUNTOS CON SUS
CARACTERISTICAS
u operacionales.
PARADIGMAS
PROCEDIMENTALES
Indican el modo dePRINCIPALES,
construirENlaELsolución, esDECLARATIVOS
decir
CUAL PUEDAS
detallan paso a paso el mecanismo
IDENTIFICAR LAS para obtenerla.
2. Paradigmas declarativos. Describen las
VENTAJAS Y
DESVENTAJAS DE
características que CADA
debeENFOQUE
tener la solución. Es decir
especifican “qué” se desea obtener pero no
requieren indicar “cómo” obtenerla.
PARADIGMAS MAS RESALTANTES Y
SUS CARACTERISTICAS
PARADIGMA IMPERATIVO:
Procedimental con efecto de lado, representado por la arquitectura de Von
Neumman.

ALGORITMO + ESTRUCTURA DE DATOS = PROGRAMA

PARADIGMA FUNCIONAL:
Procedimental sin efecto de lado, basado en el modelo matemático de composición
de funciones.

FUNCIONES + ESTRUCTURA DE DATOS = PROGRAMA

PARADIGMA LOGICO:
Seudo declarativo, basado en conjuntos de hechos y reglas lógicas pre
establecidas.

LÓGICA + CONTROL DE DATOS = PROGRAMA


PARADIGMA ORIENTADO A OBJETO:
Procedimental con efecto de lado
LENGUAJES Y PARADIGMAS: “SOPORTAR” O
“ADMITIR”

• Un lenguaje “soporta” un paradigma si provee mecanismos


que facilitan su implementación eficiente. Es decir, implementa
mecanismos que permiten la sencilla aplicación del paradigma
(impone restricciones para respetarlo)

• Un lenguaje “admite”un paradigma si es posible escribir 
programas siguiendo los lineamientos del paradigma, pero 
hacerlo demanda un esfuerzo notable

• El lenguaje no exige la aplicación del paradigma, permite 
programar de acuerdo al paradigma pero sin proveer 
facilidades.
PROGRAMACIÓN “NO ES IGUAL” LENGUAJES DE
PROGRAMACIÓN

• Definir un paradigma de programación se hace


independientemente del lenguaje en si mismo :
es darse una manera de pensar un programa
(concebirlo, analizarlo...) a partir de un conjunto
de conceptos.

• Además, en un mismo lenguaje/programa,


varios paradigmas pueden coexistir.
PARADIGMA IMPERATIVO

PARADIGMA
está representado, por ejemplo,IMPERATIVO
El paradigma imperativo o por procedimientos es considerado el más común y
por el C o por BASIC

Son aquellos que facilitan los cálculos por


medio de cambios de estado, entendiendo
como estado la condición de una memoria de
almacenamiento. Los lenguajes estructurados
en bloques, se refieren a los ámbitos anidados,
es decir los bloques pueden estar anidados
dentro de otros bloques y contener sus propias
variables. La RAM representa una pila con una
referencia al bloque que está actualmente activo
en la parte superior.
PARADIGMA
 
IMPERATIVO
• Paradigma heurístico: Define un modelo de resolución de problemas en el que se
incorpora algún componente heurístico, sobre la base de una representación más apropiada
de la estructura del problema, para su resolución con técnicas heurísticas.

• Paradigma concurrente: La programación distribuida ha sido dividida en dos amplias


categorías, sistemas acoplados en forma débil o fuerte. El término distribuido se refiere por
lo general a lenguajes para sistemas acoplados débilmente que soportan un grupo de
programadores trabajando en un programa particular de manera simultánea y
comunicándose a través de paso de mensajes mediante un canal de comunicación. Un
sistema acoplado fuertemente permite que más de un proceso en ejecución tenga acceso a
la misma ubicación de memoria. Un lenguaje acoplado con el sistema debe sincronizar el
uso compartido de la memoria, de modo que solo un proceso escriba una variable
compartida a la vez, y de modo que un proceso pueda esperar hasta que ciertas
condiciones se satisfagan por completo antes de continuar la ejecución. La memoria
compartida tiene la ventaja de la velocidad, por que no se necesita pasar mensajes.
• Palabras llaves: estado, asignaciones, ciclos de
control
• Ejemplos: ensambladores...
• Problemas: difícil de reutilizar código de manera
simple tendencia a producir “código espagueti”
en particular al usar goto
EJEMPLO DE LA FUNCION DE UNA
PROGRAMACION IMPERATIVA
• Instrucciones: operaciones realizables sobre los
• datos del programa
• Principal instrucción: asignación
– Sintaxis: <variable> ← <expresión>
– La expresión situada a la derecha del símbolo de
asignación ‘←’ es una expresión funcional, donde
pueden aparecer variables
– Semántica: primero se evalúa la expresión
funcional y después se almacena su valor en la
variable situada a la izquierda del símbolo de
asignación
RESULTADO – PARADIGMA
IMPERATIVO
Ejercicio: realizar una secuencia de código que
permita intercambiar el valor de dos variables

• Variables
   A, B es entero
•    Inicio
          Ingresar A,B
          Auxiliar = A
          A = B
          B = Auxiliar
          Imprimir A, B
fin
PARADIGMA IMPERATIVO-
CARACTERISTICAS

• Concepto de celda de memoria (variable) para almacenar valores


– El componente principal de la arquitectura es la memoria,
compuesto por un gran número de celdas donde se almacenan los
datos y que son referenciadas por medio de su nombre (variable)
• Operaciones de asignación
– Cada valor calculado debe ser "almacenado", es decir asignado a
una celda
• Repetición
– Un programa imperativo normalmente realiza su tarea ejecutando
repetidamente una secuencia de pasos elementales
• Aunque existen otros componentes importantes (tipos de datos,
declaraciones, instrucciones de flujo de control, procedimientos y
funciones, tipos abstractos de datos, etc.)
PARADIGMA FUNCIONAL
Como su nombre lo dice operan solamente a
través de funciones. Cada función devuelve un
solo valor, dada una lista de parámetros. No se
permiten asignaciones globales, llamados
efectos colaterales. La programación funcional
proporciona la capacidad para que un programa
se modifique así mismo, es decir que pueda
aprender.
Está representado por la familia de lenguajes
LISP (en particular Scheme), ML o Haskell.
PROGRAMACIÓN FUNCIONAL

• Palabras llaves: funciones matem´aticas,λ−c


´alculo
• Ejemplos: Lisp, Scheme, Haskell...
• Problemas:
• menos flexible y pr´actico
El paradigma lógico,
• Esta programación se basada en un
subconjunto del cálculo de predicados,
incluyendo instrucciones escritas en formas
conocidas como cláusulas de Horn. Este
paradigma puede deducir nuevos hechos a
partir de otros hechos conocidos. Un sistema de
cláusulas de Horn permite un método
particularmente mecánico de demostración
llamado resolución. un ejemplo es PROLOG.
EL PARADIGMA ORIENTADO A
OBJETOS
• Describen los lenguajes que soportan objetos
en interacción. Un objeto es un grupo de
procedimientos que comparten un estado. El
término de orientado a objetos fue utilizado
originalmente para distinguir aquellos lenguajes
basados en objetos que soportaban clases de
objetos y la herencia de atributos de un objeto
padre por parte de sus hijos.
Un lenguaje completamente orientado a objetos
es Smalltalk.
TERMINOS A TENER EN
CUENTA
PORQUE ESTUDIAR LOS LENGUAJES DE
PROGRAMACION Y PARADIGMAS DE
PROGRAMACION?
• Para entender el diseño e implementación de los lenguajes:
sintaxis - reglas de construcción de los programas
semántica - significado de los programas
implementación - cómo se ejecutan
pragmática - aspectos prácticos de su uso
• Para saber qué lenguaje es más apropiado para resolver cierto tipo de problemas
imperativo: PascaL/C,
OO: C++/Java
Funcional: Haskell/LISP/ML
Lógico: Prolog/Mercury …
• Para mejorar el conocimiento de los lenguajes que ya utilizamos
• Para mejorar nuestras técnicas de programación
Programar = definir nuevas extensiones de un lenguaje
• Para saber proyectar nuevos lenguajes
• Para poder aprender fácilmente nuevos lenguajes
Empecemos a programar con
VISUAL BASIC
• Edición profesional de Visual Basic 6.0.

• Esta versión esta diseñada para


profesionales individuales o programadores de
una determinada corporación que necesiten
crear una aplicación disponible para Internet o
bien una determinada aplicación cliente-
servidor.
¿Qué es Visual Basic?
Visual Basic es un ambiente gráfico de
desarrollo de aplicaciones para el sistema
operativo Microsoft Windows.
Las aplicaciones creadas con Visual Basic están
basadas en objetos y son manejadas por
eventos.
Deriva del lenguaje Basic, el cual es un lenguaje
de programación estructurado. Sin embargo,
Visual Basic emplea un modelo de
programación manejada por eventos.
Objetos y Propiedades

Cada formulario, menú o control es un objeto.


Las características de un objeto son denominadas
propiedades.
Por ejemplo, para un formulario tenemos las
propiedades BackColor (color de fondo), Height
(altura).
Métodos
Los métodos son un conjunto de procedimientos que
permiten que un objeto ejecute una acción sobre sí
mismo. Por ejemplo, para un formulario tenemos el
método Hide que hará que el formulario se oculte; o el
método Show que hará que el formulario se vuelva a
mostrar.
Eventos
Un evento es una acción que es reconocida por el
objeto.
Ocurre como resultado de la interacción del
usuario con el objeto.
Para un formulario tenemos por ejemplo; el
evento Load que se ejecuta cuando se carga el
formulario.
Para un botón tenemos el evento Click que se
dispara cuando se hace clic sobre él.
La interface del Vb - El IDE

Cuadro
de
Herramientas
(Conjunto de
Controles)

Entorno principal
de trabajo –
Interfaz gráfica - Cuadro de Propiedades
FORM (Formulario o controles)
Modo De Ejecución
Diseño
Ficheros de un proyecto.
Un proyecto está compuesto básicamente por dos ficheros: uno con la
información global del proyecto, de extensión *.vbp (Visual Basic
Proyect) y uno de extensión *.frm (Form). Sin embargo también puede
contener otros ficheros denominados módulos estándar de
extensiones *.bas (Basic), módulos de clase de extensión *.cls (Class),
ficheros de recursos de extensión *.res (resource), etc., los cuales se
verán en el momento que corresponda.
Problemas a resolver en clase
1. Escribir un programa que despliegue el mensaje “Hola Mundo” sobre una
ventana de formulario.

2. Escriba una aplicación que visualice en una ventana de formulario el


mensaje

Bienvenido al mundo de Visual Basic


Podrás dar solución a muchos problemas

3. Escribir un programa que permita imprimir sobre una ventana de


formulario la suma de dos números a y b.

4. Crea una calculadora que te permita realiza las siguientes operaciones;


suma, resta, multiplicación y división
Los Controles.

Etiquetas (Label).

Estos controles sirven para presentar texto (o números). La propiedad más importante
de este objeto es la propiedad Caption, la cual es una cadena de caracteres con el texto
a presentar en el control.
Algunas propiedades importantes de este control:
•Alignment: alinea el texto dentro del control (izquierda, derecha o centrado).
•Autosize: ajusta el tamaño de la etiqueta al texto que contiene (True).
•BackColor: establece el color de fondo del control.
•BackStyle: establece si la etiqueta tendrá fondo o será transparente.
•BorderStyle: establece si la etiqueta será plana o tendrá borde.
•Font: permite establecer las características de la fuente del control (excepto el color).
•ForeColor: establece el color de la fuente.
•Height: establece el ancho del control.
•Left: establece la distancia del control del borde izquierdo de su contenedor.
•Tag: guarda datos adicionales.
•ToolTipText: establece un texto que se muestra al situar el mouse sobre el control.
•Top: establece la distancia entre el control y el borde superior de su contenedor.
•Visible: hace visible o invisible el control.
•Width: establece el largo del control.
•WordWrap: establece si puede haber texto en varias líneas en la etiqueta.
Los eventos de este control son:

Change: ocurre al cambiar el texto de la etiqueta (propiedad Caption)


Click: ocurre al hacer clic con el mouse sobre el control.
DblClick: ocurre al hacer doble clic sobre el control.
DragDrop:
MouseDown: ocurre al soltar un botón del mouse sobre el control.
MouseMove: ocurre cuando el usuario mueve el mouse sobre el
control.
MouseUp: ocurre al presionar un botón del mouse sobre el control.
Los métodos que este control admite son los siguientes:
Drag: este método inicia, cancela o finaliza los métodos de arrastre.
Move: permite cambiar la posición y el tamaño de un control.
Refresh: obliga a volver a dibujar un control.
ZOrder: permite ordenar los controles, o sea, colocar unos delante o
detrás de otros.
Cajas de Texto (TextBox).
Las cajas de texto son controles típicos de Windows y a través de ellas se
ingresan la mayor parte de los datos a las aplicaciones. Las cajas de texto
permiten editar texto (o números) directamente. La propiedad más importante
de las cajas de texto es la propiedad Text, que representa el texto contenido en
el control.
ALGUNAS PROPIEDADES IMPORTANTES DE ESTE CONTROL SON:

Alignment, BackColor, BorderStyle, Font, ForeColor, Height, Left, Tag,


ToolTipText, Top, Visible y Width.
Appearance: establece si el control se ve con efecto 3D o plano.
Enabled: determina si un usuario puede generar eventos sobre el control.
Locked: determina si se puede modificar directamente el texto de la caja de
texto.
MaxLenght: determina el máximo de caracteres que puede contener la caja de
texto.
MultiLine: determina si puede haber texto en varias líneas en la caja de texto.
PasswordChar: sustituye el texto escrito por un carácter, el cual no permite
hacer visible el texto real (como las cajas de claves de seguridad).
ScrollBars: permite colocar barras de desplazamiento en los bordes para
desplazarse en caso de que el texto sea demasiado extenso.
TabIndex: devuelve el orden de la tabulación de un control (se puede desplazar
a través de los controles presionando la tecla TAB).
TabStop: establece si este control recibe el enfoque (el foco) a través de la
tecla TAB.
Los eventos de este control son:

Click, Change, DblClick, DragDrop, DragOver, MouseDown, MouseMove,


MouseUp
GotFocus: ocurre cuando el control recibe el foco (pasa a ser el control activo).
KeyDown: ocurre al presionar una tecla del teclado mientras el control tiene el
foco.
KeyPress: ocurre cuando el presiona y libera una tecla.
KeyUp: ocurre al liberar una tecla del teclado mientras el control tiene el foco.
LostFocus: ocurre cuando el control pierde el foco (deja de ser el control
activo).
Validate: ocurre cuando un control perde el foco a favor de un control que
produce una validación.
Los métodos de este control son los siguientes:
Drag, Move, Refresh y Zorder.
SetFocus: hace que el control reciba el foco (pase a ser el control activo).
Cuadros de Lista (ListBox).

Este control permite ingresar texto en líneas, como una auténtica lista. Este
control también es muy usual en el entorno Windows. Pueden seleccionarse
los elementos de este control para realizar distintas tareas, según las
necesidades del programa que se esté creando. Este control tiene varias
propiedades y métodos que manipulan los datos que contienen.
Cada línea del cuadro de lista es un elemento de la lista, y a cada elemento de
la lista se lo identifica con un número de índice; los índices comienzan a
numerarse por cero (0). Esta explicación permitirá entender cómo acceder y
manipular los elementos de la lista.
Cuadros Combinados (ComboBox).
Los cuadros combinados combinan las cualidades de las cajas de
texto con los cuadros de lista y son muy usuales en el entorno
Windows (por ejemplo, en la barra de herramientas Formato de
Microsoft Word, las fuentes están contenidos en un control de este
tipo). Por tanto, dispondrá de los métodos AddItem, RemoveItem,
Clear, ListCount, List y ListIndex de los cuadros de lista. También
posee la propiedad Text que indica el elemento actual seleccionado (el
elemento que tiene el índice indicado por ListIndex).
Marcos (Frame).
Los marcos sirven como contenedores de otros controles, con un título en su
parte superior. Son de utilidad captial para los botones de opción, ya que éstos
deberán estar contenidos dentro de un marco para funcionar correctamente. La
propiedad más sobresaliente de este control es la propiedad Caption que es el
título que aparecerá la parte superior del control.
Otras propiedades importantes son:
BorderStyle: permite visualizar el borde del control con su título, o no.
Appearance, BackColor, Enabled, Font, ForeColor, Height, Left, TabIndex, Tag,
ToolTipText, Top, Visible y Width.
Los eventos soportados por los marcos son:
Click, DblClick, DragDrop, DragOver, MouseDown, MouseUp y MouseMove.
Los métodos de los marcos son:
Drag, Move, Refresh y Zorder.
Botones de Opción (OptionButton).
Estos botones permiten decidir entre una serie de opciones. Al estar
contenido dentro de un marco (recuadro con el título Edad), solamente
uno podrá estar activo (en la imagen el primer botón). Por ejemplo,
una persona podrá estar en uno de los rangos de edades, por tanto,
los demás quedarán excluídos al seleccionar uno.
La propiedad más importante es la propiedad Value, que indica si está
activo el botón (True) o no (False).
Casillas de Verificación (CheckBox).
Estas casillas cumplen una función similar a los botones, pero con la
diferencia de que no se excluyen entre ellos, aunque estén dentro del
mismo marco. Por lo tanto, se pueden utilizar estas casillas para datos
de un mismo tipo no excluyentes (como los de la imagen de ejemplo),
por lo tanto no necesitan estar dentro de un marco.
En cuanto a sus propiedades, métodos y eventos, son similares a los
de los botones de opción (excepto que no posee el evento DblClick).
Su propiedad Value presenta una variante con respecto a la propiedad
Value de los botones de opción: mientras que en los botones de
opción la propiedad Value puede tomar dos valores (True o False), en
las casillas de verificación puede tomar tres: Checked (1), Unchecked
(0) o Grayed (2).
Botones de Comando (CommandButton).
La función de los botones de comando es iniciar acciones y
Windows está lleno de este tipo de control, por ejemplo el
botón Inicio, los botones de Aceptar y Cancelar de los
cuadros de diálogo, etc.
Lo más usual es usar el evento Click de este control para
desencadenar distintas operaciones, en virtud de lo que se
desea realizar
Barras de Desplazamiento (ScrollBars).
Hay dos tipos de barras de desplazamiento: las barras de desplazamiento
horizontales y las verticales, sin embargo, ambas tienen las mismas
propiedades, métodos y eventos. Las barras tienen un valor mínimo y un valor
máximo, visualmente son los extremos de la barra y un valor actual,
visualizado por el marcador (un cuadrado que se mueve por el control).
Estos extremos están representados por dos propiedades: Min y Max, que
especifican el valor mínimo y máximo respectivamente. El valor actual está
determinado por la propiedad Value, es un valor que cambia al cambiar el
cursor de la barra y está entre el mínimo y máximo (o sea Min <= Value <=
Max).
Control de Tiempo (Timer).
Este control no tiene una interfaz gráfica (no se ve nada en en
formulario), pero sí sus efectos. La función de este control es repetir
tareas cada cierto intervalo de tiempo. La imagen es del icono que
representa al control en tiempo de diseño, ya que en tiempo de
ejecución no se ve.
Estructura del Procedimiento
Los procedimientos tienen un inicio y un final; la forma general de un
procedimiento es la siguiente:
 
Private/Public Sub nProcedimiento([argumentos])
Sentencias
[Exit Sub]
End Sub

Donde las palabras Private y Public definen el ámbito del procedimiento,


nProcedimiento es el nombre del procedimiento y argumentos son los posibles
argumentos que puede tener (como puede no llevar argumentos). Sentencias
son las sentencias (el código) que ejecutarán la tarea deseada. Exit Sub es
una palabra clave que permite salir del procedimiento antes de llegar al final.
End Sub marca el final del procedimiento.
Por ejemplo, se declarará una variable privada de tipo
Long llamada Población:
 
Private Población As Long
 
o bien,
 
Dim Población As Long

También podría gustarte