tablas definición. el tipo tabla permite definir objetos formados por un conjunto de elementos del...
Post on 22-Jan-2016
218 Views
Preview:
TRANSCRIPT
TABLAS
• Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo.
• Ejemplos. El tipo tabla se utiliza para definir puntos en 3-D, vectores, matrices, palabras, etc.
TABLAS
• Sintaxisnombre_nuevo_tipo = tabla [rango, rango,...] de nombre_tipo
donde rango se define como primer_rango .. ultimo_rango siendo primer_rango y ultimo_rango expresiones de constantes de tipo entero el número de elementos que se pueden guardar en la tabla es igual a ultimo_rango–primer_rango+1
TABLAS
• Ejemplosalgoritmo
tipo vector = tabla [1..10] de real palabra = tabla [1..10] de caracteres matriz = tabla [1..20,1..30] de entero ftipo var v1,v2: vector; p:palabra; m:matriz fvar
Operaciones
La única operación que se puede realizar con un tipo tabla es la asignación. La asignación puede ser:
• Tabla -> Tabla • Componente de la tabla -> variable del tipo
base• Objeto del tipo base -> componente
Sobre los componentes de la tabla se pueden realizar las mismas operaciones que sobre cualquier objeto del mismo tipo base.
OperacionesEjemplostipo vector = tabla [1..10] de realftipovar v1,v2: vector ; n: real fvar
• Tabla -> Tabla v1 := v2• Componente de la tabla -> variable del tipo base v1[1] := n• Objeto del tipo base -> componente n := v1[7]
Operaciones
EjemplosCualquier operación que se puede realizar
con el tipo base
v1[1] := LeerReal() v1[2] := v1[1] *v2[1] /0.5 EscribirReal (v1[2]) EscribirReal(v1[1]+v2[2])
Convenio de longitud
• El número de elementos contenidos en una variable de tipo tabla siempre ha de ser menor o igual a la que aparece en la definición.
• Dos tipos de convenios se utilizan para indicar el número de elementos de una tabla:
• La marca específica de final (centinela)• El conocimiento explícito de la longitud
Calcular el producto escalar de dos vectores de 25 elementos reales
algoritmo producto_escalar
const
N: entero = 25
fconst
tipo
vector = tabla [1..N] de real
ftipo
var v1, v2: vector; j : entero; p: real fvar
Leer los N primeros reales y guardarlos en el vector v1
var v1, v2: vector; j : entero; p: real fvar
j:= 1
mientras j <= N hacer
v1[j] := LeerReal()
j := j+1
fmientras
Leer los N siguientes reales y guardarlos en el vector v2
j:= 1
mientras j <= N hacer
v2[j] := LeerReal()
j := j+1
fmientras
Multiplicar componente a componente
v1 y v2
j:= 1; p := 0
mientras j <= N hacer
p := p + v1[j] * v2[j]
j := j+1
fmientras
EscribirReal (p)
algoritmo producto_escalar const N: entero = 25 fconst tipo vector = tabla [1..N] de real ftipo var v1, v2: vector; j : entero; p: real fvar j:= 1 mientras j < N hacer v1[j] := LeerReal j := j+1 fmientras j:= 1 mientras j < N hacer v2[j] := LeerReal j := j+1 fmientras j:= 1; p := 0 mientras j <= N hacer p := p + v1[j] * v2[j] j := j+1 fmientras EscribirReal (p)falgoritmo
Estructura repetitiva para
para indice en [rango_inicial..rango_final]
(paso expresión) hacer
Sentencias
fpara
para j en [1..N] hacer
v1[j] := LeerEntero()
fpara
para j en [1..N] paso 2 hacer
v1[j] := v1[j] + 10
fpara
Leer los N siguientes reales y guardarlos en el vector v2
para j en [1..N] hacer
v2[j] := LeerReal()
hacer
Multiplicar componente a componente
v1 y v2
p := 0
para j en [1..N] hacer
p := p + v1[j] * v2[j]
fpara
EscribirReal (p)
Lee una secuencia de enteros acabada en 0 y un siguiente entero e indica si este entero
aparece en la secuencia anterior
algoritmo búsqueda_entero
const
N: entero = 25
fconst
tipo
tentero = tabla [1..N] de entero
ftipo
var t1: tentero; n, j: entero
encontrado: booleano
fvar
Leer la secuencia de enteros, guardarlos en la tabla t1 y leer el siguiente entero
j:= 1; t1[j] := LeerEntero
mientras t1[j] != 0 y j < N hacer
j := j+1
t1[j] := LeerEntero
fmientras
n := LeerEntero
Buscar el entero en la secuencia guardada en el la tabla t1
j:= 1; encontrado := falso
mientras t1[j] != 0 y no encontrado hacer
si t1[j] = n entonces
encontrado := cierto
fsi
j := j+1
fmientras
si encontrado entonces EscribirCaracter(‘S’)
sino EscribirCaracter(‘N’)
fsi
algoritmo búsqueda_entero
const N: entero = 25 fconst
tipo tentero = tabla [1..N] de entero ftipo
var t1: tentero; n, j: entero ; encontrado: booleano fvar
j:= 1; t1[j] := LeerEntero
mientras t1[j] != 0 y j < N hacer
j := j+1; t1[j] := LeerEntero
fmientras
n := LeerEntero; j:= 1; encontrado := falso
mientras t1[j] != 0 y no encontrado hacer
si t1[j] = n entonces encontrado := cierto fsi
j := j+1
fmientras
si encontrado entonces EscribirCaracter(‘S’)
sino EscribirCaracter(‘N’)
fsi
falgoritmo
Llegir dos vector de 4 components reals I escriure el vector resultant de sumar els
dos vectors component a component
12 3 0 -5 0 -1 23 4
12 2 23 -1
Llegir dos vector de N components reals I escriure el vector resultant de sumar els
dos vectors component a component
algoritme sumar_vectors
const
N: enter = 4
fconst
tipus
vector = taula [1..N] de reals
ftipus
var v1,v2: vector; j: enter
fvar
algoritme sumar_vectors
const N: enter = 4 fconst
tipus vector = taula [1..N] de reals ftipus
var v1,v2: vector; j: enter fvar
per j en [1..N] fer v1[j] := LlegirReal() fper
per j en [1..N] fer v2[j] := LlegirReal() fper
per j en [1..N] fer
escriureReal (v1[j] + v2[j])
fper
falgoritme
Estructura repetitiva per
per index en [rang_inicial..rang_final] fer
Sentències
fper
for (index = rang_inicial; index <=rang_final;increment index)
{
.. Sentències
}
for (j= 0; j<N; j++) {
v1[j] = v1[j + 2];
}
Les taules en C comencen a la posició 0
Llegir una seqüència de enters acabada en 0 i escriure-la incrementant cada element
amb la mitjana de la seqüència
algoritme incrementar_seqüència
const
N: enter = 25
fconst
tipus
tenter = taula [1..N] de enter
ftipus
var t1: tenter; suma,n, j: enter
mitjana: real
fvar
Llegir la seqüència d’enters, guardarlos en la taula1 i calcular la mitjana
j:= 1; t1[j] := LlegirEnter ; suma := t1[j]
mentre t1[j] != 0 i j < N fer
j := j+1;
t1[j] := LlegirEnter
suma := suma + t1[j]
fmentre
mitjana := EnterAReal(suma)/ EnterAReal(j)
n := j
Escriure la seqüència dels enters incrementada amb la mitjana
per j en [1..n ] fer
EscriureReal (EnterAReal(t1[j]) + mitjana)
fper
algoritme incrementar_seqüència
const N: enter = 25 fconst
tipus tenter = taula [1..N] de enter ftipus
var t1: tenter; suma,n, j: enter ; mitjana: real; fvar
j:= 1; t1[j] := LlegirEnter ; suma := t1[j]
mentre t1[j] != 0 i j < N fer
j := j+1;
t1[j] := LlegirEnter
suma := suma + t1[j]
fmentre
mitjana := EnterAReal(suma)/ EnterAReal(j)
n := j
per j en [1..n ] fer
EscriureReal (EnterAReal(t1[j]) + mitjana)
fper
falgoritme
Traducció a C# define N 25
typedef int tenter [N];
void main(void) {
tenter t1; int suma,num, j; float mitjana, aux;
j= 0; cin >> t1[j] ; suma = t1[j];
while (t1[j] != 0 && j < N-1) {
j = j+1; cin >> t1[j] ;
suma = suma + t1[j];
}
mitjana = (float)suma / (float)j; num = j;
for (j =0; j< num; j++){
aux = (float) t1[j] + mitjana ; cout << aux <<endl;
}
system(“PAUSE”);
}
top related