Tablice dwuwymiarowe. Wypełnianie tablicy dwuwymiarowej według zadanej reguły

Sekcje: Informatyka

Temat: Tablice dwuwymiarowe. Wypełnianie tablicy dwuwymiarowej według zadanej reguły.

Cele:ćwiczyć umiejętność pracy z elementami tablicy dwuwymiarowej, nauczyć się wypełniać tablice dwuwymiarowe według zadanej reguły, nauczyć się wyprowadzać związek pomiędzy numerem wiersza i numerem kolumny; rozwój logicznego myślenia uczniów.

POSTĘPY KLASY

1. Aktualizowanie wiedzy

Tablice, w których położenie elementów jest opisane dwoma indeksami, nazywane są dwuwymiarowymi. Strukturę takiej tablicy można przedstawić za pomocą macierzy prostokątnej. Każdy element macierzy jest jednoznacznie identyfikowany poprzez wskazanie numeru wiersza i kolumny, numer wiersza to i, numer kolumny to j.
Rozważmy macierz A o rozmiarze n*m:

11 12 13 14
21 22 23 24
31 32 33 34

Macierz z 3 wierszami i 4 kolumnami, liczba wierszy n=3, liczba kolumn m=4. Każdy element ma swój numer, który składa się z dwóch liczb - numeru wiersza, w którym znajduje się element, oraz numeru kolumny. Na przykład a23 to element znajdujący się w drugim wierszu i trzeciej kolumnie.
Dwuwymiarową tablicę w Turbo Pascalu można opisać na różne sposoby. Aby opisać tablicę dwuwymiarową, należy określić, jakiego rodzaju są jej elementy i jak są one numerowane (jaki jest typ indeksu). Tablicę dwuwymiarową można opisać na kilka sposobów.

Stała maks.N=…; (Maksymalna liczba wierszy)
maksM=…; (Maksymalna liczba kolumn)

1 sposób

Wpisz Mas = tablica<тип элементов>; (Tablica jednowymiarowa)
Typ TMas = tablica Mas; (Tablica jednowymiarowa, której elementy są tablicami jednowymiarowymi)

Metoda 2

Wpisz TMas = tablica tablicy<тип элементов>;
(Tablica jednowymiarowa, której elementy są tablicami jednowymiarowymi)

3 sposoby

Typ<имя типа>= tablica<тип элементов>; (Tablica dwuwymiarowa)

Preferowany jest trzeci sposób opisu tablicy dwuwymiarowej.

Na przykład:

Stała N=3; M=4;
Typ TMas= tablica liczb całkowitych; (2-wymiarowa tablica liczb całkowitych)

Tworzenie tablicy dwuwymiarowej można przeprowadzić na cztery sposoby: wprowadzając dane z klawiatury, poprzez generator liczb losowych, zgodnie z zadaną regułą, lub za pomocą pliku.

1) Tworzenie tablicy dwuwymiarowej przy użyciu klawiatury i algorytmu wyprowadzania elementów macierzy wiersz po wierszu.

Stała N=10;M=10;
Typ Tmas= tablica liczb całkowitych;
Var A:Tmas; i,j:liczba całkowita;
Zaczynać
(Wprowadzanie elementów macierzy)
Dla i:=1 do N wykonaj
Dla j:=1 do M wykonaj
Czytać);
(Wyjście elementów macierzy)
Dla i:=1 do N zaczynamy
Dla j:=1 do M wykonaj
Napisz(A:4); (Drukowana jest pierwsza linia)
Writeln (Nowa linia)
koniec;
Koniec.

2) Fragment programu generującego tablicę dwuwymiarową za pomocą generatora liczb losowych.

Zaczynać
Losuj; (Inicjowanie generatora liczb losowych)
(Wprowadzanie elementów macierzy)
Dla i:=1 do N wykonaj
Dla j:=1 do M wykonaj
Odp.:=losowy(45)-22;

2. Studiowanie nowego materiału. Wypełnianie tablicy zgodnie z regułą

Rozważmy kilka fragmentów programów do wypełniania tablicy dwuwymiarowej zgodnie z pewnym prawem. Aby to zrobić, musisz wyprowadzić regułę wypełniania.

1. Wypełnij tablicę A o rozmiarze n*m ​​w następujący sposób

1 2 3 4 5 6 7 8
16 15 14 13 12 11 10 9
17 18 19 20 21 22 23 24
32 31 30 29 28 27 26 25
33 34 35 36 37 38 39 40
48 47 46 45 44 43 42 41

Tablica jest wypełniana zgodnie z zasadą „węża”. Zasada wypełniania: jeśli numer wiersza jest liczbą nieparzystą, to A=(i-1)*m+j, w przeciwnym przypadku A=i*m-j+1.

program M1A;

n,m,i,j: liczba całkowita;
zaczynać
readln(n,m);
dla i:=1 do n zaczyna się
dla j:=1 do m zrobić
zaczynać
jeśli mod 2 = 1, to
A=(i-1)*m+j
w przeciwnym razie
A=i*m-j+1;
napisz(A:3);
koniec;
napisz;
koniec;
czytaj;
koniec.

Oto przykład programu dla innego sposobu napełniania według podanej reguły:

