Справочник от Автор24
Поделись лекцией за скидку на Автор24

Алгоритмизация и программирование

  • 👀 530 просмотров
  • 📌 470 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Алгоритмизация и программирование» pdf
Тема 7. Алгоритмизация и программирование. Технологии разработки программного обеспечения. Языки программирования высокого уровня. Применение компьютера в решении задач Алгоритм – это заранее заданное понятное и точное предписание возможному исполнителю совершить определенную последовательность действий для получения решения задачи за конечное число шагов. Исполнитель не вникает в смысл того, что он делает, но получает необходимый результат. В таком случае говорят, что исполнитель действует формально, т.е. отвлекается от содержания поставленной задачи и только строго выполняет некоторые правила (инструкции). Это является важной особенностью алгоритмов. Свойства алгоритмов:  Понятность для исполнителя. Запись алгоритма для определенного исполнителя с использованием тех команд, которые имеются в его системе команд.  Дискретность. Описываемый алгоритмом процесс должен быть разбит на последовательность отдельных шагов. Только выполнив требования одного предписания, можно приступить к выполнению следующего.  Определенность (детерминированность, точность). Каждое правило (команда, предписание) алгоритма должно быть четким, однозначным и не оставлять места для произвола исполнителя (т.е. принятия исполнителем решения, не предусмотренного составителем алгоритма).  Результативность (конечность). При точном исполнении всех предписаний алгоритма процесс должен прекратиться за конечное число шагов и при этом должен получиться определенный результат.  Массовость. Алгоритм решения задачи должен быть применим для некоторого класса задач, различающихся лишь исходными данными. Способы (формы) представления алгоритмов: словесная, графическая, псевдокоды, программная. Словесная форма представления алгоритмов – запись алгоритма (описание последовательности этапов обработки данных) на естественном языке. Словесный способ не имеет широкого распространения, т.к. такие описания строго не формализуемы, страдают многословностью записей, допускают неоднозначность толкования отдельных предписаний. Графическая форма – запись алгоритма с помощью графических символов. Пример: запись алгоритма с помощью языка блок-схем. Блочные символы Название символа Обозначение пример заполнения Пояснение Вычислительное x = (a+b)/sin(t) Процесс действие (блок вычислений) или последовательность действий Ввод a, b, c, Ввод-вывод Ввод-вывод данных в данных общем виде Начало, начало Пуск-останов конец алгоритма (начало-конец) Вход и выход в подпрограмму Проверка условий Решение (логический блок) (используется да a < . , ; : @ ' ( ) [ ] {}#$^ Символы из алфавита языка используются для построения базовых элементов Pascal-программы – лексем. Лексема - минимальная единица языка, имеющая самостоятельный смысл. В Pascal имеются следующие классы лексем: 1) Служебные слова - ограниченная группа слов, смысл которых фиксирован в языке. Служебные слова нельзя использовать в качестве имен, вводимых программистом. 2) Идентификаторы (имена) - слова, служащие для обозначения объектов вычислений, а также для идентификации программных единиц и наборов данных. Имена формируются из букв и цифр (первой должна быть буква). 3) Изображения – обозначают числа, символьные строки и т.п. 4) Знаки операции - формируются из одного или нескольких специальных символов и предназначены для задания действий по преобразованию данных и вычислению значений. 5) Разделители - формируются из специальных символов и используются для повышения наглядности текстов программ. В Pascal-программах допускаются фрагменты пояснительного характера – комментарии. Наличие комментариев не изменяет смысл программы и не влияет на ее исполнение. Комментарий представляет собой любую последовательность символов (необязательно из алфавита языка), заключенные в фигурные скобки { } или разделители вида (* *). Комментарий может находиться между любыми двумя лексемами. Есть еще группа лексических конструкций языка, обычно называемых директивами компилятора. Эти конструкции так же, как и комментарии, заключаются в фигурные скобки и являются инструкциями Pascalкомпилятору, предписывающими тот или иной режим обработки программы. Директивы компилятора должны содержать сразу же после открывающей фигурной скобки символ $, а за ним – одиночную букву, определяющую конкретный режим компиляции. После буквы может присутствовать знак '+' или '-', задающий соответственно, установку или отмену заданного режима, например: {$В-}, {$N+}. Важную роль в тексте программы играет символ "пробел". Он используется для отделения лексем друг от друга в тех случаях, когда слитное написание двух или более лексем может исказить смысл программы. В остальных случаях использование пробелов необязательно и служит целям наглядности, способствуя лучшему внешнему виду программы. Структура программы: Program <имя>; Uses ...; {подключение стандартных и пользовательских библиотечных модулей} Label ...; {совокупность идентификаторов или целых чисел, предназначенных для организации передачи управления операторам , отмеченных метками} Const...; {присвоение идентификаторам констант постоянных значений} Туре ...; {задание пользовательских типов, в дальнейшем, используемых для описания переменных} Var ...; {описание идентификаторов соответствующим типом} Procedure <имя>; {определение части программы как переменных Function <имя>; отдельной синтаксической единицы.} Begin {последовательность операторов, разделенных точкой с запятой} End. Любой раздел в конкретной программе, кроме раздела операторов, может отсутствовать. Тип данных определяет множество значений, которые могут принимать объекты программы (постоянные и переменные), а также совокупность допустимых операций. Типы данных Простые Составные (скалярные) (структурированные) Стандартные Пользовательские Массив Строковый тип Множественный тип Запись Стандартные типы данных Название Byte Диапазон возможных значений Байтовый (длиной Память (байт) 0..255 1 в байт) Shortint Короткий целый -128..127 1 Word Слово (длиной в 0..65535 2 слово) Integer Целый -32768..32767 2 Longint Длинный целый -2147483648..2147483647 4 Single С -1.5E-45..3.4E38 4 одинарной точностью Real Вещественный -2.9E-39..1.7E38 6 Double С -5.0E-324..3.4E308 8 двойной точностью Символьный Char Символы кодовой таблицы 1 (литерный) Boolean Логический True, False 1 (булевский) Целый тип данных применяется для абсолютно точного представления величины. К данным целого типа относятся константы и переменные. Константы могут быть обозначены именем. В этом случае они задаются в разделе const. Пример: const k=15; p1=-46; p2=46; Переменная целого типа принимает значение целого десятичного числа. Пример: a:=25; S:=0; Действительный тип данных используется для описания переменных, значением которых может быть действительное или целое число. В Pascal константа действительного типа может быть представлена в двух видах: 1) Числом с фиксированной точкой. 2) Числом с плавающей точкой. Число с фиксированной точкой изображается десятичным числом с дробной частью (она может быть и нулевой). Дробная часть отделяется от целой с помощью точки. Например: 19.56; 0.05; -376.18; Очень большие и очень маленькие числа в математике принято записывать в виде чисел с порядком, т.е. в виде умножения значащих цифр на степень числа 10. В Turbo Pascal такая запись называется записью числа с плавающей точкой. Число с плавающей точкой записывается в виде: mEp, где m - мантисса числа, p - порядок числа. Обычная запись в математике Запись с плавающей точкой в TPascal 1.3653*108 1.3653E+8 6.63*10-34 6.63E-34 -1.6*10-19 -1.6E-19 3*108 3E8 Вывод действительных данных возможен с форматом и без формата. Если формат отсутствует, то число выводится с плавающей точкой с мантиссой и порядком, при этом на изображение числа отводится 17 позиций. В целой части мантиссы присутствует только 1 значащая цифра, в дробной части 10 цифр, а на порядок с учетом знака отводится 3 позиции. Пример: -3.2648375386Е-01. Для наглядности выводимых результатов предусмотрены форматы. Формат указывается в операторе вывода write вслед за выводимым данным через двоеточие: R:m:n, где R - выводимое данное действительного типа, m общее поле выводимого числа (включая знак числа, целую часть, точку и дробную часть), n - поле дробной части. В качестве m и n могут быть целые константы, переменные, выражения. Чаще всего это целые числа. При использовании форматов число выводится с фиксированной точкой. Пример: Для вывода числа R:=-0.18 достаточно указать в операторе write(R:5:2); Если формат указан больше, чем необходимо, то перед целой частью располагаются избыточные пробелы, а после дробной части - нули. Переменные логического типа описываются с помощью идентификатора Boolean. Они могут принимать два значения: False (ложь) или True (истина) ( False и True — стандартные константы), под них выделяется 1 байт памяти. Логический тип является перечислимым: False < True, Ord(False) = 0, Ord(True) = 1, Succ(False) = True, Pred(True) = False. Результатом выполнения операций сравнения (отношения): < (меньше), > (больше), <= (меньше или решаю), >= (больше или равно), <> (не равно), = (равно) является величина логического типа. Ее значение равно True, если отношение выполняется для значений входящих в него операндов, и False — в противном случае. Пользовательские типы данных: Перечисляемый тип задается перечислением своих значений. 1. Описание типа: type <имя типа> = <список значений>; Пример: type color = (red, yellow, green, blue, magenta); Интервальный 2. тип задается своим минимальным и максимальным значениями и может быть определен на основе любого порядкового типа. Описание типа: type <имя типа> = const1..const2; Пример: type workdays = mon..fri; number = 0..9; Диапазон можно задать и в разделе описания переменных: Var a: 1..100; b: -10..10; Целые, символьный и логический типы данных имеют ограниченное количество значений, идущих по порядку. Поэтому, эти типы принято называть порядковыми типами. Все вещественные типы данных не являются порядковыми. Основные арифметические операции Операция Сложение Вычитание Умножение Деление Тип Обозна чение + – * / операндов результата real real integer integer real real integer integer real real integer integer real real integer real Целочисленное деление Остаток от целочисленного деления Div Mod integer integer integer integer Div (от division = деление) отличается от обычной операции деления тем, что возвращает целую часть частного, а дробная часть отбрасывается. Пример: 11 div 5 = 2 2 div 3 = 0 17 div -5 = -3 Mod (от modulus = мера) вычисляет остаток, полученный при выполнении целочисленного деления. Пример: 10 mod 5 = 0 10 mod 3 = 1 17 mod -5 = 2 Стандартные процедуры и функции Стандартная функция Abs(x) Sqr(x) Sqrt(x) Exp(x) Ln(x) Выполняемое действие |x| x2 √x ex Ln(x) Тип аргумента результата real real integer integer real real integer integer real real integer real real real integer real real real integer real pi Число π – real Sin(x) Sin(x) real real integer real real real integer real real real integer real Cos(x) Arctan(x) Cos(x) Arctg(x) Random Функция (диапазон) случайное возвращает word число удовлетворяющее word x, условию 0≤x<диапазон Random Функция возвращает real случайное число удовлетворяющее real x, условию 0≤x<1 Dec(x,n) Процедура уменьшает integer integer уменьшает integer integer увеличивает integer integer увеличивает integer integer значение x на n Dec(x) Процедура значение x на 1 Inc(x,n) Процедура значение x на n Inc(x) Процедура значение x на 1 Frac(x) Функция вычисляет дробную real real часть x Int(x) Функция вычисляет целую real real часть x Trunc(x) Функция ближайшее возвращает real целое число, longint меньшее или равное вещественному x для x≥0, и больше или равное для x≤0 Round(x) Функция возвращает значение real longint x, округленное до ближайшего целого числа Вывод информации на экран осуществляется процедурами write и writeln. Первая процедура выводит информацию на экран и оставляет курсор после последнего выведенного символа. Вторая – после вывода информации перемещает курсор в начало следующей строки. Пример: write(‘сумма чисел = ’ , s); writeln(k); writeln; Ввод информации осуществляется процедурами read и readln. Пример: read(a); readln(b,c); readln; Оператор безусловного перехода указывает, что далее программа должна выполняться с места, помеченного указанной в операторе меткой. Оператор безусловного перехода имеет вид: GOTO Метка ; Любой оператор в программе может быть помечен, т.е. снабжен меткой, которая предшествует оператору и отделяется от него двоеточием: МЕТКА : ОПЕРАТОР ; Метка может иметь произвольное имя, в качестве меток также допускается использовать целые числа без знака. Используемая в программе метка должна быть описана в блоке LABEL раздела описаний. Если в программе несколько меток, то в блоке LABEL они приводятся в виде списка, отделяясь друг от друга запятыми: LABEL 25, 0, Loop, 21, lab1; Следует помнить, что частое использование оператора безусловного перехода ухудшает наглядность программы, затрудняет ее понимание и отладку. Program Primer; LABEL 25; VAR N,S:Real; Begin Readln(S); Readln(N); IF N<0 THEN begin S:=N+2; GOTO 25 end; ..................... 25: Writeln('S= ',S:6:2) End. Комментарий – несколько фраз, поясняющих суть выполняемых программой действий. В ходе трансляции текста программы компилятор обходит комментарии, не принимает их во внимание и не включает в исполняемые коды программы. Единственное назначение комментария служить справочной информацией для человека, читающего текст программы. В Паскале комментарии создаются обрамлением с обеих сторон какой-нибудь текстовой строки условными символами { } или (* *), например: { В этом месте программа ожидает ввода числа } или (* Конец раздела описаний, начинаем основную программу *). Составной оператор представляет собой последовательность операторов, выполняемых в том порядке, в котором они записаны в программе. Он имеет следующий вид: Begin оператор; оператор;... оператор End Пример. Одна сторона прямоугольника на 5 см длиннее другой, а сумма их длин равна 17 см. Найти стороны этого прямоугольника. uses crt; var summa,raz,st:real; storona1,storona2:real; begin ClrScr; writeln('Введите сумму длин сторон прямоугольника'); readln(summa); writeln('Введите на сколько одна сторона больше другой'); readln(raz); st:= (summa - raz) / 2; storona1:= st; storona2:= st + raz; write ('ширина-',storona1:7:2,'см.'); write ('длина-',storona2:7:2,'см.'); end. Условный оператор может записываться в полной и неполной форме: полная форма условного оператора If <условие> Then <оператор 1> Else неполная форма условного оператора If <условие> Then <оператор> Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Как вы уже знаете, значением логического выражения является или True, или False. В первом случае выполняется < оператор 1>, во втором — < оператор 2>. В качестве < оператора 1> или < оператора 2> может выступать любой оператор, в частности, и составной оператор, и условный оператор. При использовании вложенных условных операторов некоторые конструкции могут пониматься неоднозначно. Пример: If <условие 1> Then If <условие 2> Then <оператор 2> Else <оператор 3> Здесь неясно, к какому оператору If относится ветвь Else. Эта неоднозначность разрешается по следующему правилу: Else относится к ближайшему оператору If, у которого отсутствует данная ветвь. Конструкция (оператор) If — Then — Else неделима, поэтому разделитель ";" в ней недопустим. Пример 1 работы условного оператора: Вывести на экран наибольшее из двух данных чисел. Program Му5_1; Var х, у: Integer; Begin WriteLn ( ' Введите 2 числа ' ); ReadLn (x, у); If x>y Then WriteLn (x) Else WriteLn (y); ReadLn End. Пример 2 работы условного оператора: Найти наибольшее из трех данных чисел. Program My5_2; Var x, у, z : Integer; Begin WriteLn ( ' Введите три числа через пробел ' ); ReadLn (x, у, z); If (x>y) And (x>z) Then WriteLn (x) Else If (y>x) And (y>z) Then WriteLn (y) Else WriteLn (z); ReadLn End. При написании сложных условий простые условия заключаются в скобки. Это связано с тем, что операции сравнения имеют более низкий приоритет, чем логические. Для организации в программах повторов однотипных команд язык Pascal предлагает специализированные операторы повтора, называемые операторами цикла. Разновидности оператора цикла: 1) цикл с параметром 2) цикл с предусловием 3) цикл с постусловием. Оператор цикла с параметром For i:= A to B do <оператор>; где i - параметр цикла (счетчик повторов)- переменная целого типа (integer); A и B - начальное и конечное значения параметра цикла (выражения того же типа, что и параметр цикла); оператор - любой простой или составной оператор, который требуется повторить несколько раз. Оператор цикла типа For...to...do предусматривает последовательное увеличение на единицу параметра цикла "i" от начального значения "A" до конечного значения "B" и выполнение входящего в цикл алгоритма при каждом значении параметра цикла. В качестве иллюстрации применения оператора цикла For...to...do рассмотрим пример вычисления суммы всех целых чисел от 1 до N (целое число N вводится с клавиатуры). Program Primer; Var i, N, S:integer; Begin Write('N= '); Readln(N); {C клавиатуры ввели целое число в переменную “N”} S:=0; {Задали начальное значение суммы} For i:=1 to N do S:=S+i; { Во время каждого из повторов } {значение суммы "S" увеличивается на новую величину счетчика "i" } Writeln('S= ', S:6); Readln End. В этой программе оператор "S:=S+i" выполняется "N" раз, при различных значениях параметра цикла "i". В некоторых случаях бывает удобно, чтобы параметр цикла принимал последовательно убывающие, а не возрастающие значения. Для этого предусмотрена следующая разновидность оператора цикла: For i:=B downto A do <оператор>; где i, A и B имеют прежний смысл. Отличие от предыдущего варианта цикла в том, что в операторе цикла типа For...downto...do шаг наращивания параметра равен -1, при этом начальное значение счетчика повторов "B" больше конечного значения "A". Пример при нисходящем изменении значения параметра цикла: Program Primer; Var i,N,S:integer; Begin Write('N= '); Readln(N); S:=0; {начальное значение суммы} For i:=N downto 1 do S:=S+i; Writeln('S= ',S:6); Readln End. Для операторов цикла с параметром существуют некоторые ограничения:  нельзя задавать шаг изменения значения параметра, отличный от 1 или -1;  не рекомендуется изменять внутри цикла значения параметра цикла, начальное и конечное значения параметра;  входить в цикл можно только через его начало, а выходить - либо при исчерпании значений параметра цикла, либо при выполнении оператора перехода по метке, расположенной вне данного цикла. Оператор цикла с предусловием Если число повторений, выполняемых в цикле, заранее не известно или шаг приращения счетчика (параметра) цикла отличен от единицы, то необходимо использовать оператор цикла с предусловием. Оператор цикла этого вида имеет вид: While < условие > do < оператор > ; где условие - это логическое выражение, от значения которого зависит продолжать повторы или завершить цикл; оператор - любой простой или составной оператор. Выполнение оператора начинается с вычисления значения логического выражения. Если оно имеет значение "True" (истина), то выполняется оператор (операторы), входящий в цикл. Выполнение цикла продолжается до тех пор, пока логическое выражение в его заголовке не примет значение "False" (ложно). Если выражение равно "False" при первом же витке цикла, то работа цикла завершится, а входящие в него операторы не выполнятся ни разу. Поскольку в цикле типа While...do условие завершения его работы проверяется до выполнения входящего в него оператора, такой цикл называется "оператор цикла с предусловием". Пример использования оператора цикла с предусловием: Program Primer; Var K:integer; Begin K:=0; While K<=10 do begin K:=K+2; Write('K= ',K:3) end; Readln End. Оператор цикла с постусловием Цикл этой разновидности применяется в случаях, когда число повторений оператора, входящего в тело цикла, заранее не известно. Такой цикл похож на цикл с предусловием, но в данном случае условие завершения повторов проверяется после выполнения операторов, составляющих тело цикла. Общий вид оператора цикла с постусловием таков: Repeat оператор1, оператор2, ... , операторN Until <условие>; где оператор1, оператор2, ... , операторN - операторы тела цикла; условие - логическое выражение, диктующее завершение повторов. Оператор цикла с постусловием начинается с выполнения операторов внутри цикла. Затем проверяется истинность логического условия, стоящего после слова Until. Если это условие справедливо (True), то осуществляется выход из цикла. Если же значение логического выражения ложно (False), то выполнение операторов тела цикла повторяется, после чего снова проверяется истинность логического условия. Пример программы, использующей оператор цикла с постусловием: Program Primer; Var K:Integer; Begin K:=0; Repeat K:=K+2; Write('K= ',K:3) Until K>10; Readln End. При использовании операторов цикла следует учитывать следующие особенности: - Операторы, входящие в цикл Repeat...Until, всегда выполняются хотя бы один раз, поскольку истинность логического выражения в цикле этого типа проверяется после операторов, входящих в тело цикла. - При использовании цикла типа While...do могут быть ситуации, когда операторы, входящие в цикл, не будут выполнены ни разу, если логическое выражение изначально имеет значение "False". - Цикл Repeat...Until выполняется, пока логическое выражение имеет значение "False". Цикл While...Do выполняется, пока логическое выражение имеет значение "True". Это следует учитывать при замене цикла одного типа другим. Program W; Program R; Var i:integer; Var i:integer; Begin Begin i:=1; i:=1; While i<=10 do Repeat begin end; Writeln('Привет'); Writeln('Привет'); i:=i+1 i:=i+1 Until i>10; Readln Readln End. End. Если тело цикла "While...Do" состоит из нескольких операторов, их следует обрамлять операторными скобками "begin...end", образующими составной оператор. В цикле типа "Repeat...Until" операторные скобки не нужны. Массив – это последовательность данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип, и обозначаемая одним именем. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое. Элементы массива упорядочены так, что каждому элементу определяющих его представляют собой соответствует место в совокупность общей выражения номеров последовательности. порядкового типа (индексов), Индексы (целочисленные, символьный, логический типы данных). Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента в квадратных скобках после имени массива: <имя массива>[<индекс>]. Индексы массива сами могут быть переменными или выражениями, обеспечивая доступ не к одному, а к последовательности элементов. Сами элементы массива иначе называют переменными с индексами (индексированными переменными). Характеристики массива: 1) тип – общий для всех элементов массива тип; 2) размерность (ранг) – количество индексов массива; 3) диапазон изменения индексов (индекса) – определяет количество элементов в массиве. Виды массивов: 1) одномерный (линейный, нумеруются одним индексом; вектор), элементы которого 2) двумерный (матрица), элементы которого нумеруются двумя индексами; 3) трех-, четырехмерные массивы. Способы описания массивов: 1) предварительное описание типа массива Type <имя типа >=array[<тип индекса>] of <тип элементов>; Далее, в перечне переменных указывается имя массива, и через двоеточие указывается имя нового типа данных: Var <имя массива>:<имя типа >; Пример: Type m=array[1..10,1..20] of real; Var matrix: m; 2) в разделе описания типов данных: Var <имя массива>: array [<тип индекса>] of <тип элементов>; Чаще всего в качестве типа индекса используется интервальный целый тип. Пример: Var a:array[1..10] of char; b: array[1..3,1..3] of word; 3) в качестве типизированной константы в разделе описания констант: Пример: Const x: array[1..5] of integer =(1,3,5,7,9); Массив, описанный как типизированная константа, уже содержит данные. В остальных случаях массивы нужно заполнить данными, прежде чем начать выполнять с ними действия. Способы задания значений элементов массива: 1) ввод данных с клавиатуры Пример: а) for i:=1 to 5 do read(a[i]); б) for i:=1 to 3 do for j:=1 to 4 do readln(a[i,j]); 2) с помощью датчика случайных чисел Пример: randomize; for i:=1 to 5 do a[i]:=random(50); 3) присваиванием заданных значений Пример: for i:=1 to 3 do for j:=1 to 4 do a[i,j]:=1; 4) считывание значений элементов из файла. Способы вывода значений элементов массива: 1) вывод элементов массива в одну строку. Пример: for i:=1 to 5 do write(a[i]:3); 2) вывод элементов массива в столбец. Пример: for i:=1 to 5 do writeln(a[i]); 3) вывод элементов матрицы Пример: for i:=1 to 3 do begin for j:=1 to 4 do writeln(a[i,j]:4); writeln end; Алгоритм решения задач с использованием массивов:  Описание массива  Заполнение массива  Вывод (распечатка) массива  Выполнение условий задачи  Вывод результата Пример. Задан одномерный массив В(10), заполненный произвольным образом. Подсчитать количество элементов массива, больших заданного числа k. Program massiv; Var b:array [1..10] of integer; i, k, s : integer; Begin S:=0; For i:=1 to 10 do Begin Write(‘Введите’, i, ‘-й элемент массива ’); Readln (b[i]); Write(b[i], ‘ ‘); End; Write(‘Введите число k’); Readln(k); For i:=1 to 10 do if b[i]>k then s:=s+1; Write(‘Количество элементов’, s); End. Сортировка – процесс упорядочения заданной последовательности объектов по определенному признаку. Виды сортировки: 1) внутренняя (сортировка массивов); 2) внешняя (сортировка элементов файлов). Алгоритмы сортировки:  сортировка методом простого обмена (сортировка методом «пузырька»);  сортировка методом простого выбора (линейная сортировка);  сортировка методом слияний;  обменная сортировка с разделением (сортировка Хоара) и др. Пример сортировки одномерного массива в порядке возрастания значения элементов методом «пузырька» (основная мысль алгоритма: сравниваются два соседних элемента, если порядок нарушен, то они меняются местами). Program sort; Const n=15; Var a:array[1..n] of integer; i,k,buf:integer; Begin Randomize; Write(‘Исходный массив ’); For i:=1 to n do Begin a[i]:=random(100); Write(a[i]:5) End; Writeln; For k:=1 to n do For i:=1 to n-1 do if a[i]>a[i+1] then begin buf:=a[i]; a[i]:=a[i+1]; a[i+1]:=buf end; Write(‘Упорядоченный массив ’); For i:=1 to n do write(a[i]:5) End. Поиск – процесс нахождения в заданном множестве объекта, обладающего свойствами задаваемого априори эталона. Алгоритмы поиска: линейный поиск; линейный поиск с использованием барьера; бинарный поиск (поиск делением пополам) и пр. Пример: Определить самую высокую температуру и самый теплый день в мае. Program massiv; Var t:array [1..31] of integer; i, max, n : integer; Begin For i:=1 to 31 do Begin t[i]:=random(20); Write(b[i], ‘ ‘); End; Max:= t[1]; n:=1; For i:=2 to 31 do Begin If t[i] > max then max:=t[i]; n:=i ; End; Write(‘максимальная температура’, max, ‘в’, n, ‘день’); End. Контрольные вопросы обучающимся по материалам лекции 1. Что такое «алгоритм»? 2. Как можно описать алгоритм? 3. Что такое «исполнитель» алгоритма? 4. Какие существуют базовые алгоритмические структуры? 5. Чем отличается структурный подход в программировании от логического? 6. Какие языки программирования знаете? 7. Перечислите основные понятия языка программирования Pascal.
«Алгоритмизация и программирование» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

Смотреть все 462 лекции
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot