Computing">
Nothing Special   »   [go: up one dir, main page]

TLYA - Marcelo

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

Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Teoría de los Lenguajes y los Algoritmos: Inducción al desarrollo de software


● Teoría —> Marcelo Esteban Blanco
● Práctica —> Mariano Echeverría
Dos parciales
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

con ambas partes (cuatro en total). uno teórico, uno práctico → Capaz distinto día.
Ambos parciales tiene que estar aprobados

Lunes: Parte práctica por lo general virtual sincrónica. Jueves: parte teórica.
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Programa: Entrada que a partir de un conjunto de instrucciones y un procesamiento genere


una salida que nos resulte una herramienta para resolver una tarea dentro de una misma
aplicación.

- Programación orientada a procedimientos: Divide una tarea en diferentes pasos. Es


una metodología top down: de arriba hacia abajo. Se enfoca en la secuencialidad, lo
importante es seguir el hilo de la programación.
- Poder replicar la parte del código que sea parte de un subprocedimiento de manera
sencilla.
- Nosotros vamos a ver la programación orientada a objetos. Este tipo de
programación se utiliza para estructurar un programa de software en piezas simples
y reutilizables de planos de código (clases) para crear instancias individuales de
objetos y el foco está puesto en los datos y cómo se conservan. Tiene un enfoque
ascendente porque parte de la entidad de los datos.

Objeto Clase Instancia

Un Objeto es la entidad que maneja Una clase es un template. Define Con la clase se pueden crear
un conjunto de datos e instrucciones de manera genérica cómo van a serinstancias de un objeto, cada uno
para poder manejar y comunicar los objetos de un determinado tipo.
de ellos con sus atributos
esos datos: elemento que está vivo Por ejemplo, una clase para definidos de forma independiente.
dentro de la aplicación. Los objetos representar a animales puede Con esto podríamos crear un gato
se construyen en base a un template llamarse ‘animal’ y tener una serie
llamado Paco, con 3 años de edad,
/ plano que se arman en base a las de atributos, como ‘nombre’ o y otro animal, este tipo perro y
clases. Un ejemplo sencillo de un ‘edad’ (que normalmente son llamado Pancho, con una edad de
objeto, como decíamos antes, podría propiedades), y una serie con los4 años. Los dos están definidos
ser un animal. Un animal tiene una comportamientos que estos pueden por la clase animal, pero son dos
edad, por lo que creamos un nuevo tener, como caminar o comer, y que
instancias distintas. Por lo tanto,
atributo de ‘edad’ y, además, puede a su vez se implementan como llamar a sus métodos puede tener
envejecer, por lo que definimos un métodos de la clase (funciones). Se
resultados diferentes. Los dos
nuevo método. Datos y lógica. Esto define en el código escrito. comparten la lógica, pero cada
es lo que se define en muchos La clase no ocupa espacio de uno tiene su estado de forma
programas como la definición de una memoria, sino que es un plano de independiente.
clase, que es la definición global y cómo se debe construir el objeto.
genérica de muchos objetos.Cuando
Buscamos reutilizar las clases en
ponemos el objeto vivo, ahí ocupará
una aplicación, o varias.
un espacio de memoria
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Datos privados: acceder a los datos a través de los métodos. Creamos un método
(kioskero) que responda cuando se pregunte, por ejemplo, “ cuántos caramelos hay” , por lo
que encapsulamos el conocimiento para que no haya libre interpretación. Esta propiedad
permite asegurar que la información de un objeto esté oculta para el mundo exterior,
agrupando en una Clase las características o atributos que cuentan con un acceso privado, y
los comportamientos o métodos que presentan un acceso público. La encapsulación de
cada objeto es responsable de su propia información y de su propio estado. La única forma
en la que este se puede modificar es mediante los propios métodos del objeto. Por lo tanto,
los atributos internos de un objeto deberían ser inaccesibles desde fuera, pudiéndose
modificar sólo llamando a las funciones correspondientes.
Ej: un coche comparte información pública a través de las luces de freno o intermitentes
para indicar los giros (interfaz pública). Por el contrario, tenemos la interfaz interna, que
sería el mecanismo propulsor del coche, que está oculto bajo el capó. Cuando se conduce
un automóvil es necesario indicar a otros conductores tus movimientos, pero no exponer
datos privados sobre el tipo de carburante o la temperatura del motor, ya que son muchos
datos, lo que confundiría al resto de conductores.

Si estos datos, yo los ubico en la clase, la clase sería mi policía de los datos. Lo que permite
que se cree la lógica de negocios.

Datos públicos: Dentro del alcance de la instancia de ese objeto que puedo utilizarlos como
si fueran variables sin ningún tipo de control. Dejamos que cualquiera pueda observar
cuántos caramelos hay, sacar, poner, cambiar.

