- •Глава 7. Задачи по программированию для индивидуального решения
- •Предисловие
- •Введение
- •Глава 1. Работа в среде текстового редактора Word
- •§ 2 Манипуляции с Windows-окнами
- •8. Измените состав панелей инструментов в окне Word.
- •§ 3 Создание и сохранение простейшего документа
- •Заявление
- •§ 4 Загрузка документа в среду Word
- •§ 5 Пересылка в среде Word документа, хранящегося в одной папке (или диске) в другую папку (или на другой диск)
- •§ 6 Понятие абзаца
- •3.Это абзац, который состоит из одной строки.
- •§ 7 Копирование, перенос и удаление выделенных участков текста
- •§ 8 Перенос и копирование выделенных участков документа путем их «перетаскивания» с помощью мыши
- •§ 9 Установка параметров страницы. Элементы макетирования четырехстраничного текста
- •§ 10 Установка ориентации страницы и необходимых размеров страницы и ее полей
- •§ 11 Создание таблиц
- •Глава 1. Операционная система Windows
- •§ 1 Введение
- •§ 2 Графическая операционная система windows
- •§ 3 Первоначальное знакомство с Windows
- •§ 4 Основные операции в Windows
- •§ 5 Окна Windows
- •§ 6 Файловая система Windows
- •§ 7 Программа Проводник
- •§ 8 Операции с файлами и папками
- •§ 9 Пересылка файлов (папок) из одного места в другое
- •§ 10 Удаление файла (папки)
- •§ 11 Выбор нескольких файлов (папок)
- •§ 12 Создание папок
- •Глава 3. Работа в среде табличного процессора
- •§ 1 Вид окна Excel 2000
- •§ 2 Выделение ячеек, редактирование информации в ячейках
- •§ 3 Перемещение и копирование информации, содержащейся в ячейках
- •§ 4 Выполнение арифметических операций средствами Excel 2000
- •§ 5 Создание прогрессий
- •§ 6 Форматы ячеек
- •§ 7 Расчёты с использованием функций Excel 2000
- •§ 8 Формулы массива
- •§ 9 Индикация ошибок при использовании формул
- •§ 10 Решение уравнений с одним неизвестным с использованием функций Excel 2000
- •§ 11 Графическое представление данных с помощью диаграмм
- •§ 12 Использование Excel 2000 для управления базами данных
- •§ 13 Одновременное использование Excel 2000 и Word 2000
- •Литература
- •Глава 4. База данных и системы управления базами данных. Введение в систему управления базами данных ms Access
- •§ 1 Введение
- •§ 2 Проектирование базы данных (постановка задачи)
- •§ 3 Создание базы данных
- •§ 4 Установка и исправление свойств полей
- •§ 5 Определение структурной связи между таблицами
- •§ 6 Ввод, просмотр и корректировка данных. Использование свойств "Подстановки"
- •§ 7 Создание форм для ввода/редактирования данных в таблицах
- •§ 8 Вывод на печать характеристик и содержимого таблиц
- •§ 9 Сортировка, фильтрация и организация выборки данных (запросов)
- •§ 10 Построение и выполнение запросов на выборку данных
- •§ 11 Создание отчетов
- •Глава 5. Основы работы в Интернете
- •§ 1 Введение
- •§ 2 История Интернета
- •§ 3 Интернет в России
- •§ 4 Адреса и имена серверов
- •§ 5 Виды доступа в Интернет
- •§ 6 World Wide Web — «Всемирная паутина»
- •§ 7 Url и протоколы доступа к ресурсам Интернета
- •§ 8 Http- и ftp-серверы
- •§ 9 Броузер Internet Explorer 5
- •§ 10 Поисковые системы Интернета
- •§ 12 Почтовая программа Outlook Express 5
- •§ 13 Почтовая система Mail.Ru
- •§ 14 Программа архивации и разархивации WinZip
- •§ 15 Редактор Word 2000 и Интернет
- •§ 16 Расстановка гиперссылок
- •§ 17 Мастер Web-страниц редактора Word 2000
- •§ 18 Вставка графических объектов в документ Word 2000
- •§ 19 Работа со вставленными графическими объектами
- •§ 20 Размещение набора Web-страниц на сайте Narod.Ru
- •§ 21 Создание Web-страницы средствами сайта Narod.Ru
- •§ 22 Личный сайт и поисковые системы
- •§ 23 Чат и чат-серверы
- •§ 24 Интернет-магазины и интернет-услуги
- •Приложение 1. Темы рекомендуемых лабораторных работ
- •1. Виртуальное посещение музеев (2 часа)
- •2. Поиск необходимой информации (4 часа)
- •3. Организация почтового ящика, отправка и получение электронных писем (4 часа)
- •4. Отправка и получение электронных писем с помощью программы Outlook Express (4 часа)
- •5. Создание набора Web-страниц и размещение его на сайте (4 часа)
- •6. Создание Web-страницы средствами сайта (4 часа)
- •Библиографический список
- •Глава 6. Программирование в среде Delphi
- •§ 1 Введение
- •§ 2 Работа со средой Delphi
- •§ 3 Особенности программ, работающих под управлением ос Windows
- •§ 4 Реализация линейных алгоритмов на языке Object Pascal
- •§ 5 Общая структура программы
- •§ 6 Система типов языка Object Pascal
- •§ 7 Стандартные функции языка Object Pascal для работы с числовыми и символьными типами
- •§ 8 Ввод и вывод данных
- •§ 9 Реализация разветвляющихся алгоритмов
- •§ 10 Использование массивов и циклов
- •§ 11 Компонент Memo и его использование для ввода элементов массивов
- •§ 12 Использование таблицы для вывода двумерных массивов на экран
- •§ 13 Использование процедур и функций пользователя
- •§ 14 Обращение к внешним устройствам
- •§ 15 Вывод информации на бумагу
- •§ 16 Особенности переноса информации между жёстким диском некоторыми компонентами Delphi
- •§ 17 Консольное приложение
- •Глава 7. Задачи по программированию для индивидуального решения
- •§ 1 Линейная программа
- •§ 2 Библиотечные функции в линейных программах
- •Угол — количество гр., количество минут мин., количество секунд сек.
- •Примечание
- •§ 3 Разветвляющиеся программы
- •Примечание
- •Прямые перпендикулярны
- •§ 4 Циклические программы. Использование массивов в программах
- •§5 Внешние файлы. Использование массивов в программах
- •§ 6 Использование внешних процедур и функций в программах
- •Получить:
- •§ 7 Задачи на применение изученных алгоритмических структур
- •§ 8 Задачи на обработку матриц
- •Оглавление
- •§10 Решение уравнений с одним неизвестным с использованием функций Excel 2000……………………………………
- •Глава 5. Основы работы в Интернете…………………………
- •§3 Интернет в России……………………………… ...……….
- •Приложение 1. Темы рекомендуемых лабораторных работ……
- •Глава 6. Программирование в среде Delphi… …………………..
- •Глава 7. Задачи по программированию для индивидуального решения
- •§ 6 Использование внешних процедур и функций в программах
§ 10 Использование массивов и циклов
Существенным недостатком программы расчёта площади треугольника является многократное повторение одних и тех же действий, что усложняют программу и увеличивает вероятность ошибок. В частности, при вводе длин сторон треугольника трижды производится перевод строковой величины в целочисленную, в расчётной формуле трижды от величины полупериметра отнимается длина одной из сторон и т.д. Все перечисленные действия, конечно, необходимы, однако, форма записи может быть упрощена. Для обращения к большому количеству данных, имеющих один и тот же базовый тип, используются структурированные типы – массивы. Каждое значение величины структурированного типа состоит из фиксированного количества значений одного и того же базового типа. Например, каждый треугольник определяется длинами 3-х сторон, т.е. тремя элементами целого или вещественного типа. Поэтому все значения массива можно объединить некоторым групповым именем, а к каждому элементу массива обращаться, указав его имя и порядковый номер, называемый индексом. Следовательно, для корректного определения регулярного типа необходимо задать 2 характеристики: тип его элементов, а также количество и «способ нумерования» элементов. В языке Object Pascal определены две разновидности массивов: статические и динамические. Количество элементов статического массива должно быть известно перед компиляцией программы, а элементы массива хранятся в памяти в течение всего периода работы программы. Поэтому использование статических массивов часто сопряжено с нерациональным использованием ресурсов компьютера. Определение статического массива имеет следующий общий вид:
Type
A=array[T1] of T2
Где array и of - служебные слова ; Т1 – тип индекса массива; T2 – тип компонент. В качестве типа индекса может выступать любой перечислимый или интервальный тип, сформированный на основе какого-либо дискретного типа, кроме LongInt. В памяти машины массив не должен занимать более 64 кБт. Массив, представляющий собой последовательность целых чисел в количестве не более 20 (одномерный массив), может быть описан следующим образом: M1: Array[1..20] of integer . Если элементами массива являются массивы(массив в виде матрицы), то для идентификации элемента необходимы два индекса – номер строки и номер столбца. В этом случае говорят, что массив двумерный. Для описания двумерного массива используется запись: Matrix:Array[1..10,1..20] of integer. Число индексов, т.е. размерность массива не ограничивается. Обращение к элементу одномерного массива М1 имеет вид М1[5], а обращение к элементу двумерного массива - Matrix[5,6], где указываются номер строки и номер столбца. Паскаль допускает единственно возможное действие над массивами – присваивание его в операторе присваивания A:=B. Каждый элемент массива считается переменной, и ему можно присвоить значение обычным способом. Особенности работы с динамическими массивами будут рассматриваться ниже.
В задаче о расчёте площади треугольника можно использовать два одномерных массива – массив строковых величин, вводимых пользователем в поля редактирования, и массив длин сторон треугольника. Эти массивы должны быть описаны следующим образом:
A1: array[1..3] of string[5];
A : array[1..3] of integer;
Каждый массив может содержать не более 3-х элементов. Строки, входящие в состав массива А1, содержат не более 5-ти символов.
В Object Pascal имеются 3 оператора для создания циклических конструкций.
Оператор цикла с параметром.
Блок операторов
Выход |
Такие операторы используются, когда число повторений может быть определено заранее. Кроме того, они часто используются, когда требуется автоматически изменять значение некоторой величины в процессе итераций. |
Данный вариант оператора цикла определяет:
-
Диапазон изменения значений управляющей переменной и число повторений оператора, содержащегося в теле цикла.
-
Направление изменения значения переменной (возрастание или убывание).
-
Собственно действия, выполняемые на каждой итерации (оператор тела цикла).
Синтаксическая диаграмма оператора цикла с параметром имеет вид:
Диапазон
Переменную называют параметром цикла или управляющим параметром. На использование управляющей переменной накладываются следующие ограничения:
-
В качестве управляющей переменной должна использоваться простая переменная, описанная в текущем блоке.
-
Управляющая переменная должна иметь дискретный тип.
-
Начальные и конечные значения диапазона должны иметь тип, совместимый с типом управляющей переменной.
-
В теле цикла запрещается явное изменение значения управляющей переменной (например, оператором присваивания).
Фрагмент программы выполнения цикла с параметром имеет следующий вид:
for i:=1 to n do
begin
……… {Тело цикла}
end ;
Здесь i – параметр цикла;
n - верхняя граница интервала изменения параметра цикла.
После нормального завершения цикла значение управляющей переменной становится неопределённым. При каждом последующем выполнении цикла управляющая переменная либо увеличивается, либо уменьшается на единицу.
При следующих условиях тело цикла не будет выполнено ни разу
-
Шаг = 1 и i2<i1
-
Шаг = -1 и i2>i1
Фрагмент программы расчёта площади треугольника с использованием операторов цикла приведен ниже
a1[1]:=Edit1.Text;
a1[2]:=Edit2.Text;
a1[3]:=Edit3.Text;
for i:=1 to 3 do a[i]:=StrToInt(a1[i]);
for i:=1 to 3 do
begin
b:=i+1;
c:=i+2;
if b>3 then b:=b-3;
if c>3 then c:=c-3;
if a[i]>(a[b]+a[c]) then
begin
k:=1;
if k<>0 then MessageDlg('Введено ошибочное значение длины '
+#13+IntToStr(i)+'-й стороны',
mtError,[mbRetry],0);
end;
end;
if k=0 then
begin
p:=0;
for i:=1 to 3 do p:=p+a[i];
p:=p/2;
s1:=p;
for i:=1 to 3 do s1:=s1*(p-a[i]);
s:=sqrt(s1);
ShowMessage('ПЛОЩАДЬ ФИГУРЫ РАВНА' + #13 + FloatToStrF(s/10000,ffFixed,5,3)+' га')
end
end;
Операторы цикла в приведенном фрагменте подчёркнуты. Чем большее количество раз требуется выполнить тот или иной оператор или блок операторов, тем больший положительный эффект достигается благодаря использованию оператора цикла.
Во многих случаях нет необходимости выполнять все итерации внутри диапазона изменения параметра цикла, выполнение тела цикла может быть прекращено после выполнения какого-либо условия. В задаче о расчёте площади треугольника такая ситуация имеет место в процессе контроля правильности ввода исходных данных. Длина только одной стороны может превосходить сумму длин двух других сторон. Поэтому, если установлено, что a[1]>a[2]+a[3], нет необходимости контролировать правильность ввода длин остальных сторон, и выполнение цикла может быть прекращено после первой же итерации. Следовательно, при каждом новом выполнении тела цикла должен решаться вопрос о переходе к новой итерации или о завершении цикла. Проверка выполнения условия продолжения цикла может осуществляться либо перед выполнением тела цикла (предпроверка условия), либо после выполнения тела цикла (постпроверка условия). В большинстве случаев возможны оба варианта.
Д ля решения задачи с предварительной проверкой условия используется оператор While … Do (до тех пор, пока). Синтаксическая диаграмма этого оператора имеет вид
Блок-схема алгоритма оператора While … Do, следующая
Блок
операторов Да Нет
Выход |
Проверка условия производится в начале работы оператора. Если условие не выполняется, повторение тела цикла прекращается, и выполняется следующий оператор. |
Последний среди операторов цикла – оператор с последующей проверкой условия Repeat … Until (до тех пор пока). Его синтаксическая диаграмма имеет вид
Блок-схема алгоритма, реализуемого этим оператором, следующая
Блок
операторов Нет
Да Выход |
Отличия, от оператора While…do заключаются в том что 1 Проверка условия производится после выполнения цикла. 2 Повторение цикла имеет место лишь до тех пор, пока условие не выполняется. Выполнение условия сопровождается прекращением цикла.
|
|
3 Между служебными словами While … Do может находиться только один оператор, возможно, составной, а между словами Repeat … Until может быть размещено несколько операторов.
i:=0; While i< 10 do Begin i:=i+1; …………. End; |
i:=0; Repeat I:=i+1; ………….. until i>=10; |
Фрагмент программы, прекращающей выполнение цикла после выявления ошибки ввода длины одной из сторон треугольника, имеет следующий вид:
i:=0;
repeat
i:=i+1;
b:=i+1;
c:=i+2;
if b>3 then b:=b-3;
if c>3 then c:=c-3;
if a[i]>(a[b]+a[c]) then
begin
k:=1;
if k<>0 then MessageDlg('Введено ошибочное значение длины '
+#13+IntToStr(i)+'-й стороны',
mtError,[mbRetry],0);
end;
until (k<>0) or (i=3);
Здесь проверка условия осуществляется после ввода значений длин сторон. Поэтому использован оператор Repeat … Until (подчёркнут). Прекращение цикла имеет место либо, когда параметр цикла станет равным 3 (будут проверены все исходные данные), либо после выявления ошибки ввода. В подобных случаях возможна проверка условия перед выполнением следующей итерации с использованием оператора While…do. Кроме того, для вывода информации об ошибке использована процедура MessageDlg, имеющая 4 параметра. 1-й параметр –сообщение («Ошибка…..»); 2- параметр – тип стандартной эмблемы окна диалога (mtWarning - предупреждение, mtError - ошибка, mtInformation - информация, mtConfirmation подтверждение, mtCustom – сообщение пользователя); 3-й параметр – надпись на кнопке (mrNone, mrAbort, mrYes, mrOk, mrRetry, mrNo, mrCancel, mrIgnore, mrAll); 4-й параметр –комментарий.