Matrizes unidimensionais de inteiros. Mapa tecnológico matrizes unidimensionais de inteiros Veja o conteúdo do documento “Mapa tecnológico matrizes unidimensionais de inteiros”

30.11.2023

Palavras-chave:

  • variedade
  • descrição da matriz
  • preenchendo a matriz
  • saída de matriz
  • processamento de matriz
  • pesquisa sequencial
  • classificação

Até agora trabalhamos com tipos de dados simples. Ao resolver problemas práticos, os dados são frequentemente combinados em várias estruturas de dados, como arrays. As linguagens de programação usam arrays para implementar estruturas de dados, como sequências e tabelas.

Consideraremos arrays unidimensionais.

A solução para vários problemas associados ao processamento de matrizes baseia-se na resolução de problemas típicos como:

  • somando elementos de array;
  • procure um elemento com propriedades especificadas;
  • classificação de matriz.

4.7.1. Descrição da matriz

Antes de utilizá-lo em um programa, deve-se descrever o array, ou seja, indicar o nome do array, a quantidade de elementos do array e seu tipo. Isso é necessário para alocar um bloco de células do tipo necessário na memória para um array. Visão geral descrições da matriz:

var<имя_массива>:variedade [<мин_знач_индекса> .. <макс_знач_индекса>] de<тип__элементов>;

Exemplo

var a: array de inteiro;

Aqui descrevemos uma matriz a de dez valores inteiros. Quando esta instrução for executada, dez células do tipo inteiro serão alocadas na memória do computador.

Uma pequena matriz com valores constantes pode ser descrita na seção de constantes:

const b: array de inteiros = (1, 2, 3, 5, 7);

Nesse caso, as células de memória sucessivas não são simplesmente alocadas - os valores correspondentes são imediatamente inseridos nelas.

4.7.2. Preenchendo um array

Você pode preencher a matriz inserindo o valor de cada elemento no teclado ou atribuindo alguns valores aos elementos. Neste caso, um loop com um parâmetro pode ser usado.

Por exemplo, para inserir pelo teclado os valores dos elementos do array descrito acima, use o seguinte loop com um parâmetro:

