viernes, 3 de diciembre de 2010

Examen Extraordinario

Como recomendación de la Dra. Eliza Schaeffer, aquí está el examen:


Primera parte

1. ¿A qué se refiere la semántica?
    Las reglas que determina el significado de los programas constituyen la semántica de los lenguajes de programación.


2. ¿Qué es una expresión regular?
     Expresión que define un conjnto de cadenas sin enumerar sus elementos.

3. ¿Cómo se le conoce a una subrutina que se llama a sí misma?
   Función Recursiva

4. ¿Cuáles son los paradigmas de programación?
    -Imperativos
    -Lógicos
    -Funcionales
    -Orientado a Objetos

5. ¿Qué es un lenguaje funcional?
     paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. 


6. Menciona 3 lenguajes script.
    Python, Perl, Javascript

7. ¿A qué se refiere el léxico?
    Son las palabras usadas en el lenguaje de programación. Como el diccionario.

8. ¿Qué es el cálculo lambda?
  es un sistema formal diseñado para investigar la definición de función, la noción de aplicación de funciones y la recursión. Fue introducido por Alonzo Church
  
9. ¿ Cuál es la diferencia entre un compilador y un interprete?
   - Compilador: analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). 
Intérprete: analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. 

10. ¿Qué propósito tienen los ciclos?
Reducir el código en el programa para simplificar su ejecución.


Referencias:
http://www.xuletas.es/ficha/lenguajes-de-programacion-sintaxis-semantica-y-jerarquia/
http://es.wikipedia.org/wiki/Expresión_regular
http://es.wikipedia.org/wiki/Paradigma_de_programación
http://it.ciidit.uanl.mx/~sara/pres/lp/lpcolor_s4.pdf
 http://es.wikipedia.org/wiki/Cálculo_lambda
http://www.todo-programacion.com.ar/archives/2005/04/interpretes_y_c.html








Segunda parte


1. Con qué instrucción se compila x.cpp en Linux?


g++ temp.cpp

2. ¿Qué es Oz?
    Un lenguaje multiparadigma


3. ¿Cómo se llama una variable que guarda una direccion de memoria?
   puntero


4. ¿Como se representa en un diagrama de flujo la selección?
   (rombo con dos salidas )


5. ¿A qué se refiere this en Java?
Hace referencia al objeto sobre el cual se está trabajando. Para que las acciones que realicemos se hagan únicamente sobre ese objeto.


6 Menciona 3 lenguajes imperativos.
Pascal, C, Fortran


7. Qué es un lenguaje lógico?
La programacion lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación


8. ¿Cuál es la palabra reservada en C que define una enumeración?
enum


9. ¿Qué es un objeto?
Una instancia. Cada subrutina es un objeto.


10. ¿Qué es un lenguaje multiparadiga?
Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear “programas usando más de un estilo de programación”.






http://es.wikipedia.org/wiki/Lenguaje_de_programación_multiparadigma
http://es.wikipedia.org/wiki/Programación_lógica

TIPOS DE DATOS - PROYECTO FINAL

http://www.youtube.com/watch?v=_c_rAlxfmvc

Lenguajes Funcionales

R

Se trata de un proyecto de software libre, resultado de la implementación de GNU del premiado lenguaje S. R y S-Plus son, probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística. 
Proporciona un amplio abanico de herramientas estadísticas y gráficas.Permite que los usuarios lo extiendan definiendo sus propias funciones. De hecho, gran parte de las funciones de R están escritas en el mismo R, aunque para algoritmos computacionalmente exigentes es posible desarrollar bibliotecas en C,C++ o Fortran. 

- EJEMPLO -

x <- seq(1:20)
y <- c
(3,2.5,6,1.38,2.25,2.36,2.14,1.38,3.5,4.3,3.8,1.95,1.78,3.24,2.67,2.01,2,3.1,2.46,1.56)
par(bg = "lightyellow", col.axis = "blue", mar = c(4, 4, 3, 1))
plot(x, y, xlab = "Agente", ylab = "Tiempos (min)", 
xlim = c(0, 20), ylim = c(0, 7), pch = 18, col = "red", bg = "black")
title("Tiempos en llamadas por agente")






_____________________________________


LISP

