Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД_ЛАБ.doc
Скачиваний:
4
Добавлен:
14.11.2019
Размер:
1.04 Mб
Скачать

Контрольні запитання.

  1. Що таке циклічний процес?

  2. Які основні види циклів ви знаєте?

  3. Які є види циклів з параметром?

  4. При якій умові цикл завершує свою роботу?

  5. Як в загальному описується цикл з параметром? Що означають його елементи?

  6. Які відмінності циклу з параметром від циклів з передумовою та післяумовою?

  7. Які обмеження накладаються на змінні, що беруть участь у циклі з параметром?

  8. Яка відмінність ітераційного циклу від циклу з регулярною зміною аргумента?

  9. Яка умова закінчення ітераційних обчислень?

  10. Як порахувати кількість виконаних ітераційних циклів?

Лабораторна робота № 5,6. Одновимірні масиви. Двовимірні масиви.

Мета роботи:

  1. Оволодіти правилами опису регулярних типів даних.

  2. Вивчити операції та стандартні функції і процедури, які застосовуються до регулярних типів даних.

  3. Здобути навички роботи з масивами і рядками символів.

Теоретичні відомості.(Pascal)

Масив – це структурний тип даних, який складається з фіксованої кількості елементів однакового (базового) типу.

Масив на мові Паскаль можна описати таким чином:

type <назва типу>=array [розмір] of <тип елементів>;

var <ідентифікатор,…>:<назва типу>; або var <ідентифікатор,…> array [розмір]of <тип елементів>;

Приклад: var A,B: array [1..10] of integer;

Масиви можуть бути одновимірними (вектори), двовимірними (матриці) та багатовимірними.

Достyп до кожного окремого елемента масиву відбувається за його індексом, наприклад, A[2], A[i], A[i,j]. Індексовані елементи масиву можна використовувати як звичайні змінні відповідного типу.

Для роботи з масивами як цілими об’єктами можна застосовувати лише операції відношення “дорівнює” (А=В), “не дорівнює” (A<>B) та операцію присвоєння (А:=В). Це допускається тільки тоді, коли масиви мають однакову структуру.

Рядок – це послідовність символів. При використанні у виразах рядок береться в лапки. Довжина рядка може змінюватися в межах від 0 до 255.

Рядок можна описати таким чином:

var <ідентифікатор,…>: string [максимальна довжина рядка];

Приклад: var St, St1, St2: string[50];

Доступ до кожного окремого символу рядка відбувається з допомогою його номера (індексу), наприклад, St[3], St[i], St[i+j].

Над рядками можна виконувати операцію конкатенації (+), яка зчеплює рядки в один рядок, і операції відношення (=, <>, >, >=, <, <=). Порівняння рядків відбувається зліва направо до першого символу, який не співпадає. Результатом порівняння є TRUE або FALSE.

Теоретичні відомості.(c)

Це структуровані типи даних. До цього типу відносяться ще записи і файли. Індекс елемента масиву завжди ціле число. Кількість елементів масиву задається при оголошенні і надалі не міняється.

Оголошення масиву в програмі:

<тип><ім’я масиву>[розмір1][розмір2]…

для одновимірного масиву <тип><ім’я масиву>[розмір1].

Розмір – кількість елементів.

Для двохвимірних масивів. <тип><ім’я масиву>[розмір1][розмір2].

Таким чином масиви оголошуються так само, як змінні, наприклад:

Int A[100]; (від а[0] до a[99])

Char B[30];

Float C[42];

В мові Сі не перевіряється вихід індекса за межі масиву (немає повідомлень про помилку при виконанні програми).

Звертання до елемента 2-вимірного масиву А[5][9]. В мові Сі існує тісний взаємозв’язок між вказівниками і масивами. Будь-яка дія, що досягається індексуванням масиву, може бути виконана також за допомогою вказівників, причому цей варіант буде швидшим.

Оголошення int a[5] визначає масив з 5 елементів: a[0], a[1], a[2], a[3], a[4].

Якщо об’єкт *Y оголошений, як Int *Y; то оператор Y = &a[0]; надає змінній Y адресу елемента а[0].

A[0]

A[1]

A[2]

A[3]

A[4]

Y вказує на черговий елемент масиву , а y +1 вказує на наступний елемент масиву (кількість байт , яку займає елемент масиву , враховується автоматично ).

Оскільки ім’я масиву є завжди адресою його нульового елемента, запис y = &a[0]; є аналогічним y =a ; тоді елемент a[i] можна представити , як *( a+ i). Записи y[i] та *(y + i) також еквівалентні . Таким чином, будь-який масив і його індексний вираз можна представити через вказівники. Треба тільки враховувати , що ім’я масиву – константа . Тому вирази типу а ++ ; і z = &a ; використовувати не можна , а у = а , і у ++ можна .

Приклад програми з використанням масивів . Вводиться рядок з десяти символів , які потім друкуються у зворотньому порядку .

#include<stdio.h>

main( )

{ char s[10]; /* оголошення масиву s з 10 елементів символьного типу */

int i ;

puts (“ Введіть рядок з 10 символів “) ;

for ( i = 0 ; i< 10 ; i++ ) scanf ( “%c “, &s[i]);/* Ввід елементів масиву s */

for ( i = 9 ; i >= 0 ; i - -) printf (“ %c”, s[i]);

/* друк елементів масиву s у зворотньому порядку*/

}

Інший приклад – програма , яка впорядковує масив з 10 цілих чисел за зростанням .

#include <stdio.h>

main()

{

int m[10],i, n, k, ind;

puts(“введіть елементи масиву”);

for (i= 0; i <10; i++) scanf(“%d”,&m[i]);

for (n = 9; n>=0; n--)

{

k = -32768; /*мінімальне ціле число*/

for (i = 0; i<= n; i++)

if (m[i]>k) {k=m[i]; ind=i;}

m[ind] = m[n]; m[n] =k;

/* на місце найбільшого елемента записуємо перший елемент, а на його місце – найбільший*/

}

puts(“впорядкований масив”);

for (i = 0; i< 10; i++) printf(“%d”,m[i]);

}

та сама програма на мові Pascal.

Program sort;

Var

M : array[1..10] of integer;

I, n, k, ind : integer;

Begin

Writeln(‘введіть елементи масиву’);

For i:= 1 to 10 do read(m[i]);

For n := 10 downto 1 do

Begin

K := -32768;

For i:= 1 to n do

If m[i] > k then

Begin

K := m[i];

Ind := i;

End;

M[ind] := m[n];

M[n] := k;

End;

Writeln (‘впорядкований масив’);

For i := 1 to 10 do writeln(m[i] :4);

End.