para i:=l a 10 leia (a:=i;

O seguinte fragmento do programa organiza o preenchimento de um array inteiro a, composto por 10 elementos, com números aleatórios, cujos valores variam na faixa de 0 a 99:

4.7.3. Saída da matriz

Em muitos casos, é útil exibir os valores dos elementos do array na tela. Portanto, se os valores do array foram gerados aleatoriamente, você precisa saber qual é o array original. Você também precisa saber como o array se tornou após o processamento.

Os elementos do array podem ser gravados em uma string separando-os com um espaço:

para i:=1 a 10 escreva (a[i], ");

A seguinte saída com comentários é mais visual:

para i:=1 a 10 faça writeln("a[", i, ")=", a[i]);

Com base nos exemplos discutidos, tente escrever você mesmo um programa que faça o seguinte: preencha aleatoriamente um array inteiro a, composto por 10 elementos, cujos valores variam na faixa de 0 a 99; matriz de saída a para a tela.

4.7.4. Calculando a soma dos elementos do array

A soma dos elementos do array é realizada de acordo com o mesmo princípio da soma dos valores das variáveis ​​​​simples: adicionando termos sequencialmente:

  1. é determinada uma célula de memória (variável s) na qual o resultado do somatório será acumulado sequencialmente;
  2. à variável s é atribuído o valor inicial 0 - um número que não afeta o resultado da adição;
  3. para cada elemento do array, seu valor atual é lido da variável s e adicionado ao valor do elemento do array; o resultado resultante é atribuído à variável s.

O processo descrito pode ser claramente representado da seguinte forma:

Aqui está o fragmento principal da solução para este problema:

Complemente o programa de geração de array criado na seção 4.7.3 para que a soma dos elementos do array seja calculada e o resultado da soma seja exibido na tela.

4.7.5. Pesquisa sequencial em um array

Na programação, a pesquisa é uma das tarefas não computacionais mais comuns.

As seguintes tarefas típicas de pesquisa podem ser distinguidas:

  1. encontre o maior (menor) elemento da matriz;
  2. encontre um elemento da matriz cujo valor seja igual a um determinado valor.

O computador não pode comparar toda a série de objetos de uma só vez. Em cada etapa, ele só pode comparar dois objetos. Portanto, o programa precisa organizar a visualização sequencial dos elementos do array e a comparação do valor do próximo elemento visualizado com uma determinada amostra.

Consideremos detalhadamente a solução de problemas do primeiro tipo (encontrar o maior (menor) elemento).

Vamos imaginar uma matriz unidimensional na forma de uma pilha de cartas, cada uma com um número escrito. Então a ideia de encontrar o maior elemento de um array pode ser representada da seguinte forma:

  1. pegue a carta de cima (o primeiro elemento do array), lembre-se do número da carta (escreva-o com giz no quadro) como o maior dos que você olhou; coloque o cartão de lado;
  2. pegue a próxima carta; compare os números escritos no cartão e no quadro; se o número do cartão for maior, apague o número escrito no quadro e escreva ali o mesmo número do cartão; se o novo número não for maior, deixaremos o registro existente no quadro; coloque o cartão de lado;
  3. repita as etapas descritas na etapa 2 para todas as cartas restantes na pilha.

Como resultado, o maior valor do array visualizado será escrito no quadro.

Como o valor de um elemento de um array é acessado por seu índice, ao organizar uma busca pelo maior elemento de um array unidimensional é mais correto procurar seu índice. Vamos denotar o índice necessário como imax. Então o algoritmo descrito acima no array que formamos em Pascal pode ser escrito da seguinte forma:

Escreva você mesmo um programa que gere um array inteiro a de 10 elementos, cujos valores estão no intervalo de 0 a 99, e procure o maior elemento desse array.

Se houver vários elementos na matriz iguais ao valor máximo, então este programa encontrará o primeiro deles (a primeira ocorrência). Pense no que precisa ser alterado no programa para que ele contenha o último dos elementos máximos. Como o programa deve ser transformado para que possa ser usado para encontrar o elemento mínimo de um array?

O resultado da resolução de um problema do segundo tipo (encontrar um elemento de array cujo valor seja igual a um determinado valor) pode ser:

  • n é o índice do elemento da matriz tal que a[n] = x, onde x é um determinado número;
  • uma mensagem informando que o elemento desejado não foi encontrado no array.

O algoritmo de busca por um valor igual a 50 no array que formamos pode ser assim:

Este programa percorre todos os elementos de um array, um por um. Se houver vários elementos no array cujos valores sejam iguais a um determinado número, o programa encontrará o último.

Em muitos casos, você precisa encontrar o primeiro elemento que possui um valor correspondente e interromper a varredura do array. Para isso você pode usar o seguinte programa:

Aqui a execução do algoritmo será interrompida em um dos dois casos:

  1. o primeiro elemento igual ao dado é encontrado no array;
  2. todos os elementos da matriz foram verificados.

Escreva texto completo programa e execute-o em seu computador.

Muitas vezes você precisa determinar o número de elementos que satisfazem alguma condição. Neste caso, é introduzida uma variável cujo valor é aumentado em uma unidade cada vez que o elemento desejado é encontrado.

Determine quais elementos são contados no seguinte fragmento de programa.

Se for necessário determinar a soma dos valores dos elementos, é introduzida uma variável, ao qual é adicionado o valor do elemento encontrado do array.

Determine qual condição é satisfeita pelos elementos da matriz cujos valores são somados no seguinte fragmento de programa.

Escreva os textos completos de dois programas mais recentes e execute-os em seu computador.

4.7.6. Classificar uma matriz

Por classificar (ordenar) um array, queremos dizer redistribuir os valores de seus elementos em alguma ordem específica.

A ordem na qual o primeiro elemento de uma matriz tem o menor valor e o valor de cada elemento subsequente não é menor que o valor do elemento anterior é chamada de crescente.

A ordem na qual o primeiro elemento de uma matriz tem o maior valor e o valor de cada elemento subsequente não é maior que o valor do elemento anterior é chamada de decrescente.

O objetivo da classificação é facilitar a busca posterior por elementos: é mais fácil encontrar o elemento desejado em uma matriz ordenada.

Você já encontrou classificação ao trabalhar com bancos de dados. Agora veremos um dos opções possíveis Uma implementação do mecanismo desta operação é a classificação por seleção.

A classificação por seleção (por exemplo, decrescente) é realizada da seguinte forma:

  1. o elemento máximo da matriz é selecionado;
  2. o máximo e o primeiro elemento são trocados (o primeiro elemento é considerado ordenado);
  3. na parte não classificada da matriz, o elemento máximo é selecionado novamente; ele troca de lugar com o primeiro elemento não classificado da matriz;
  4. as ações descritas na etapa 3 são repetidas com elementos não classificados da matriz até que reste um elemento não classificado (seu valor será mínimo).

Vamos considerar o processo de classificação por seleção usando o exemplo do array a = (0, 1, 9, 2, 4, 3, 6, 5).

Neste array de oito elementos, realizamos a operação de selecionar o elemento máximo 7 vezes. Em uma matriz de n elementos, esta operação será realizada n-1 vezes. Explique por quê.

Aqui está um fragmento de um programa que implementa o algoritmo descrito:

Aqui usamos um loop dentro de outro. Esse design é chamado de loop aninhado.

Escreva o texto completo do programa e execute-o no computador para o array a considerado no exemplo.

No site “Demonstrações Interativas sobre Programação” (http://informatika.kspu.ru/flashprog/demos.php) você pode trabalhar com recursos visuais interativos para apresentar de forma mais completa o processo de classificação por escolha e de outras maneiras.

O mais importante

Um array é uma coleção nomeada de elementos do mesmo tipo, ordenados por índices que determinam a posição dos elementos no array. As linguagens de programação usam arrays para implementar estruturas de dados, como sequências e tabelas.

Antes de usá-lo em um programa, o array deve ser descrito. Visão geral da descrição de uma matriz unidimensional:

var<имя_массива>:variedade [<мин_знач_индекса> ..
<макс_знач_индекса>] do tipo_elemento;

Você pode preencher a matriz inserindo o valor de cada elemento no teclado ou atribuindo alguns valores aos elementos. Ao preencher o array e exibi-lo na tela, é utilizado um loop com um parâmetro.

A solução para vários problemas associados ao processamento de arrays é baseada em tarefas típicas como: somar os elementos do array; procure um elemento com propriedades especificadas; classificação de matriz.

Perguntas e tarefas


| §2.2 Matrizes unidimensionais de inteiros

Lições 11 a 14
§2.2 Matrizes unidimensionais de inteiros
Descrição, preenchimento, saída do array
Calculando a soma dos elementos do array
Pesquisa sequencial em um array
Classificar uma matriz

Palavras-chave:

Variedade
descrição da matriz
preenchendo a matriz
saída de matriz
processamento de matriz
pesquisa sequencial
classificação

Até agora trabalhamos com tipos de dados simples. Para resolver muitos problemas práticos, tipos simples são transformados em tipos de dados compostos, as chamadas estruturas de dados. Um exemplo de tal estrutura é uma matriz unidimensional.

Uma matriz é uma coleção de um número fixo de elementos do mesmo tipo, aos quais é atribuído um nome comum. Acesso a elemento individual A matriz é processada pelo seu número (índice).

Com objetos semelhantes - sequências numéricas- você já conheceu nas aulas de matemática. Por exemplo, os membros de uma progressão aritmética foram designados da seguinte forma: a 1, a 2, a 3, ..., a n.

A dimensão de um array é o número de índices necessários para acessar exclusivamente um elemento do array. Matrizes com um índice são chamadas unidimensionais, com dois - bidimensionais, etc. Consideraremos matrizes unidimensionais.

A solução para vários problemas associados ao processamento de arrays é baseada no uso de algoritmos padrão como:

Somando os valores dos elementos do array;
procure um elemento com propriedades especificadas;
classificação de matriz.

2.2.1. Descrição da matriz

Antes de utilizá-lo em um programa, deve-se descrever o array, ou seja, indicar o nome do array, a quantidade de elementos do array e seu tipo. Isso é necessário para alocar uma área de memória com o tamanho necessário para armazenar o array. Visão geral da descrição de uma matriz unidimensional:

Exemplo

Uma matriz de 10 valores inteiros é descrita aqui. Quando esta instrução for executada, será alocado espaço na memória do computador para armazenar dez variáveis ​​​​inteiras.

Uma matriz cujos elementos deram valores iniciais pode ser descrita na seção de descrição da constante:

Nesse caso, as células de memória sucessivas não são simplesmente alocadas - os valores correspondentes são imediatamente inseridos nelas.

2.2.2. Preenchendo um array

Você pode preencher um array inserindo o valor de cada elemento no teclado ou atribuindo alguns valores aos elementos no programa. Neste caso, um loop com um parâmetro pode ser usado.

Por exemplo, para inserir pelo teclado os valores dos elementos do array descrito acima, use o seguinte loop com um parâmetro:

Você pode definir os valores dos elementos da matriz usando o operador de atribuição. Por exemplo:

O seguinte fragmento do programa organiza o preenchimento de um array inteiro a, composto por 10 elementos, com números aleatórios, cujos valores variam na faixa de 0 a 99:

2.2.3. Saída da matriz

Em muitos casos, é útil exibir os valores dos elementos do array na tela. Portanto, se os valores do array foram gerados aleatoriamente, você precisa saber qual é o array original. Você também precisa saber como o array se tornou após o processamento.

Os valores dos elementos do array podem ser impressos como uma string, separados por um espaço:

A seguinte opção para exibir elementos de array com explicações em uma coluna é mais visual:

Com base nos exemplos discutidos, escreveremos um programa que realiza: preencher um array inteiro UM , composto por 10 elementos, números aleatórios, cujos valores variam na faixa de 0 a 99; saída de matriz UM para a tela.


2.2.4. Calculando a soma dos elementos do array

Exemplo. Em alguma localidade tenho casas. Sabe-se quantas pessoas moram em cada casa. Vamos criar um algoritmo para calcular o número de moradores de um assentamento.

Os dados iniciais (número de residentes) são apresentados aqui usando uma matriz unidimensional UM contendo n elementos: a - o número de moradores da casa 1, a - o número de moradores da casa 2, ..., a[n] - o número de moradores da casa n. Em geral, a[i] é o número de moradores da casa n, onde i assume valores inteiros de 1 a n (denotaremos isso brevemente no diagrama de blocos como ). O resultado do algoritmo é denotado por s.

A soma dos elementos do array é realizada de acordo com o mesmo princípio da soma dos valores das variáveis ​​​​simples: adicionando termos sequencialmente:

1) é determinada uma célula de memória (variável s) na qual o resultado do somatório será acumulado sequencialmente;
2) é atribuído à variável s o valor inicial 0 - número que não afeta o resultado da adição;
3) para cada elemento do array, seu valor atual é lido da variável s e adicionado ao valor do elemento do array; o resultado resultante é atribuído à variável s.

