Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Конкурс'
Настоящее Положение разработано в соответствии с Законом Пермской области от 30.11.2004 г. № 832-389 «О государственной социальной помощи в Пермском к...полностью>>
'Учебно-методический комплекс'
Операционные системы, среды и оболочки: Учебно-методический комплекс по специальности 080801 «Прикладная информатика (в экономике)». – М.: МУГУ, 2008...полностью>>
'Программа'
Государственный университет – Высшая школа экономикиПрограмма учебной дисциплины «Стратегическое управление инновациями» для подготовки магистров, обу...полностью>>
'Урок'
Союз учителя и ученика – важный фактор в воспитании креативных способностей учащихся. Керпельман Р.И., зав. кафедрой русского языка и литературы, учи...полностью>>

Методическое пособие для учащихся 9-11 классов средних общеобразовательных школ программирование на языке pascal

Главная > Учебно-методическое пособие
Сохрани ссылку в одной из сетей:

ОБРАБОТКА ТАБЛИЦ. (ДВУМЕРНЫХ МАССИВОВ)

Цель работы: приобрести навыки в решении задач с использованием двумерного массива.

Краткие теоретические сведения

Двумерный массив (или прямоугольная таблица) В из n строк и т столбцов в общем виде выглядит следующим обра­зом:

b11 b12b1m

b21 b22b2m

. .. . .. ... . ..

bn1 bn2bnm

На Паскале имена элементов массива записываются так же, с двумя номерами (индексами): b (1,1), b (1, 2), .... b (1, т), b (2, 1), b (2, 2), ..., b (2, т), .... b (n, т). В памяти компьютера элементы двумерного массива расположены один за другим: после элементов первой строки следуют элементы второй строки и т. д. Если число строк таблицы равно числу столб­цов, то такая таблица называется квадратной. Главная диаго­наль квадратной таблицы проходит из левого верхнего угла в правый нижний. Рассмотрим примеры.

1. Вычисление суммы элементов главной диагонали квадрат­ной таблицы.

Для решения задачи надо выполнить следующие шаги:

1) ввести таблицу в память; 2) найти сумму элементов главной диагонали; 3) напечатать результат. Описание таблицы, как и описание одномерного массива, используется для резервиро­вания памяти. В описании указываются диапазоны для двух номеров: строк и столбцов.

const n = 3;

var b: array [ 1..n, 1..n ] of real; i, j: integer;

При обработке массивов в разделе переменных программы появляются имена индексов элементов: для одномерного мас­сива — одной, для двумерного — двух целочисленных пере­менных.

При вычислении суммы элементов диагонали следует обра­тить внимание на имена суммируемых элементов: оба индекса имеют одинаковые значение, т. е. в общем виде имя элемента диагонали — b[ i, i ]. Это означает, что можно рассматривать диагональ, как одномерный массив, и использовать один цикл для вычислений.

program Р16;

const n =3;

var b: array [ 1 .. n, 1 .. n ] of real; i, j: integer; S: real;

begin

writeln (‘введите значения элементов таблицы по строкам’);

writeln (‘в конце каждой строки нажимайте <Enter> ‘);

for i: = 1 to n do

begin

for j: = 1 to n do

read (b[i,j]);

writeln

end;

S: = 0;

for i: = 1 to n do

S: = S+ b [i, i ];

write (‘ сумма элементов диагонали таблицы S = ‘ , S)

end.

2. Нахождение наибольших элементов каждой строки таб­лицы.

Каждую строку таблицы можно рассматривать, как одно­мерный массив, и использовать идею нахождения наибольше­го значения в программе Р13. Найденные значения будем по­мещать в одномерный массив. В программе Р17 для каждой строки таблицы переменная а [ i ] играет такую же роль, как переменная mах в программе Р13. Для каждой строки (ее за­дает переменная i) элемент a [ i ] получает значение первого элемента строки. Затем внутренний цикл по переменной j по­зволяет просмотреть все элементы данной строки и, если среди них встретится элемент, значение которого больше, чем за­помненное в а [ i ], то оно присваивается a [ i ]. Для распечат­ки результатов работы программы — массива а — используется цикл. Имеющийся в программе комментарий, заключенный в фигурные скобки, позволяет при чтении программы выделить основную ее часть.

Пример Р17 — нахождение на­ибольших элементов строк:

Массив результатов

Данная таблица

А [1]

6

5

6

1

а [2]

15

4

12

15

а [3]

2

2

-3

0

program Р17;

const n = 3;

var b: array [ 1 .. n, 1 .. n ] of integer; i, j: integer; a: array [1 .. n ] of integer;

begin

writeln (‘введите значения элементов таблицы по стро­кам’);

writeln (‘в конце каждой строки нажимайте <Enter> ‘);

for i: = 1 to n do

begin

for j: = 1 to n do

read (b [ i, j ]);

writeln end;

{построение массива наибольших значений элементов строк таблицы}

for i: = 1 to n do

begin

a[i]:= b[i,1 ];

for j: = 2 to n do

if a[i]<b[i,j]

then a [i]: = b[i,j];

end;

writeln (‘наибольшие числа строк таблицы:’);

for i: = 1 to n do

writeln (a [ i ])

end.

3. Нахождение сумм элементов столбцов таблицы.

При обработке таблиц можно осуществлять операции как над строками, так и над столбцами. Для нахождения сумм элементов столбцов можно использовать алгоритм примера Р12. Чтобы лучше понимать работу программы, введем пере­менную S для вычисления суммы, а затем для каждого столб­ца запишем полученный результат в массив a, т. е. присвоим его переменной а [j ], где j текущий номер столбцов табли­цы. Пример Р18 — суммирование по столбцам:

Данная таблица

5

6

1

4

12

15

2

-3

0

Массив результатов

а [1]

а [2]

а [3]

11

15

16

program Р18;

const n = 3;

var b: array [ 1 .. n, 1 .. n ] of integer; S, i, j: integer;

a: array [1 .. n ] of integer;

begin

writeln (‘вводите значения элементов таблицы по строкам’);

writeln (‘в конце каждой строки нажимайте <Enter>‘):

for i: = 1 to n do

begin

for j: = 1 to n do

read (b [ i, j ]);

writeln;

end;

{построение массива сумм элементов столбцов таблицы}

for j: = 1 to n do

begin

S: = 0;

for i: = 1 to n do

S: = S+ b [i,j];

a [j ]: = s

end;

writeln (‘суммы элементов столбцов таблицы:’);

for i: = 1 to n do

write (a [ i ])

end.

4. Перестановка строк таблицы.

В прямоугольной таблице В из n строк и m столбцов требу­ется поменять местами две строки. При решении этой задачи можно воспользоваться алгоритмом обмена значениями двух переменных из программы сортировки (пример Р14). Для это­го достаточно организовать цикл по переменной столбца и, используя промежуточную переменную, менять местами каж­дую пару элементов, стоящих в одном столбце. При заданных номерах строк К и L решение выглядит так:

program Р19;

const n = 3; m = 4;

var b: array [ 1 .. n, 1 .. m ] of real; c: real; i, j, K, L: integer;

begin

write (‘введите номера меняемых местами строк таблицы’);

readln (К, L);

{ввод таблицы}

for i: = 1 to n do

begin

writeln (i, ‘-я строка таблицы’);

for j: = 1 to m do

read (b [ i, j ]);

end;

{перестановка строк}

for j: = 1 to m do

begin

c:= b[K,j];

b [ K, j ]: = b [ L, j ];

b [ L, j ]: = с end;

{печать результатов}

writeln;

writeln (‘таблица с переставленными строками:’)

for i: = 1 to n do

begin

for j: = 1 to m do

write (b [ i, j ]);

writeln

end

end.

Методические указания по работе и задания

Условие задачи

1

Найдите произведения элементов строк прямоугольной таблицы.

2

Найдите наибольший элемент квадратной таблицы.

3

Замените все отрицательные числа их модулями.

4

Найдите наим. элемент квадратной таблицы и замените его нулем.

5

В квадратной таблице, не содержащей отр. элементов, найдите корень квадратный из произведения диагональных эле­ментов.

6

В целочисленной прямоугольной таблице увеличьте на 0,5 все от­рицательные элементы.