program M1B;
var A:tablica liczb całkowitych;
n,m,i,j: liczba całkowita;
c:liczba całkowita;
zaczynać
readln(n,m);
c:=1;
dla i:=1 do n wykonaj
zaczynać
dla j:=1 do m zrobić
zaczynać
O:=c;
jeśli (i mod 2 = 0) i (j<>m) wtedy
grudzień (c)
w przeciwnym razie
inc(c);
napisz(A:3);
koniec;
c:=c+m-1;
napisz;
koniec;
czytaj;
koniec.

2. Wypełnij tablicę A zgodnie z następującą zasadą:

1 0 2 0 3 0 4
0 5 0 6 0 7 0
8 0 9 0 10 0 11
0 12 0 13 0 14 0

program M2;
var A:tablica liczb całkowitych;
n,m,i,j: liczba całkowita;
c:liczba całkowita;
zaczynać
readln(n,m);
c:=0;
dla i:=1 do n wykonaj
zaczynać
dla j:=1 do m zrobić
zaczynać
jeśli (i-1+j) mod 2 = 0 to
O:=0
w przeciwnym razie
zaczynać
inc(c);
O:=c;
koniec;
napisz(A:5);
koniec;
napisz;
koniec;
czytaj;
koniec.

3. Wypełnij tablicę A zgodnie z następującą zasadą:

1 12 13 24 25 36
2 11 14 23 26 35
3 10 15 22 27 34
4 9 16 21 28 33
5 8 17 20 29 32
6 7 18 19 30 31

var A:tablica liczb całkowitych;
n,m,i,j: liczba całkowita;
c:liczba całkowita;
zaczynać
readln(n,m);
c:=1;
dla j:=1 do m zrobić
zaczynać
dla i:=1 do n wykonaj
zaczynać
O:=c;
jeśli (j mod 2 = 0) i (tj<>n)wtedy
grudzień (c)
w przeciwnym razie
inc(c);
koniec;
c:=c+n-1;
koniec;
dla i:=1 do n wykonaj
zaczynać
dla j:=1 do m zrobić
napisz(A:5);
napisz;
koniec;
czytaj;
koniec.

4. Wypełnij tablicę A zgodnie z następującą zasadą:

1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4

var i,j,m,c,d: liczba całkowita;

zaczynać
c:=1;
czytajln(m);
dla j:=1 do m zrobić
zaczynać
ja:=c;
d:=1;
powtarzać
O:=d;
inc(i);
jeśli ja> to wtedy
ja:=1;
włącznie(d);
aż do i=c;
dec(c);
jeśli c<= 0 then
c:=m-c;
koniec;
dla i:=1 do m zrobić
zaczynać
dla j:=1 do m zrobić
napisz(A:2);
napisz;
koniec;
koniec.

5. Wypełnij tablicę A zgodnie z następującą zasadą:

1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1

var m,i,j: liczba całkowita;
A:tablica liczb całkowitych;
zaczynać
czytajln(m);
dla i:=1 do m zrobić
zaczynać
dla j:=1 do m zrobić
zaczynać
jeśli (i=j) lub (m-i+1=j) to
O:=1
w przeciwnym razie
O:=0;
napisz(A:2);
koniec;
napisz;
koniec;
koniec.

3. Problemy do samodzielnego rozwiązania

6 5 4 3 2 1
7 8 9 10 11 12
18 17 16 15 14 13
19 20 21 22 23 24
30 29 28 27 26 25
31 32 33 34 35 36

36 25 24 13 12 1
35 26 23 14 11 2
34 27 22 15 10 3
33 28 21 16 9 4
32 29 20 17 8 5
31 30 19 18 7 6

0 1 1 1 0
1 0 1 0 1
1 1 0 1 1
1 0 1 0 1
0 1 1 1 0

4) Wypełnij tablicę zgodnie z następującą zasadą:

31 32 33 34 35 36
25 26 27 28 29 30
19 20 21 22 23 24
13 14 15 16 17 18
7 8 9 10 11 12
1 2 3 4 5 6

5) Wypełnij tablicę zgodnie z następującą zasadą:

31 25 19 13 7 1
32 26 20 14 8 2
33 27 21 15 9 3
34 28 22 16 10 4
35 29 23 17 11 5
36 30 24 18 12 6

Praca domowa:

1) Wypełnij tablicę zgodnie z następującą zasadą:

6 7 18 19 30 31
5 8 17 20 29 32
4 9 16 21 28 33
3 10 15 22 27 34
2 11 14 23 26 35
1 12 13 24 25 36

2) Wypełnij tablicę zgodnie z następującą zasadą:

31 32 33 34 35 36
30 29 28 27 26 25
19 20 21 22 23 24
18 17 16 15 14 13
7 8 9 10 11 12
6 5 4 3 2 1

3) Wypełnij tablicę zgodnie z następującą zasadą:

0 1 1 1 0
1 0 1 0 1
1 1 0 1 1
1 0 1 0 1
0 1 1 1 0

Sekcje: Informatyka

Cele:

  1. Zapoznanie uczniów z możliwością wypełniania i przetwarzania tablicy.
  2. Utwórz interfejs graficzny dla projektu, aby wypełnić tablicę i obliczyć sumę elementów w danej tablicy.
  3. Rozwijaj zainteresowanie poznawcze tematem
  4. Kształtuj odpowiedzialne podejście do nauki

PODCZAS ZAJĘĆ

1. Aktualizacja lekcji

Organizowanie czasu

Ankieta czołowa na poprzedni temat „Pojęcie tablicy. Tablica jednowymiarowa”

