Ответы на экзамен 2014 (часть 1)

Экзаменационные билеты по предмету «Программирование»
Информация о работе
  • Тема: Ответы на экзамен 2014 (часть 1)
  • Количество скачиваний: 14
  • Тип: Экзаменационные билеты
  • Предмет: Программирование
  • Количество страниц: 33
  • Язык работы: Русский язык
  • Дата загрузки: 2014-12-24 22:51:38
  • Размер файла: 146.3 кб
Помогла работа? Поделись ссылкой
Информация о документе

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

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

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

Эволюция и классификация языков программирования. Понятие структурного программирования.

Развитие языков программирования :
Этап Описание
1940-1950 Машинные коды
1950-1960 Символические ассемблеры – условные мнемонические обозначения, автокоды. Программа составленная на ассемблере переводится в машинный код другой программой – ассемблером.
1960-1970 Процедурно ориентированные и объектно-ориентированные языки программирования высокого уровня.
1970-1980 Языки СУБД
1995-… Языки приближенные к человеческой логике и языки применяемые в Интернете.

Стандартизация языков :
Чтобы компиляция одной программы всегда выдавала одинаковый результат разрабатываются стандарты языков программирования. Организации по стандартизации языков :
ANSI- американский национальный институт стандартов
IEEE- институт инженеров по электротехнике и электронике.
ISO- организация международных стандартов.

Выпускается частный стандарт, определяемый разработчиком. Если язык получает распространение – разрабатывается единый стандарт.

Среда проектирования :
Средства разработки программ совершенствуются . От режима командной строки до интегрированной среды проектирования.
В настоящее время среда обработки программ представляет собой удобный графический интерфейс и большой спектр сервисов, включающих управление всеми хранимыми данными, библиотеками, утилитами просмотра, библиотеками функций, шаблонов приложений.
Компилятор при этом – составная часть среды проектирования. : Среды проектирования :VisualStudio, Delphi, CBuild т.д.

История развития и классификация :
Первые языки – машинные коды и ассемблеры : имеющие низкий уровень.
1)Fortran – выполнение математических операций
2)Algol- алгоритмические конструкции.
3)Pascal – после чего потребовался прямой доступ к памяти =>
4)C – инструментарий для разработки ОС, трансляторов и систем программирования
5) Языки функционально-логического программирования :Prolog, Lisp…
6)Визуальное программирование :Delphi ,VisualStudio.
7) Разработаны также :Perl, Rexx, Piton и др.
8) Языки обработки документов HTML , XML.

Классификация :
По уровню языка :
Высокий уровень (универсальность)
Низкий уровень
По парадигмам :

Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций)
Разработка программы ведётся пошагово, методом «сверху вниз».


Основные парадигмы программирования.

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

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

В настоящий момент выделяют 3 основные парадигмы программирования :
Парадигма директивного (структурного) программирование .
Объектно-ориентированного программирование.
Функционально-логического программирование.

Для поддержки программирования в соответствии с той или иной парадигмой, разработаны специальные алгоритмические языки. Многие языки поддерживают несколько парадигм программирования. Однако существуют языки ориентированные на одну парадигму.


Директивно-структурированное программирование :
Представители : С, Паскаль, Фортран, Ада.
Представляет собой последовательность операндов, которые необходимо выполнить для достижения результата. Последовательность выполнения зависит от входных данных. Алгоритм – легко понимается и легко кодируется.
В директивном программировании возникла идея локализации части кода в подпрограммы с последующим их вызовом из разных мест основной программы. Данные в виде аргументов задаются в вызове , в свою очередь подпрограмма возвращает результат.

Объектно-Ориентированное программирование (ООП) :
Представители : Делфи, С++, С#, Java, Питон и др.
Данная парадигма основное внимание уделяет не операндам, а данным в виде объектов.
Объекты взаимодействуют между собой с помощью механизма передачи сообщения.
Задача программиста – реализовать такие объекты, при взаимодействии которых можно получать желаемый результат.
В основе ООП – наследование, полиморфизм, инкапсуляция.