7

В целочисленной прямоугольной таблице расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию.

8

В квадратной таблице найдите наибольший элемент диагонали.

9

В заданном массиве замените нулем наибольший элемент

10

Поменяйте местами 1-ую и последнюю строки прям-ой таблицы.

11

Составить программу подсчета числа различных элементов двумерного массива.

12

В прямоугольной таблице замените все элементы их квадратами

13

Квадратичную матрицу, состоящую из натуральных чисел повернуть на 90 градусов по часовой стрелке и вывести результат на экран.

14

Написать программу, которая вычисляет сумму диагональных элементов квадратичной матрицы.

15

Написать программу, которая проверяет, является ли введенная матрица магическим квадратом (сумма элементов которой в каждой строке, в каждом столбе и по каждой диагонали одинакова).

Лабораторная работа №7

ОПЕРАТОР ВАРИАНТА. (ВЫБОРА)

Цель работы: отработать практические навыки работы с оператором выбора (варианта).

Краткие теоретические сведения

Условный оператор позволяет осуществить ветвление про­граммы только по двум направлениям, одно из которых соот­ветствует выполнению проверяемого условия, а другое — не­выполнению этого же условия. Если для переменной необ­ходимо осуществить ряд действий, зависящих от других условий, то надо записывать либо вложенные условные опе­раторы, либо несколько таких операторов подряд. Для такой ситуации удобно использовать оператор варианта. Он соответ­ствует структуре, изображенной на рисунке 6.

Данная структура называется также переключателем и вы­полняется следующим образом. Вход в структуру содержит вычисление или ранее полученное значение переменной (ин­декса варианта). Это значение может совпасть с меткой, стоя­щей перед оператором на одной из ветвей переключателя. В таком случае выполняется оператор, помеченный этой мет­кой, и происходит выход из структуры. Оператор бывает простым или составным, ограниченным операторными скоб­ками begin ... end;. Если значение индекса варианта не со­впало ни с одной из меток, то выполняется оператор с номе­ром п + 1 из строки else. Если оператор варианта содержит строку else, то это — полная форма оператора, если такой строки нет, то используется сокращенная форма оператора варианта.

Метки оператора варианта могут быть константами любого типа. Их тип должен совпадать с переменной индекса вариан­та. Возможно, чтобы индекс варианта был как именем пере­менной, так и выражением соответствующего типа.

Рис. 6. Структура оператора варианта

На языке Паскаль оператор варианта имеет вид:

case индекс варианта of

метка1: оператор 1;

метка2: оператор 2;

. . .

метка n: оператор n;

else оператор n + 1

end;

Пример программы, содержащей оператор вари­анта. Одной из распространенных задач раздела физики «Молекулярно-кинетическая теория» является задача, связанная с расчетом числа молекул в единице объема в теле заданной массы и в теле известного объема. Для такой задачи можно построить программу-решатель.

Дано: молярная масса вещества М, плотность данного вещества Р, масса R или объем данного тела V. Требуется най­ти число молекул К: 1) в единице массы вещества; 2) в теле с заданной массой; 3) в единице объема вещества; 4) в теле с заданным объемом. Для решения задачи воспользуемся формулой:

К= (NA/M)R,

где NA = 6,022 * 10 23 г/моль — число Авогадро.

На основании этой формулы получаем расчетные формулы для программы:

1) К = N A/ М; 2) К= N AR/M; 3) К= NA Р V/ М; 4) К= NA Р/ М.

Программа имеет вид:

program Р20;

const NA = 6.022 E20;

var N: integer; М, R, Р, V, К: real;

begin

writeln (‘зная постоянную Авогадро, плотность Р данного вещества’);

writeln (‘и его молярную массу М, можно найти число мо­лекул в’);

writeln (‘1. в единице массы вещества’);

writeln (‘2. в теле массой R’);

writeln (‘3. в единице объема’);

writeln (‘4. в теле объемом V’);

write (‘введите номер решаемой задачи’);

readln (N);

write (‘введите исходные данные: М = ‘);

readln (М);

case N of

1: К: = NA/M;

2: begin

write (‘R = ‘);

readln (R);

