Смекни!
smekni.com

Разработка обучающей программы, поддерживающей изучение темы "Структуры данных" (стр. 2 из 5)

В этом параграфе рассматриваются: описание и обработка массивов в Пас­кале, цикл с параметром в Паскале, форматы вывода и программы с двумя массивами.

Описание и обработка массива в паскале

Приводится общая форма описания одномерного массива:

var <имя масссива>: ar­ray[<нижний_индекс>..<верхний_индекс>] of <тип_массива>;

Для примера – описание массива из таблицы 1:

var t: array[1..12]of real;

далее рассматривается реализация задачи о средней температуре на Паскале, неизученными операторами в которой являются: ограничения на параметр цикла for (целое число, изменяющееся на 1 при прохождении цикла) и фор­маты вывода.

Пример write(‘T[1]=’,I:4:2);

Далее объясняется значение знаков в подобном примере.

Программа с двумя массивами

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

Задача: для каждого месяца определить отклонение его температуры от сред­негодовой величины.

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

Задания по разделу:

1. как на паскале описать массив численности населения к концу каж­дого года 20 века

1.2. «Информатика» Кузнецов

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

1.2.1. Язык программирования Pascal

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

Основные определения.

- Имя величины – слово из букв и цифр, обозначающее, как в ал­гебре, величину. Каждое имя соответствует ячейке памяти.

- Ячейка последовательность разного количества байтов памяти для разных данных

- Для каждой переменной надо указывать её тип, чтобы трансля­тор знал, сколько памяти под ее хранение выделить

Числа в Паскале

Числа бывают целые и действительные (с фиксированной или плавающей точкой).

Переполнение ячейки памяти – значение переменной не входит в предостав­ленную ей ячейку. Для избегания переполнения используют вещественные числа с плавающей точкой.

Пример: 243,7 = 2.437 ∙ 102 = 2.4370000000 Е + 02

В примере показано, что 2437 – мантисса, 2 – порядок.

Числовые операции

- «+» - сложение

- «-» - вычитание

- «/» - деление

- «*» - умножение

- Mod – остаток от деления (только для целых чисел)

- Div - деление нацело (только для целых чисел)

- Математические выражения:

Sin(x); cos(x); ln(x); sqr(x); sqrt(x); abs(x);

Пример арифметического выражения в Pascal

Оператор присваивания

<переменная>:=<выражение>

Примеры: x:=3,14; a:=b+c; i:=i+1;

Ограничения на типы при присваивании:

- Если переменная, расположенная слева имеет вещественный тип, то справа – арифметическое выражение: целое или вещественное

- Если переменная слева целого типа – арифметическое выражение – только целое

Задания по разделу

1) Почему паскаль различает целые и вещественные числа

2) Что такое арифметическое выражение, из чего оно может состо­ять

3) Как работает оператор присваивания

4) Ограничения на типы данных при присваивании

5) Запишите в виде арифметического выражения квадратный трех­член

6) Запишите на паскале tg x , x4

1.2.2. Структура программы на Pascal, ввод и вывод данных

В параграфе описаны основные структуры программы на паскале, в том числе разделы описания переменных и типов, операторы ввода и вывода.

Раздел описания переменных

Основные описатели числовых типов: integer, real

Пример var a,b:integer; c:real;

Объясняется синтаксис раздела (применение знаков « . » ; « , » ; « : » ; « ; ») и порядок работы транслятора: «Когда транслятор встречает описание пере­менной, он отводит для этой переменной ячейку памяти и ставит в соот­ветствие имени переменной номер первого байта ячейки.»

Операторы ввода и вывода

В разделе объясняется принцип работы с этими операторами:

«Для сообщения данных компьютеру служат операторы ввода и вывода.

Оператор ввода помещает вводимое значение переменной в отведенную ей ячейку: read(<список имен>); этот оператор останавливает работу программы и ждет, пока пользователь наберет на клавиатуре число и на­жмет <Enter>. Если список ввода содержит несколько имен, их значения надо вводить через запятую, пробел, или <Enter>.

Если после ввода числа необходимо перевести курсор на новую строку, ис­пользуют оператор readln(<список имен>);

Для вывода результатов работы программы на экран дисплея используется оператор write(<список вывода>);