Quisiera agregar lo que mejor se me quedó de la clase de LISP, doctora: vulgarmente LISP es Lots of Idiotic Stupid Parentesis. Ahora formalmente, LISP es una familia de programación de computadora de tipo funcional con una sintaxis completamente entre parentesis. Fue creado originalmente como una notación matemática práctica par alos programas de computadora basada en el cálculo lambda de Alonzo Church. Se convirtió rápidamente en el lenguaje de programación favorito en la investifación de la inteligencia artificial. El nombre deriva de LISt Processing (Proceso de listas). La intercambiabilidad del código y los datos también da a LISP su instantáneamente reconocible sintaxis.

- EJEMPLO -

(define (bien e) cond((eq e 2) (print "Hola mundo"))   define: define 
funciones
(t(print "Adios mundo"))))                                           print: entrada y salida


Muy simple el común hola mundo. Como dijimos, su sintaxis es completamente entre paréntesis.

Lenguajes Orientados a Objetos

C ++

Lenguaje de programación diseñado a mediados de los años 1980 por Bjame Stroustrup. Este se creo con la intención de extender C con mecanismos que permitieran manipular objetos. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigmas. El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando un lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre C con clases. En C++, la expresión "C++" significa incrementeo de C.

-  EJEMPLO -

#include <stdio.h>
main()
{
char nombre[40];
int calif1,calif2,calif3,calif4,prome;

printf("Nombre del Alumno: ");flushall;gets(nombre);
printf("Calificación 1: ");scanf("%d",&calif1);
printf("Calificación 2: ");scanf("%d",&calif2);
printf("Calificación 3: ");scanf("%d",&calif3);
printf("Calificación 4: ");scanf("%d",&calif4);
prome=(calif1+calif2+calif3+calif4)/4;
printf("Nombre: %s\n",nombre);
printf("Promedio: %d",prome);
return(0);
}

En el programa se hace un arreglo llamado nombre para almacenar 40 nombres. Se declaran las variables enteras de las 4 calificaciones. Se piden tales calificaiones, se suman, se dividen entre cuatro, y obtenemos el promedio.


JAVA

Toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.

- EJEMPLO -

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello, World");
    }

}
En java, el nombre de la clase principal debe ser igual al nombre del archivo.
La impresión es mediante println. Todo se maneja por clases.

jueves, 2 de diciembre de 2010

Lenguajes Script

PYTHON

Python es un lenguaje de programación creado por Guido van Rossum a principios de los 90. Tiene en una sintaxis muy limpia y que favorece un código legible. Es un Lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Se trata de un lenguaje interpretado o script, usa tipado dinámico, es fuertemente tipado y es multiplataforma.
La sintaxis de python es tan sencilla y cercana al lenguaje natural que los programas elaborados en python parecen pseudocodigo.


import random

def adv2(n):

#Obtengamos la incógnita
x = random.choice(range(n)) + 1

int = 0
sel = 0

while (sel != x):
int = int + 1

sel = input("Introduzca número > ")

if (sel > x):
print "Prueba uno más pequeño..."
elif (sel < x) :
print "Prueba uno más grande..."
else:
print "Felicidades, lo has hecho en",int,"intentos"


(linea 1) En este caso se tuvo que importar la función random para obtener un numero aleatorio.
(linea 5) Los comentarios se hacen anteponiendo #.
(linea 8) Las asignaciones son muy simples, como en el caso de int = 0. No se necesitan puntos y coma al final de las sentencias.
(linea 17) Para imprimir algo en pantalla solo usamos print y encerramos entre “ ” las palabras a imprimir.
(linea 18) Elif es una contracción de ELSE IF por lo tanto, en este caso elif significa: “si no, si sel es menor que x”

                               ______________________________________________________

PERL

if ( $#ARGV == 0 ) {
die "Args: a b\n";
}
elsif ( $#ARGV == 1 ) {
$a = $ARGV[0];
$b = $ARGV[1];
}
else {
print "De el valor de a = ";
$a = <STDIN>; chop $a;
print "De el valor de b = ";
$b = <STDIN>; chop $b;
}
$c = $a + $b;
print "$a + $b = $c\n"





Su lógica es simple: si se da un solo argumento, $#ARGV == 0, el programa termina. Si se dan dos argumentos al programa, $#ARGV == 1, estos son n´umeros que se van a sumar. Y si no se dan argumentos se pregunta por cada número. Al final imprime los dos números y su suma.