2. Kształtowanie umiejętności i zdolności

Wyjaśnienie nowego materiału

Deklaracja tablicy

Deklarowanie tablicy jest podobne do deklarowania zmiennych; wystarczy określić zakres zmian indeksu. Na przykład deklaracja jednowymiarowej tablicy liczb całkowitych zawierającej 10 elementów odbywa się w następujący sposób:

A: tablica liczb całkowitych;

Podstawowe zadania podczas pracy z tablicami

1. Tworzenie (wypełnianie) tablicy

1.1. zgodnie ze wzorami For i:=1 do 10 wykonaj a[i]:= i*i;

1.2. generuj losowo Dla i:=1 do 10 wykonaj a[i]:= random(20):

Wbudowana funkcja RANDOM(MAX), zwraca losową liczbę całkowitą o równomiernym rozkładzie w zakresie od 0 do MAX – 1 (MAX jest parametrem dostępu)

1.3. wprowadź z klawiatury Dla i:=1 do 10 wykonaj read(a[i]);

2. Posortuj tablicę (rosnąco, malejąco);

3. Wyszukaj elementy w tablicy;

4. Wybieranie elementów tablicy według warunku;

Losowe wypełnianie tablicy.

Aby rozpocząć pracę z tablicą należy ją wypełnić tzn. przypisz określone wartości elementom tablicy. Aby wygenerować ciąg liczb losowych, używamy funkcji Random(100). Po uruchomieniu programu ta funkcja wyświetli pseudolosową sekwencję liczb całkowitych z zakresu od 0 do 100.

Do generowania ciągów liczb losowych różniących się od siebie zaleca się użycie operatora Randomize

Działania na tablicach jednowymiarowych

1. Obliczanie sumy pierwiastków

Dla I:= 1 do 10 Do s:=s+ a[i]; (zwykle akumulacja kwoty w s)

2. Obliczenie produktu

Dla I:= 1 do 10 Do р:=р* a[i]; (zwykła akumulacja produktu w p)

3. Wyszukaj element o podanej wartości

3. Uwaga Rozwój umiejętności i zdolności w praktyce

Projekt „Suma elementów w tablicy”. Opracujmy projekt „Suma elementów w tablicy”, który wypełni tablicę liczbami losowymi i obliczy sumę tych liczb

Najpierw utwórzmy procedurę wypełniania tablicy

1.Uruchom system programowania Delphi.

2. Pracę nad projektem rozpoczynamy od stworzenia interfejsu graficznego, do tego w oknie Kreator formularzy Elementy sterujące umieszczone są na formularzu. Aby stworzyć interfejs graficzny projektu, umieścimy na formularzu dwa pola tekstowe służące do wyświetlania danych liczbowych (jedno do wypełnienia tablicy, drugie do wyświetlenia sumy) oraz dwa przyciski umożliwiające realizację procedur zdarzeń: wypełnienie tablicy i suma

3. Z Paski narzędzi umieść pole tekstowe Editl i przycisk polecenia Buttonl na formularzu

Następnym krokiem jest utworzenie kodu procedury zdarzenia. Dwukrotne kliknięcie przycisku, dla którego chcesz utworzyć kod programu, powoduje wyświetlenie okna Kod programu z pustym szablonem procedury zdarzenia.

4. Kliknij dwukrotnie przycisk Buttonl, pojawi się szablonowa procedura zdarzenia TForml.ButtonlClick: Zadeklaruj tablicę A i opis zmiennych JEST w sekcji opisu zmiennej var

A:tablica liczb całkowitych;

procedura TForm1.Button1Click(Sender: TObject);

Dla I:= 1 do 10 Zrób

A[I] := Losowe(10);

Edit1.Text:= Edit1.Text +" " + IntToStr(a[i]);

5. Zapisz projekt jako

6. Kompilacja projektu (Projekt - Kompiluj)

Stwórzmy teraz procedurę obliczającą sumę elementów wypełnionej tablicy

Używając Paski narzędzi Umieśćmy przycisk Button2 i pole tekstowe Edit2 na formularzu. Dwukrotne kliknięcie przycisku Button2, dla którego należy utworzyć kod programu, otwiera okno Kod programu z pustym szablonem procedury zdarzenia.

procedura TForm1.Button2Click(Nadawca: TObject);

Dla I:= 1 do 10 Zrób

Edit2.Text:= Edit2.Text +" " + IntToStr(s)

Zapisanie projektu całego projektu (Zapisz projekt).

Skompilujmy projekt (naciskając klawisz F9).

Kliknij przyciski Wypełnij tablicę i Suma.

Wyniki kwot dla różnych opcji napełniania zostaną wyświetlone w polu tekstowym

4. Podsumowanie

5. Zadanie domowe: Stwórz projekt „Iloczyn elementów tablicy”, który polega na wypełnieniu tablicy liczbami losowymi i możliwości wyświetlenia iloczynu wszystkich elementów tablicy w polu tekstowym.

Tablice jednowymiarowe. Tworzenie tablicy i wyświetlanie jej elementów

Definicja pojęcia

Tablica to zbiór danych tego samego typu o wspólnej nazwie dla wszystkich elementów.

Elementy tablicy są ponumerowane, a dostęp do każdego z nich można uzyskać za pomocą numeru. Liczby elementów tablicy nazywane są inaczej indeksami, a same elementy tablicy nazywane są zmiennymi indeksowanymi.

A[N]

