0% encontró este documento útil (0 votos)
35 vistas35 páginas

Algoritmos

El documento habla sobre algoritmos y conceptos relacionados como métodos científicos, terminología computacional, tipos de datos y lenguajes de programación. Explica definiciones clave como algoritmo, propiedades, ejemplos y formas de representación de algoritmos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
35 vistas35 páginas

Algoritmos

El documento habla sobre algoritmos y conceptos relacionados como métodos científicos, terminología computacional, tipos de datos y lenguajes de programación. Explica definiciones clave como algoritmo, propiedades, ejemplos y formas de representación de algoritmos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Resolución de problemas

 Método científico
 Método computacional
Terminología computacional
 Algoritmos

 Programas
ALGORITMO - DEFINICIÓN
Es un conjunto prescrito de instrucciones o
reglas bien definidas, ordenadas y finitas
que permite realizar una actividad
mediante pasos sucesivos que no generen
dudas a quien deba realizar dicha actividad.
Conjunto ordenado y finito de operaciones
que permite hallar la solución de un
problema. (Real Academia Española © Todos los derechos reservados)
ALGORITMOS - PROPIEDADES

 Tiempo secuencial

 Estado abstracto

 Exploración acotada
ALGORITMOS - EJEMPLOS

 Receta de cocina.
 Instrucciones para armar un juguete
 Algoritmo de búsqueda
 Algoritmo de compresión de archivos
 Algoritmo de reconocimiento facial
 Algoritmo de detección de intrusos
 Etc.
DISEÑO – ENFOQUE ALGORÍTMICO
 Fuerza Bruta: En la práctica es una de las más usadas, y aunque no
conduce a algoritmos óptimos, pueda aplicarse a un sin fin de
problemas.
 Dividey vencerás: Técnica basada en la partición de un problema en
subproblemas más pequeños; del mismo tamaño y tipo; se resuelven los
subproblemas y sus soluciones se combinan para obtener la solución del
problema original.
 Disminuye y vencerás: Consiste en resolver un problema, reduciendo el
tamaño de las instancias lo más posible y luego resolver recursivamente
hasta obtener la solución de la instancia original.
 Transforma y vencerás: Se basa en transformar una instancia dada en
otra para un mismo problema, facilitando de esta manera su solución.
ALGORITMOS – FORMAS DE REPRESENTACIÓN

Lenguaje natural.
Pseudocódigo
Diagrama de flujo
Lenguajes de programación.
ALGORITMOS - MEDIOS DE EXPRESIÓN

 Se realizan en tres niveles:


1. Descripción de alto nivel
2. Descripción formal
3. Implementación
ALGORITMO - EJEMPLO
Conocimentos previos para diseño de algoritmos

 Aritmética computacional

 Lógica proposicional