lunes, 22 de noviembre de 2010

Lenguajes multiparadigma

GO

Dado que han pasado 10 años en los que no se ha creado un nuevo lenguaje de programación, Google quiso dar este paso - o salto - de crear un nuevo lenguaje de programación, ya que considera que si el mundo de la web y la computación ha cambiado drásticamente, pero no así los lenguajes de programación. 
Go proviene de la fusión de varios lenguajes de familias de donde desciende C. Además contiene elementos de Python. 

- EJEMPLO -
  package main

  import fmt "fmt"  // Package implementing formatted I/O.



  func main() {
  fmt.Printf("Hello from Stephen, Doctora Sara \n")
   }






Todo archivo fuente de Go declara a qué paquete pertenece, mediante la palabra reservada package.  Esta declaración también se usa para importar otros paquetes. En este caso importa el paquete fmt para ganar acceso al ya conocido Printf.


Las funciones se ingresan con la palabra func. La funcion principal main (dentro del paquete llamado main) es donde el programa empieza a correr.


En Go los comentarios se hacen de la misma manera que en C++   (  //    o   /**/  )




__________________________________________________

OZ

Lenguaje de programación multiparadigma, esotérico (o exótico: En general, estos lenguajes poseen una sintaxis muy básica con un alfabeto muy restringido). Originalmente desarrollado en el laboratorio de programación de sistemas en la universidad de saarland por Gert Smolka y sus estudiantes a comienzos de 1990. 
Contiene una forma simple y bien hecha de la mayoría de los conceptos de los principales paradogmas de programación, incluyendo programación lógica, funcional, imperativa, orientada a objetos, con restricciones, distribuida, concurrente. 
Es un lenguaje orientado a la concuerrencia, es decir, hace a la concurrencia fácil de usar y eficiente. 


- EJEMPLO-

El hola mundo es muy sencillo en oz:

{Browse 'Hola Mundo'}


Otro ejemplo:

local I F C in
   I = 5
   F = 5
.5
   C = 
&t
   {Browse [I F C]}
end

Este programa introduce tres variables. Asigna un entero a I, un flotante a F, y a C el caracter t. Luego imrpime (browse) la lista que contiene I, F y C.

viernes, 19 de noviembre de 2010

Lenguajes Imperativos

Pascal

Pascal es un lenguaje ordinario de alto nivel que es ampliamente usado como un programa para empezar o para aprender. Actualmente Pascal es preferido por sobre otros lenguajes, y puede ser util para resolver problemas tecnicos. No es necesario aprender otro lenguaje más fácil para empezar a aprender Pascal, o algún otro de este tipo. Es un lenguaje de programación muy facil y te ayuda a entender los básicos del mundo de la programación. Ademas te ayuda enormemente para empezar a aprender el lenguaje de programación C.

- EJEMPLO -
Program lesson3_Program1;

Uses Crt; 

Var PD, Dname, Cmodel : String;
    CostPD, TCostPD, Distance : Real; 
  

Begin
 textbackground(white); 
 ClrScr; 
 TextColor(blue); 
 TCostPD := 0; 
 Writeln('This program prompts you to '+
        +'input the cost per litre of');
 Writeln('the petrol/diesel you spend in and '+
          +'the average distance you travel');
 Writeln('with your car every week. Then, '+
          +'the computer calculates the total cost');
 Writeln('you spend in fuel every week.');
 Readkey; {program move on as soon as a key is pressed}
 ClrScr;
 GotoXy(28,3); 
 Write('Diesel or Petrol? Type p or d: ');
 PD := Readkey; 
 GotoXy(30,4);
 Write('Name Of Driver: ');
 Readln(Dname);
 GotoXy(30,5);
 Write('Car Model: ');
 Readln(Cmodel);
 GotoXy(29,6);
 Write('Cost of Diesel/Petrol: (£) ');
 Readln(CostPD);
 GotoXy(8,7);
 Writeln('Average distance you travel with '+
          +'your car every week: (kilometres) ');
 Readln(Distance);
 ClrScr;
 GotoXy(28,3);
 Writeln('Name of Driver:',Dname);
 GotoXy(31,4); Delay(500);
 Writeln('Car Model:',Cmodel);
 GotoXy(32,5); Delay(500);
 Writeln('Diesel/Petrol:',PD);
 GotoXy(8,6); Delay(500);
 Writeln('Average distance covered '+
        +'every week: ',Distance:1:2,'Km');
 GotoXy(25,7); Delay(500);
 Writeln('Cost of ',PD,' per litre: £',CostPD:1:2,'/litre');
 Writeln; Delay(500);
 Writeln;
 TCostPD := Distance * CostPD;
 GotoXy(21,10);
 Writeln('Total cost of ',PD,' per week:£',TCostPD:1:2);
 TCostPD := 0;
 GotoXy(21,12);
 Writeln('Total cost of ',PD,' per week:'+
        +'£',(Distance * CostPD):1:2);
 GotoXy(18,14);
 Writeln('Total cost of ',PD,' per week:£',Distance * CostPD);
 readln;
End. 


__________________________________

Aunque no parezca, el programa no es puro copy-paste.

 Los programas en pascal generalmente se inician con la palabra reservada program, pero se puede omitir. Toda sentencia debe terminar con   (;) - aunque hay unas excepciones (begin, por ejemplo).

Uses es la palabra reservada para declarar las librerías. En este caso se usa la librería Crt donde se incluyen el textbackground, Textcolor, Clrscr, Gotoxy, Readkey, Delay, y en otros casos Halt. Más abajo explico cada uno en su respectiva linea)


 Var  Se declaran las variables del programa, separadas por comas. Despues de las variables van dos puntos (:) y en seguida se declara el tipo de dato. (String, Real, char, etc.)

 Begin Cada función principal comienza así.
 Textbackground - Podemos cambiar color de fondo.
 TextColor Cambiar el color de letra (En estos dos ultimos casos, se puede usar tanto el color, como un numero que represente ese color).
 ClrScr Se limpia la pantalla. (Similar a lo usado en C)
 TCostPD: Se asigna el valor de cero a esta variable. La asignacion se hace por medio de :=