список вывода содержит перечисленные через запятую имена переменных или арифметические действия, текст, заключенный в апострофы.

При выводе вещественных чисел с фиксированной запятой необходимо после имени переменной в списке ввода указать через “:” 2 числа (сколько позиций занимает число, количество цифр дробной части).»

Задания по разделу

1) Для чего необходимо описывать данные в программе

2) Какой оператор используется для ввода данных, как он рабо­тает

3) Куда попадают введенные с клавиатуры числа при работе оператора ввода

4) Как перевести курсор на новую строку после ввода данных

5) Как вывести на экран результат работы программы

6) Как сделать, чтобы данные выводились с новой строки

7) Как увидеть результаты вывода на экране дисплея, если уже сработал write

8) Можно ли получить результат вычислений без использова­ния оператора Write

1.2.3. Условный оператор

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

Таблицы истинности для операций

X NOT X
1 0
0 1

Примеры построения сложных логических выражений

1. определить, принадлежит ли точка с координатой х отрезку [a,b].

Это условие записывается двойным неравенством a<x<b.

На паскале – (x>a) and (x<b).

2. пройдет ли кирпич с ребрами x,y,z в отверстие a,b?

(a>x)and(b>y)or

(a>y)and(b>x)or

(a>x)and(b>z)or

(a>z)and(b>x)or

(a>y)and(b>z)or

(a>z)and(b>y)

3. определить принадлежность точки к треугольнику ABC.

A(-1,0); B(0,2); C(1,0).

4. условие существования треугольника со сторонами a,b,c.

1.2.4. Массивы

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

Рассмотрены также основные действия над одномерными массивами: вы­числение суммы элементов массива, нахождение наибольшего элемента мас­сива, сортировка массива, поиск элемента в массиве.

Определение массива

При решении задач данные объединяются в различные структуры, наиболее простая из них: массив – именованный набор с фиксированным количеством однотипных данных. В массивы объединяются результаты экспериментов, списки фамилий сотрудников, различные сложные структуры данных. В мас­сиве могут быть одинаковые данные, поэтому элементы массива различаются по своим порядковым номерам. Если каждый элемент массива имеет один порядковый номер, такой массив – одномерный, если два – это таблица из строк и столбцов. Для таблиц первый номер элемента показывает строку, второй – столбец, на пересечении которых находится элемент. Все строки таблицы имеют одинаковую длину.

При решении задач с использованием массива необходимо следовать алго­ритму:

1. определить, какие числа даны, целые или вещественные

2. назвать весь массив одним именем

3. описать массив в разделе описания переменных, отведя тем са­мым место в памяти компьютера под массив.

4. ввести данные в память.

Описание массивов в Pascal

Пример описания массива

const n=10;

Var a:array[1..n]of real;

При этом комментируется каждое слово в этой записи. При встрече описания массива, транслятор отводит для него столько последовательных ячеек, сколько указано в квадратных скобках, и такого формата, каков тип массива.

Описание из примера означает, что для массива а отведено 10 ячеек по 6 байт каждая. Имена ячеек:

в Паскале будут записаны: a[1],a[2],…,a[10].

Ввод и вывод данных массива осуществляется через цикл, например:

For i:=1 to n do read(a[i]);

Базовые задачи на массивы

1. вычисление суммы элементов массива

Вычисление ничем не отличается от суммирования значений простых пере­менных.

Этапы решения:

- ввод данных;

- вычисление суммы;

- печать результатов;

{1} For i:=1 to n do read(a[i]);

{2} S:=0; For i:=1 to n do s:=s+a[i];

{3} Writeln(s);

Пример решения представлен в таблице:

Исходные данные: 3, -2, 9, 7, -1, 6, 1
i 1 2 3 4 5 6 7
a[i] 3 -2 9 7 -1 6 1
S 0 1 10 17 16 22 23

2. нахождение наибольшего элемента массива

Чтобы лучше представить себе, как последовательно рассматривать и сравни­вать между собой числа, записанные в памяти, в учебнике предлагается вооб­разить, что каждое число написано на отдельной карточке и карточки сло­жены стопкой:

- первое число запомним, перевернем карточку

- сравниваем числа: первое видим, второе помним