Dejo el listado de funciones y procedimientos que se permitió utilizar sin desarrollar en la última mesa de final de Algoritmos.
Esto permite ahorrar tiempo de resolución y evitar que la gran mayoría memorice las cosas. Lo que sí, hay que saber bien cuándo usarlas e invocarlas correctamente.
[
attachment=5629]
Cualquier MÍNIMA modificación a estos procedimientos standard, implican el desarrollo del mismo en la resolución. Se considera que si se usa los procedimientos de esta hoja, es porque es exactamente igual al visto en clase.
Enojy it!
¿Esto se va a permitir de aca en adelante?
No hay ninguna resolución que lo dictamine
Yo creo que es probable que se pueda hacer. De todas maneras, dichos procedimientos y funciones deberían saberse. Si saben cuándo usarlas, es porque saben qué es lo que hacen algorítmicamente. Entonces, si saben lo que hace algorítmicamente y están capacitados para dar el final, tranquilamente pueden desarrollar el procedimiento sin saberlo de memoria (cosa que, estaría muy mal).
Falta el gracias a mi aporte
Alguien sabe como aplicar el Procedure ordenarVector(var Vector: tipoVector; Clave: tipoInfo;N: Entero) ?
No entiendo que es "clave" y como lo uso para Matrices.
Clave es el campo del registro (supongamos) por el cual ordenás el vector
Es decir, tenés un vector de registros r.Id, r.Nombre y necesitás cargarlo según ID, entonces tu clave es el ID
Está pensado para arrays de una dimensión. Por convención, le dicen vector al array de una dimensión, y matriz a la multidimensional
(17-02-2013 10:02)Biborina203 escribió: [ -> ]Alguien sabe como aplicar el Procedure ordenarVector(var Vector: tipoVector; Clave: tipoInfo;N: Entero) ?
No entiendo que es "clave" y como lo uso para Matrices.
Cómo dice nanuiit, es el campo por el cual vas a ordenar al vector y n es el numero de subindices (elementos) que tiene el vector. Por ejemplo para un array de 5 elementos, n vale 5.
nanuiit escribió:No hay ninguna resolución que lo dictamine
Yo creo que es probable que se pueda hacer. De todas maneras, dichos procedimientos y funciones deberían saberse. Si saben cuándo usarlas, es porque saben qué es lo que hacen algorítmicamente. Entonces, si saben lo que hace algorítmicamente y están capacitados para dar el final, tranquilamente pueden desarrollar el procedimiento sin saberlo de memoria (cosa que, estaría muy mal).
Bueno, ahora esta claro que podremos hacer uso de ésta biblioteca que nos facilita la vida a la hora de estudiar y de rendir bien el final sino miren el final de éste sabado
ACÁ, aunque como dijo nanuiit más arriba (y comparto), se tratan de proc y funciones que todos deberíamos de conocer casi de memoria.
(17-02-2013 12:55)nanuiit escribió: [ -> ]Clave es el campo del registro (supongamos) por el cual ordenás el vector
Es decir, tenés un vector de registros r.Id, r.Nombre y necesitás cargarlo según ID, entonces tu clave es el ID
Está pensado para arrays de una dimensión. Por convención, le dicen vector al array de una dimensión, y matriz a la multidimensional
(17-02-2013 14:50)reLlene escribió: [ -> ] (17-02-2013 10:02)Biborina203 escribió: [ -> ]Alguien sabe como aplicar el Procedure ordenarVector(var Vector: tipoVector; Clave: tipoInfo;N: Entero) ?
No entiendo que es "clave" y como lo uso para Matrices.
Cómo dice nanuiit, es el campo por el cual vas a ordenar al vector y n es el numero de subindices (elementos) que tiene el vector. Por ejemplo para un array de 5 elementos, n vale 5.
Muchas gracias a ambos!
Por nada Biborina203!!!
Por cieeerto..volvi al pdf y me asaltó una gran duda. Entiendo que la
función leerEspecial me ayuda para leer los registros de algún archivo y si ya no cuento con mas registros por leer, la funcion me retorna un boolean false. Peroooo el
procedimiento lecturaEspecial, queee onda??
Agradeceria si alguien me lo aclara.
EDITO: no lo vi en detalle, pero es que dicho procedimiento modifica su 3er parámetro, en este caso la variable Fin que desde el lugar dónde se lo invoco (ámbito) claro se va a modificar porque en proc antepone la palabra reservada
var.
Me vueeeeeeeelve a asaltar otra duda y ésta vez no es temporal jaja le echao el ojo más de una vez
En ARCHIVOS, el proc
busqBinA NO cuenta con un parámetro
POS (que debe llevar la palabra var delante), pues se trata(si es positiva) de aquella variable que retorna la posicion dónde encuentra dicho registro en el archivo ó de no encontrarla retorna -1 (por convención). También hay otros algoritmos que en lugar de POS cuentan con una variable de tipo boolean, dónde devuelve TRUE o FALSE(en caso de no encontrarlo, claro). Será que soy el único que cree que ésto es un error? Porque en el
ÚLTIMO final se entregó esta MISMA hoja y alli también puede verse el faltante de esta variable que mencioné !!!
Y la última también: en el proc
cargarSinRepetir de qué tipo son las variables
pos y
n ???
(18-02-2013 13:10)reLlene escribió: [ -> ]Por nada Biborina203!!!
Por cieeerto..volvi al pdf y me asaltó una gran duda. Entiendo que la función leerEspecial me ayuda para leer los registros de algún archivo y si ya no cuento con mas registros por leer, la funcion me retorna un boolean false. Peroooo el procedimiento lecturaEspecial, queee onda??
Agradeceria si alguien me lo aclara.
EDITO: no lo vi en detalle, pero es que dicho procedimiento modifica su 3er parámetro, en este caso la variable Fin que desde el lugar dónde se lo invoco (ámbito) claro se va a modificar porque en proc antepone la palabra reservada var.
El lecturaEspecial te retorna al leer si es el Fin de Archivo para que no haga un ciclo de mas por ejemplo en el corte de control o en el apareo, es este:
if not EOF(Archivo)
then begin
read(Archivo,Registro);
fda:=false
end
else fda:=true
(19-02-2013 01:12)reLlene escribió: [ -> ]Me vueeeeeeeelve a asaltar otra duda y ésta vez no es temporal jaja le echao el ojo más de una vez
En ARCHIVOS, el proc busqBinA NO cuenta con un parámetro POS (que debe llevar la palabra var delante), pues se trata(si es positiva) de aquella variable que retorna la posicion dónde encuentra dicho registro en el archivo ó de no encontrarla retorna -1 (por convención). También hay otros algoritmos que en lugar de POS cuentan con una variable de tipo boolean, dónde devuelve TRUE o FALSE(en caso de no encontrarlo, claro). Será que soy el único que cree que ésto es un error? Porque en el ÚLTIMO final se entregó esta MISMA hoja y alli también puede verse el faltante de esta variable que mencioné !!!
Y la última también: en el proc cargarSinRepetir de qué tipo son las variables pos y n ???
Es verdad, deberia contar con el POS, que te devuelve -1 si no lo encuentra. Que raro
El
cargarSinRepetir no tengo ni idea que es jaja
imagino que cargarSinRepetir debe buscar que el valor ya esté, caso contrario lo inserta..
PREGUNTA: Si quiero ordenar por más de un criterio un vector, usando OrdenarVector, podría pasarle a la variable "Clave" un registro de más de un campo? Digo, porque el tipo es "TipoInfo", entonces podría tener varios campos...
Gracias
Y otra pregunta: InsertarNodo, donde inserta, al final? porque ya está para pila esa funcion... No es lo mismo que InsertarOrdenado? (en lista digo).
(22-02-2013 16:35)jonifanaderiver escribió: [ -> ]imagino que cargarSinRepetir debe buscar que el valor ya esté, caso contrario lo inserta..
En ESOS términos te estas refieriendo al
buscaInserta, en cambio el cargarSinRepetir se aplica para un vector y en caso de querer cargar un valor previamente cargado pues lo evitará y seguira cargando el resto una unica vez.
(22-02-2013 16:35)jonifanaderiver escribió: [ -> ]Y otra pregunta: InsertarNodo, donde inserta, al final? porque ya está para pila esa funcion... No es lo mismo que InsertarOrdenado? (en lista digo).
Para pila es
meter y lo hace SIEMPRE ( ser rige por la estructura LIFO - last in last out) por delante, al igual que al quitar.
El
insertaNodo inserta un nodo de manera tal que quede ordenada la lista, suponte que ya contenia nodos previos. En cambio el insertaOrdenado tratará por alguna clave/valor a los nodos que vaya a insertar y lo hara ordenadamente. Claro que el orden ascente/descendente depende pura y exclusivamente de lo que dicte la condición.
(22-02-2013 14:55)Thron1 escribió: [ -> ]El lecturaEspecial te retorna al leer si es el Fin de Archivo para que no haga un ciclo de mas por ejemplo en el corte de control o en el apareo, es este:
if not EOF(Archivo)
then begin
read(Archivo,Registro);
fda:=false
end
else fda:=true
Gracias Thron1 por contestar pero es que ya lo habia editado a mi comentario. mire para el tuje jeje
(22-02-2013 14:55)Thron1 escribió: [ -> ]Es verdad, deberia contar con el POS, que te devuelve -1 si no lo encuentra. Que raro
Esto me hace MUCHISIMO ruido porque es el
segundo o
tercer final dónde se entrega esta MISMA hoja de biblioteca, a ver si alguno más nos despeja los pajaros.
(22-02-2013 14:55)Thron1 escribió: [ -> ]El cargarSinRepetir no tengo ni idea que es jaja
Más alla de la funcion que cumpla dicho procedimiento, debe tener su tipo cierto?
Cargar sin repetir (en pseudocódigo):
CargaSinRepetirEnVectorV1(Dato_Resultado V: Tvector; Dato_Resultado N: Entero; Dato
Clave:Tinfo; Dato_resultado Posic: Entero; Dato_resultado Enc : Booleano): una accion
Utilizar este algoritmo si la cantidad de claves diferentes es fija, se dispone de memoria suficiente
como para almacenar el vector y la clave no es posicional(es decir clave e índice no se
corresponden directamente con posición única y predecible. Si la posición fuera única y predecible
la búsqueda debe ser directa. En caso que el valor buscado no esté en el vector lo inserta sin orden
PRE: V: Vector en el que se debe buscar
Clave : Valor Buscado
N : Tamaño lógico del vector
POS: Posic: Posición donde se encuentra la clave, o donde lo inserta si no está. Retorna
0 (cero) en caso que el vector esta completo y no lo encuentra
Enc : Retorna True si estaba y False si lo inserto con esta invocación
Carga vector sin orden
j : Entero;
ALGORITMO/
Posic = 0;
J = 1;
MIENTRAS (j <= MAX_FIL y j <= N y V[j] <> Clave) HACER
Inc (j)
FIN_MIENTRAS;
SI j > MAX_FIL
ENTONCES
Posic = 0
SI_NO
Posic = j:
SI (j > N)
ENTONCES
Enc =FALSE; // No encontró la clave buscada
Inc(N);
V[N] = Clave;
SI_NO
Enc = True // Encontró la clave en la posición de índice j
FIN_SI;
FIN_SI
FIN. // Carga sin repetir en vector
En cuanto a la otra búsqueda binaria, si no la necesitan, no la usen. Voy a ver qué onda eso
En el último final de diciembre te explicaba brevemente qué hacía cada procedimiento, y me parece más lógico. Esto de poner solo los nombres no me cierra nada, encima son todos parecidos...
- Off-topic:
- La hojita del último final creo que no la tengo...
Che, aguanten, sí, falta el Pos en la BusqBinA
Debe haber sido un error de tipeo...