- 0. 5

-5.2

0.6

Wektor (liniowy Lub tablica jednowymiarowa) jest przykładem tablicy, w której elementy są numerowane za pomocą jednego indeksu.

  • Jak liczby (indeks) element tablicy, ogólnie rzecz biorąc, używane jest wyrażenie typ porządkowy(najczęściej jest to stała całkowita lub zmienna typu całkowitego: liczba całkowita, słowo, bajt Lub skrót)
  • Podczas uzyskiwania dostępu do elementu tablicy indeks jest wskazany w nawiasach kwadratowych. Na przykład a, masa.
  • Elementy tablicy są przetwarzane, gdy zmieniają się indeksy elementów. Na przykład, jeśli używasz wyrażenia, do przeglądania elementów tablicy przydatne są następujące zmienne:
    • a[i] - wszystkie elementy;
    • a - elementy rozmieszczone w równych miejscach;
    • a - elementy w nieparzystych miejscach

Opis tablicy

  • Zdefiniowanie zmiennej jako tablicy bez uprzedniego zadeklarowania typu tablicy
odmABC: szyk z liczba całkowita; odm S: szyk liczby całkowitej; k: szyk liczby całkowitej;

Notatka

    • Opis tablicy jest wymagany przez kompilator w celu przydzielenia pamięci jej elementom.
    • Zmienna jest definiowana jako tablica przy użyciu słowa funkcyjnego szyk(szyk). W nawiasach kwadratowych podany jest zakres, czyli dolna i górna granica wartości indeksu tablicy. Górna wartość graniczna nie może być mniejsza niż dolna granica.
    • Tutaj zmienne s i k są uważane za różnych typów. Aby zapewnić kompatybilność, konieczne jest użycie deklaracji zmiennych poprzez wstępną deklarację typu.
    • Jeżeli typy tablic są identyczne, to w programie można jedną tablicę przypisać drugiej. W takim przypadku wartości wszystkich zmiennych w jednej tablicy zostaną przypisane do odpowiednich elementów drugiej tablicy.
    • Na tablicach nie zdefiniowano żadnych operacji relacyjnych. Można porównywać tylko dwie tablice element po elemencie.
  • Wstępny opis typu tablicy
konst n = 5; typ masa = szyk liczby całkowitej; odm a: masa;

Notatka

    • Dostęp do elementów tablicy będzie możliwy w następujący sposób: a, a, a, a, a (tzn. tablica zawiera pięć elementów).
    • Używanie stałych(w tym przykładzie n) podczas opisywania tablicy jest preferowane, ponieważ w przypadku zmiany rozmiaru tablicy nie będzie potrzeby wprowadzania poprawek w całym tekście programu.
  • Ustawianie tablicy na wpisaną stałą
konst X: szyk liczby całkowitej = (1, 2, 3, 4, 5, 6);

Notatka

    • W tym przykładzie nie tylko przydzielana jest pamięć dla tablicy, ale komórki są również wypełniane danymi.
    • Elementy tablicy mogą być zmiana podczas programu (jak wszystkie wpisane stałe).

Wypełnianie tablicy danymi

§ Aby wypełnić tablicę danych (i ich danych wyjściowych) najczęściej używana jest pętla z parametrem Do

§ Aby wypełnić tablicę liczbami losowymi, użyj funkcji losowy i procedura losowo(inicjowanie generatora liczb losowych). Format nagrywania to: losowy(B - A) + A, gdzie A i B pochodzą z przedziału :4);

Przykładowy program do wejścia i wyjścia tablicy

Sformułowanie problemu. Uzyskaj sumę elementów tablicy składającej się z 10 elementów całkowitych. Elementy tablicy wprowadza się z klawiatury.

program tablica2; odm suma: liczba całkowita; I: bajt; A: szyk słowa; zaczynać suma:= 0; Doja:= 0 Do 9 Do zaczynać pisać("A[",I," ] = "); przeczytaj(a[i]); suma:= suma + a[i] koniec; napisz("suma =", suma) koniec.

Przykładowy program do pracy z elementami tablicy

Sformułowanie problemu. Uzyskaj średnią arytmetyczną elementów tablicy. Elementy tablicy są wypełnione liczbami losowymi.

program tablica3; konst n = 100; odm sar: prawdziwy; suma: liczba całkowita; I: bajt; A: szyk liczby całkowitej; zaczynać suma:= 0; losowo; Doja:= 0 Do N Do zaczynać a[i] := losowy(100); suma:= suma + a[i] koniec; sar:= suma/n; napisz("sar =", sar) koniec.

Lekcja wyjaśnia jak pracować z tablicami jednowymiarowymi w Pascalu, jak korzystać z generatora liczb losowych - funkcji losowy w Pascalu. Rozważono przykład sposobu wyprowadzania liczb Fibonacciego.


Materiały znajdujące się na stronie mają na celu praktyczne opanowanie języka programowania Pascal. Krótka informacja teoretyczna nie stanowi pełnego omówienia materiału na dany temat; Niezbędne informacje można znaleźć w dużych ilościach w Internecie. Do naszych zadań należy zapewnienie możliwości zdobycia praktycznych umiejętności programowania w języku Pascal. Rozwiązane przykłady wizualne i zadania są prezentowane w kolejności rosnącej złożoności, co ułatwi przestudiowanie materiału od podstaw.

Deklaracja tablicy