O processo descrito pode ser claramente representado da seguinte forma:

Vamos escrever o programa correspondente em Pascal.

Compare os programas n_2 e n_3. Selecione blocos comuns neles. Observe as diferenças.

Como o programa n_3 esclarece a informação apresentada no exemplo sobre as casas da localidade?

2.2.5. Pesquisa sequencial em um array

Na programação procurar- uma das tarefas não computacionais mais comuns.

As seguintes tarefas típicas de pesquisa podem ser distinguidas:

1) encontre o maior (menor) elemento do array;

2) encontre um elemento do array cujo valor seja igual ao valor fornecido.

Para resolver tais problemas, o programa deve organizar a visualização sequencial dos elementos do array e comparar o valor do próximo elemento visualizado com uma determinada amostra.

Consideremos detalhadamente a solução dos problemas do primeiro tipo: encontrar o maior (menor) elemento.

Vamos imaginar uma matriz unidimensional na forma de uma pilha de cartas, cada uma com um número escrito. Então a ideia de encontrar o maior elemento de um array pode ser representada da seguinte forma:

1) pegue a carta de cima (o primeiro elemento do array), lembre-se do número da carta (escreva com giz no quadro) como o maior dos que você olhou; coloque o cartão de lado;

2) pegue a próxima carta; compare os números escritos no cartão e no quadro; se o número do cartão for maior, apague o número escrito no quadro e escreva ali o mesmo número do cartão; se o novo número não for maior, deixaremos o registro existente no quadro; coloque o cartão de lado;