Clase 2
Características del IDE: Entorno de desarrollo integrado. Ej. Visual Studio
● Nos permite trabajar con repositorios de código —> Podemos realizarlo de manera
colaborativa.
● Nos permite trabajar de manera más ordenada.
Características del código .NET
➔ Hacer que las aplicaciones se ejecuten aislado de un sistema en un entorno
controlado.
➔ Tiene múltiples lenguajes: C# (es con el que
vamos a trabajar). Para luego compilarlo con las
normas . NET.
➔ Está pensado para hacer aplicaciones
corporativas.
➔ Nos permite trabajar con el patrón MVC (Modelo,
Vista y Controlador). Es un patrón en el diseño de
software comúnmente utilizado para implementar
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

interfaces de usuario, datos y lógica de control. Enfatiza una separación entre la


lógica de negocios y su visualización.
➔ Es un lenguaje intermedio (compilado) por eso, utilizamos el framework assembly es
decir que permite compilar al lenguaje de máquina just -in-time. El CLR se encarga
de ejecutar este framework.

¿Cómo usar Visual Studio?


Conceptos de la IDE:
● Solución: Nos permite agrupar proyectos.
● Abrir siempre desde archivo.sin
Program.cs
● namespace: se utilizan para organizar el código en grupos lógicos y para evitar
conflictos de nombres que pueden producirse.
Internal class program
● Class: Clase
static void main (String [] args)
{}
● Main: Método: Es el nombre del método que la máquina virtual de Java busca para
comenzar a ejecutar un programa. Todos los métodos tienen un nombre. Tiene que
tener un método de entrada.
● Void: Tipo de dato que retorna – Void sería que no retorne nada. Los métodos
pueden devolver algo, por ejemplo, un método que suma dos números, devuelve el
resultado de la suma; pero hay métodos que no devuelven nada y que sólo ejecutan
acciones. Dichos métodos se declaran con la palabra reservada “ void ” (vacío) como
tipo de retorno.
● String: almacenado en este ARG un vector o una lista de cadenas de texto. Es una
clase que define cadenas de caracteres. Gracias a la clase String, Java puede
manipular textos. Strings=“Holamundo” define una cadena.
● []: Cualquier clase que se declara con corchetes “[]”, quiere decir que lo que tienes
no es una instancia de esa clase, sino un array de objetos de dicha clase. Ejemplo:
String[]meses; contendrá los nombres de los meses del año.
El método main() de Java necesita un String[] porque el usuario de nuestro programa
puede pasar parámetros extra desde la línea de comando a nuestro programa. Esos
parámetros, el programador los recibe a través de ese array.
● Static: Un método puede ser de instancia o de clase. Un método NO estático es un
método de instancia (que necesita una instancia de la clase donde se declara para
ser invocado) y un método estático es un método de clase (sólo se necesita invocarlo
dada la clase, no un objeto de dicha clase).
{
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Desde NET 7.0

namespace PruebaConsola
{
static void main (String [] args)
internal class Program
{
Console. //Clase. Writeline(“Hola Mundo!”) ;
Console. //Clase). .ReadKey() ; //espera una tecla

DESDE NET 6.0

Console.Writeline(“Hola Mundo!”) ;
Console.ReadKey( ) ; //espera una tecla

Hay un break POINT: Nos permite detener el código en un punto particular. Para poder ver
dónde falló.

——————
● Variable por valor: se genera una copia cuando se ejecuta un programa. Es una
copia en el espacio de memoria. Si el valor cambia no afecta a la variable original,
solo modifica en la función.
● Variable por referencia: dirección de espacio de memoria. La variable que se recibe
como parámetro en la función apunta exactamente a la misma dirección de memoria
que la variable original por lo que si dentro de la función se modifica su valor,
también se modifica su valor original.

+
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Array ejemplo

const int cALUMNO= 2;


const int cCUATRI = 3;

String [] nombres = new [ cALUMNO];


String [] notas = new int[ cALUMNO; cCUATRI];

nombres [0] = “Juan”;


Notas [0;0 ] = 9;
Notas [0;1 ] = 8;
Notas [0;2 ] = 4;

nombres [0] = “Ana”;


Notas [1;0 ] = 9;
Notas [1;1 ] = 7;

For ( int I= 0; I < Nombres. Length; I ++)


{ Console.Write (nombres [i]+ “ : ”);

For ( int j= 0; j < Nombres. Length(1); J ++) //MATRIZ


{ Console.Write (Notas [i;j]);
Console.Write (“”); //ESPACIO ENTRE NOTA Y NOTA
} console.WriteLine () //SALTO DE PAGINA
}

RDO
JUAN : 9 8 4
ANA: 9 5

Errores de programación:
● No complia
● Compila pero el programa no hace lo que espero
Depuración/debugging: depuramos cuando vemos línea por línea que es lo que está
haciendo el programa.
1. Eliminación de causas
2. Back traicing: ver el código de atrás para adelante para ver donde falla - prueba de
escritorio
3. Fuerza bruta: seguir la ejecución del código para ver su camino.
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

a. Búsqueda por ejecución: parto a la mitad el código y colocó un console.write


para ver si llega a mostrarlo o no.
b. Logs para ver la secuencia de pasos
c. Hacer un breakpoint
● Stop debugging
● Restart
● Step into: siguiente paso dentro del código
● Step over: un paso adentro del código
● Step out: ejecuta el siguiente método

Ejemplo parcial:
● Tipos de alcance de variable y método: si es pública, privada. Cuál es el alcance de
las variables, de los tipos de datos.
● Componentes dentro de un objeto
● Tipos de datos.
● Distintas capas de validación: Primera etapa por tipo de datos, segunda etapa de
regla de negocios, tercera capa de integridad diferencial.
● Depurar para entender qué está pasando en el código.
● SEGURAMENTE SEA UN CHOICE

Algoritmo: Nos permite resolver un problema a través de una serie de pasos precisos.Cada
paso tiene un orden de realización. Es un proceso definido si se sigue dos veces, obtiene el
mismo resultado cada vez dados los mismos ingresos. Es finito (número finito de pasos).
Problemáticas habituales:
A. Búsqueda secuencial → buscar en una lista de elementos. Por ejemplo, el registro
de un alumno. 1- validar por tipo de dato. 2 - tipo de negocio ( ej registro no puede
ser menor a mil) 3- bool referencial.
B. Colas → Poder ir agregando los elementos a una cola.
C. Pilas → Tipo de colas. Último que entra, último que sale.
D. Ordenamiento por burbujeo → Ordenar los elementos con los que estamos
trabajando. Es un ordenamiento puntual. Por ejemplo, si tengo una secuencia del 1
al 10 y busco al 7, preguntaré número por número si es un 7 hasta llegar allí( 1: es
un 7? no, sigo. 2. ¿Es un 7? no, sigo). Otra manera, puede ser particionando la
búsqueda por ej al 5. No va a tomar diferentes tipos de búsqueda.
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Herramientas de programación

1. Representación gráfica
2. Pseudocódigo: abstraernos del lenguaje de programación en particular, pero utilizando
un código que es legible y comprensible a simple vista para el usuario

= Modelo de lo que nos pidieron que hagamos: para ver hacia donde vamos.Ej prototipo.

Diagrama de flujo
➔ Siempre y cuando el proceso sea lineal
➔ Cada forma indica información distinta

Diagrama de clases - UML.


➔ Más orientado a la programación
➔ Refiere a comportamientos. Nos permite ver
la interacción de diferentes elementos.
➔ Representamos la estructura estática del
Sw. Podemos ver atributos, método,

Diagrama de actividad - UML.


Modernización del diagrama de flujos pero orientada en objetos.

Diagrama de casos de uso -UML.


Representar las interacciones del usuario y el
sistema.

Diagrama de secuencia - UML.


Versión más dinámica. Las líneas verticales son
tiempos y las columnas son los componentes o
los actores. Podemos ver el ciclo de vida de cada
uno de los componentes.
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Ejemplo integrador.
Pseudocódigo
Tablas de verdad

Los SI son un AND.

P > P+1 P =”” P+1 =”” Cambio

V V V N/A

V V F N/A

V F V NO

V F F SI

F V V NO

F V F SI

F F V N/A

F F F NO

Return devuelve un valor, y vuelve a la función anterior. Cierra el proceso. Devuelve al


método una vez que lo llamen.
—------------------------
Con la programación orientada a objetos, buscamos simplificar la realidad.
● Podemos reutilizar código.
● Código de mayor calidad.
La programación lineal:
● No nos ayuda
● No nos permite ser eficientes.
● No nos permite reutilizar código dado que es muy dificil extraer algo sin dejar algo
colgado.
Definición de objeto: la abstracción de una entidad dentro de una aplicación, tiene datos
almacenados que lo definen y un comportamiento almacenado que lo define. Un objeto
puede procesar datos, obtener un mensaje y mandar un mensaje a otro objeto.
Nos ayuda a acceder de manera simplificada a métodos de esas bibliotecas.
using system.threading.tasks;
using system.threading;
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

namespace: permite clasificar y ordenar lo que estamos desarrollando, permite armar una
jerarquía.
Dentro de namespace está la clase, y puede haber múltiples clases. Puede haber dentro de
un namespace, varias clases.
Teoría de los Lenguajes y los Algoritmos Marcelo Esteban Blanco

Cuál es la diferencia entre clases y objetos. Los objetos son las instancias de las clases. Las
clases se asocian a sustantivos.
Funciones, la función puede o no retornar una valor. Lo que nos importa es si es void o si
retorna un tipo de dato. Lineas de codigo que devuelve una línea específica.
Metodos: Se asocian a verbos, acciones.

public void Saludar () {Console.WriteLine(“Hola”);} → NO RETORNA NADA.

También podría gustarte