Функционально-логического программирование:
Представители :Lisp, Haskell, Prolog.
Основано на математическом понятии функции не изменяющие своего окружения в отличии от функции в структурных языках.
В логическом программировании программы выражены в виде формул математической логики и решение задач достигается путём вывода логических следствий из них. Программные системы необходимые для создания ИИ.

Язык Турбо Паскаль. Алфавит. Структура программы.

Современный алгоритмический язык Турбо Паскаль является структурированным языком высокого уровня и позволяет составлять программы любого назначения и размера.
Алфавитязыка представляет собой набор символов клавиатуры, воспринимаемых компилятором и разрешённых к использованию. В него входят следующие элементы:
- буквылатинского алфавита (прописные и строчные – по 26);
- цифрыот 0 до 9;
- символ подчёркивания _;
Эти элементы используются для написания идентификаторов– имён констант, переменных, типов, процедур, функций, модулей и меток. Имя идентификатора всегда должно начинаться с буквы.Строчные и прописные буквы воспринимаются одинаково. Пробел обозначает пропуск позиции и также отделяет зарезервированные (служебные) слова от идентификаторов. В именах использование пробела недопустимо.
Для обозначения арифметических и логических операций используются символы
+, - , *, /, = , >, < (умножение и деление в одну строку)

Для изменения порядка действий и других целей используются разделители и скобки
. , : ; ^ , @, $, #, ( ), [ ], {},
причём информация в фигурных скобках является комментарием и не участвует в работе программы.
Для выполнения ряда процедур используются составные символы, воспринимаемые как единый символ (пробелы между элементами таких символов запрещены):
- присвоить :=
- больше или равно >=
-меньше или равно <=
- не равно <>
- диапазон (ДВЕ точки) .. в квадратныхскобках [0 ..10]

В языке Турбо Паскаль используется большое количество зарезервированных слов. Эти слова имеют строго определённый смысл и определённое назначение в любом разделе программы. Они являются терминами программы и не могут быть использованы в качестве идентификаторов.
Основные зарезервированные слова следующие:

absolute абсолютное значение not нет
and и of чего
array массив or или
begin начать case в случае
const константа procedure процедура
do исполнить program программа
downto к меньшемуrecord запись
else в другом случае repeat повторить
end конец string строка
file файл then тогда
forдляto к
functionфункция type тип
goto идти к until до
if если uses использовать
in в var переменная
while пока
label метка with с

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

К элементарным конструкциям языка относятся константы и переменные.
Константы– это элементы данных, значения которых устанавливаются в описательной части программы и далее не изменяются. В зависимости от значения они могут быть арифметическими, символьными, строковыми и типа «множество». В описании констант могут использоваться операции и стандартные функции. Символ описания – знак равенства (=).
Переменные – это элементы данных, значения которых могут изменяться при работе программы. Они отождествляются с ячейками оперативной памяти и вводятся в программу для хранения данных и результатов. Переменная и её тип определяется идентификатором в описательной части программы, причём тип записывается через символ «двоеточие» (:).

Программа – это алгоритм, записанный средствами языка,и имеющий строго определённую структуру.
Первый раздел структурыпрограммы – заголовок, начинающийся служебным словом program,после которого записывается имя программы (не более восьми символов). Желательно, чтобы имя было значащим и отражало назначение программы. В конце заголовка, как и после каждой строки программы, ставится символ «точка с запятой» (;).

Вторымразделом структуры программы является раздел описаний.В него входят названия стандартных библиотечных модулей, а также описания данных, участвующих в работе программы: их идентификаторы, типы, диапазоны. Всего используется до семи разделов описаний.
Описание модулей производится в разделе Uses. Каждый модуль имеет своё имя и включается в раздел, если предусматривается его использование в данной программе. К основным модулям относятся:
System – основная библиотека, подключаемая к любой программе, так что её можно не указывать в описании. В модуле определён ряд типизированных констант и переменных, а также более 100 процедур и функций, в частности, ввод и вывод данных, арифметические операции и др.
Crt– процедуры и функции для работы с экраном.
Dos– процедуры и функции для работы в ОС DOS.
Printer – связь программ с печатающим устройством.
Graph– управляет графическими режимами мониторов.
Label – описание меток, с помощью которых можно осуществить прямой
переход из любого места программы к описанной метке.
Const – идентификаторы констант и указатели их значений.
Var– идентификаторы и типы переменных.
Procedur– описание дополнительных процедур, отсутствующих в
стандартных библиотеках программного обеспечения.
Function- описание дополнительных функций. Процедуры и функции
имеют имена для обращения, запись о типе функции ипоследовательность операторов, заключённых воператорные скобки begin – end.

Третий раздел структуры программы содержит собственно операторы программы (текст). Текст программы – это алгоритм решения, записанный на выбранном алгоритмическом языке. Раздел начинается со слова BEGINи заканчивается словом END, после которого ставится точка, как символ конца программы. Служебные слова Begin и End являются операторными скобками и могут также применяться для выделения текстов подпрограмм (процедур) и функций внутри основной программы. Тогда после End ставится точка с запятой. Количество слов «начало» и «конец» в программе должно быть одинаковым.

Типы всех данных,обрабатываемых программой, должны быть заранее установлены и описаны в разделе описаний.


Понятие типа данных. Структура типов данных языка Паскаль. Типы данных Делфи.

Типы всех данных,обрабатываемых программой, должны быть заранее установлены и описаны в разделе описаний. Тип данных определяет множество значений, которые может принимать каждый объект программы, и совокупность операций, допустимых при обработке этих значений. В языке ТП имеется множество стандартных типов данных, но можно создавать новые, объявляя их в разделе описаний Type.
Стандартные типы данных объявляются в разделе Var с помощью служебных слов и делятся на две группы: простые (скалярные) и составные(структурированные (строки, массивы, записи, файлы, классы).). К простым типам относятся следующие:
-числовой
-логический
-символьный
-адресный
-перечисляемый
-ограниченный (диапазон).
Рассмотрим наиболее часто применяющиеся типы.
Числовой тип включает целые и вещественные числа,имеющие имя идиапазон.
Целые числа
Наиболее употребительными являются целые числа типа INTEGER, называемое ЦЕЛОЕ СО ЗНАКОМ и находящееся в пределах +_ 32767.
Кроме него употребляются:
BYTE - короткое целое без знака (0..255)
SHORTINT - короткое целое со знаком (-128..127)
WORD - целое без знака ((0..65531)
LONGINT - длинное целое со знаком (+- 214748 3648).

Структура типов данных языка Паскаль



Перечисляемый пользовательский тип – это один из типов, определяемых программистом, который задается перечислением тех значений, которые он может получать. Каждое значение именуется идентификатором и располагается в списке, в круглых скобках:
В общем виде объявление перечисляемого типа имеет вид:
Type имя типа = (имя1, имя2, …, имяN);

Строки. Переменная строкового типа должна быть объявлена в разделе описания пере¬менных:
Имя: String; или Имя: String[длина];

Массивом называется упорядоченная индексированная совокупность однотипных элементов, имеющих общее имя.Различают массивы статические и динамические. Формат описания типа статистического массива:
Array [тип индексов] of <тип элементов>;
Формат описания типа динамического массива:
Array of <тип элементов>;
Множество представляют собой совокупность элементов, выбранных из заранее определенного набора значений. Все элементы множества принадлежат одному порядковому типу, число элементов в множестве не может превышать 256. Значение множественного типа заключается в квадратные скобки.
Формат описания множественного типа:
Set of тип элементов;
Арифметические операции и выражения. Последовательность выполнения математических операций. Стандартные математические функции. Примеры записи математических выражений.

Переменная - это область памяти названная своим именем, которая может меняет свое значение в процессе выполнения программы.
Выражение - это синтетическая единица языка определяющая способ вычисления некоторого значения. Выражение состоит из оперантов, знаков операций и круглых скобках.
Оперантом может быть константа, переменная или функция.
Арифметические операции используемые в выражении:
+
-
*
/
div-целая часть от деления
mod-остаток от деления
Порядок вычисления операций
Сначала выполняется умножение и деление, затем сложение и вычитание. Действия одного порядка выполняется поочередно с лева направо. Операция заключенная в круглых скобках выполняется раньше, записанной за скобкой.

Пример:

(a+b)/(a-b)=(a+b)/(a-b)

Стандартные арифметические функции
Функции Значения
Abs(x) |x|
Exp(x) e^x
Ln(x) Ln x
Sin(x) Sin x
Cos(x) Cos x
Arctan(x) Arctg x
Sqr(x) x^2
Sqrt(x) √x
Random(x) Случайное число x

Пример:

log_a⁡〖x=ln⁡(x)/ln⁡(a)〗

Операции отношения
=
<>
<
>
<=
>=

Условные операторы. Оператор множественного выбора. Примеры программирования задач разветвляющихся процессов.

Оператор ветвления— оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

1)if<условие> then <оператор 1> else <оператор 2>



2)if <условие> then <оператор>


3) if <условие> then
Begin
<оператор 1>;
<оператор 2>;
.....................
<операторn>;
End
Elsebegin
Begin
<оператор 1>;
<оператор 2>;
.....................
<оператор n>;
End;

4)if<условие1> then
Begin
if<условие2> then
Begin
<оператор 1>;
end
else begin
<оператор 2>;
end;


Пример задачи:
Найти максимальное число из трех данных нам величин.

Оператор выбора Case используется в том случае, когда необходимо сделать выбор не из двух или трех, а более вариантов.
case <выражение> of
значение1 :begin оператор (группа операторов);end;
значение2 :begin оператор (группа операторов);end;
. . . . . . . . . . . . . . . . . . . . . .
значениеN :begin оператор (группа операторов);end;
else beginоператор (группа операторов);end;
end;

Пример: Написать программу преобразования цифр в слова.
Program Number1;
Var
a, b, c : integer;
Begin
writeln(‘Введите цифру ‘);
readln(a);
if (a<0) or (a>9)
then
writeln (‘Это число не является цифрой‘)
else
case a of
0 : writeln (‘ноль‘);
1 : writeln (‘один‘);
2 : writeln (‘два‘);
3 : writeln (‘три‘);
4 : writeln (‘четыре‘);
5 : writeln (‘пять‘);
6 : writeln (‘шесть‘);
7 : writeln (‘семь‘);
8 : writeln (‘восемь‘);
9 : writeln (‘девять‘);
end;
readln;
End.

Циклические операторы: с заданным числом повторений и выходом по условию. Примеры программирования задач циклических алгоритмов.
1) for...do -цикл с параметром
2)while...do - цикл с предусловием
3)repeat...until - цикл с пост.условием
Примеры:
1)for i:=1 to 100
write (sqr(i), )
2)i:=2;
while i<=10 do
Begin
writeln(sqr(i));
inc(i,2)
end;
3) i:=2;
Repeat
writeln(sqr(i));
i:=inc(i,2);
until i >10;

Стандартные операторы ввода и вывода данных. Форматный вывод. Примеры.
Для вывода на экран монитора сообщений и значений переменных используется команда write или writeln. Суффикс ln означает что после вывода на экран списка переменных курсор переедет на новую строку.
Пример:
b:=8.5;
writeln(b:8{всего}:4{для дробной части});
_ _ _8.5_ _ _

Оператор ввода read,readln
При вводе вводимые данные разделяются пробелом или символом окончания ввода Enter.
При вводе исходных данных перед каждой командой read желательно располагать команду write.

Форматный вывод для Delphi:FormatFloat(#.##, «элемент»).

Простые типы данных. Стандартные процедуры и функции их обработки. Примеры.
Простые типы данных:
Простые типы данных не обладают внутренней структурой. Данные такого типа называют скалярами. К простым типам данных относятся следующие типы:

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

Целый
Вещественный
Дата
Время
Денежный
Перечислимый
Интервальный

Подпрограмма - это отдельная функционально независимая часть программы. Любая подпрограмма обладает той же структурой, которой обладает и вся программа.
Подпрограммы делятся на два типа: процедуры и функции.
Процедуры- называется часть программы предназначенная для решения определенной задачи.
Структура процедуры :
список параметров- перечень исходных данных и результатов работы процедуры с указанием их типов.
В списке параметров указывается не только переменные, но и их тип.
Отличияфункций от процедур лишь в том, что с функцией можно проводить математические действие сразу же, а с процедурой, только после того как она присвоит значения какой-либо переменной.
Стандартные процедуры и функции:

Процедуры управления работой программы - это процедуры, управляющие логикой выполнения программы.

--------------------T-------------------------------------------
¦ Процедура ¦ Описание ¦
+-------------------+-------------------------------------------+
¦ Break ¦ Завершает оператор for, while или repeat. ¦
+-------------------+-------------------------------------------+
¦ Continue ¦ Продолжает итерацию оператора for, while,¦
¦ ¦ или repeat. ¦
+-------------------+-------------------------------------------+
¦ Eхit ¦ Позволяет немедленно выйти из текущего мо-¦
¦ ¦ дуля. ¦
+-------------------+-------------------------------------------+
¦ Наlt ¦ Останавливает выполнение программы и возв-¦
¦ ¦ ращает управление операционной системе. ¦
+-------------------+-------------------------------------------+
¦ RunError ¦ Останавливает выполнение программы и гене-¦
¦ ¦ рирует ошибку этапа выполнения. ¦
L-------------------+--------------------------------------------


Следующие процедуры и функции используются для работы со
строками Паскаля.

-------------------T--------------------------------------------
¦ Процедура ¦ Описание ¦
+------------------+--------------------------------------------+
¦ Cоncat ¦ Выполняет конкатенацию последовательности¦
¦ ¦ строк. ¦
+------------------+--------------------------------------------+
¦ Cору ¦ Возвращает подстроку строки. ¦
+------------------+--------------------------------------------+
¦ Delete ¦ Удаляет из строки подстроку. ¦
+------------------+--------------------------------------------+
¦ Insert ¦ Добавляет в строку подстроку. ¦
+------------------+--------------------------------------------+
¦ Length ¦ Возвращает динамическую длину строки. ¦
+------------------+--------------------------------------------+
¦ Pоs ¦ Производит поиск подстроки в строке. ¦
+------------------+--------------------------------------------+
¦ Str ¦ Преобразует численное значение в его стро-¦
¦ ¦ ковое представление. ¦
+------------------+--------------------------------------------+
¦ Val ¦ Преобразует строковое значение в его чис-¦
¦ ¦ ленное представление. ¦
L------------------+---------------------------------------------

Стандартные арифметические функции
Функции Значения
Abs(x) |x|
Exp(x) e^x
Ln(x) Ln x
Sin(x) Sin x
Cos(x) Cos x
Arctan(x) Arctg x
Sqr(x) x^2
Sqrt(x) √x
Random(x) Случайное число x


Структурированные типы данных. Классификация структурированных типов.

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

К структурированным типам данных относятся:
- массивы:
- записи;
- множества;
- файлы.

Массивы – совокупность связанных данных, состоящая из фиксированного числа элементов одного типа. Для определения массива достаточно указать его тип, число элементов в массиве и метод их нумерации.

Запись – единица обмена данными между программой и внешней памятью (винчестер, магнитные диски и ленты). В языке Паскаль запись – структурированный тип данных, компоненты значений которого, обычно называемые полями, могут иметь имя и принадлежать к различным типам данных. Допускается выполнение действий как над всей записью, так и ее полями.

Множества – совокупность связанных данных, состоящая из элементов одного типа. В отличие от массива (фиксированное число элементов) множество может включать произвольное число элементов.

Файл – информация, размещенная на внешних запоминающих устройствах (винчестер, магнитные диски и ленты), снабженная идентификатором и оформленная как единое целое средствами операционной системы или языка программирования. Содержимым файла могут быть программы, данные, тексты и любая другая информация.

Одномерные массивы. Описание типа–массив. Описание переменной массивового типа. Доступ к элементам массива. Ввод/вывод элементов массива. Примеры.

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

Опишем одномерный массив, состоящий из 30 целых чисел.
Type myarray = Array [1..30] Of Integer.
Напомним, что раздел типов, начинается со служебного слова TYPE, после этого идет имя нового типа и его описание. Между именем типа и его описанием ставится знак "равно" (в разделе переменных между именем переменной и её описанием ставится двоеточие). Тогда:
myarray - это имя нового типа;
Array - служебное слово (в переводе с английского означает "массив", "набор");
[1..30] - в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива, пусть в этом примере первый элемент имеет номер 1, а последний - номер 30;
Of - служебное слово (в переводе с английского -"из" );
Integer - тип всех элементов массива.

Таким образом, одномерный массив описывается следующим образом:
Array[n1..n2] Of <тип элементов>;
где n1 - номер первого элемента, n2 - номер последнего элемента, в качестве типа элементов может использоваться любой тип данных, кроме файлового. Так как каждый элемент имеет свой номер, то к каждому элементу можно обращаться непосредственно.

Для того, чтобы обратиться к i-у элемент этого массива, необходимо записать:
A[i] - сначала имя массива, а в квадратных скобках указывается номер элемента, к которому обращаемся, - i. Например, обращаемся к первому элементу массива А - А1[1], а к пятому - А[5].

Способы задания одномерных массивов
Главным недостатком Pascal является необходимость заранее задать размерность массива, чтобы при трансляции программы Паскаль выделил необходимое количество ячеек памяти для хранения элементов. Чтобы бороться с этим недостатком используют 2 метода :
Для описания массива используют предварительно определеннуюConst.
Const m=4; n=6;
Var Mas:array[1..n] of real;

Begin
For i:=1 to n do begin
Writeln (‘Введите элементы массива :’);
Read(Mas[i]);
End;


Позволяет имитировать работу с массивами переменной длины :
В разделе Constпредварительно определяют возможное максимальное значение размера массива. Затем в программе запрашивают текущее значение размера и используют это значение при заполнении и обработки массива, при этом часть массива будет не заполнена.
Type mas=array[1..100] of integer;
VarA,B=mas;

Begin
Writeln(‘Введите размерность массива А’);
Readln(n);
Writeln(‘Введите размерность массива B’);
Readln(m);
For i:=1 to n do
Readln(a[i]);
For i:=1 to m do
Readln(b[i]);


Так же массив можно задать с помощью генератора случайных чисел :
vari,n:integer;
x:array[1..100] of integer;
begin
write(Введите размерность массива Х: );
readln(n);
write(Массив X :);
randomize;
fori:=1 to n do
begin
x[i]:=random(20)-10;
write(x[i]:3);
end;

!!! Вывод массива на монитор соответственно осуществляется операторами :write и writeln.

fori:=1 to n do
begin
x[i]:=random(20)-10;
write(x[i]:3);
end;

Примечание :
!!!Над массивами разрешается операция присваивания, только если массивы одного типа. Нельзя присвоить массивы друг другу , если их описание произведены в разных частях раздела описания.
!!! Никакие другие действия над массивом в целом – не разрешены.
!!!Каждая операция производится над конкретным элементом массива.

Программирование задачи поиска максимального и минимального элементов одномерного массива.

Поиск максимального элемента в массиве
Программа на языке Паскаль:
const
m = 20;
var
arr: array[1..m] ofbyte;
max_num, max_index: byte;
i: byte;
begin
randomize;
for i := 1 to m dobegin
arr[i] := random(100);
write (arr[i]:3);
end;
max_index := 1;
max_num := arr[1];
for i := 2 to m do
if arr[i] > max_num thenbegin
max_index := i;
max_num := arr[i];
end;
writeln;
writeln (Max = ,max_num);
writeln (position: , max_index);
end.

В переменной max_num хранится текущее максимальное значение массива, а в max_index – его позиция (индекс).
В программе можно выделить две части: заполнение массива числами с выводом их на экран (первый циклfor) и непосредственно поиск максимума (второй цикл for).
Перед первым циклом запускается процедура randomize для того, чтобы при каждом запуске программы значения массива были разными.
Изначально делается предположение, что первый элемент массива и есть максимум. Поэтому переменнойmax_index присваивается значение 1 (т.е. указатель на первый элемент массива), а max_num – непосредственно значение, хранящееся в первой ячейке массива.
Начиная со второго элемента, каждое очередное значение массива сравнивается с текущим значениемmax_num. В случае, если текущее значение массива больше, чем хранящиеся в max_num, происходит новое присваивание обоим переменным текущего значения и индекса.

Поиск минимального элемента в массиве
Программа на языке Паскаль:
const
m = 20;
var
arr: array[1..m] ofbyte;
min_num, min_index: byte;
i: byte;
begin
randomize;
for i := 1 to m dobegin
arr[i] := random(100);
write (arr[i]:3);
end;
min_index := 1;
min_num := arr[1];
for i := 2 to m do
if arr[i] <min_num thenbegin
min_index := i;
min_num := arr[i];
end;
writeln;
writeln (Min = ,min_num);
writeln (position: , min_index);
end.

В переменной min_num хранится текущее максимальное значение массива, а в min_index – его позиция (индекс).
В программе можно выделить две части: заполнение массива числами с выводом их на экран (первый циклfor) и непосредственно поиск максимума (второй цикл for).
Перед первым циклом запускается процедура randomize для того, чтобы при каждом запуске программы значения массива были разными.
Изначально делается предположение, что первый элемент массива и есть минимум. Поэтому переменнойmin_index присваивается значение 1 (т.е. указатель на первый элемент массива), а min_num – непосредственно значение, хранящееся в первой ячейке массива.
Начиная со второго элемента, каждое очередное значение массива сравнивается с текущим значениемmin_num. В случае, если текущее значение массива меньше, чем хранящиеся в min_num, происходит новое присваивание обоим переменным текущего значения и индекса.

Методы сортировки одномерных массивов. Примеры.

Сортировка представляет собой процесс упорядочения элементов в массиве по возрастанию или убыванию, так чтобы
X[1] ≤ X[2] ≤ … ≤ X[n] или X[1] ≥ X[2] ≥ … ≥ X[n].

Существует много способов сортировки массивов, они зависят от вида массива, различаются временем выполнения сортировки и размерами используемой памяти. Как правило, чем быстрее сортировка, тем сложнее ее алгоритм. Три простых классических алгоритма сортировки, которые не являются самыми быстрыми, но сортируют любые одномерные массивы:
Сортировка выбором;
Сортировка обменом (пузырьковая);
Сортировка вставкой.
Общее описание начальных условий всех трех представленных алгоритмов: дан одномерный целочисленный массив а[1..n].
Сортировка выбором
На каждом шаге выбирают минимальный элемент из имеющихся, и помещают его на первое место в своем блоке (оставшейся части массива)
for i := 1 to n - 1 do
begin
min := a[i];
im := i;
for j:=i+1 to n do
if a[j]<min then
begin
min:=a[j];
im:=j;
end;
a[im]:=a[i];
a[i]:= min;
end;
Сортировка обменом
На каждом шаге сравнивают между собой соседние элементы массива и помещают максимальный в паре на последнее место
for i := 1 to n-1 do
for j := 1 to n-i do
if a[j]>a[j+1] then {если текущий больше следующего, то}
begin
t:=a[j]; {меняем}
a[j]:=a[j+1]; { их }
a[j+1]:=t; {местами}
end;
Сортировка вставкой
Сортировка заключается в том, что сначала упорядочиваются первые два элемента, затем делается вставка третьего элемента в и процесс повторяется
for i := 2 to n do
begin
t:=a[i]; { сохраним 2 элемент}
j:=i-1; {предшествующий}
while ((t<a[j]) and (j>0)) do
begin
a[j+1]:=a[j]; {сдвиг}
j:=j-1;
end;
a[j+1]:=t;
end;


Двумерные массивы. Описание типа – массив. Описание переменной массивового типа массив. Доступ к элементам двумерного массива. Ввод/вывод элементов двумерного массива. Примеры.

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

Обычно двумерные массивы на языке программирования Pascal описываются так:
array [1..m, 1..n] of базовый_тип
Однако можно их описывать и по-другому:
array [1..m] of array [1..n] of базовый_тип

При этом описание может быть в разделе type и тогда создается новый тип, который можно использовать при объявлении переменных. Или массив может быть описан непосредственно в разделе переменных. m и n – это константы, их можно опустить и вставить конкретные значения, но лучше так не делать. Обычно подразумевают, что в интервале от 1 до m определяется количество строк, а в интервале от 1 до n – количество столбцов массива.
1 вариант – описание массива через раздел type:
const
M = 10;
N = 5;
type
matrix = array [1..M, 1..N] ofinteger;
var
a: matrix;
2 вариант – описание массива в разделе переменных:
const
M = 10;
N = 5;
var
a: array [1..M, 1..N] ofinteger;

При использовании третьего варианта описания лучше сначала определить некоторый тип одномерного массива (строка двухмерного массива), который затем используется при описании двухмерного массива:
type a = array[1..10] ofbyte;
var b: array[1..100] of a;

Для обращения к элементу двухмерного массива необходимо указать имя массива и в квадратных скобках через запятую – значения двух индексов (первый указывает номер строки, а второй – номер столбца), на пересечение которых стоит элемент (например, a[i,2]:=6).
В языке программирования Pascal допустимо разделение индексов с помощью квадратных скобок (например, a[i][5]:= 7).

Если описывается двумерный массив как типизированная константа, то при задании значений его элементов он рассматривается как массив массивов. При этом в общих круглых скобках через запятую перечисляются заключенные в круглые скобки значения элементов строк (каждая строка в своих скобках):
type
arr = array[1..4, 1..3] ofinteger;
const
cords: arr = ((1,-1,3), (0,0,0), (1,4,0), (4,-1,-1));

Простой пример работы с двумерным массивом. Сначала заполним его данными, а затем выведем их на экран в виде таблицы.
var
matrix: array[1..3,1..5] ofinteger;
i, j: integer;

begin
writeln (Введите 15 чисел: );
for i := 1 to 3 do
for j := 1 to 5 do
read (matrix[i,j]);

for i := 1 to 3 dobegin
for j := 1 to 5 do
write (matrix[i,j], );
writeln
end;
readln;
end.

Размерность массива (т.е. количество содержащихся в нем значений) определяется произведением количества строк на количество столбцов. В примере выше в массив помещается 15 значений.
Когда пользователь вводит очередное число, то процедура read считывает его и помещает в ячейку с текущими индексами i и j. Когда i равна единице, значение j меняется пять раз, и, значит, заполняется первая строка таблицы. Когда i равна двум, значение j снова меняется пять раз и заполняется вторая строка таблицы. Аналогично заполняется третья строка таблицы. Внутренний цикл for в общей сложности совершает 15 итераций, внешний только 3.
Как пользователь вводит значения – не важно. Он может их разделять либо пробелом, либо переходом на новую строку.
Вывод значений двумерного массива организован в виде таблицы. Выводятся 3 строки по 5 чисел в каждой. Внутри строк числа разделяются пробелом.

const
M = 3;
N = 5;

var
matrix: array[1..M,1..N] ofinteger;
i, j: integer;

begin
writeln (Введите 15 чисел: );

for i := 1 to M do
for j := 1 to N do
read (matrix[i,j]);

for i := 1 to M dobegin
for j := 1 to N do
write (matrix[i,j]:5);
writeln
end;

readln
end.

ВслучаеработысDelphi:

Двумерный массив можно заполнятьс помощью элементов :TEdit,InputBox, TMemo, TStringGrid,…

Пример : приложение ввода/вывода информации с помощью InputBox:

Вцикле :a[i]:=strtoint(inputbox(‘Введитеа[’+inttostr(i)+’]’,’,’))

Примердля TMemo :
For i:=1 to 3 do
For j:=1 to 3 do
A[I,j]:=strtoit(inputbox(‘Введитеа[’+inttostr(i)+ittostr(j)+’]’,’,’)

Пример с использованием StringGrid и Edit :

m:=strtoint(edit1.Text);//считаем строчки
n:=strtoint(edit2.Text);//считаем столбцы
stringgrid1.RowCount:=m;//делаем строчки
stringgrid1.ColCount:=n;//делаем столбцы
for i:=0 to n-1 do
for j:=0 to m-1 do
stringgrid1.Cells[i,j]:=inttostr(random(100)-50);