W Pascalu istnieją dwa typy tablic: jednowymiarowe i dwuwymiarowe.
Definiowanie tablicy jednowymiarowej w Pascalu brzmi tak: tablica jednowymiarowa to pewna liczba elementów należących do tego samego typu danych, które mają tę samą nazwę, a każdy element ma swój własny indeks – numer seryjny.
Opis tablicy w Pascalu (deklaracja) i dostęp do jej elementów wygląda następująco:

Deklaracja tablicy

długość zmiennej: tablica [ 1 .. 3 ] liczby całkowitej ; długość początku [1] : = 500; dlina[2]: = 400; dlina[3]: = 150; ...

var długość: tablica liczb całkowitych; długość rozpoczęcia:=500; długość:=400; długość:=150; ...

  • dlina — identyfikator tablicy (nazwa);
  • w deklaracji używane jest słowo serwisowe Array (przetłumaczone z języka angielskiego jako „tablica” lub „zestaw”);
  • - w nawiasie kwadratowym umieszcza się numer (indeks) pierwszego elementu, następnie dwie kropki i indeks ostatniego elementu tablicy, tj. zasadniczo wskazana jest liczba elementów; nazywa się liczbę elementów w tablicy wymiar tablicy
  • of integer (z angielskiego „from integer”) - wskazuje, jakiego typu jest tablica, tutaj jest słowo pomocnicze.
  • Ogłaszać rozmiar można wykorzystać poprzez stałą:

    Inicjowanie tablicy

    Ponadto sama tablica może być stały, tj. wszystkie jego elementy w programie są z góry określone. Opis takiej tablicy wygląda następująco::

    const a: tablica [ 1 .. 4 ] liczby całkowitej = (1 , 3 , 2 , 5 ) ;

    const a:tablica liczb całkowitych = (1, 3, 2, 5);

    Wypełnianie kolejnymi liczbami:

    Wynik: A = 8, A = 9, A = 10, ..., A[N] = A + 1

    Wejście klawiatury:

    Przykład: Przyjrzyjmy się, jak tablica jest wprowadzana w Pascalu:

    writeln("podaj ilość elementów: "); czytajln(n); (jeżeli ilość nie jest znana z góry, prosimy o nią) dla i:= 1 do n do Begin write("a[", i, "]="); przeczytaj (a[i]); ...koniec; ...


    ✍ Przykładowy wynik:

    Podaj liczbę elementów: 3 a=5 a=7 a=4

    Drukowanie elementów tablicy

    Przykład: Przyjrzyjmy się, jak wyświetlić tablicę w Pascalu:

    1 2 3 4 5 6 7 8 9 10 11 12 13 var a: tablica [1 .. 5] liczb całkowitych; (tablica pięciu elementów) i:liczba całkowita; rozpocznij [1]: = 2; za[2]: = 4; za[3]: = 8; za[4]: = 6; za[5]: = 3; writeln("Tablica A:"); for i : = 1 do 5 napisz (a[ i] : 2 ) ; (wyjście elementów tablicy) koniec.

    var a: tablica liczb całkowitych; (tablica pięciu elementów) i: liczba całkowita; rozpocznij a:=2; a:=4; a:=8; a:=6; a:=3; writeln("Tablica A:"); dla i:= 1 do 5 napisz(a[i]:2); (elementy tablicy wyjściowej) koniec.

    ✍ Przykładowy wynik:

    Tablica A: 2 4 8 6 3

    Do pracy z tablicami najczęściej używa się go w Pascalu z parametrem, ponieważ zazwyczaj wiesz, ile elementów znajduje się w tablicy, i możesz użyć licznika pętli jako indeksów elementów.

    Tablica 0 zadanie. Należy określić rzeczywistą tablicę wymiarów 6 (tj. sześć elementów); wypełnij tablicę wartościami wejściowymi i wyświetl elementy na ekranie. Użyj dwóch pętli: pierwszej do wprowadzania elementów, drugiej do wyprowadzania.


    W tym przykładzie pracy z tablicą jednowymiarową występuje oczywista niedogodność: przypisywanie wartości elementom.

    Przetwarzanie tablic w Pascalu, a także wypełnianie tablicy, zwykle odbywa się za pomocą pętli for.

    Funkcja losowa w Pascalu

    Aby nie żądać ciągle wartości elementów tablicy, używany jest generator liczb losowych w Pascalu, który jest realizowany przez funkcję Random. Tak naprawdę generowane są liczby pseudolosowe, ale nie o to tu chodzi.

    Aby wygenerować liczby od 0 do n (nie licząc samej wartości n, liczby całkowite w przedziale liczby całkowitej; i:integer; rozpocznij losowanie; dla i:=1 do 10 rozpocznij f[i]:=random(10); (interwał) write(f[i],” „); koniec; koniec.

    ✍ Przykładowy wynik:

    9 8 9 2 0 3 6 9 5 0

    Dla liczb rzeczywistych w przedziale i wyświetlaj elementy na ekranie: zdefiniuj trzy pozycje wyświetlania każdego elementu.

    Liczby Fibonacciego w Pascalu

    Najczęstszym przykładem pracy z tablicą jest wynik szeregu liczb Fibonacciego w języku Pascal. Rozważmy to.

    Przykład: Szereg liczb Fibonacciego: 1 1 2 3 5 8 13…

    f[0]: = 1; fa[ 1 ] : = 1 ; f[2]: = 2; ...

    f:=1; f:=1; f:=2; ...

    fa[ 2 ] : = fa [ 0 ] + fa [ 1 ] ; fa[ 3 ] : = fa [ 1 ] + fa [ 2 ] ;
    f[ ja] : = fa[ i- 2 ] + f[ i- 1 ];

    f[i]:=f+f;

    Otrzymaliśmy wzór na elementy szeregu.

    Przykład: Oblicz i wydrukuj pierwsze 20 liczb Fibonacciego.

    1 2 3 4 5 6 7 8 9 10 11 var i: liczba całkowita; f: tablica [0 .. 19] liczb całkowitych; zacznij f[ 0 ] : = 1 ; fa[ 1 ] : = 1 ; dla i: = 2 do 19 zaczyna się f[ i] : = f[ i- 1 ] + f[ i- 2 ]; writeln (f[i]) koniec; koniec.

    zmienna i:liczba całkowita; f: tablica liczb całkowitych; rozpocznij f:=1; f:=1; dla i:=2 do 19 zacznij f[i]:=f+f; writeln(f[i]) koniec; koniec.

    W tym przykładzie zasada pracy z szeregami liczbowymi staje się jasna. Zwykle, aby wyprowadzić serię liczb, znajduje się wzór na określenie każdego elementu tej serii. Zatem w przypadku liczb Fibonacciego ta reguła formuły wygląda następująco: f[i]:=f+f. Dlatego należy go używać w pętli for podczas tworzenia elementów tablicy.

    Zadanie tablicowe 2. Biorąc pod uwagę rząd 10 arbitralny liczby: a, a, ... , a (użyj funkcji random()). Oblicz i wydrukuj sumę trójek sąsiednich liczb: a+a+a , a+a+a , a+a+a , …… , a+a+a

    Pseudo kod:

    Znalezienie elementu maksymalnego według jego indeksu:


    Zadanie Array_min: Znajdź minimalny element tablicy. Wydrukuj element i jego indeks.

    Zadanie w tablicy 4. Biorąc pod uwagę tablicę składającą się z 10 elementów całkowitych. Znajdź liczbę ujemnych i wyświetl ją na ekranie.

    Zadanie w tablicy 5. Znajdź minimum i maksimum n wprowadzonych liczb (tablica). Określ odległość między tymi elementami. 3 2 6 1 3 4 7 2 >>> min=1, max=7, odległość=3

    Zadanie 6 tablicy. Biorąc pod uwagę tablicę liczb całkowitych o rozmiarze N. Wydrukuj wszystkie liczby parzyste zawarte w tej tablicy w kolejności malejącej według ich indeksów oraz ich liczby K. N=4 masa: 8 9 2 5 >>> 2 8 ilość= 2

    Zadanie tablicowe 7. Wprowadź z klawiatury tablicę składającą się z 5 elementów, znajdź w niej dwa maksymalne elementy i ich liczby.

    Przykład:

    Tablica początkowa: 4 -5 10 -10 5 maksymalnie A=10, A=5

    Wyszukaj w tablicy

    Spójrzmy na złożony przykład pracy z tablicami jednowymiarowymi:

    Przykład: Biorąc pod uwagę tablicę 10 liczb. Określ, czy liczba wprowadzona przez użytkownika znajduje się w tablicy. Jeśli tak, wyprowadź "znaleziony", Jeśli nie - "nie znaleziono".
    Trudność zadania polega na wydrukowaniu słów "znaleziony" Lub "nie znaleziono" potrzebne raz.


    Aby rozwiązać ten problem, będziesz potrzebować instrukcji break, aby wyjść z pętli.
    Rozwiązanie Opcja 1. Pętla For:

    Pokaż rozwiązanie

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 var f: tablica [ 1 .. 10 ] liczb całkowitych; flaga:logiczna; i, c: liczba całkowita; rozpocznij losowanie; dla i: = 1 do 10 zaczyna f[i] : = random(10) ; napisz (f[i], "" ); koniec ; flaga: = fałsz; napiszln( „wprowadź próbkę”) ; czytajln(c); dla i: = 1 do 10 wykonaj, jeśli f[ i] = c, a następnie rozpocznij pisanieln („znaleziono” ); flaga: = prawda ; przerwa ; koniec ; jeśli flaga=fałsz, to writeln („nie znaleziono”); koniec.

    var f: tablica liczb całkowitych; flaga:logiczna; i,c:liczba całkowita; rozpocznij losowanie; dla i:=1 do 10 zacznij f[i]:=random(10); napisz(f[i],” „); koniec; flaga:=fałsz; writeln("wprowadź próbkę"); czytajln(c); dla i:=1 do 10 wykonaj, jeśli f[i]=c, a następnie rozpocznij writeln("znaleziono"); flaga:=prawda; przerwa; koniec; jeśli flaga=fałsz, to writeln("nie znaleziono"); koniec.

    Rozważmy skuteczne rozwiązanie:

    Zadanie: znajdź w tablicy element równy X lub ustal, że on nie istnieje.

    Algorytm:

    • zacznij od pierwszego elementu (i:=1);
    • jeśli następny element (A[i]) jest równy X , to zakończ wyszukiwanie, w przeciwnym razie przejdź do następnego elementu.

    rozwiązanie w opcji Pascal 2. Pętla while:

    Zapraszamy do obejrzenia szczegółowej analizy wideo wyszukiwania elementu w tablicy (efektywny algorytm):

    Zadanie w tablicy 8. Wypełnij tablicę 10 elementów liczbami losowymi w przedziale i wypisz liczby wszystkich elementów równe X .

    Przykład:

    Tablica początkowa: 4 0 1 2 0 1 3 4 1 0 Czego szukamy? 0 A, A, A

    Zmiana cykliczna

    Przykład: przesuń elementy tablicy w lewo o 1 pozycję, pierwszy element zastępuje ostatni.



    Rozwiązanie:

    Algorytm:
    O:=A; A:=A;… A:=A[N];

    Program:

    Zadanie tablicowe 9. Wypełnij tablicę 10 elementów liczbami losowymi z przedziału [-10..10] i wykonaj cykliczne przesunięcie w lewo bez pierwszego elementu.
    Przykład: Tablica początkowa: 4 -5 3 10 -4 -6 8 -10 1 0 Wynik: 4 3 10 -4 -6 8 -10 1 0 -5

    Zmiana kolejności elementów w tablicy

    Przyjrzyjmy się, jak uporządkowana lub odwrócona jest tablica.

    Przykład: zmienić kolejność elementów tablicy w odwrotnej kolejności


    Rozwiązanie:

    Algorytm:

    Pseudo kod:

    Program:

    Tablica 10 zadań. Wypełnij tablicę 10 elementów losowymi liczbami z przedziału [-10..10] i odwróć wszystkie elementy oprócz ostatniego.
    Przykład: Tablica źródłowa: -5 3 10 -4 -6 8 -10 1 0 4 Wynik: 0 1 -10 8 -6 -4 10 3 -5 4

    Wybieranie elementów i zapisywanie do innej tablicy

    Przykład: znajdź elementy w tablicy, które spełniają jakiś warunek (na przykład ujemny) i skopiuj je do innej tablicy

    Rozwiązanie:

    Rozwiązanie: policz liczbę znalezionych elementów za pomocą licznika zliczeń, zainstaluj kolejny element w miejscu B. Za pomocą zmiennej liczyć należy przypisać 1 .


    Dane wyjściowe tablicy B:

    writeln("Wybrane pozycje"); dla i:=1 liczyć-1 napisz(B[i], " ")

    Zadanie tablicowe 11. Wypełnij tablicę liczbami losowymi w przedziale i wpisz do innej tablicy wszystkie liczby kończące się na 0.
    Przykład: Tablica źródłowa: 40 57 30 71 84 Kończy się 0: 40 30

    Sortowanie elementów tablicy

    Sortowanie bąbelkowe

    • W tego typu sortowaniu tablica jest reprezentowana jako woda, małe elementy to bąbelki w wodzie, które unoszą się do góry (najlżejsze).
    • Podczas pierwszej iteracji pętli elementy tablicy porównywane są ze sobą parami: przedostatni z ostatnim, przedostatni z przedostatnim itd. Jeśli poprzedni element okaże się większy od kolejnego, wówczas następuje ich wymiana.
    • Podczas drugiej iteracji pętli nie ma potrzeby porównywania ostatniego elementu z przedostatnim. Ostatni element jest już na swoim miejscu, jest największy. Oznacza to, że liczba porównań będzie o jedno mniejsza. To samo dotyczy każdej kolejnej iteracji.

    Wykonanie w Pascalu:

    1 2 3 4 5 6 7 8 dla i: = 1 do N- 1 zacznij od j: = N- 1 aż do i wykonaj jeśli A[ j] > A[ j+ 1 ] to zacznij od : = A[ j] ; ZA[ jot] : = ZA[ jot+ 1 ] ; ZA[ j+ 1 ] : = с; koniec ; koniec ;

    dla i:=1 do N-1 zacznij od j:=N-1 aż do i, jeśli A[j] > A, to zacznij od:= A[j]; A[j] := A; O:= do; koniec; koniec;

    Zadanie w tablicy 12. Wypełnij tablicę 10 elementów liczbami losowymi w przedziale i posortuj pierwszą połowę tablicy w kolejności rosnącej, a drugą w kolejności malejącej (przy użyciu metody „Bubble”). Przykład: Tablica źródłowa: 14 25 13 30 76 58 32 11 41 97 Wynik: 13 14 25 30 76 97 58 41 32 11

    Sortowanie według wyboru

    • w tablicy wyszukiwany jest element minimalny i umieszczany na pierwszym miejscu (zamienione miejscami z A);
    • Wśród pozostałych elementów szuka się także elementu minimalnego, który znajduje się na drugim miejscu (zamienione miejscami z A) itd.

    rozpocznij c: = A[ i] ; A[ i] : = A[min] ; A[min]: = do; koniec ; koniec ;

    dla i:= 1 do N-1 zacznij min:= i ; dla j:= i+1 do N wykonaj, jeśli A[j]< A then min:=j; if min <>następnie zaczynam c:=A[i]; A[i]:=A; O:=c; koniec; koniec;

    Zadanie tablicy 13: Wypełnij tablicę 10 elementów losowymi liczbami z przedziału i posortuj ją w porządku rosnącym według sumy cyfr Przykład: Tablica źródłowa: 14 25 13 12 76 58 21 87 10 98 Wynik: 10 21 12 13 14 25 76 58 87 98

    Szybkie sortowanie lub szybkie sortowanie

    Algorytm:

    Wykonanie w Pascalu:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 procedura QSort (pierwszy, ostatni: liczba całkowita) ; var L, R, c, X: liczba całkowita ; zacznij, jeśli pierwszy< last then begin X: = A[ (first + last) div 2 ] ; L: = first; R: = last; while L <= R do begin while A[ L] < X do L: = L + 1 ; while A[ R] >X do R: = R - 1 ; jeśli L<= R then begin c: = A[ L] ; A[ L] : = A[ R] ; A[ R] : = c; L: = L + 1 ; R: = R - 1 ; end ; end ; QSort(first, R) ; QSort(L, last) ; end ; end .

    procedura QSort(pierwszy, ostatni: liczba całkowita); var L, R, c, X: liczba całkowita; zacznij, jeśli pierwszy< last then begin X:= A[(first + last) div 2]; L:= first; R:= last; while L <= R do begin while A[L] < X do L:= L + 1; while A[R] >X do R:= R - 1; jeśli L<= R then begin c:= A[L]; A[L]:= A[R]; A[R]:= c; L:= L + 1; R:= R - 1; end; end; QSort(first, R); QSort(L, last); end; end.

    Zadanie tablicy 14:
    Wypełnij tablicę 10 elementów liczbami losowymi z zakresu [-50..50] i posortuj ją za pomocą algorytmu szybkiego sortowania.

    1 Metoda (wypełnienie klawiatury. Dynamicznewejściedane)

    M: tablica liczb całkowitych;

    Dla I:=1 do 10 Rozpocznij

    Write("Wpisz ",I", wartość ");

    2 Metoda (za pomocą generatora liczb losowych)

    M: tablica liczb całkowitych;

    Dla I:=1 do 25 Rozpocznij

    M[I]:=Losowy(50);

    3 Metoda (statyczne wprowadzanie danych)

    M: tablica liczb całkowitych = (31,28,31,30,31,30,31,31,30,31,30,31);

    Dla I:=1 do 9 Zrób

    1.4 Przykłady rozwiązywania problemów

    1. Algorytmy wyszukiwania i przypisywania wartości do elementów tablicy

    1. Utwórz program przetwarzający tablicę o wymiarze n wypełnioną liczbami całkowitymi wprowadzonymi z klawiatury. Wydrukuj indeksy i wartości dodatnich elementów tablicy.

    A:TABLICA LICZB CAŁKOWITYCH;

    (Wypełnianie tablicy)

    DLA I:=1 DO N DO Rozpocznij

    Write("Enter ",I," element tablicy "); OdczytLn(A[I]);

    (Przetwarzanie elementów tablicy)

    DLA I:=1 DO N ZROBIĆ

    JEŚLI A[I]>0 WTEDY WriteLn("Element dodatni = ",A[I]," jego indeks = ",I);

    2. Utwórz program do obliczenia i wydruku wartości funkcji Y=sin(x-1)/2x. Ustaw wartości argumentów w tablicy X składającej się z 6 elementów. Zapisz wartości funkcji do tablicy Y.

    X, Y: TABLICA RZECZYWISTych;

    DLA I:=1 DO 6 ROZPOCZNIJ

    Write("Wpisz ",I", wartość argumentu "); OdczytLn(X[I]);

    DLA I:=1 DO 6 ROZPOCZNIJ

    Y[I]:=SIN(X[I]-1)/(2*X[I]);

    WriteLn(" X= ",X[I]:4:1," Y=",Y[I]:5:2);

    3. Dana jest tablica M, składająca się z 30 elementów. Elementy tablicy są dowolnymi liczbami całkowitymi. Wyświetla wartość co piątego i dodatniego elementu. Wyprowadź określone elementy w ciągu znaków.

    M:TABLICA LICZB CAŁKOWITYCH;

    ClrScr; Losuj;

    WriteLn("Wartości elementów tablicy");

    DLA I:=1 DO 30 ROZPOCZNIJ

    M[I]:=Losowy(20)-4; Zapis(M[I]:3);

    WriteLn("Wartości co piątego i dodatniego elementu tablicy");

    Podczas gdy ja<=30 DO Begin

    JEŚLI M[I] > 0 WTEDY napisz(M[I]:3);

    Przykłady rozwiązań niezależnych:

      Dana jest jednowymiarowa tablica o wymiarze 10, wypełniona liczbami całkowitymi wprowadzonymi z klawiatury i wartością N. Elementy ujemne należy zastąpić N. Wyświetlić zmodyfikowaną tablicę w jednym wierszu.

      Dana jest jednowymiarowa tablica o wymiarze N, wypełniona liczbami losowymi z zakresu od -15 do 20. Wyświetla wartości elementów tablicy, których wartość bezwzględna jest >10.

      Dana jest jednowymiarowa tablica o wymiarze N, wypełniona liczbami losowymi. Podnieś do kwadratu co trzeci element tablicy, jeśli element jest ujemny. Wyświetl zmodyfikowaną tablicę na ekranie.

      Utwórz program do obliczenia i wydruku wartości funkcji Y=(sinx+1)cos4x. Ustaw wartości argumentów w tablicy X składającej się z 10 elementów. Zapisz wartości funkcji do tablicy Y.

      Z elementów tablicy A składającej się z 25 elementów utwórz tablicę D o tym samym wymiarze zgodnie z zasadą: pierwsze 10 elementów znajduje się według wzoru Di=Ai+i, pozostałe - według wzoru Di=Ai -I.

    Artykuły na ten temat