K: = NA -R/M;

end;

3: begin

write (‘плотность вещества Р = ‘);

readln (Р);

write (‘V= ‘);

readln (V);

K: = NA *P-V/M;

end;

4: begin

write (‘плотность вещества Р = ‘);

readln (Р);

К: = NA "P/V end;

end;

write (‘число молекул К = ‘, К’)

end.

Методические указания по работе и задания

Условие задачи

1

Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года (если недопустимое число то « ошибка ввода данных»).

2

Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: «Рабочий день», «Суббота», «Воскресенье».

3

Написать программу, которая после введения с клавиатуры числа в диапазоне от 1 до 999, обозначающего денежную единицу, дописывает слово «рубль» в правильной форме.(12 рублей, 21 рубль …)

4

Написать программу, которая вычисляет дату следующего дня.

5

Найти наибольшее из двух действительных чисел, используя оператор выбора.

6

Написать программу, определяющее животное, соответствующее введенному году по китайскому гороскопу.

7

Преобразуйте символ, если он является строчной русской буквой, в заглавную букву. Предполагается использование альтернативной кодировки ASCII.

8

Написать программу, которая после введения с клавиатуры числа в диапазоне от 1 до 99, обозначающего денежную единицу, дописывает слово «копейка» в правильной форме (5 копеек, 41 копейка …).

9

Написать программу, которая после введения с клавиатуры числа в диапазоне от 1 до 99, обозначающего возраст человека, дописывает слово «год», «года», «лет» соответственно во фразу «Мне … лет» ( 5 лет, 2 года, 41год …).

10

Написать программу, определяющее по заданному году и номеру месяца количество дней в этом месяце.

11

Написать программу, которая читает натуральное число в десятичном представлении (до 10000), а на выходе выдает это же число на естественном языке (7  семь, 204 двести четыре, 12 двенадцать).

12

Написать программу, позволяющую получить словесное описание школьных оценок (1-плохо, 2-неудовлетворительно, 3-удовлетворительно, 4-хорошо, 5-отлично).

13

Написать программу, которая для любого натурального числа печатает количество цифр в записи этого числа.

14

Даны два действительных положительных числа. Составить программу, которая по введенной операции выполняла бы то или иное действие.

15

Написать программу, которая по данному натуральному числу от 1 до 12 (номеру месяца) выдает все приходящиеся на этот месяц праздники (например число1, то: 1января-Новый год, 7 января - Рождество).

Лабораторная работа №8



Скачать документ

Похожие документы:

  1. Методические рекомендации по разработке заданий и требований к проведению школьного этапа всероссийской олимпиады школьников по информатике в 2011-2012 учебном году

    Методические рекомендации
    Методические рекомендации по разработке заданий и требований к проведению школьного этапа всероссийской олимпиады школьников по информатике в 2011-2012 учебном году
  2. Методические рекомендации по разработке заданий и требований к проведению школьного этапа Всероссийской олимпиады школьников по информатике в 2010-2011 учебном году

    Методические рекомендации
    Методические рекомендации по разработке заданий и требований к проведению школьного этапа Всероссийской олимпиады школьников по информатике в 2010-2011 учебном году
  3. Публичный отчёт муниципального общеобразовательного учреждения (3)

    Документ
    Муниципальное общеобразовательное учреждение «Средняя общеобразовательная школа № 30» с 1975г. размещается и функционирует в 4этажном панельном здании, расположенном в 4 микрорайоне Центрального округа г.
  4. О начале 2009-2010 учебного года в общеобразовательных учебных заведениях Республики Казахстан (3)

    Документ
    Инструктивно-методическое письмо. Об особенностях преподавания основ наук в средних общеобразовательных школах и организациях образования Республики Казахстан в 2009-2010 учебном году.
  5. Отчет о результатах самообследования деятельности муниципального общеобразовательного учреждения «средняя общеобразовательная школа №8»

    Публичный отчет
    В ходе подготовки самообследования администрацией МОУ «СОШ №8» проведена аналитическая работа, отражающая результативность и динамику функционирования различных систем (учебной, воспитательной, хозяйственной) школы, обеспечивающих

Другие похожие документы..