Você está na página 1de 86

Lenguajes de programación

M.C Said Zam ora


Temar io

Sintaxis y Semántica
Compiladores e interpretes
Lenguajes script Medio Curso
Lenguajes funcionales 22/03/2018

Lenguajes lógicos
Lenguajes imperativos
Ordinario
Lenguajes Orientados a 06/06/2018
Objetos

Extrardinario
19/06/2018
• Lenguajes Script: JavaScript, Python, Perl.

• Lenguajes Funcionales: LISP, Haskell, Erlang Scheme.

• Lenguajes Lógicos: PROLOG, Mercury, Gödel.

• Lenguajes imperativos: FORTRAN, Pascal, COBOL.

• Lenguajes orentados a objetos: Swift, Ruby.


Evalu ación

Tareas (4) 40 (8 + 2)

Examen Medio Curso 20

Examen Ordinario 20

Producto Integrador 20
Cont act o
Dudas: dudassz@hotmail.com

Asunto:Materia.

Tareas: uanlfimerszptar@hotmail.com
Asunto:Materia,Hora, # Tarea,Matrícula o Color.
• Fechas de entrega de tareas

Tarea 1 – 09 Abril
Tarea 2 - 09 Abril

Tarea 3 – 18 de Mayo
Tarea 4 – 06 de Junio
• JavaScript for Absolute Beginners
• Terry McNavage
• https://link.springer.com/book/10.1007/978-1-4302-
7218-2

• Beginning Python
• From Novice to Professional
• Magnus Lie Hetland

• https://link.springer.com/book/10.1007/978-1-4302-
0072-7

• Beginning Perl
• James Lee
• https://link.springer.com/book/10.1007/978-1-4302-
2794-6
• Practical Common Lisp
• Peter Seibel
• https://link.springer.com/boo
k/10.1007/978-1-4302-0017-8

• Logic Programming with


Prolog
• Max Bramer
• https://link.springer.com/boo
k/10.1007/978-1-4471-5487-7

• Introduction to Programming
with Fortran
• With Coverage of Fortran 90,
95, 2003, 2008 and 77
• Ian Chivers
• Jane Sleightholme

• https://link.springer.com/boo
k/10.1007/978-3-319-17701-4
Lenguajes de Programación
Introducción, Compiladores e Interpretes

M.C Said Zamora


Lenguaje de Programación.
• Lenguaje: Conjunto de símbolos y palabras y conjunto de reglas que
permiten agrupar los símbolos para formar las frases del lenguaje.

• Un lenguaje de programación sirve para especificar algoritmos sobre


un sistema computacional.

• Un programa se escribe como una secuencia de frases del lenguaje.


• Un lenguaje de programación se define mediante un léxico, una
sintaxis y una semántica
Léxico
• Conjunto de símbolos que se pueden usar en un lenguaje.

• Identificadores: nombres simbólicos que se darán a ciertos elementos de programación.

• Constantes: datos que no cambiarán su valor a lo largo del programa.

• Operadores: símbolos que representarán operaciones entre variables y


• constantes.

• Instrucciones: símbolos especiales que representarán estructuras de procesamiento, y de


definición de elementos de programación.

• Comentarios: texto que se usará para documentar los programas


Sintaxis.
• Consta de unas definiciones, denominadas reglas sintácticas o
producciones que especifican la secuencia de símbolos que forman
una frase del lenguaje.

• Las reglas sintácticas pueden contener dos tipos de elementos:


• Elementos Terminales
• Elementos no Terminales
Notación BNF (Backus-Naur Form).
• Notación BNF: <elemento no terminal>::= Definición1 | Definición2 | ...
• Los elementos terminales, o sea, que pertenecen al vocabulario, se escriben tal
cual.
• Los elementos no terminales se escriben entre los símbolos <>.

• Ejemplo: Descripción sintáctica de una expresión matemática en notación BNF:


• ---> 4*(3+1)
• <expresión> ::= <numero> | (<expresión>) | <expresión><operador><expresión>
• <operador> ::= + | - | * | /
• <numero> ::= <digito> | <numero><digito>
• <digito> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
Diagramas sintácticos.
• Es una representación gráfica de la sintaxis.
• Los elementos terminales se inscriben en una elipse. Los elementos
no terminales se inscriben en un rectángulo.
Semántica.
• Define el significado de las construcciones sintácticas del lenguaje y de las
expresiones y tipos de datos utilizadas.

• Ejemplo:

• if (a>b) max := a else max := b;

• el significado corresponde a la construcción algorítmica


• Si … entonces … sino …

• Además la expresión después de If debe tener un resultado lógico (verdad o


• falso.)
Interpretación
Compilación
Ámbito o alcance
• Parte de un programa en la que una variable es visible.

• let f x = x + 3
Ámbito estático
• El alcance de las ligas sigue la estructura sintáctica del programa.

• C, C++, Pascal, Algol, Scheme, Java, C#, F#


Ámbito anidado
• Un ámbito interior podría ocasionar un problema de ligadura en un
ámbito exterior.

• let f x = (let x = 8 in x*2) + (x + 3)

• Algol, Pascal, C, C++.


Lenguajes de Programación
Javascript

M.C Said Zamora


Uso
<script ...>
JavaScript code
</script>

<script language="javascript" type="text/javascript">