3) repita os passos descritos no passo 2 para todas as cartas restantes na pilha.

Como resultado, o maior valor do elemento do array visualizado será escrito no quadro.

Na programação, ao justificar a correção dos algoritmos cíclicos, utiliza-se o conceito de invariante de ciclo.

Invariante de loop - expressão lógica(condição) dependendo das variáveis ​​que mudam no corpo do loop; é verdadeiro imediatamente antes do loop iniciar a execução e após cada iteração do corpo do loop.

A condição “o número escrito no quadro é o maior de todos os visualizados até agora” é um loop invariante para o algoritmo considerado.

Como o valor de um elemento do array é acessado pelo seu índice, ao procurar o maior elemento em um array unidimensional, você pode procurar pelo seu índice. Vamos denotar o índice necessário como imax. Então o algoritmo descrito acima no array que formamos em Pascal pode ser escrito da seguinte forma:

Se houver vários elementos no array cujos valores sejam iguais ao valor máximo, então este programa encontrará o primeiro deles (a primeira ocorrência). Pense no que precisa ser alterado no programa para que ele contenha o último dos elementos máximos. Como o programa deve ser transformado para que possa ser usado para encontrar o elemento mínimo de um array?

O resultado da resolução de um problema do segundo tipo (encontrar um elemento de array cujo valor seja igual a um determinado valor) pode ser:

K é o índice do elemento da matriz tal que a[k] = x, onde x é um determinado número;
uma mensagem informando que o elemento desejado não foi encontrado no array.

O programa de busca por um valor igual a x no array que formamos pode ser assim:

Este programa percorre todos os elementos de um array, um por um. Se houver vários elementos no array cujos valores sejam iguais a um determinado número, o programa encontrará o último.

Em muitos casos, você precisa encontrar o primeiro elemento que possui um valor correspondente e interromper a varredura do array. Para isso, você pode usar o seguinte fragmento de programa:

Aqui, a execução do algoritmo será interrompida em um de dois casos: 1) o primeiro elemento igual ao dado for encontrado no array; 2) todos os elementos do array foram verificados.

Anote o texto completo do programa e execute-o no seu computador.

Muitas vezes você precisa determinar o número de elementos que satisfazem alguma condição. Neste caso, é introduzida uma variável cujo valor é aumentado em uma unidade cada vez que o elemento desejado é encontrado.

Determine quais elementos são contados usando o seguinte fragmento de programa.

Se for necessário determinar a soma dos valores dos elementos que satisfazem uma determinada condição, é introduzida uma variável, ao qual é adicionado o valor do elemento do array encontrado.

Determine qual condição é satisfeita pelos elementos da matriz cujos valores são somados usando o seguinte fragmento de programa.

Anote os textos completos dos dois últimos programas e execute-os no computador.

2.2.6. Classificar uma matriz