Writeln equivale a Printf. Una variante es Write que la unica diferencia es que Writeln brinca una linea para escribir. Aqui los caracteres a escribir se encierran entre comas invertidas (´) Cuando se va a hacer uso de una variable almacenada, se cierran las comas invertidas, se pone una coma (,) y se escribe el nombre de la variable que se usará. En caso de que se seguirá escribiendo mas texto para imprimir en la pantalla, lo separas con otra coma, y comienzas de nuevo con comas invertidas.

GotoXy Similar a C. Envia el texto que escribas en seguida, a la esa posicion en X e Y.

Readkey Si se pone solo, sirve para detener el programa hasta presionar enter. Se le puede asignar una variable.

Al finalizar todas las sentencias, se escribe Readln; (con su respectivo punto y coma). El cual equivale a detener la pantalla.

Todo programa finaliza con End.



Este programa calcula el costo total que gastas en combustible cada semana.
Comienza preguntandote si usas Diesel o Petroleo. Ahi se usa el Readkey para clickear D o P, segun el caso.
Te pide ingresar tu nombre, modelo de auto, costo del diesel o petroleo y la distancia promedio que viajas cada semana.

[  Sinceramente no entendi eso de: CostPD:1:2, etc.(porque de hecho va cambiando, no es lo mismo en cada que lo vuelven a escribir).] 

Al final te imprime Tu nombre, el modelo de tu auto, si usaste diesel o petroleo, la distancia promedio que recorres cada semana, el costo por litro; El costo total de diesel/petroleo por semana - y te lo vuelve a imprimir en notacion cientifica -.


Ahi se ve solo la primer parte del programa. Estaba largo! En mi programa cambie a español lo que se imprime en pantalla. Aquí está el resultado de lo que hice:



FORTRAN

Del inglés: FORmula TRANsalting. Lenguaje de alto nivel de propósito general, procedimental e imperativo. Adaptado principalmente al calculo numerico y a la camputacion cientifica.

- EJEMPLO -

      write (*,*) 'Escribe primera calificacion'
      read  (*,*) c1
      write (*,*) 'Escribe segunda calificacion:'
      read  (*,*) c2

      prom = (c1+c2)/2
      write (*,*) 'Tu promedio es: ',prom
      
      stop
      end

Muy simple el fortran, no hay tanta sintaxis que seguir. No se necesitan puntos y comas al finalizar las sentencias. el programa siempre lleva el end al final. El stop no es necesario.





Aquí está el programa corrido