JavaScript code
</script>
Nota.
• Se puede utilizar Notepad para escribir el código y cargarlo en
cualquier navegador como pagina html o utilizar Firefox/Firebug.
Entrada de datos.
• <html>
• <head>
• </head>
• <body>
• <script type="text/javascript">
• var nombre;
• var edad;
• nombre=prompt('Ingrese su nombre:','');
• edad=prompt('Ingrese su edad:','');
• document.write('Hola ');
• document.write(nombre);
• document.write(' asi que tienes ');
• document.write(edad);
• document.write(' años');
• </script>
• </body>
• </html>
Mensaje
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
document.write (“Mensaje")
//-->
</script>
</body>
</html>
Comentarios
<script language="javascript" type="text/javascript">
<!--
//
/*
*
*
*/
//-->
</script>
<html>
<head>
<script type="text/javascript">
<!--
function Hola() {
alert(“Hola")
}
//-->
</script>
</head>
<body>
Click para ver el resultado
<input type="button" onclick=“Hola()" value=“Hola" />
</body>
</html>
Variables
• Números, Strings, Booleanas
<script type="text/javascript">
<!--
var name = "Ali";
var money;
money = 2000.50;
//-->
</script>
Alcance
<script type="text/javascript">
<!--
var myVar = "global"; // Global
function checkscope( ) {
var myVar = "local"; // Local
document.write(myVar);
}
//-->
</script>
Operadores.
Concatenación.
• "Ben & Jerry's" + " " + "Chocolate Fudge Brownie" + " is my favorite
icecream."; // "Ben & Jerry's Chocolate Fudge Brownie is my favorite
icecream."
Palabras reservadas
break case catch continue default delete
do else finally for function if in instanceof
new return switch this throw try typeof
var void while with
Palabras reservadas
• abstract boolean byte char class
• const debugger double enum export
• extends final float goto implements
• import int interface long native package
• private protected public short static super
• synchronized throws transient volatile
Operadores
• Aritméticos ( + - * / % ++ --)
• Relacionales ( == != < > ≤ ≥)
• Lógicos ( && ││ !)
• Asignación (= += -= *= /= %=)
Estructuras de control
• If

• if (expression){
•…
•}

• if (expression){
• …
• }else{
• …
• }
Switch
• switch (expression)
• {
• case condition 1: statement(s)
• break;
• case condition 2: statement(s)
• break;
• ...
• case condition n: statement(s)
• break;
• default: statement(s)
• }
While
• while (expresión){
•…
•}

• do{
• …;
• } while (expresión);
For
• for(count = 0; count < 10; count++){
• document.write(“Contador: " + count );
•}
Funciones
• function functionname(parameter-list)
•{
•…
•}
Arreglos.
• var iceCream = [ "Chocolate Fudge Brownie", "Half Baked" ];

• Actividad 1 : MCM/JS
Lenguajes de Programación
Python
M.C Said Zamora
Compilador online
• http://pythonspot.com/run.php

• http://codepad.org/

• http://www.codeskulptor.org/
Mensajes y números
• print("Hello Hi!")

•x=3
• f = 3.1415926
• name = "Python“
• big = 358315791L
• z = complex(2,3)

• # Comentario
Operadores
• Aritmeticos: + * / -

• Relacionales: = , ==
Entrada
• x = int(raw_input(“Introduzca x:"))
• y = int(raw_input(“Introduzca y:"))

• sum = x + y
• print(sum)
Strings
• s = "Hello Python"
• print(s)
• print(s[0])
• print(s[1])

• print(s[2:4])
• print(s[6:])
Listas
• l = [ "Derpina", "Derp", "Derpette" ]

• print l
• print l[0]
• print l[1]

• l.append("")
• l.remove("")
• l.sort()
• l.reverse()
Tuplés
• tuple = ()
• tuple = (3,)
• persInfo = ("Diana", 32, “Chiapas")

• nom,edad,pais,carrera = ('Diana',32,’Mexico','Comp')

• x = (3,4,5,6)
• x = x + (1,2,3)
Condicionales
• if ( ):

• Elif( ):

• Else:
for
• words = ['cat', 'window', 'defenestrate']
• >>> for w in words:
• print(w, len(w))

• range()
Funciones
• def nombre( ):
Lenguajes de Programación
Perl
M.C Said Zamora
• # Comentario

• Print “Mensaje”;
Identificadores
• $ Escalar
• @ Arreglo
• % Tabla hash

• $edad = 25;
• $nombre= "John Paul";
Arreglos y tablas Hash
• @edades = (25, 30, 40);
• @nombres = ("John Paul", "Lisa", "Kumar");

• print "\$nombres[2] = $nombres[2]\n";

• %data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40);


Contexto
• @nombres = ('John Paul', 'Lisa', 'Kumar');

• @copia = @nombres;
• $tamaño = @nombres;
Operadores escalares
• $str = "hello" . “hi”;
• $num = 5 + 10;
• $mul = 4 * 5;

$mix = $str . $num;


Arreglos
• @array = (1, 2, 'Hello');

• print "$dia[0]\n";

• @var_20 = (10..20);
• @var_abc = (a..z);
• push (@ARRAY, LIST)

• pop (@ARRAY, LIST)

• shift (@ARRAY, LIST)

• unshift (@ARRAY, LIST)


• @days = qw/Mon Tue Wed Thu Fri Sat Sun/;

• @weekdays = @days[3,4,5];
Tabla Hash
• $data{'John Paul'} = 45;
• $data{'Lisa'} = 30;
• $data{'Kumar'} = 40;

• %data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40);

• %data = (-JohnPaul => 45, -Lisa => 30, -Kumar => 40);

• @array = @data{-JohnPaul, -Lisa};


Tabla Hash
• $data{'Ali'} = 55;

• delete $data{'Ali'};
If
• $status = ($age > 60 )?

• if(){
•}

• if(){
• }else{

•}
While / For
• while()
•{
•;
•}

• for ( init; cond; incr ){


• ;
•}
For each
• foreach var () {
• ...
•}
Subrutina
• sub nom{
•}

• nom( arg );
Lenguajes de Programación
Lenguajes funcionales: LISP
M.C Said Zamora
Expresiones
• LISP evalúa expresiones definidas por el usuario.

• USER(1): (* 2 (cos 0) (+ 4 6))

• Formas, f(x) equivale a (f x)


Funciones numéricas
• (+ x1 x2 ... xn)
• (* x1 x2 ... xn)
• (- x y)
• (/ x y)
• (rem x y)
• (abs x)
• (max x1 x2 ... xn)
• (min x1 x2 ... xn)
Funciones
• USER(2): (defun double (x) (* x 2))

• USER(3): (double 3)
Recursividad
• (defun factorial (N)
• “Factorial de N."
• (if (= N 1)
• 1
• (* N (factorial (- N 1)))))
Operadores relacionales
• (= x y)
• (/= x y)
• (< x y)
• (> x y)
• (<= x y)
• (>= x y)
Recursividad múltiple
• (defun fibonacci (N)
• "N‘ numero de Fibonacci."
• (if (or (zerop N) (= N 1))
• 1
• (+ (fibonacci (- N 1)) (fibonacci (- N 2)))))

• Zerop es un predicado.
Operadores lógicos y funciones predefinidas
• (1+ x) (+ x 1)
• (1- x) (- x 1)
• (zerop x) (= x 0)
• (plusp x) (> x 0)
• (minusp x) (< x 0)
• (evenp x) (= (rem x 2) 0)
• (oddp x) (/= (rem x 2) 0)

• (or x1 x2 ... xn)


• (and x1 x2 ... xn)
• (not x)
Listas
• Computación simbólica.

• Estructura de datos recursiva.

• Constructor

• Selector

• Reconocedor
Constructores
• Nil

• (cons x L)

• USER(21): (cons 1 (cons 2 nil))

• (quote (2 3 5 7 11 13 17 19))

• '(2 3 5 7 11 13 17 19)
Selectores
• (first '(2 4 8))

• (rest '(2 4 8))


Reconocedores
• USER(29): (null nil)
•T
• USER(30): (null '(1 2 3))
• NIL
• USER(31): (consp nil)
• NIL
• USER(32): (consp '(1 2 3))
•T
Recursividad estructural
• USER(33): (list-length '(2 3 5 7 11 13 17 19))

• (defun recursive-list-length (L)

• (if (null L)
• 0
• (1+ (recursive-list-length (rest L)))))
• USER(40): (trace recursive-list-length)
• (RECURSIVE-LIST-LENGTH)
• USER(41): (recursive-list-length '(2 3 5 7 11 13 17 19))
• 0: (RECURSIVE-LIST-LENGTH (2 3 5 7 11 13 17 19))
• 1: (RECURSIVE-LIST-LENGTH (3 5 7 11 13 17 19))
• 2: (RECURSIVE-LIST-LENGTH (5 7 11 13 17 19))
• 3: (RECURSIVE-LIST-LENGTH (7 11 13 17 19))
• 4: (RECURSIVE-LIST-LENGTH (11 13 17 19))
• 5: (RECURSIVE-LIST-LENGTH (13 17 19))
• 6: (RECURSIVE-LIST-LENGTH (17 19))
• 7: (RECURSIVE-LIST-LENGTH (19))
• 8: (RECURSIVE-LIST-LENGTH NIL)
• 8: returned 0
• 7: returned 1
• 6: returned 2
• 5: returned 3
• 4: returned 4
• 3: returned 5
• 2: returned 6
• 1: returned 7
• 0: returned 8
• 8
Símbolos
• No diferencia mayúsculas y minúsculas

• `t = t
Enésimo
• USER(59): (nth 0 '(a b c d))
•A
• USER(60): (nth 2 '(a b c d))
•C
Member
• USER(64): (member 'b '(hola)) ;
• NIL
• USER(65): (member ‘y '( y hola)) ;
• ‘(y hola)
• (= x y)
• (eq x y)
• (eql x y)
• (equal x y)
• (equalp x y)
Reverse L
• USER(1): (reverse '(1 2 3 4))
• (4 3 2 1)
• USER(2): (reverse '(1 (a b) (c d) 4))
• (4 (c d) (a b) 1)
• USER(3): (reverse nil)
• NIL
Estado del programa, variables.
• (defparameter * contador * 0)

• (defparameter *umbral* 4)

• (defun contador ()
• (if (>= (1+ *contador*) * umbral *)
• (setf * contador * 0)
• (setf * contador * (1+ * contador *))))

• (defun valor ()
• *counter*)

• (defun valorumbral ()
• *umbral*)

Você também pode gostar