Por classificar (ordenar) um array, queremos dizer redistribuir os valores de seus elementos em alguma ordem específica.

A ordem na qual o primeiro elemento de uma matriz tem o menor valor e o valor de cada elemento subsequente não é menor que o valor do elemento anterior é chamada não decrescente.

A ordem na qual o primeiro elemento de uma matriz tem o maior valor e o valor de cada elemento subsequente não é maior que o valor do elemento anterior é chamada não crescente.

O objetivo da classificação é facilitar a busca posterior por elementos: é mais fácil encontrar o elemento desejado em uma matriz ordenada.

Você já encontrou classificação ao trabalhar com bancos de dados. Agora vamos considerar uma das opções possíveis 1 implementação do mecanismo desta operação - ordenação por seleção.

1 Você se familiarizará com outros métodos de classificação nas aulas de ciência da computação do 10º ao 11º ano.


A classificação por seleção (por exemplo, não ascendente) é feita da seguinte forma:

1) o elemento máximo do array é selecionado;
2) o máximo e o primeiro elemento são trocados; o primeiro elemento é considerado classificado;
3) na parte não classificada do array, o elemento máximo é novamente selecionado; ele troca de lugar com o primeiro elemento não classificado da matriz;
4) as ações descritas no parágrafo 3 são repetidas com elementos não classificados da matriz até que reste um elemento não classificado (seu valor será mínimo).

Vamos considerar o processo de ordenação por seleção usando o exemplo do array a = (0, 1, 9, 2, 4, 3, b, 5).

Neste array de 8 elementos, realizamos a operação de selecionar o elemento máximo 7 vezes. Em uma matriz de n elementos, tal operação será executada n – 1 vezes. Explique por quê.

Aqui está um fragmento de um programa que implementa o algoritmo descrito:

Aqui usamos um loop dentro de outro. Esse design é chamado de loop aninhado.

Escreva o texto completo do programa e execute-o no computador para o array a considerado no exemplo.

2.2.7. Outras estruturas de dados

Muitas aplicações modernas (conversacionais, de rede, sistemas instrumentais, sistemas operacionais, etc.) trabalham com dados cujo volume não pode ser limitado antecipadamente a um determinado valor. Suponha que um grande complexo de software esteja sendo desenvolvido, cuja operação BATER será armazenado grande número vários dados apresentados na forma de matrizes. A área de memória alocada para cada array é contígua; Os limites da área são estritamente fixados durante a execução do programa. Como a quantidade de dados é desconhecida antecipadamente, os programadores terão que especificar os tamanhos máximos possíveis dos arrays usados. Como resultado, pode não haver memória disponível suficiente para armazenar todos os dados possíveis. Ao mesmo tempo, na prática, será extremamente raro encontrar situações em que cada array esteja completamente cheio - em muitos deles, parte da memória reservada permanecerá livre. Limites rígidos não permitem que o espaço vazio de alguns arrays seja redistribuído em favor de outros. O resultado é o uso ineficiente de RAM. A saída nesta situação é substituir alguns arrays por listas ao projetar um programa, que ocupam exatamente a quantidade de memória realmente necessária no programa. no momento e não crie reservas.

Uma lista é um conjunto de elementos que podem ser dispersos sistema operacional de acordo com a RAM como você quiser. A ligação dos elementos da lista é realizada pelo fato de cada elemento da lista conter, além dos dados, o endereço do elemento que o segue na lista.

Uma lista linear simples é uma sequência de elementos linearmente relacionados para os quais são permitidas as operações de adicionar um elemento a um local arbitrário na lista e excluir qualquer elemento.

Numa lista linear, para cada elemento, exceto o primeiro, existe um elemento anterior; para cada elemento, exceto o último, há um próximo elemento. Assim, todos os elementos da lista são ordenados (Fig. 2.3).

Arroz. 2.3. Lista linear


Em uma lista linear, você pode percorrer todos os elementos apenas movendo sequencialmente do elemento atual para o próximo, começando pelo primeiro. O acesso direto ao i-ésimo elemento não é possível; list é uma estrutura de acesso sequencial. Ao contrário de uma lista, um array é uma estrutura de acesso aleatório.

O MAIS IMPORTANTE

Variedadeé uma coleção de um número fixo de elementos do mesmo tipo, aos quais é atribuído um nome comum. Um elemento individual da matriz é acessado por seu número (índice).

Antes de usá-lo em um programa, o array deve ser descrito. Visão geral da descrição de uma matriz unidimensional:

Você pode preencher um array inserindo o valor de cada elemento no teclado ou atribuindo alguns valores aos elementos no programa. Ao preencher o array e exibi-lo na tela, é utilizado um loop com um parâmetro.

Ao resolver vários problemas relacionados ao processamento de arrays, algoritmos padrão como: soma de elementos de array são usados; procure um elemento com propriedades especificadas; classificação de matriz.

Perguntas e tarefas