TRABAJO: (PPT + aplicación (vídeo y/o pizarra)
 Pesudocódigo (3)
 Diagrama de Nassi Shenierderman (4)
 Lenguaje tipado y no tipado (1)
 Lenguaje de especificación (2)
 Diagramas de flujo (5)
 Software de diseño de algoritmos. (8)
 Estructuras de datos (7)
 Estructuras de control (6)
 Teoría automatas, lenguajes formales (9)
PREGUNTAS
Tipos de datos
 Es un atributo de los datos.
 ¿Qué valores puede tomar?
 ¿Qué operaciones se pueden realizar?
 Los más comunes:
Números enteros
Números con signo
Números decimales: coma flotante
Cadenas alfanuméricas
Tipos de datos
 CARÁCTER
 Char 0-255 8 bits por caracter
 NUMÉRICO
 Byte 8 bits
 Short 16 bits
 Int 32 bits
 Long 64 bits
 DECIMAL
 Float 32 bits
 Double 64 bits
 BOOLEANOS
 Boolean 8 bits
En java: …
¿Preguntas de aplicación?

¿En qué casos de variables usamos los tipos de


datos siguientes?
Booleano
Float
Double
Int
LENGUAJE NO TIPADO
Característica de un lenguaje de programación que no controla o tiene débiles controles en
los tipos de datos en un código e programación.

Los lenguajes de programación no tipados o débilmente tipados no controlan los tipos de las
variables que declaran, de este modo, es posible usar variables de cualquier tipo en un mismo
escenario. Por ejemplo, una función puede recibir como parámetro un valor entero, cadena de
caracteres, flotante, etc.

No son necesarias las conversiones de tipos, por lo tanto el siguiente ejemplo es correcto:

a = 2 //a es un entero
cad = "prueba de texto" //cad es una cadena de caracteres
resultado = cad + a //resultado es una cadena de
caracteres (las conversiones dependen del lenguaje)
Lenguaje tipado y no tipado

 Loslenguajes tipado definen la característica propia del tipo


de dato de la variable.
funcion bizzbuzz para (i <- 1; i<=100; i++) { …
int i = 1; ...
Los lenguajes débilmente tipado no requieren que se designe un
tipo de variable.
Ejemplos de lenguaje no tipado
 PHP:Una variable que es un Array luego se convierta en un
entero o un String sin ningún problema.
Los lenguajes no tipados, o débilmente tipados, al definir una variable
no requieren de que se les asigne un tipo de variable, es mas pueden
cambiar el tipo de variable en cualquier momento, el caso más
conocido en un lenguaje muy popular es en PHP, no hay ningún
problema en que una variable sea una Array y luego se convierta en un
entero o un String.
Ejemplo en Matlab
El lenguaje M tiene tipado débil a la hora de
trabajar con valores lógicos.

En muchas situaciones donde se requiere un


valor de tipo lógico, el lenguaje M admite
valores de otros tipos.

Por ejemplo, si es un valor numérico, si es


igual a 0 asume que es equivalente a un valor
lógico falso.
Si tiene cualquier otro valor, es verdadero.

Si lo que se encuentra es un vector, asume


que es falso si el vector está vacío, y
verdadero si no lo está.
El valor numérico cero es siempre falso. Al ejecutar este código, que espera
siempre un valor lógico a continuación de if
1. if 0
2. disp('Es verdadero');
3. else
4. disp('Es falso');
5. end
obtenemos el mensaje Es falso.

Si lo cambiamos a 18 (por poner un valor diferente a cero):


1. if 18
2. disp('Es verdadero');
3. else
4. disp('Es falso');
5. end
obtenemos el mensaje Es verdadero.
Lo mismo ocurre con valores negativos:
1. if -7
2. disp('Es verdadero');
3. else
4. disp('Es falso');
5. end

obtenemos el mensaje Es verdadero.


Si probamos ahora con vectores, cualquier vector no vacío se entiende como
verdadero:
1. if [1 2 3]
2. disp('Es verdadero');
3. else
4. disp('Es falso');
5. end
obtenemos el mensaje Es verdadero.

En cambio, el vector vacío se entiende como falso:


1. if []
2. disp('Es verdadero');
3. else
4. disp('Es falso');
5. end

obtenemos el mensaje Es falso.


¿Pero qué ocurre por ejemplo con un vector todo de ceros?
1. if [0 0 0]
2. disp('Es verdadero');
3. else
4. disp('Es falso');
5. end
obtenemos el mensaje Es falso.
Es decir, si el vector no está vacío, pero todos los elementos que contiene se
pueden evaluar como falso, el intérprete le asigna el valor falso. Sin
embargo, en ocasiones puede ser complicado adivinar qué va a entender el
intérprete.
¿Se entenderá como verdadero o como falso?
1. if [0 1 0]
2. disp('Es verdadero');
3. else
4. disp('Es falso');
5. end
obtenemos el mensaje Es falso.
El vector no está vacío, y uno de sus elementos no se entendería como falso.
Sin embargo, se muestra el mensaje Es falso.
Definición:
 Se dice que un lenguaje de programación fuertemente tipado
es cuando no se permiten variaciones sobre los tipos de datos,
esto quiere decir que, necesitamos una variable de un tipo
concreto, no se puede usar como si fuera de otro tipo, solo
que se haga una conversión.
 La mayoría de los lenguajes que vimos en la clase de
imperativos son fuertemente tipados a diferencia de los
lenguajes declarativos que suelen no estar tipado.
TIPOS:
 Tipado estático.

 Tipado dinámico.
TIPADO ESTÁTICO:
 Se dice de un lenguaje de programación que usa un tipado
estático cuando la comprobación de tipificación se realiza
durante la compilación, y no durante la ejecución.
Ejemplos de lenguajes que usan tipado estático son C, C+
+ , Java y Haskell. Comparado con el tipado dinámico, el
estático permite que los errores de programación sean
detectados antes, y que la ejecución del programa sea
más eficiente.
TIPADO DINÁMICO:
 Se dice de un lenguaje de programación que usa un tipado dinámico cuando
la comprobación de tipificación se realiza durante su ejecución en vez de
durante la compilación.
 Ejemplos de lenguajes que usan tipado dinámico son Perl , Python y Lisp .
Comparado con el tipado estático, o sistema de enlazado temprano, el
tipado dinámico es más flexible (debido a las limitaciones teóricas de la
decidibilidad de ciertos problemas de análisis de programas estáticos, que
impiden el mismo nivel de flexibilidad que se consigue con el tipado
estático), a pesar de ejecutarse más lentamente y ser más propensos a
contener errores de programación.
CARACTERÍSTICAS DE TIPADO
DINÁMICO

• Una misma variable puede tomar valores de distinto tipo en distintos momentos.

• La mayoría de lenguajes de tipado dinámico son  lenguajes interpretados.


 Por ejemplo, en C# o java, para utilizar una variable de nombre "i" que
contenga un entero
//en C# o java
int i; //Primero se declara
i=3; //y luego se utiliza
 No es posible asignar un valor de otro tipo a una variable de un tipo
concreto:
//en C# o java
int i;
i=3; //correcto
i="hola"; //incorrecto
EJEMPLO: C
TIPADO FUERTE

A=2
B= “2”
Concatenar (A,B) { error de tipo}
Sumar (A,B) {error de tipos}
Concatenar (srt (A),(B)) {retorna “22”}
Sumar (A, int (B)) { retorna 4}
VENTAJAS DEL TIPADO ESTÁTICO
Y TIPADO DINÁMICO
 La ventaja del tipado estático es que se pueden evitar muchos errores en tiempo de
compilación, sin necesidad de esperar a la ejecución para verlos.

 La ventaja del tipado dinámico es su flexibilidad.


Lenguaje de especificación
 También llamado lenguaje de descripción.
 Esun lenguaje formal encargado de construir modelos de los
sistemas que se desea elaborar.
 Noson interpretados o compilados pero especifican, modelan,
coceptualizan y validan procesos.
 Se clasifican en:
Formales
 No formales
Estructura Indica la forma que debe tener una solucion.
problema nombre(parametros) = nombreRes : tipoRes
 Encabezado nombre: nombre que le damos al problema
sera resuelto por una funcion con ese mismo nombre
nombreRes: nombre que le damos al resultado
tipoRes: tipo de datos del resultado
parametros: lista que da el tipo y el nombre de cada uno
Ejemplo: Resta de 2 números
problema resta(minuendo; sustraendo : Int) = res : Int
la funcion se llama resta da un resultado que vamos a llamar res
y es de tipo Int (los enteros) depende de dos parametros: minuendo y sustraen
.tambien son de tipo Int
condicion sobre los argumentos I el programador da por ciertaI lo que requiere la funcion para
Precondición hacer su tarea
I por ejemplo: \el valor de entrada es un real no negativo"

condicion sobre el resultado


I debe ser cumplida por el programador, siempre y cuando el usuario haya cumplido la

Poscondición precondicion
I lo que la funcion asegura que se va a cumplir despues de llamarla (si se cumpla la
Lenguaje de especificación – Ejemplo 2

También podría gustarte