- Преподавателю
- Информатика
- Методичка по изучению языка программирования Паскаль
Методичка по изучению языка программирования Паскаль
Раздел | Информатика |
Класс | - |
Тип | Конспекты |
Автор | Токарева О.В. |
Дата | 22.01.2015 |
Формат | doc |
Изображения | Есть |
Визингская муниципальная средняя общеобразовательная школа
с углубленным изучением отдельных предметов
методическое пособие
с. Визинга
Содержание:
I Введение
II Знакомство с программой средой Паскаля
-
Немного о Паскале
-
Структура программы на Паскале
III Работа с Паскаль
-
Запуск Паскаль
-
Главное меню Паскаль
-
Пункт File (Файл)
-
Пункт Run (Выполнить)
IV Данные в языке Паскаль
-
Типы данных
-
Стандартные функции и процедуры языка Паскаль
V Теоретическая часть
Введение. Общий вид программы
-
Линейная структура. Ввод и вывод данных
-
Ветвление (развилка)
А) Полная развилка
Б) Неполная развилка
-
Циклическая структура
А) Цикл «ПОКА»
Б) Цикл «ДО»
В) «ЦИКЛ С ПАРАМЕТРОМ»
-
Оператор выбора (CASE)
-
Процедуры и функции
-
Массивы
А) Линейные (одномерные) массивы
Б) Двумерные массивы
-
Сортировка
А) сортировка методом «пузырька»
Б) сортировка методом перебора (прямого выбора)
В) сортировка методом индексации
-
Графика Паскаля
-
Работа с файлами
VI Приложение.
VII Лабораторные работы.
1. Введение.
Практикум предназначен для самостоятельного изучения основ составления программ с помощью языка Паскаль.
Практикум построен по следующей структуре: сначала описываются основные алгоритмические структуры и методика составления программ, даны примеры по каждому разделу, затем даны задания для выполнения лабораторных работ, которые должны быть выполнены учениками на уроках практикума в форме программы и блок-схемы. За выполнение каждой лабораторной работы выставляется две оценки: Первая - за теоретическую часть, которая должна включать в себя блок-схему с подробными комментариями; Вторая - за практическую часть, то есть за написание программы на бумаге и выполнении ее на компьютере.
2. Знакомство с программой средой Паскаля.
1) Немного о Паскале.
Язык Паскаль назван в честь математика ХУII века Блеза Паскаля. Он разработан профессором, директором института информатики швейцарской высшей политехнической школы, автором многочисленных работ в области программирования Никлаусом Виртом. Первое сообщение о языке Паскаль появилось в 1970 г. Язык программирования Паскаль отражает наиболее важные концепции алгоритмов в естественной и легко воспринимаемой форме. Он полностью удовлетворяет требованиям структурного программирования и отличается завершенностью и однородностью. Этот язык может быть использован как профессиональными программистами, так и начинающими (учениками, студентами и т.д.). Посредством этого языка можно решать как задачи вычислительного характера, так и работать с графикой, звуком, создавать справочные системы, т.е. работать с текстом.
2)Структура программы на Паскале.
Интегрированная среда программирования Паскаль включает в себя средства подготовки исходной программы, библиотеки, компилятор, компоновщик, отладчик. После загрузки системы на экране появляется рабочий стол системы. Его вид может несколько различаться у разных версий, но в целом он типичен. В верхней части экрана расположено главное меню, в нижней - назначение горячих клавиш.
File Edit Run Compile Options Debug Break/watch
Edit
Line 1 Col 1 Insert Indent Tab Unindent C:NONAME.PAS
Watch
F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu
Программа на языке Паскаль представляет собой текст. В принципе, она может быть написана в любом текстовом редакторе, но в составе системы программирования имеется свой текстовый редактор.
Программа состоит из трех основных частей:
-
Заголовок программы (имя программы, идентификатор) - слово, возможно, группа слов, соединенных знаком подчеркивания, возможно использование цифр после букв или знака подчеркивания, нельзя использовать русские буквы, знаки препинания и пробелы между словами).
Например:
_10а_Иванов_Петр
-
Раздел описаний (соглашения)
В разделе описаний имеются разделы:
Описание стандартных модулей
Этот раздел начинается со служебного слова uses, за которым следует имя модуля. Например: uses crt; uses graph;
Описание констант
Здесь описываются все постоянные величины, используемые в программе.
Например:
Const a = 8; b = Pi; c = a + b;
Описание типов данных пользователя
Здесь описываются нестандартные типы данных, созданные пользователем. Принципы работы с ними будут рассмотрены ниже.
Описание переменных
Здесь описываются все переменные величины, используемые в программе.
Например:
Var a: integer; b, d: real;
Процедуры и функции
Принципы работы с процедурами и функциями будут рассмотрены ниже.
-
Исполняемая часть (операторы)
Начинается служебным словом begin и завершается служебным словом end, после которого ставится точка. Исполняемая часть содержит операторы, процедуры и команды управления программой.
3.Работа с Паскаль.
-
Запуск Паскаль.
Для запуска редактора языка Паскаль нужно запустить соответствующий значок на рабочем столе. При его отсутствии обратитесь к преподавателю.
-
Главное меню Паскаль.
Главное меню содержит несколько пунктов, в каждом из которых собраны более или менее однотипные команды управления программой.
Для выбора пункта главного меню щелкните мышью на его названии.
После выбора пункта главного меню раскрывается нисходящее меню со списком команд данного пункта. Мы рассмотрим только пункты Fail и Run.
3) Пункт File (Файл).
New (Новый). По этой команде Паскаль предлагает вам начать работу с неозаглавленной заготовкой нового файла.
Open…(Открыть…). По этой команде Паскаль откроет стандартное диалоговое окно-файлер. В этом окне вы должны выбрать имя существующего файла с исходным текстом программы.
Save (Сохранить). По этой команде на диске сохраняется текущая версия вашей программы.
Save As…(Сохранить Как…). По этой команде на экране откроется стандартное диалоговое окно-файлер, в котором вам надо указать имя, под которым вы сохраняете ту программу, над которой работали.
Print…(Печать…). Эта команда позволяет вам напечатать открытый файл на принтере.
Exit (Выход). По этой команде Паскаль завершает работу. Если вы не сохранили файл, над которым работали, Паскаль напомнит вам об этом.
-
Пункт Run (Выполнить).
Выбрав команду Run, вы откомпилируете (проверите на ошибки) и запустите свою программу, начиная с самой первой исполняемой команды.
4.Данные в языке Паскаль
-
Типы данных.
В Паскале пользователю предлагаются простейшие стандартные типы данных, которые не предполагают специального их описания. Каждый тип данных задает область значений, которые может принимать переменная данного типа.
В Паскале имеются следующие простые типы данных: целые, вещественные (действительные), символьные, логические.
Каждая величина определяется именем (идентификатором), по которому она распознается, и значением.
Имя величины может быть длиной до 127 символов (цифр или букв), но различаются в зависимости от первых 32 или 64 символов. Нельзя начинать имя величины с цифры и использовать русские буквы. Также недопустимы символы (+, -, /, \.,= и т.д.), не относящиеся к буквам (знак подчеркивания _ является буквой для языка программирования).
Для постоянных величин (констант) тип величины определяется по форме записи. Для переменных указывается имя переменной и ее тип. Значение переменная принимает в процессе работы программы.
Рассмотрим числовые величины.
Целые.
Пользователь может использовать несколько типов целых чисел, а именно:
Byte - область значений 0…255
Word - область значений 0…65535
Shorting - область значений -128…127
Integer - область значений -32768…32767
Longint - область значений -2147483648…2147483647
Все целые типы данных представляются точно. Выбор конкретного типа целых чисел, используемых в качестве значений величин, определяется конкретной задачей. В случае, если возможные значения переменных могут выйти за предел области значений типа Integer, лучше использовать тип данных с большей областью определения.
Пример описания:
Постоянные:
Const a=3; компилятор воспримет тип константы с именем a как целый.
Переменные:
Var a:integer: I:byte; - в данном случае компилятор определяет тип величины a - как целый тип с областью значений -32768…32767, а тип величины I - как целый с областью определения 0…255.
Вещественные:
Для представления чисел в вещественной форме также имеется несколько типов вещественных чисел.
Real - положительные и отрицательные числа с модулем в интервале значений от -2.9*10 39 до 1.7*10 38 (представляются приближенно с точностью до 11 знака).
Double - положительные и отрицательные числа с модулем в интервале значений от -5.0*10 324 до 1.7*10 308 (представляются приблизительно с точностью до 15 знака).
Символьные:
Под символьными величинами в Паскале понимают величины, значением которых могут являться символы, входящие во множество символов кода ASCII, в том числе и не отображенных на клавиатуре.
Значение констант такого типа записывается в апострофах:
PEX='f'; d='K';
В Паскале существует два символьных типа данных:
-
byte - переменным этого типа можно присваивать только один символ.
Например:
Var c: byte;
c:='*';
-
string - переменным этого типа можно присваивать строку символов.
Например:
Var d: string;
d:='Визинга';
По умолчанию максимальная длина такой строки может быть 255 символов. Однако можно задать конкретное значение максимальной длины строки:
Var n: string [20];
Логические:
Данные такого типа могут принимать только два значения: истина (true) и ложь (false).
Для описания величин данного типа используется служебное (зарезервированное) слово Boolean.
Например:
Var W: Boolean.
Логические переменные обычно используются для проверки какого-нибудь условия в развилках, циклах «ДО» и «ПОКА». Логическая переменная может принимать значение логического выражения.
Например:
Рассмотрим логическое выражение а > 5. Это выражение может быть истинным или ложным. Тогда мы можем записать следующее:
W: = (a>5)
При этом если а = 3, то W=false, а если а = 7, то W=true.
2)Стандартные функции и процедуры языка Паскаль.
Процедуры:
ClrScr(clear screen) - гашение экрана(очистка окна вывода).
GotoXY(m,n) - установление курсора в позицию m строки n.
Левый верхний угол (1,1)
Textbackground(c) - установка цвета фона; с - константа, определяющая цвет (цифра от 0 до 7).
Textcolor(c) - установка цвета шрифта; с может принимать значения от 0 до 7.
Deline - удаление (стирание) строки, в которой находится курсор. Все строки ниже удаленной сдвигаются на одну строку вверх.
Isline - добавление пустой строки в позицию курсора, все строки за курсором сдвигаются на строку вниз.
Delay(n) - приостановка выполнения программы на n миллисекунд.
Sound(n) - запуск звукогенератора с частотой тона n Гц.
Nosound - отключение звукового сигнала
Функции:
Keypressed - значение функции может принимать два значения: true или false. Значение true, если в буфере обмена нет ни единого символа, и false - в противном случае.
Например: используем эту функцию для организации задержки в программе:
Repeat
Until keypressed;
В этом месте программа остановится до нажатия на любую клавишу.
Readkey - ввод символов с клавиатуры, без отображения их на экране.
5. Теоретическая часть.
Введение. Общий вид программы.
При создании программы рекомендуется сначала составить ее на языке блок-схем. При этом отдельные команды записываются в специальные геометрические структуры, которые будут указываться ниже. Такой набор фигур соединяется линиями и идет строго сверху вниз.
Причем у каждой геометрической структуры должен быть только один вход и только один выход. Начинается программа с названия, и заканчивается словом КОНЕЦ или END. Таким образом, общий вид программы на языке блок-схем будет таким:
…
Запись с помощью графических обозначений (блок-схем):
Даем условные обозначения для блок-схем:
- начало, конец
- ввод данных, вывод (есть альтернативный вариант вы вода, показанный ниже)
- вывод документа в файл
- процессы, операции
- условия, решения
- подпрограмма
-цикл с параметром
- направление процесса
Общая форма записи начала программы на языке Паскаль выглядит, примерно, так:
Program name; name - название программы
Uses Crt; - подключение библиотечного модуля, содержащего стандартные процедуры и функции.
Const (если они есть)
Var - описание переменных
Label
Procedure
Function
Begin - начало программы
команды
End.
Т.к. начало постоянно, то рекомендуем создать заготовку, сохранить ее, а при создании новой программы загружать ее ( пункт меню open).
1)Линейная структура. Ввод, вывод данных.
В линейной структуре все команды располагаются друг за другом (в одну линию сверху вниз).
Комментарий
Комментарий - текст на любом языке, заключенный между символами (* и *). Комментарий может быть вставлен между любыми двумя символами в любом месте программы, может занимать несколько строчек и появляться в середине оператора, но не может содержать символов (* и *). Например,
(* это - комментарий *).
Ввод и вывод
Ввод данных осуществляется с помощью процедур read, readln.
Форма записи:
Read (имена переменных);
Например
read (a, b, c);
в этом случае компьютер будет ожидать ввода с клавиатуры трёх значений переменных, например, 3-х чисел.
При использовании данной процедуры после ввода значений переменных курсор остается в той же строке, т. е. следующий ввод или вывод начнется в той же строке.
Readln (имена переменных);
readln (a, b, c);
При использовании данной процедуры после ввода данных курсор переходит на новую строку и следующий ввод или вывод будет осуществляться с новой строки.
При вводе нескольких переменных их ввод с клавиатуры осуществляется через пробелы.
Вывод данных осуществляется с помощью процедур write, writeln.
Форма записи:
Write (' текст' , имена переменных: m:n);
Writeln ('текст' ,имена переменных: m:n);
Например:
B:=4;
A:=6.3456437;
Write(b,a:6:2);
В указанном выше примере после А указано два параметра: 6 и 2. Первый параметр указывает количество символов отводимых под запись данной переменной (в нашем примере запись числа не может содержать больше шести символов).
При вводе и выводе переменных нужно всегда описать, какая именно это переменная. Программа создаётся не для вас, а для пользователя, которому нужно разъяснить, что от него требуется, что он должен сделать. К примеру, нужно ввести с клавиатуры положительное целое число. Если мы напишем так:
Read (a);
Пользователь не будет знать, что это за а и что нужно сейчас ввести.
А если напишем так:
Write ('введите положительное целое число');
Read (a);
Пользователь сразу же поймет, что от него требуется.
Эти процедуры работают также, как и процедуры ввода. Для переменных целого, символьного и строкового типа указывается параметр m, для переменных вещественного типа m и n.
Например:
Program summa;
Uses crt;
Var a, b, с: integer;
Begin
Write ('введите два целых числа а и в');
Readln (a, b);
С:=a+b;
Writeln ('a+b=', c);
End.
Эта программа вычисляет сумму двух чисел, введённых с клавиатуры.
-
Ветвление (развилка).
Развилка бывает 2-х видов: полная и неполная, при этом оператор IF позволяет программе выбрать одно из двух возможных направлений для продолжения работы.
А) полная развилка.
Если выполняется условие Р, то исполняется последовательность действий а, иначе исполняется последовательность действий b.
-
+ -
На языке Паскаль развилка выглядит так:
1) если а и в - это одна команда, то
IF P THEN a ELSE b;
2)если а и в - это несколько команд, то
IF P
THEN
Begin
A
End
ELSE
Begin
End;
Б) неполная развилка
Если выполняется условие Р, то исполняется последовательность действий а, иначе ничего не выполняется.
На языке Паскаль это выглядит так:
Если а - это одна команда, то:
IF P THEN a
Если а - это несколько команд, то:
IF P
THEN
Begin
A
End;
Пример:
Program;
Uses crt;
Var a, b, с: integer;
Begin
Write (' введите любое число a:');
Readln (a);
Write ( 'введите любое число b:');
Readln (b);
If a>b
then
Begin
Writeln ('a>b');
End;
Readln;
End.
Эта программа выводит сообщение, когда первое, введенное с клавиатуры число больше второго.
3)Циклическая структура
существует три вида циклической структуры: цикл «ПОКА», «ДО», «ЦИКЛ С ПАРАМЕТРОМ».
А) цикл «ПОКА».
Пока выражение между while и do истинно перед единственным оператором, повторения продолжаются. Помещать эту группу операторов надо между ключевыми словами begin и end.
Пока выполняется условие Р, повторяется последовательность действий а.
-
+
цикл «ПОКА» на Паскале имеет вид:
если а - это одна команда, то:
while Р do
a;
если а - это несколько команд, то:
while P do
begin
a;
end;
Например:
S:=0;
While a<>0 do
Begin
Write('Введите любое число');
Readln(a);
If a>0
then
s:=s+a;
End;
Write('Сумма положительных чисел =');
Readln(s);
Эта программа - вычисляет сумму введенных с клавиатуры положительных чисел, пока не будет введен 0.
Б) цикл «ДО».
Операторы между ключевыми словами REPEAT и UNTIL повторяются до тех пор, пока выражение в конце оператора повторения не станет истинным. Оператор repeat будет выполнен по крайней мере один раз.
Цикл «ДО» имеет вид:
Если а - это одна команда, то:
Repeat
a;
until P;
Если а - это несколько команд, то:
Repeat -
Begin
a;
End; +
Until P
В) «ЦИКЛ С ПАРАМЕТРОМ»
Цикл с параметром применяется в тех случаях, когда количество повторений выполнения команд заранее известно.
Имеются две формы этого цикла, в первом случае шаг изменения параметра цикла равен 1 (to), а во втором - -1 (downto)
Примеры:
1) For I:=1 to 10 do
p:=p*I;
2) For I:=1 to 10 do
begin
p:=I*3.8;
writeln('p = ',p);
end;
3) For I:=640 downto do
x:=x+I;
4) For I:=640 downto do
begin
x:=x+I;
writeln('x = ',x);
end;
4) Оператор выбора( CASE)
Оператор CASE можно рассматривать как расширение оператора IF, он позволяет осуществлять выбор из многих альтернатив для продолжения работы программы.
+ -
+ -
+ -
Пример на языке ПАСКАЛЬ:
Program day of week;
Uses crt;
Var dayn:integer;
Begin
WRITE ('введите номер дня недели = =>');
READLN (DAYN);
If (DAYN<1) OR (DAYN>7) THEN
WRITELN ('вы ошиблись: такого дня недели
Не существует :');
CASE DAYN OF
1: writeln('это - понедельник');
2: writeln('это - вторник');
3: writeln('это - среда');
4: writeln('это - четверг');
5: writeln('это - пятница');
6: writeln('это - суббота');
7: writeln('это - воскресенье');
END;
END.
Эта программа читает номер дня недели, а затем печатает его название.
Значение внутри одного оператора CASE обязательно должны быть различными, ибо в противном случае возникает неоднозначность в выборе исполняемого оператора, в разных операторах выбора можно использовать одинаковые значения.
-
Процедуры и функции.
Определение процедур и функций осуществляется после описания переменных и перед первым словом Begin программы, т.е. в последнюю очередь. Напомним также, что в Паскале принят следующий порядок описания: метки LABLE, константы CONST, типы TYPE, переменные VAR, процедуры и функции PROCEDURE/FUNCTION.
ПАСКАЛЬ предоставляет возможность конструировать программу из самостоятельных блоков - подпрограмм. Использование подпрограмм удобно потом, что задачу легче решать по частям. Кроме того, одни и те же блоки можно использовать в разных программах. Применение подпрограмм делает программу понятнее, меньше по объему, она легче отлаживается и быстрее выполняется. Мы с вами рассмотрим два вида подпрограмм: это подпрограммы - процедуры и полпрограммы - функции. Все подпрограммы должны быть описаны в разделе описаний. Каждая подпрограмма должна иметь имя (идентификатор подпрограммы), дающий возможность к ней обращаться. К подпрограмме можно обращаться только после того, как она описана.
Информация между основной программой и подпрограммами передается глобальными параметрами, действующими в любой части программы, имеющими имя, описанное в основной программе. Внутри подпрограммы могут быть использованы локальные параметры - их идентификаторы и значения имеют смысл только в пределах границ данной подпрограммы и недоступны вызывающей программе.
Входящие и выходящие параметры
При обращении к подпрограмме нужно передать ей данные для обработки в виде переменных. Это входящие параметры. Они обрабатываются внутри подпрограммы. Результат обработки нужно вернуть обратно в основную программу тоже в виде переменных. Это выходящие переменные.
Количество входящих и выходящих параметров в основной программе и в подпрограмме должны совпадать. Но Имена входящих и выходящих пар в основной программе и в подпрограмме должны различаться.
Параметры переменные в описании подпрограмм легко отличить от параметров - значений: перед параметрами - переменными стоит ключевое слово var.
В ПАСКАЛЕ существует два вида подпрограмм - процедуры и функции.
А) Процедуры:
В самой процедуре входящим параметром является Х, а выходящим У. При обращении к процедуре входящим параметром является, в первом случае а, выходящим b, а во втором случае входящим b, выходящим с, т.е. при выполнении программы в первом случае Х будет равен а, b=У, во втором, Х=b, У=с.
Задача:
1.Найти большее из трех заданных чисел, используя подпрограмму нахождения большего из двух чисел.
Program BIT;
Uses crt;
Var a,b,c, max,max1 :integer;
Procedure maks(x,y:integer; var z:integer);
Begin
While x<>y do
If x>y then x:=x-y else y:=y-x;
Z:=x;
End;
Begin
Clrscr;
Writeln('введите числа a,b,c');readln(a,b,c);
Maks(a,b,max);
Maks(max,c,max1);
Writeln('НОД=',max1);
Readln;
End.
Б) Функции:
f=sin(x)
В функции входящим параметром является Х, а выходящим f (название функции). При обращении к функции входящим параметром является, в первом случае а, выходящим f, а во втором случае входящим b, выходящим f.
Задача:
Дана переменная х. Вычислить:
Sin (cos2 (x2-8))
Cos (cos (x2-8)+6)
Tg (7-cos2(x2-8))
Program;
Uses crt;
Var b,c,z: real;
Function f(x:real):real;
Begin
f=cos(x^2-8)
end;
begin
write('введите значение переменной');
read(x);
b=sin(f(x)^2)
c=cos(f(x)+6)
z=tan(7-f(x)^2)
write('sin(cos^2(x^2-8))='): readln(b);
write('cos(cos(x^2-8)+6)='):readln(c);
write('tg(7-cos^2(x^2-8))='):readln(z);
end.
-
Строковые переменные.
Строковыми называют константы и переменные, значением которых служит набор символов, заключенный в апострофы, обозначающие начало и конец набора. Строковые константы и переменные имеют тип string. Этот тип данных относят к структурированным. Формат этого типа данных - string [n], где n - константа из диапазона 0..255, которая указывает на размер строки в символах. Если n не указать, то по умолчанию длина строки равна 255 символов.
Например, '2%','12345','Коля'. В данном случае '12345' не число, а набор символов - цифр, математические операции с таким набором проводить нельзя. В разделе описаний символьных констант тип не указывается, т.к. он определяется формой записи. Например:
Const
C='любовь';
K='2003';
При описании переменных тип указывается обязательно:
Var
A: char;
B: string[20];
Если вы укажите в описании переменной длину меньшую, чем следует, то потеряете часть символов.
Рассмотрим основные функции и процедуры обработки символьных величин:
Length(st) - значением функции является длина строковой переменной st.
Пример:
Length('Привет!'); результат: 7 (типа integer).
Copy(st,m,n) - значением функции является подстрока из n символов, вырезанных из строки st, начиная с позиции, указанной параметром m.
Copy('водопровод',6,3); результат: строка 'ров'
Delete(st,m,n) - данная процедура удаляет n символов из строки st, начиная с позиции, указанной параметром m. Например:
Delete('шарики',2,3) результат: строка 'шки'
Concat(st1,st2,…stn) -соединение строк. Можно использовать конструкцию
st1 +st2+…+stn. Пример:
f:='пи'; d:='лот'; s:=f+d; или s:= Concat(f,d) результат: s='пилот'
Insert(st1,st2,m) - вставка в строку st2 строки st1, начиная с позиции m. Общая длина строки не превышает длину строки st2. Например:
х:='инфорика'; insert(x,'мат',6); результат: х='информатика'
Pos(st1,st2) -значение функции будет номер позиции, в которой в строке st2 первый раз встречается строка st1. Например:
pos('ыш','мышка'); результат: 2 (типа integer).
Str(x,st) - заданное числовое значение преобразуется в строку символов. Значение присваивается переменной st.
Х:=7; str(x,s); результат: переменная s приоб- рела значение '7'(string).
Val(st,x,c) -строка символов st, состоящая из цифр, преобразуется в число. Значение передается переменной х.
S:='7.6'; val(s,y,p); результат: переменная у приобрела значение 7.6000000000Е+00 типа real, переменная р - значение 0.
6) Массивы.
В языке Паскаль предусмотрена возможность описания таких типов данных, что переменным этих типов можно присваивать более одного простого значения. При этом доступ к значениям можно получать с помощью индекса, указывающего, какая из компонент в данный момент должна обрабатываться. Для таких многозначных типов требуются две вещи:
-
нужно указать число компонент и способ ссылок на них.
-
нужно указать тип хранящихся в них значений.
Такие типы данных называются структурированными и их можно описывать с помощью оператора TYPE в разделе описания данных программы.
Определение начинается со служебного слова Array (массив). Затем указывается диапазон принимаемых индексом значений, заключенный в квадратные скобки. За ним следует служебное слово OF (из), а за ним - тип компонент массива. Например, оператор.
Массив можно назвать совокупностью фиксированного числа одинаковых компонентов, каждый из которых снабжается индексом. Для того чтобы описать массив, необходимо задать тип компонента и индекса.
Существует несколько типов массива. Обычно говорят о линейных (одномерных) массивах - компоненты в таких массивах имеют один индекс.
Двумерные (прямоугольные) массивы - компоненты таких массивов определяются двумя индексами.
Многомерные - компоненты таких массивов определяются тремя или более индексами.
Мы с вами будем рассматривать только линейные и двумерные массивы.
А) Линейные (одномерные) массивы.
Описание линейного массива может быть выполнено двумя способами:
-
описание через введение типа данных пользователя:
Type наименование типа = array [диапазон индекса] of тип компонента;
Var имя массива: наименование типа;
Например:
Type mass = array[1..10] of real;
Var f: mass;
-
var a: array[1..15] of string;
обращение к определенному элементу массива будет выглядеть так:
f[5]:= 7.2;
a[8]:= 'yes';
таким образом, пятый элемент массива f будет равен 7.2, а восьмой элемент массива а равен 'yes'.
общая схема (структура) программы для обработки массива в целом одинакова для задачи любого типа. Она состоит из следующих основных блоков:
-
блок ввода значений элементов массива.
Так как элементы массива имеют индексы, то мы можем использовать оператор цикла для автоматической смены индекса массива.
Тогда блок ввода может выглядеть так:
Begin
{* Ввод размера массива*}
write (' Введите размер массива');
readln (n);
{*Ввод значений элементов массива*}
for I: 1 to n do
begin
write('Введите а[',I,']');
read(a[I]);
clrscr ;
end;
-
блок вывода исходного массива (если это необходимо).
Такой блок в большинстве случаев присутствует в программе, так как он служит, в частности, для контроля работы программы.
Так же, как и блок вывода, он использует оператор цикла:
Например:
for I: to n do
Write(a[I]);
Для того чтобы массив выглядел как таблица, процедуру вывода нужно использовать в форме с параметрами вывода.
-
Блок обработки массива - это основной блок, в котором производится обработка данных массива, то есть решение какой-нибудь задачи. Например:
For I: 1 to n do
If a[I] mod 2 = 0 then {*вывод результатов на печать*}
Writeln(a'[',I,']=',a[I]:8, 'I=',I);
-
Блок вывода результатов обработки - в зависимости от того, что нужно вывести на экран, может быть аналогичен выводу исходного массива или каким-либо иным.
После того, как мы выяснили структуру программы и разобрали работу всех ее блоков, приводим программу в целом.
Найти все четные по значению элементы массива из n чисел. Вывести на печать значения элементов и их индекс. Ввод элементов массива производится с клавиатуры.
Program massiv (input, output);
Uses crt;
Var a: array [1..1000] of integer; I, n: integer;
Begin
{*ввод размера массива*}
write ('введите размер массива');
readln(n);
{*ввод значений элементов массива*}
for I:= 1 to n do
begin
write('введите а[',I,']);
read(a[I]);
clrscr;
end;
{*поиск нужных элементов*}
for I:= 1 to n do
if a[I] mod 2 = 0 then
{*вывод результатов на печать*}
writeln('a[',I,']=',a[I]:8, 'I=',I);
{*организация задержки окна вывода*}
repeat until keypressed;
end.
Б) Двумерные массивы.
Двумерные массивы (прямоугольные таблицы, матрицы) могут подвергаться тем же обработкам, что и линейные. Отличие двумерных массивов от линейных состоит в том, что элементы массива (компоненты) имеют два индекса, которые указывают положение элемента в массиве и служат идентификатором при поиске элементов.
Описание двумерного массива может быть произведено следующим образом:
Const n1=…;n2=…;
Type mas=array[1..n1] of integer;
Другими словами, двумерный массив можно представить как линейный массив, каждый элемент которого, в свою очередь, является линейным массивом.
В Паскале возможен и второй способ описания двумерного массива
Const n1=…;n2=…;
Var a:array[1..n1,1..n2] of real;
В данном случае мы описали двумерный массив, содержащий n1 строк и n2 столбцов.
Элемент массива описывается как а[I,j], где I - показывает строку, в которой расположен элемент, а j - место этого элемента в строке (столбец).
Особенности ввода элементов двумерного массива и вывода его на экран.
При заполнении массива случайным образом или по формуле, отличие состоит только в том, что организуются два цикла по строке и по столбцу.
7)Сортировка.
Сортировка или упорядочение массива производится в тех случаях, когда элементы массива должны быть расположены в порядке возрастания и убывания.
А) сортировка методом «пузырька» (наиболее простой, но самый неэффективный, медленный способ).
Суть этого метода состоит в том, что просматривается массив, начиная с первого элемента. С помощью дополнительной переменной (ячейки) производится обмен значениями элементов, удовлетворяющих условию.
После первого прохода на первое место выводится наименьший элемент. Затем вновь просматривается весь массив, но уже со второго элемента, и вновь производится обмен значениями.
Таким образом, продвигаясь по массиву, мы постепенно упорядочиваем его в порядке убывания (аналогично и для сортировки по возрастанию).
Например:
Вначале создаем массив случайных чисел а[I], например, введем их с клавиатуры. Механизм сортировки данного массива методом «пузырька» будет таким:
{*сортировка массива*}
for I:= 1 to n-1 do
for j:= I+1 to n do