1. Leia os materiais de apresentação do parágrafo contido em aplicação eletrônica para o livro didático. Que slides você poderia adicionar à sua apresentação?

2. Um array pode conter simultaneamente valores inteiros e reais?

3. Por que é necessária uma descrição de array?

4. O que você pode dizer sobre o array formado a seguir?

UM) para eu:=eu para 10 fazer a[i]:=aleatório(101)-50;
b) para eu:=eu para 20 fazer uma[eu]:=eu;
V) para eu:=eu para 5 fazer a[i]:=2*i-l;

5. Execute em seu computador um programa para solucionar o problema discutido no exemplo do parágrafo 2.2.4. Considere o número de moradores da casa como um número aleatório na faixa de 50 a 200 pessoas, e o número de casas n = 30.

6. Existem duas cestas próximas a você. O primeiro está cheio de maçãs de tamanhos diferentes, o segundo está vazio.

Etapa 1. Você pega qualquer maçã da primeira cesta e a coloca na mesa à sua frente.

Etapa 2. Você pega a próxima maçã da primeira cesta e faz a comparação:

Se a maçã em suas mãos for maior que a maçã na mesa, você coloca a maçã em suas mãos na segunda cesta;
- se a maçã em suas mãos for menor que a maçã que está na mesa, você coloca a maçã na mesa e coloca a maçã que estava na mesa na segunda cesta.

Você repete a etapa 2 até que a primeira cesta esteja vazia.

Qual maçã vai acabar na mesa bem no final? Tente formular qual é o loop invariante no algoritmo fornecido. Formule a declaração do problema usando a terminologia discutida neste parágrafo.

7. Escreva um programa que calcule a temperatura média do ar durante uma semana. Os dados iniciais são inseridos no teclado.

8. Dado um array de dez inteiros. Escreva um programa para contar o número de elementos deste array que possuem o valor máximo.

9. Numa turma de 20 alunos eles escreveram um ditado em russo. Escreva um programa que conte o número de dois, três, quatro e cinco recebidos por um ditado.

10. O recrutamento para o time de basquete escolar foi anunciado. A altura de cada um dos n alunos que desejam entrar nesta equipe é conhecida. Crie um algoritmo para calcular o número de candidatos que têm chance de entrar na equipe se a altura de um jogador da equipe for de pelo menos 170 cm. Considere a altura do candidato à equipe como um número aleatório na faixa de 150 a 200 cm, e o número de candidatos n = 50.

11. As matrizes inteiras aeb contêm os comprimentos das pernas de dez triângulos retângulos (a[i] é o comprimento da primeira perna, b[i] é o comprimento da segunda perna do triângulo i-ro). Escreva um programa que, com base nos dados disponíveis, determine o triângulo com maior área e exiba seu número, os comprimentos dos catetos e a área. Considere o caso quando existem vários desses triângulos.

12. Insira informações sobre dez países europeus nas matrizes n (nome do país), k (população), s (área do país). Escreva um programa que imprima os nomes dos países em ordem crescente de densidade populacional.

13. Encontre informações sobre casos especiais de lista como pilha e fila. Prepare uma mensagem curta.

LIÇÃO:

Estágio organizacional da aula:

  • Saudações

Professor:

Hoje estamos examinando "Matrizes Unidimensionais". Nas lições anteriores, lembramos que existem muitos tipos de dados (números) que são usados ​​na programação. Nomeie-os.

Estudante:

Tipos de dados como Todo E Real.

Todo:

  • byte -128 a 127;
  • curto -32.768 a 32.767;

Professor:

Variedade

Descrição da matriz:

Var<имя_массива>:variedade [<минимальное_значение_индекса>. <максимальное_значение_индекса>] de<тип данных>;

Exemplo: var a: array de inteiro;

UM

const a: array de inteiros = (1, 4, 7, 14, 25);

Preenchendo a matriz:

Existem várias maneiras de preencher um array. Vamos dar uma olhada neles.

para eu:=1 para 10 fazer leia(uma[i]);

para eu:=1 para 10 fazer uma[eu]:=eu;

randomizar

para eu:=1 para 10 fazer a[i]:= aleatório(100);

Saída de elementos de um array:

Pascal;

randomizar.

para eu:=1 para 10 fazer escreva(a[i], " ");

para eu:=1 para 10 fazer writeln("a[",i, ",a[i]);

Vejamos um exemplo:

var um: variedade de inteiro;

randomizar

para eu:=1 para 10 fazer

um[eu]:= aleatório

escrever(um[eu]," ");

Resultados:

Professor:

Estudante:

Ver o conteúdo do documento
"Matrizes unidimensionais de inteiros"

Assunto:"Matrizes unidimensionais de inteiros"

Tipo de aula: Aprendendo novo material

Objetivo da lição: Aprenda os recursos básicos de um array e também como programá-lo.

Tarefas:

    Conheça o conceito de “ARASSY”;

    Descrição do array como objeto de programação;

    Explore opções para preencher e gerar dados de um array.

Equipamento:

    A sala de aula dispõe de Projetor com Tela para exibição da tela do professor;

    Quadro para exposição das principais etapas da aula;

    14 computadores para os alunos consolidarem de forma prática o material abordado.

LIÇÃO:

Estágio organizacional da aula:

    Saudações

    Verificando a frequência dos alunos

Professor:

Pessoal, hoje começamos a estudar uma nova etapa de programação em Linguagem Pascal.

Hoje estamos examinando "Matrizes Unidimensionais". Nas lições anteriores, lembramos que existem muitos tipos de dados (números) que são usados ​​na programação. Nomeie-os...

Estudante:

Tipos de dados como Todo E Real.

Todo:

    byte -128 a 127;

    curto -32.768 a 32.767;

    int -2 147 483 648 a 2 147 483 647;

Real (números de ponto flutuante):

    real de 4,9*10-324 a 1,7*10308;

Professor:

Variedadeé um conjunto ordenado de variáveis ​​​​do mesmo tipo (elementos de array), às quais pode ser atribuído um nome comum, mas todos os elementos terão números (índices) diferentes.

Descrição da matriz:

Antes de utilizar qualquer objeto em um programa, ele deve ser declarado na lista de variáveis. Portanto, o array também deve ser declarado.

Para definir um array, você deve especificar: NOME DO ARRAY + NÚMERO DE ELEMENTOS DO ARRAY + TIPO DE DADOS utilizado no array.

Var: matriz [ .. ] de ;

Exemplo: var a: array de inteiro;

Isso descreve uma matriz unidimensional de inteiros chamada UM. O número mínimo e máximo de índices é de 1 a 15. Um array também pode ser descrito na seção de descrição de constantes, portanto, os elementos do array não podem ser alterados durante a execução do programa;

const a: array de inteiros = (1, 4, 7, 14, 25);

Neste caso, ao criar um array, adicionamos imediatamente elementos a ele.

Preenchendo a matriz:

Existem diversas maneiras de preencher um array. Vamos dar uma olhada neles...

1) Para inserir valores de elementos pelo teclado, use um loop:

para eu:=1 para 10 fazer leia(uma[i]);

2) Você pode definir o valor dos elementos do array usando o operador de atribuição:

para eu:=1 para 10 fazer uma[eu]:=eu;

3) Preenchendo um array usando um procedimento randomizar. Permite gerar números aleatórios, no nosso caso são números de 0 a 99 (inclusive) e preencherá nosso array com esses números.

para eu:=1 para 10 fazer a[i]:= aleatório(100);

Saída de elementos de um array:

Nas linguagens de programação, temos a oportunidade não apenas de inserir números e dados no programa, mas também de exibi-los no display (console). No nosso caso, hoje trabalharemos nas operações de saída de dados do array para o console Pascal;

Podemos ou não saber os números que especificamos ao escrever o programa, uma vez que os números poderiam ter sido gerados aleatoriamente usando o procedimento randomizar.

Os elementos do array podem ser enviados para o console, separados por um espaço ou com um comentário detalhado.

1) Separe os números com espaços e imprima usando o comando Write normal:

para eu:=1 para 10 fazer escreva(a[i], " ");

2) Escrevendo um comentário no qual indicará: NÚMERO DO ÍNDICE e ao lado será indicado o NÚMERO que corresponde a este índice. Todos os itens serão impressos no console usando o comando Writeln, LN no final da palavra indicando que cada novo elemento array será gerado com nova linha na consola.

para eu:=1 para 10 fazer writeln("a[",i, ",a[i]);

Vejamos um exemplo:

var um: variedade de inteiro;

randomizar(um procedimento que serve para inicializar (ou como também é chamado de build-up) um gerador de números aleatórios)

para eu:=1 para 10 fazer

um[eu]:= aleatório(19); (função que gera número aleatório de zero a 18: aleatório(n+1))

escrever(um[eu]," ");

Resultados:

Professor:

Na lição de hoje aprendemos?

Estudante:

Aprendeu os fundamentos da programação de array. Seu anúncio, preenchendo de várias maneiras, bem como saída usando comentários detalhados.

Hoje na aula veremos um novo conceito variedade. Variedadeé um conjunto ordenado de dados do mesmo tipo. Em outras palavras, um array é uma tabela, cada elemento da qual é um elemento do array. As matrizes podem ser unidimensionais ou bidimensionais. Matriz unidimensional– esta é uma tabela linear, ou seja, uma tabela cujos elementos estão organizados em uma linha ou coluna. Matriz bidimensional

Download:


Visualização:

Região de Kostanay, distrito de Mendykarinsky, escola secundária Budyonnovskaya,

professor de informática

Doshchanova Gulzhan Baygarievna

9º ano

Assunto: O conceito de uma matriz. Unidimensional e matrizes bidimensionais. Elemento da matriz.

Progresso da aula:

  1. Momento organizacional.
  2. Verificando o dever de casa.
  3. Explicação do novo material.
  4. Resolução de problemas.
  5. Trabalho de casa.
  1. Momento organizacional.Verifique a disponibilidade da sala de aula para as aulas, faça uma chamada dos alunos.
  1. Verificando o dever de casa.Certifique-se de resolver os problemas do dever de casa corretamente. Alfinete material teórico lição anterior.
  1. Explicação do novo material.

Hoje na aula veremos um novo conceito variedade . Variedade - é um conjunto ordenado de dados do mesmo tipo. Em outras palavras, um array é uma tabela, cada elemento da qual é um elemento do array. As matrizes podem ser unidimensionais ou bidimensionais.Matriz unidimensional– esta é uma tabela linear, ou seja, uma tabela cujos elementos estão organizados em uma linha ou coluna.Matriz bidimensionalé uma mesa retangular, ou seja, uma tabela que consiste em várias linhas e colunas.(Mostrar cartazes de tabelas lineares e retangulares. Se disponível na turma quadro interativo você pode preparar uma apresentação sobre vários tipos matrizes.)

Existem sete elementos nesta tabela linear. Cada elemento desta tabela representa uma letra.

Os elementos da matriz podem ser valores numéricos ou de texto. Na seção variável Var, a matriz é escrita da seguinte forma:

x: matriz de string;

Esta entrada indica que você recebe uma matriz unidimensional (tabela linear) contendo 7 elementos cujos valores são valores de string.

Uma matriz bidimensional é denotada da seguinte forma:

y: array de inteiros;

elementos desta matriz são inteiros escritos em 4 linhas e 5 colunas.

Um elemento de uma matriz unidimensional é escrito assim: x – o quinto elemento de uma matriz unidimensional x (seu significado é a letra “O”), sim – um elemento localizado na segunda linha e terceira coluna de uma matriz bidimensional sim (seu valor é 15).

Agora vamos prosseguir para a resolução de problemas. (As tarefas devem ser selecionadas levando em consideração o nível de preparação da turma.)

  1. Resolução de problemas. Construa um diagrama de blocos e crie um programa para resolver os seguintes problemas:
  1. Em uma determinada matriz x de números reais, determine a média aritmética daqueles que são maiores que 10.

Primeiro, vamos analisar o problema, precisamos fazer com que os alunos entendam claramente as condições do problema, podemos dar como exemplo uma tabela de 9 elementos;

resumo do programa;

x: matriz de reais;

s,c: reais;

k, n: inteiro;

começar

para k = 1 a 9 faça

começar

writeln('INSERIR VALOR X[', k,']');

leia(x[k]);

fim;

(insira os elementos da tabela que representam quaisquer números reais)

s:=0; n:=0; (redefinir a soma e o número de elementos para zero)

para k:=1 a 9 faça

começar

se x[k]>10 então comece s:=s+x[k]; n:=n+1; fim;

fim;

(calculamos a soma e o número de elementos maiores que 10)

c=s/n; (encontre a média aritmética)

escrevaln('c=',c); (exibir o resultado na tela)

Fim.

  1. As áreas de vários círculos são fornecidas. Encontre o raio do menor deles.

Antes de resolver o problema, descubra com os alunos como a área de um círculo depende do raio. (Se o raio for menor, então a área é menor.) De acordo com a análise realizada, resolva o problema de uma das formas.

Primeira maneira:

Círculo do programa_1;

S, R: matriz de reais;

x: reais; k, n: inteiro;

começar

para k = 1 a 10 faça

começar

R[k]:=sqrt(S[k]/pi);

fim;

x:=R(1); n:=1;

para k:=2 a 10 faça

começar

se R[k]

fim;

writeln(‘RAIO ’,n,’ CÍRCULO – MENOR R=’, R[n]);

Fim.

Segunda maneira:

Círculo do programa_2;

S: matriz de reais;

R,x: reais; eu,k: inteiro;

começar

para k = 1 a 10 faça

começar

writeln(‘ENTER ÁREA de ‘, k,’ CÍRCULO’); leia(S[k]);

fim;

x:=S(1); k:=1;

para i:=2 a 10 faça

começar

se S[k]

fim;

R:=quadrado(x/pi); writeln(‘RAIO ’, n ,’ CÍRCULO – MENOR R=’,R);

Fim.

  1. Trabalho de casa. Página 90-97. (N.T. Ermekov, V.A. Krivoruchko, L.N. Kaftunkina Informática 9º ano, Almaty “Mektep” 2005)

Resolva os seguintes problemas:

  1. Em uma matriz Y composta por 12 inteiros, determine a média aritmética daqueles que são pares.
  2. As áreas de vários quadrados são fornecidas. Encontre o comprimento da diagonal do maior deles.
  1. Resumindo a lição.Anuncie as notas aos alunos e comente-as. Analise as soluções dos alunos para os problemas.