Оглавление
ВведениеУважаемые восьмиклассники! Мы живём во время стремительных перемен, когда для человека важна способность к постоянному развитию, готовность к освоению новых, в том числе информационных, технологий. Необходимость подготовки к быстро наступающим переменам в окружающем мире требует от человека развитого мышления, умения организации собственной учебной деятельности, ориентации на деятельностную жизненную позицию. Формирование таких качеств личности невозможно без фундаментального базового образования. В курсе информатики 8 класса большое внимание уделяется фундаментальным (теоретическим) вопросам информатики. Вы будете изучать математические основы информатики, освоите базовые алгоритмические конструкции, познакомитесь с языком программирования Паскаль. Мы надеемся, что знания и умения, полученные на уроках информатики, вы сможете применять в дальнейшем при решении разнообразных жизненных задач, предполагающих такие этапы, как: Глава 1. Математические основы информатики§ 1.1. Системы счисления
1.1.1. Общие сведения о системах счисленияКлючевые слова:
В любой системе счисления цифры служат для обозначения чисел, называемых узловыми; остальные числа (алгоритмические) получаются в результате каких-либо операций из узловых чисел. Пример 1. У вавилонян узловыми являлись числа 1, 10, 60; в римской системе счисления узловые числа — это 1, 5, 10, 50, 100, 500 и 1000, обозначаемые соответственно I, V, X, L, С, D, М.
Рис. 1.1. Знаки, используемые для записи чисел в различных системах счисления Системы счисления различаются выбором узловых чисел и способами образования алгоритмических чисел. Можно выделить следующие виды систем счисления: 1) унарная система;
Простейшая и самая древняя система — так называемая унарная система счисления. В ней для записи любых чисел используется всего один символ — палочка, узелок, зарубка, камушек. Длина записи числа при таком кодировании прямо связана с его величиной, что роднит этот способ с геометрическим представлением чисел в виде отрезков. Именно унарная система лежит в фундаменте арифметики, и именно она до сих пор вводит первоклассников в мир счёта. Унарную систему ещё называют системой бирок.
Пример 2. В древнеегипетской системе счисления числа 1, 2, 3, 4, 10, 13, 40 обозначались соответственно следующим образом:
Те же числа в римской системе счисления обозначаются так: I, II, III, IV, X, XIII, XL. Здесь алгоритмические числа получаются путём сложения и вычитания узловых чисел с учётом следующего правила: каждый меньший знак, поставленный справа от большего, прибавляется к его значению, а каждый меньший знак, поставленный слева от большего, вычитается из него.
Десятичная системаДесятичная система записи чисел, которой мы привыкли пользоваться в повседневной жизни, с которой мы знакомы с детства, в которой производим все наши вычисления, — пример позиционной системы счисления. Алфавит десятичной системы составляют цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Алгоритмические числа образуются в ней следующим образом: значения цифр умножаются на «веса» соответствующих разрядов, и все полученные значения складываются. Это отчётливо прослеживается в числительных русского языка, например: «три-ста пять-десят семь». Основанием позиционной системы счисления может служить любое натуральное число q > 1. Алфавитом произвольной позиционной системы счисления с основанием q служат числа 0, 1, ..., q—1, каждое из которых может быть записано с помощью одного уникального символа; младшей цифрой всегда является 0. Основные достоинства любой позиционной системы счисления — простота выполнения арифметических операций и ограниченное количество символов, необходимых для записи любых чисел. В позиционной системе счисления с основанием q любое число может быть представлено в виде: Аq = ± (аn-1 • qn-1 + аn-2 • qn-2 + ... + а0 • q0 + а-1 • q-1 + ... + а-m • q-m). (1) Здесь: А — число;
Пример 3. Рассмотрим десятичное число 14351,1. Его свёрнутая форма записи настолько привычна, что мы не замечаем, как в уме переходим к развёрнутой записи, умножая цифры числа на «веса» разрядов и складывая полученные произведения: 1 • 104 + 4 • 103 + 3 • 102 + 5 • 101 + 1 • 100 + 1 • 10-1. 1.1.2. Двоичная система счисленияДвоичной системой счисления называется позиционная система счисления с основанием 2. Для записи чисел в двоичной системе счисления используются только две цифры: 0 и 1. На основании формулы (1) для целых двоичных чисел можно записать: аn-1аn-2...а1а0 = an-1 • 2n-1 + аn-2 • 2n-2 +...+ а0 • 20. (1') Например: 100112 = 1 • 24 + 0 • 23 + 0 • 22 + 1 • 21 + 1 • 20 = 24 + 21 + 20 = 1910. Такая форма записи «подсказывает» правило перевода натуральных двоичных чисел в десятичную систему счисления: необходимо вычислить сумму степеней двойки, соответствующих единицам в свёрнутой форме записи двоичного числа. Получим правило перевода целых десятичных чисел в двоичную систему счисления из формулы (1'). Разделим аn-1 • 2n-1 + аn-2 • 2n-2 + ... + а0 • 20 на 2. Частное будет равно аn-1 • 2n-2 + ... + а1, а остаток будет равен а0. Полученное частное опять разделим на 2, остаток от деления будет равен а1. Если продолжить этот процесс деления, то на n-м шаге получим набор цифр: а0, а1, а2, ... аn-1,. которые входят в двоичное представление исходного числа и совпадают с остатками при его последовательном делении на 2. Таким образом, для перевода целого десятичного числа в двоичную систему счисления нужно последовательно выполнять деление данного числа и получаемых целых частных на 2 до тех пор, пока не получим частное, равное нулю. Исходное число в двоичной системе счисления составляется последовательной записью полученных остатков, начиная с последнего. Пример 4. Переведём десятичное число 11 в двоичную систему счисления. Рассмотренную выше последовательность действий (алгоритм перевода) можно изобразить так:
Выписывая остатки от деления в направлении, указанном стрелкой, получим: 1110 = 10112. Пример 5. Если десятичное число достаточно большое, то более удобен следующий способ записи рассмотренного выше алгоритма:
36310 = 1011010112
1.1.3. Восьмеричная система счисленияВосьмеричной системой счисления называется позиционная система счисления с основанием 8. Для записи чисел в восьмеричной системе счисления используются цифры: 0, 1,2, 3, 4, 5, 6, 7. На основании формулы (1) для целого восьмеричного числа можно записать: аn-1аn-2...а1а0 = аn-1 • 8n-1 + аn-2 • 8n-2 + ... + а0 • 80. (1") Например: 10638 = 1 • 83 + 0 • 82 + 6 • 81 + 3 • 80 = 56310. Таким образом, для перевода целого восьмеричного числа в десятичную систему счисления следует перейти к его развёрнутой записи и вычислить значение получившегося выражения. Для перевода целого десятичного числа в восьмеричную систему счисления следует последовательно выполнять деление данного числа и получаемых целых частных на 8 до тех пор, пока не получим частное, равное нулю. Исходное число в новой системе счисления составляется последовательной записью полученных остатков, начиная с последнего. Пример 6. Переведём десятичное число 103 в восьмеричную систему счисления.
10310 = 1478
1.1.4. Шестнадцатеричная система счисленияОснование: q = 16. Алфавит: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F. Здесь только десять цифр из шестнадцати имеют общепринятое обозначение 0,..., 9. Для записи цифр с десятичными количественными эквивалентами 10, 11, 12, 13, 14, 15 обычно используются первые пять букв латинского алфавита. Таким образом, запись 3AF16 означает: 3AF16 = 3 • 162 + 10 • 161 + 15 • 160 = 768 + 160 + 15 = 94310. Пример 7. Переведём десятичное число 154 в шестнадцатеричную систему счисления.
15410 = 9А16
1.1.5. Правило перевода целых десятичных чисел в систему счисления с основанием qДля перевода целого десятичного числа в систему счисления с основанием q следует: 1) последовательно выполнять деление данного числа и получаемых целых частных на основание новой системы счисления до тех пор, пока не получим частное, равное нулю; 2) полученные остатки, являющиеся цифрами числа в новой системе счисления, привести в соответствие с алфавитом новой системы счисления; 3) составить число в новой системе счисления, записывая его, начиная с последнего полученного остатка. Представим таблицу соответствия десятичных, двоичных, восьмеричных и шестнадцатеричных чисел от 0 до 2010.
В Единой коллекции цифровых образовательных ресурсов (http://sc.edu.ru/) размещена интерактивная анимация «Преобразование десятичного числа в другую систему счисления» (135050). С её помощью можно понаблюдать за переводом произвольного целого числа от 0 до 512 в позиционную систему счисления, основание которой не превышает 16. В размещённой там же виртуальной лаборатории «Цифровые весы» (135009) вы сможете освоить ещё один способ перевода целых десятичных чисел в другие системы счисления — метод разностей.
1.1.6. Двоичная арифметикаАрифметика двоичной системы счисления основывается на использовании следующих таблиц сложения и умножения:
Пример 8. Таблица двоичного сложения предельно проста. Так как 1 + 1 = 10, то 0 остаётся в младшем разряде, а 1 переносится в старший разряд.
Пример 9. Операция умножения двоичных чисел выполняется по обычной схеме, применяемой в десятичной системе счисления, с последовательным умножением множимого на очередную цифру множителя.
Таким образом, в двоичной системе счисления умножение сводится к сдвигам множимого и сложениям.
1.1.7. «Компьютерные» системы счисленияВ компьютерной технике используется двоичная система счисления, обеспечивающая ряд преимуществ по сравнению с другими системами счисления: Обмен информацией между компьютерными устройствами осуществляется путём передачи двоичных кодов. Пользоваться такими кодами из-за их большой длины и зрительной однородности человеку неудобно. Поэтому специалисты (программисты, инженеры) на некоторых этапах разработки, создания, настройки вычислительных систем заменяют двоичные коды на эквивалентные им величины в восьмеричной или шестнадцатеричной системах счисления. В результате длина исходного слова сокращается в три, четыре раза соответственно. Это делает информацию более удобной для рассмотрения и анализа. С помощью ресурса «Интерактивный задачник, раздел “Системы счисления"» (128659), размещённого в Единой коллекции цифровых образовательных ресурсов, можно проверить, насколько прочно вы усвоили изученный в этом параграфе материал.
Самое главное о системе счисленияСистема счисления — это знаковая система, в которой приняты определённые правила записи чисел. Знаки, с помощью которых записываются числа, называются цифрами, а их совокупность — алфавитом системы счисления. Система счисления называется позиционной, если количественный эквивалент цифры зависит от её положения (позиции) в записи числа. Основание позиционной системы счисления равно количеству цифр, составляющих её алфавит. Основанием позиционной системы счисления может служить любое натуральное число q > 1. В позиционной системе счисления с основанием q любое число может быть представлено в виде: Аq = ± (аn-1 • qn-1 + аn-2 • qn-2 + ... + а0 • q0 + а-1 • q-1 + ... + а-m • q-m). (1) Здесь: А — число; q — основание системы счисления; аi — цифры, принадлежащие алфавиту данной системы счисления; n — количество целых разрядов числа; m — количество дробных разрядов числа; qi — «вес» i-го разряда. Системы счисления. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Что вы можете сказать о формах представления информации в презентации и в учебнике? Какими слайдами вы могли бы дополнить презентацию? 2. Найдите дополнительную информацию об унарной, позиционных и непозиционных системах счисления. Чем они различаются? Приведите примеры. 3. Цифры каких систем счисления приведены на рис. 1.1? 4. Объясните, почему позиционные системы счисления с основаниями 5, 10, 12 и 20 называют системами счисления анатомического происхождения. 5. Как от естественной формы записи десятичного числа перейти к его развёрнутой форме? 6. Запишите в развёрнутой форме числа: а) 143,51110;
7. Вычислите десятичные эквиваленты следующих чисел: а) 1728;
8. Укажите, какое из чисел 1100112, 1114, 358 и 1В16 является: а) наибольшим;
9. Какое минимальное основание имеет система счисления, если в ней записаны числа 123, 222, 111, 241? Определите десятичный эквивалент данных чисел в найденной системе счисления. 10. Верны ли следующие равенства? а) 334 = 217;
11. Найдите основание х системы счисления, если: а) 14x = 910;
12. Переведите целые числа из десятичной системы счисления в двоичную: а) 89;
13. Переведите целые числа из десятичной системы счисления в восьмеричную: а) 513;
14. Переведите целые числа из десятичной системы счисления в шестнадцатеричную: а) 513;
15. Заполните таблицу, в каждой строке которой одно и то же число должно быть записано в системах счисления с основаниями 2, 8, 10 и 16.
Системы счисления. Вопросы и задания (ответы)16. Выполните операцию сложения над двоичными числами: а) 101010 +1101;
17. Выполните операцию умножения над двоичными числами: а) 1010 • 11;
18. Расставьте знаки арифметических операций так, чтобы были верны следующие равенства в двоичной системе: а) 1100 ? 11 ? 100 = 100000;
19. Вычислите выражения: а) (11111012 + AF16) : 368;
Ответ дайте в десятичной системе счисления. 20. Какими преимуществами и недостатками обладает двоичная система счисления по сравнению с десятичной? 21. Разработайте таблицы сложения и умножения для восьмеричной системы счисления. 22. Постройте граф, отражающий разновидности систем счисления. Подготовьте небольшое сообщение об одной из систем счисления (когда и где применялась, какие символы использовались и т. д.). Можете воспользоваться материалами электроного приложения к учебнику. Ответы: Системы счисления3. Приведены знаки, используемые для записи чисел в следующих системах счисления: древнеегипетской, вавилонской, майя, римской, старославянской, двоичной, троичной, ..., шестнадцатеричной. 8. а) 1100112; б) 1114. 9. Минимальное основание 5. 38, 62, 31, 71. 10. а) да; б) нет. 11. а) 5; б) 2 • х3 + 0 • х2 + 0 х1 + 2 • х0 = 130,
18. а) 12 3 - 4 = 32; б) 12 : 2 - 2 = 4; в) 12 : 3 - 4 = 0. 19. а) 10; б) 198.
§ 1.2. Представление чисел в компьютере
1.2.1. Представление целых чиселКлючевые слова: Оперативная память компьютера состоит из ячеек, каждая из которых представляет собой физическую систему, состоящую из некоторого числа однородных элементов. Эти элементы обладают двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое — единице. Каждый такой элемент служит для хранения одного из битов — разряда двоичного числа. Именно поэтому каждый элемент ячейки называют битом или разрядом (рис. 1.2).
Рис. 1.2. Ячейка памяти Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда. Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа представляются только в знаковом виде. Беззнаковое представление используется для таких объектов, как адреса ячеек, всевозможные счётчики (например, число символов в тексте), а также числа, обозначающие дату и время, размеры графических изображений в пикселях и т. д. Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы. Для n-разрядного представления оно будет равно 2n-1. Минимальное число соответствует n нулям, хранящимся в n разрядах памяти, и равно нулю. Ниже приведены максимальные значения для беззнаковых целых n-разрядных чисел:
Для получения компьютерного представления беззнакового целого числа достаточно перевести число в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности. Пример 1. Число 5310 = 1101012 в восьмиразрядном представлении имеет вид:
Это же число 53 в шестнадцати разрядах будет записано следующим образом:
При представлении со знаком самый старший (левый) разряд отводится под знак числа, остальные разряды — под само число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное — 1. Такое представление чисел называется прямым кодом. В компьютере прямые коды используются для хранения положительных чисел в запоминающих устройствах, для выполнения операций с положительными числами. На сайте Федерального центра информационно-образовательных ресурсов (http://fcior.edu.ru/) размещён информационный модуль «Число и его компьютерный код». С помощью этого ресурса вы можете получить дополнительную информацию по изучаемой теме. Для выполнения операций с отрицательными числами используется дополнительный код, позволяющий заменить операцию вычитания сложением. Узнать алгоритм образования дополнительного кода вы можете с помощью информационного модуля «Дополнительный код», размещённого на сайте Федерального центра информационно-образовательных ресурсов (http://fcior.edu.ru/).
1.2.2. Представление вещественных чиселЛюбое вещественное число А может быть записано в экспоненциальной форме: А = ±m • qP, где: m — мантисса числа;
Например, число 472 000 000 может быть представлено так: 4,72 • 108, 47,2 • 107, 472,0 • 106 и т. д. С экспоненциальной формой записи чисел вы могли встречаться при выполнении вычислений с помощью калькулятора, когда в качестве ответа получали записи следующего вида: 4.72Е+8. Здесь знак «Е» обозначает основание десятичной системы счисления и читается как «умножить на десять в степени». Из приведённого выше примера видно, что положение запятой в записи числа может изменяться. Для единообразия мантиссу обычно записывают как правильную дробь, имеющую после запятой цифру, отличную от нуля. В этом случае число 472 000 000 будет представлено как 0,472 • 109. Вещественное число может занимать в памяти компьютера 32 или 64 разряда. При этом выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы. Пример:
Диапазон представления вещественных чисел определяется количеством разрядов, отведённых для хранения порядка числа, а точность определяется количеством разрядов, отведённых для хранения мантиссы. Максимальное значение порядка числа для приведённого выше примера составляет 11111112 = 12710, и, следовательно, максимальное значение числа: 0,11111111111111111111111 • 101111111 Попытайтесь самостоятельно выяснить, каков десятичный эквивалент этой величины. Широкий диапазон представления вещественных чисел важен для решения научных и инженерных задач. Вместе с тем следует понимать, что алгоритмы обработки таких чисел более трудоёмки по сравнению с алгоритмами обработки целых чисел.
§ 1.3. Элементы алгебры логики
Самое главное о представление чисел в компьютереДля компьютерного представления целых чисел используются несколько различных способов, отличающихся друг от друга количеством разрядов (8, 16, 32 или 64) и наличием или отсутствием знакового разряда. Для представления беззнакового целого числа его следует перевести в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности. При представлении со знаком самый старший разряд отводится под знак числа, остальные разряды — под само число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное, то 1. Положительные числа хранятся в компьютере в прямом коде, отрицательные — в дополнительном. Вещественные числа в компьютере хранятся в формате с плавающей запятой. При этом любое число записывается так:А = ±m • qP, где: m — мантисса числа;
Представление чисел в компьютере. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий. 2. Как в памяти компьютера представляются целые положительные и отрицательные числа? 3. Любое целое число можно рассматривать как вещественное, но с нулевой дробной частью. Обоснуйте целесообразность наличия особых способов компьютерного представления целых чисел. 4. Представьте число 6310 в беззнаковом 8-разрядном формате. 5. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком: а) 01001100;
6. Какие из чисел 4438, 1010102, 25610 можно сохранить в 8-разрядном формате? 7. Запишите следующие числа в естественной форме: а) 0,3800456 • 102;
8. Запишите число 2010,010210 пятью различными способами в экспоненциальной форме. 9. Запишите следующие числа в экспоненциальной форме с нормализованной мантиссой — правильной дробью, имеющей после запятой цифру, отличную от нуля: а) 217,93410;
10. Изобразите схему, связывающую основные понятия, рассмотренные в данном параграфе. Ответы: Представление чисел в компьютере4.00111111. 5. а)+76. 6. 1010102. 9. а) 0,217934 • 103; б) 0,75321 • 105; в) 0,101 • 10-2. 1.3.1. ВысказываниеКлючевые слова: Алгебра в широком смысле этого слова — наука об общих операциях, аналогичных сложению и умножению, которые могут выполняться над разнообразными математическими объектами. Многие математические объекты (целые и рациональные числа, многочлены, векторы, множества) вы изучаете в школьном курсе алгебры, где знакомитесь с такими разделами математики, как алгебра чисел, алгебра многочленов, алгебра множеств и т. д. Для информатики важен раздел математики, называемый алгеброй логики; объектами алгебры логики являются высказывания.
Например, относительно предложений «Великий русский учёный М. В. Ломоносов родился в 1711 году» и «Two plus six is eight» можно однозначно сказать, что они истинны. Предложение «Зимой воробьи впадают в спячку» ложно. Следовательно, эти предложения являются высказываниями.
Например, предложение «Это предложение является ложным» не является высказыванием, так как относительно него нельзя сказать, истинно оно или ложно, без того чтобы не получить противоречие. Действительно, если принять, что предложение истинно, то это противоречит сказанному. Если же принять, что предложение ложно, то отсюда следует, что оно истинно. Относительно предложения «Компьютерная графика — самая интересная тема в курсе школьной информатики» также нельзя однозначно сказать, истинно оно или ложно. Подумайте сами почему.
Например, не являются высказываниями такие предложения, как: «Запишите домашнее задание», «Как пройти в библиотеку?», «Кто к нам пришёл?».
Примерами высказываний могут служить: 1) «Na — металл» (истинное высказывание); 2) «Второй закон Ньютона выражается формулой
3) «Периметр прямоугольника с длинами сторон а и b равен
Не являются высказываниями числовые выражения, но из двух числовых выражений можно составить высказывание, соединив их знаками равенства или неравенства. Например: 1) «3 + 5 = 2 4» (истинное высказывание); 2) «II + VI > VIII» (ложное высказывание). Не являются высказываниями и равенства или неравенства, содержащие переменные. Например, предложение «X < 12» становится высказыванием только при замене переменной каким-либо конкретным значением: «5 < 12» — истинное высказывание; «12 < 12» — ложное высказывание. Обоснование истинности или ложности высказываний решается теми науками, к сфере которых они относятся. Алгебра логики отвлекается от смысловой содержательности высказываний. Её интересует только то, истинно или ложно данное высказывание. В алгебре логики высказывания обозначают буквами и называют логическими переменными. При этом если высказывание истинно, то значение соответствующей ему логической переменной обозначают единицей (А = 1), а если ложно — нулём (В = 0). 0 и 1, обозначающие значения логических переменных, называются логическими значениями.
1.3.2. Логические операцииВысказывания бывают простые и сложные. Высказывание называется простым, если никакая его часть сама не является высказыванием. Сложные (составные) высказывания строятся из простых с помощью логических операций. Рассмотрим основные логические операции, определённые над высказываниями. Все они соответствуют связкам, употребляемым в естественном языке.
КонъюнкцияРассмотрим два высказывания: А = «Основоположником алгебры логики является Джордж Буль», В = «Исследования Клода Шеннона позволили применить алгебру логики в вычислительной технике». Очевидно, новое высказывание «Основоположником алгебры логики является Джордж Буль, и исследования Клода Шеннона позволили применить алгебру логики в вычислительной технике» истинно только в том случае, когда одновременно истинны оба исходных высказывания. Самостоятельно установите истинность или ложность трёх рассмотренных выше высказываний.
Для записи конъюнкции используются следующие знаки: И, ∧, •, &.
Конъюнкцию можно описать в виде таблицы, которую называют таблицей истинности:
В таблице истинности перечисляются все возможные значения исходных высказываний (столбцы А и В), причём соответствующие им двоичные числа, как правило, располагают в порядке возрастания: 00, 01, 10, 11. В последнем столбце записан результат выполнения логической операции для соответствующих операндов. Конъюнкцию также называют логическим умножением. Подумайте почему. Дизъюнкция. ИнверсияРассмотрим два высказывания: А = «Идея использования в логике математической символики принадлежит Готфриду Вильгельму Лейбницу», В = «Лейбниц является основоположником бинарной арифметики». Очевидно, новое высказывание «Идея использова ния в логике математической символики принадлежит Готфриду Вильгельму Лейбницу или Лейбниц является основоположником бинарной арифметики» ложно только в том случае, когда одновременно ложны оба исходных высказывания. Самостоятельно установите истинность или ложность трёх рассмотренных выше высказываний.
Для записи дизъюнкции используются следующие знаки: ИЛИ, ∨, |, +. Например: А ИЛИ В, A∨B, А|В, А+В. Дизъюнкция определяется следующей таблицей истинности:
Дизъюнкцию также называют логическим сложением. Подумайте почему. Инверсия
Для записи инверсии используются следующие знаки: НЕ, ¬, —. Например: НЕ А, ¬ А, Инверсия определяется следующей таблицей истинности:
Инверсию также называют логическим отрицанием. Отрицанием высказывания «У меня дома есть компьютер» будет высказывание «Неверно, что у меня дома есть компьютер» или, что в русском языке то же самое, «У меня дома нет компьютера». Отрицанием высказывания «Я не знаю китайский язык» будет высказывание «Неверно, что я не знаю китайский язык» или, что в русском языке одно и то же, «Я знаю китайский язык». Отрицанием высказывания «Все юноши 8-х классов — отличники» является высказывание «Неверно, что все юноши 8-х классов — отличники», другими словами, «Не все юноши 8-х классов — отличники». Таким образом, при построении отрицания к простому высказыванию либо используется речевой оборот «неверно, что ...», либо отрицание строится к сказуемому, тогда к соответствующему глаголу добавляется частица «не». Любое сложное высказывание можно записать в виде логического выражения — выражения, содержащего логические переменные, знаки логических операций и скобки. Логические операции в логическом выражении выполняются в следующей очерёдности: инверсия, конъюнкция, дизъюнкция. Изменить порядок выполнения операций можно с помощью расстановки скобок.
Пример 1. Пусть А — «На web-странице встречается слово "крейсер"», В = «На web-странице встречается слово "линкор"». Рассматривается некоторый сегмент сети Интернет, содержащий 5 000 000 web-страниц. В нём высказывание А истинно для 4800 страниц, высказывание В — для 4500 страниц, а высказывание A ∨ В — для 7000 страниц. Для какого количества web-страниц в этом случае будут истинны следующие выражения и высказывание? а) НЕ (А ИЛИ В);
Решение. Изобразим множество всех web-страниц рассматриваемого сектора сети Интернет кругом, внутри которого разместим два круга: одному из них соответствует множество web-страниц, где истинно высказывание А, второму — где истинно высказывание В (рис. 1.3).
Изобразим графически множества web-страниц, для которых истинны выражения и высказывание а) - в) (рис. 1.4).
Построенные схемы помогут нам ответить на вопросы, содержащиеся в задании. Выражение А ИЛИ В истинно для 7000 web-страниц, а всего страниц 5 000 000. Следовательно, выражение А ИЛИ В ложно для 4 993 000 web-страниц. Иначе говоря, для 4 993 000 web-страниц истинно выражение НЕ (А ИЛИ В). Выражение A ∨ В истинно для тех web-страниц, где истинно А (4800), а также тех web-страниц, где истинно В (4500). Если бы все web-страницы были различны, то выражение A ∨ В было бы истинно для 9300 (4800 + 4500) web-страниц. Но, согласно условию, таких web-страниц всего 7000. Это значит, что на 2300 (9300 - 7000) web-страницах встречаются оба слова одновременно. Следовательно, выражение А & В истинно для 2300 web-страниц. Чтобы выяснить, для скольких web-страниц истинно высказывание А и одновременно ложно высказывание В, следует из 4800 вычесть 2300. Таким образом, высказывание «На web-странице встречается слово "крейсер” И не встречается слово "линкор"» истинно на 2500 web-страницах. Самостоятельно запишите логическое выражение, соответствующее рассмотренному выше высказыванию. На сайте Федерального центра информационно-образовательных ресурсов (http://fcoir.edu.ru/) размещён информационный модуль «Высказывание. Простые и сложные высказывания. Основные логические операции». Знакомство с этим ресурсом позволит вам расширить представления по изучаемой теме.
1.3.3. Построение таблиц истинности для логических выраженийДля логического выражения можно построить таблицу истинности, показывающую, какие значения принимает выражение при всех наборах значений входящих в него переменных. Для построения таблицы истинности следует: 1) подсчитать n — число переменных в выражении;
Построим таблицу истинности для логического выражения A ∨ А & Б. В нём две переменные, две операции, причём сначала выполняется конъюнкция, а затем — дизъюнкция. Всего в таблице будет четыре столбца:
Наборы входных переменных — это целые числа от 0 до 3, представленные в двухразрядном двоичном коде: 00, 01, 10, 11. Заполненная таблица истинности имеет вид:
Обратите внимание, что последний столбец (результат) совпал со столбцом А. В таком случае говорят, что логическое выражение A ∨ А & В равносильно логической переменной А.
1.3.4. Свойства логических операцийРассмотрим основные свойства логических операций, называемых также законами алгебры логики. 1. Переместительный (коммутативный) закон: 2. Сочетательный (ассоциативный) закон: При одинаковых знаках операций скобки можно ставить произвольно или вообще опускать. 3. Распределительный (дистрибутивный) закон: 4. Закон двойного отрицания:
Двойное отрицание исключает отрицание. 5. Закон исключённого третьего: Из двух противоречивых высказываний об одном и том же предмете одно всегда истинно, а второе — ложно, третьего не дано. 6. Закон повторения: 7. Законы операций с 0 и 1: 8. Законы общей инверсии: Законы алгебры логики могут быть доказаны с помощью таблиц истинности. Докажем распределительный закон для логического сложения: A ∨ (B & C) = (A ∨ B) & (A ∨ С).
Совпадение значений в столбцах, соответствующих логическим выражениям в левой и правой частях равенства, доказывает справедливость распределительного закона для логического сложения. Пример 2. Найдём значение логического выражения для числа X = 0. Решение. При X = 0 получаем следующее логическое выражение: Так как логические выраясения 0 < 3, 0 < 2 истинны, то, подставив их значения в логическое выражение, получаем:
Элементы алгебры логики. Решение логических задачРассмотрим несколько способов решения логических задач. Задача 1. Коля, Вася и Серёжа гостили летом у бабушки. Однажды один из мальчиков нечаянно разбил любимую бабушкину вазу. На вопрос, кто разбил вазу, они дали такие ответы: Серёжа: 1) Я не разбивал. 2) Вася не разбивал.
Бабушка знала, что один из её внуков, назовём его правдивым, оба раза сказал правду; второй, назовём его шутником, оба раза сказал неправду; третий, назовём его хитрецом, один раз сказал правду, а другой раз — неправду. Назовите имена правдивого, шутника и хитреца. Кто из внуков разбил вазу? Решение. Пусть К = «Коля разбил вазу», В = «Вася разбил вазу», С — «Серёжа разбил вазу». Для решения задачи можно составить таблицу истинности, в которой представить высказывания каждого мальчика. Так как ваза разбита одним внуком, то чтобы выяснить, кто именно это сделал, достаточно фрагмента таблицы истинности, содержащего наборы значений входных переменных: 001, 010, 100.
Исходя из того, что знает о внуках бабушка, следует искать в таблице строку, содержащую в каком-либо порядке три комбинации значений: 00 (слова шутника), 11 (слова правдивого внука), 01 или 10 (слова хитреца). Такая строка отмечена галочкой. Согласно этой строке, вазу разбил Серёжа, он же оказался хитрецом. Шутником оказался Вася. Имя правдивого внука — Коля. Задача 2. В соревнованиях по гимнастике участвуют Алла, Валя, Сима и Даша. Болельщики высказали предположения о возможных победителях: 1) Сима будет первой, Валя — второй;
По окончании соревнований оказалось, что в каждом из предположений только одно из высказываний истинно, другое ложно. Какое место на соревнованиях заняла каждая из девушек, если все они оказались на разных местах? Решение. Рассмотрим простые высказывания: C1 = «Сима заняла первое место»;
Так как в каждом из трёх предположений одно из высказываний истинно, а другое ложно, то можно заключить следующее: 1) C1 + В2 = 1, C1 • В2 = 0;
Логическое произведение истинных высказываний будет истинным: (C1 + В2) • (С2 + Д3) • (А3 + Д4) = 1. На основании распределительного закона преобразуем левую часть этого выражения: (C1 • С2 + C1 • Д3 + В2 • С2 + В2 • Д3) • (А2 + Д4) = 1. Высказывание C1 • С2 означает, что Сима заняла и первое, и второе места. Согласно условию задачи, это высказывание ложно. Ложным является и высказывание В2 • С2. Учитывая закон операций с константой 0, запишем: (C1 • Д3 + В2 • Д3) • (А2 + Д4) = 1. Дальнейшее преобразование левой части этого равенства и исключение заведомо ложных высказываний дают: С1 • Д3 • А2 + С1 • Д3 • Д4 + В2 • Д3 • А2 + В2 • Д3 • Д4 = 1. C1 • Д3 • А2 = 1 Из последнего равенства следует, что С1 = 1, Д3 = 1, А2 = 1. Это означает, что Сима заняла первое место, Алла — второе, Даша — третье. Следовательно, Валя заняла четвёртое место. Познакомиться с другими способами решения логических задач, принять участие в интернет-олимпиадах и конкурсах по их решению вы сможете на российской странице международного математического конкурса «Кенгуру» (http://mathkang.ru/). На сайте http://www.kaser.com/ вы сможете скачать демонстрационную версию очень полезной, развивающей логику и умение рассуждать логической головоломки Шерлок.
Элементы алгебры логики. Самое главноеВысказывание — это предложение на любом языке, содержание которого можно однозначно определить как истинное или ложное. Основные логические операции, определённые над высказываниями: инверсия, конъюнкция, дизъюнкция.
Таблицы истинности для основных логических операций:
При вычислении логических выражений сначала выполняются действия в скобках. Приоритет выполнения логических операций: ¬, &, ∨. Глава 2. Основы алгоритмизации§ 2.1. Алгоритмы и исполнителиЭлементы алгебры логики. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Дополняет ли презентация информацию, содержащуюся в тексте параграфа? 2. Объясните, почему следующие предложения не являются высказываниями. 1) Какого цвета этот дом?
3. Приведите по одному примеру истинных и ложных высказываний из биологии, географии, информатики, истории, математики, литературы. 4. В следующих высказываниях выделите простые высказывания, обозначив каждое из них буквой; запишите с помощью букв и знаков логических операций каждое составное высказывание. 1) Число 376 чётное и трёхзначное.
5. Постройте отрицания следующих высказываний. 1) Сегодня в театре идёт опера «Евгений Онегин».
6. Пусть А = «Ане нравятся уроки математики», а В = «Ане нравятся уроки химии». Выразите следующие формулы на обычном языке:
7. Некоторый сегмент сети Интернет состоит из 1000 сайтов. Поисковый сервер в автоматическом режиме составил таблицу ключевых слов для сайтов этого сегмента. Вот её фрагмент:
По запросу сомики & гуппи было найдено 0 сайтов, по запросу сомики & меченосцы — 20 сайтов, а по запросу меченосцы & гуппи — 10 сайтов. Сколько сайтов будет найдено по запросу сомики | меченосцы | гуппи? Для скольких сайтов рассматриваемого сегмента ложно высказывание «Сомики — ключевое слово сайта ИЛИ меченосцы — ключевое слово сайта ИЛИ гуппи — ключевое слово сайта»? 8. Постройте таблицы истинности для следующих логических выражений:
9. Проведите доказательство рассмотренных в параграфе логических законов с помощью таблиц истинности. 10. Даны три числа в десятичной системе счисления: А = 23, В = 19, С = 26. Переведите А, В и С в двоичную систему счисления и выполните поразрядно логические операции (A ∨ В) & С. Ответ дайте в десятичной системе счисления. 11. Найдите значения выражений: 1) (1 ∨ 1) ∨ (1 ∨ 0);
12. Найдите значение логического выражения для указанных значений числа X: 1) 1
13. Пусть А = «Первая буква имени — гласная», В = «Четвёртая буква имени согласная». Найдите значение логического выражения для следующих имён: 1) ЕЛЕНА
14. Разбирается дело Джона, Брауна и Смита. Известно, что один из них нашёл и утаил клад. На следствии каждый из подозреваемых сделал два заявления: Смит: «Я не делал этого. Браун сделал это».
Суд установил, что один из них дважды солгал, другой дважды сказал правду, третий один раз солгал, один раз сказал правду. Кто из подозреваемых должен быть оправдан? 15. Алёша, Боря и Гриша нашли в земле старинный сосуд. Рассматривая удивительную находку, каждый высказал по два предположения: 1) Алёша: «Это сосуд греческий и изготовлен в V веке».
Учитель истории сказал ребятам, что каждый из них прав только в одном из двух предположений. Где и в каком веке изготовлен сосуд? 16. Выясните, какой сигнал должен быть на выходе электронной схемы при каждом возможном наборе сигналов на входах. Составьте таблицу работы схемы. Каким логическим выражением описывается схема?
Ответы: Элементы алгебры логики7. 920, 80.
Математические основы информатики. Тестовые задания для самоконтроля1. Совокупность знаков, с помощью которых записываются числа, называется: а) системой счисления
2. Чему равен результат сложения двух чисел, записанных римскими цифрами: МСМ + LXVIII? а) 1168
3. Число 301011 может существовать в системах счисления с основаниями: а) 2 и 10
4. Двоичное число 100110 в десятичной системе счисления записывается как: а) 36
5. В классе 1100102% девочек и 10102 мальчиков. Сколько учеников в классе? а) 10
6. Сколько цифр 1 в двоичном представлении десятичного числа 15? а) 1
7. Чему равен результат сложения чисел 1102 и 128? а) 610
8. Ячейка памяти компьютера состоит из однородных элементов, называемых: а) кодами
9. Количество разрядов, занимаемых двухбайтовым числом, равно: а) 8
10. В знаковый разряд ячейки для отрицательных чисел заносится: а) +
11. Вещественные числа представляются в компьютере в: а) естественной форме
12. Какое предложение не является высказыванием? а) Никакая причина не извиняет невежливость.
13. Какое высказывание является ложным? а) Знаком v обозначается логическая операция ИЛИ.
14. Для какого из указанных значений числа X истинно высказывание
а) 1
15. Для какого символьного выражения верно высказывание:
а) abcde
16. Некоторый сегмент сети Интернет состоит из 1000 сайтов. Поисковый сервер в автоматическом режиме составил таблицу ключевых слов для сайтов этого сегмента. Вот её фрагмент:
Сколько сайтов будет найдено по запросу принтер | сканер | монитор, если по запросу принтер | сканер было найдено 450 сайтов, по запросу принтер & монитор — 40, а по запросу сканер & монитор — 50? а) 900
Математические основы информатики. Тестовые задания для самоконтроля (ответы)17. Какому логическому выражению соответствует следующая таблица истинности?
18. Когда сломался компьютер, его хозяин сказал: «Оперативная память не могла выйти из строя». Сын хозяина компьютера предположил, что вышел из строя процессор, а жёсткий диск исправен. Пришедший специалист по обслуживанию сказал, что, скорее всего, с процессором всё в порядке, а оперативная память неисправна. В результате оказалось, что двое из них сказали всё верно, а третий — всё неверно. Что же сломалось? а) оперативная память
19. На перекрёстке произошло дорожно-транспортное происшествие, в котором участвовали автобус (А), грузовик (Г), легковой автомобиль (Л) и маршрутное такси (М). Свидетели происшествия дали следующие показания. Первый свидетель считал, что первым на перекрёсток выехал автобус, а маршрутное такси было вторым. Другой свидетель полагал, что последним на перекрёсток выехал легковой автомобиль, а вторым был грузовик. Третий свидетель уверял, что автобус выехал на перекрёсток вторым, а следом за ним — легковой автомобиль. В результате оказалось, что каждый из свидетелей был прав только в одном из своих утверждений. В каком порядке выехали машины на перекрёсток? В вариантах ответов перечислены подряд без пробелов первые буквы названий транспортных средств в порядке их выезда на перекрёсток: а) АМЛГ
20. Какое логическое выражение соответствует следующей схеме?
Ключи к тестовым заданиям для самоконтроля: Глава 1
§ 2.1. Алгоритмы и исполнителиКлючевые слова:• алгоритм • свойства алгоритма дискретность понятность определённость результативность массовость • исполнитель • характеристики исполнителя круг решаемых задач среда режим работы система команд • формальное исполнение алгоритма 2.1.1. Понятие алгоритмаКаждый человек в повседневной жизни, в учёбе или на работе решает огромное количество задач самой разной сложности. Сложные задачи требуют длительных размышлений для нахождения решения; простые и привычные задачи человек решает не задумываясь, автоматически. В большинстве случаев решение каждой задачи можно разбить на простые этапы (шаги). Для многих таких задач (установка программного обеспечения, сборка шкафа, создание сайта, эксплуатация технического устройства, покупка авиабилета через Интернет и т. д.) уже разработаны и предлагаются пошаговые инструкции, при последовательном выполнении которых можно прийти к желаемому результату. Пример 1. Задача «Найти среднее арифметическое двух чисел» решается в три шага: 1) задумать два числа;
Пример 2. Задача «Внести деньги на счёт телефона» подразделяется на следующие шаги: 1) подойти к терминалу по оплате платежей;
Пример 3. Этапы решения задачи «Нарисовать весёлого ёжика» представлены графически:
Нахождение среднего арифметического, внесение денег на телефонный счёт и рисование ежа — на первый взгляд совершенно разные процессы. Но у них есть общая черта: каждый из этих процессов описывается последовательностями кратких указаний, точное следование которым позволяет получить требуемый результат. Последовательности указаний, приведённые в примерах 1-3, являются алгоритмами решения соответствующих задач. Исполнитель этих алгоритмов — человек. Алгоритм может представлять собой описание некоторой последовательности вычислений (пример 1) или шагов нематематического характера (примеры 2-3). Но в любом случае перед его разработкой должны быть чётко определены начальные условия (исходные данные) и то, что предстоит получить (результат). Можно сказать, что алгоритм — это описание последовательности шагов в решении задачи, приводящих от исходных данных к требуемому результату. В общем виде схему работы алгоритма можно представить следующим образом (рис. 2.1).
Алгоритмами являются изучаемые в школе правила сложения, вычитания, умножения и деления чисел, многие грамматические правила, правила геометрических построений и т. д. Анимации «Работа с алгоритмом» (193576), «Наибольший общий делитель» (170363), «Наименьшее общее кратное» (170390) помогут вам вспомнить некоторые алгоритмы, изученные на уроках русского языка и математики (http://sc.edu.ru/). Пример 4. Некоторый алгоритм приводит к тому, что из одной цепочки символов получается новая цепочка следующим образом: 1. Вычисляется длина (в символах) исходной цепочки символов.
Получившаяся таким образом цепочка является результатом работы алгоритма. Так, если исходной была цепочка А#В, то результатом работы алгоритма будет цепочка #А1В2, а если исходной цепочкой была АБВ@, то результатом работы алгоритма будет цепочка БА@В2.
2.1.2. Исполнитель алгоритмаКаждый алгоритм предназначен для определённого исполнителя.
Различают формальных и неформальных исполнителей. Формальный исполнитель одну и ту же команду всегда выполняет одинаково. Неформальный исполнитель может выполнять команду по-разному. Рассмотрим более подробно множество формальных исполнителей. Формальные исполнители необычайно разнообразны, но для каждого из них можно указать следующие характеристики: круг решаемых задач (назначение), среду, систему команд и режим работы. Круг решаемых задач. Каждый исполнитель создаётся для решения некоторого круга задач — построения цепочек символов, выполнения вычислений, построения рисунков на плоскости и т. д. Среда исполнителя. Область, обстановку, условия, в которых действует исполнитель, принято называть средой данного исполнителя. Исходные данные и результаты любого алгоритма всегда принадлежат среде того исполнителя, для которого предназначен алгоритм. Система команд исполнителя. Предписание исполнителю о выполнении отдельного законченного действия называется командой. Совокупность всех команд, которые могут быть выполнены некоторым исполнителем, образует систему команд данного исполнителя (СКИ). Алгоритм составляется с учётом возможностей конкретного исполнителя, иначе говоря, в системе команд исполнителя, который будет его выполнять. Режимы работы исполнителя. Для большинства исполнителей предусмотрены режимы непосредственного управления и программного управления. В первом случае исполнитель ожидает команд от человека и каждую поступившую команду немедленно выполняет. Во втором случае исполнителю сначала задаётся полная последовательность команд (программа), а затем он выполняет все эти команды в автоматическом режиме. Ряд исполнителей работает только в одном из названных режимов. Рассмотрим примеры исполнителей. Пример 5. Исполнитель Черепашка перемещается на экране компьютера, оставляя след в виде линии. Система команд Черепашки состоит из двух команд: 1) Вперёд n (где n — целое число) — вызывает передвижение Черепашки на n шагов в направлении движения — в том направлении, куда развёрнуты её голова и корпус; 2) Направо m (где m — целое число) — вызывает изменение направления движения Черепашки на m градусов по часовой стрелке. Запись Повтори k [<Команда1> <Команда2> ... <Командаn>] означает, что последовательность команд в скобках повторится k раз. Подумайте, какая фигура появится на экране после выполнения Черепашкой следующего алгоритма. Повтори 12 [Направо 45 Вперёд 20 Направо 45] Пример 6. Система команд исполнителя Вычислитель состоит из двух команд, которым присвоены номера: 1 — вычти 1
Первая из них уменьшает число на 1, вторая увеличивает число в 3 раза. При записи алгоритмов для краткости указываются лишь номера команд. Например, алгоритм 21212 означает следующую последовательность команд: умножь на 3
С помощью этого алгоритма число 1 будет преобразовано в 15: ((1 • 3 - 1) • 3-1) • 3 = 15. Пример 7. Исполнитель Робот действует на клетчатом поле, между соседними клетками которого могут стоять стены. Робот передвигается по клеткам поля и может выполнять следующие команды, которым присвоены номера: 1 — вверх
При выполнении каждой такой команды Робот перемещается в соседнюю клетку в указанном направлении. Если же в этом направлении между клетками стоит стена, то Робот разрушается. Что произойдёт с Роботом, если он выполнит последовательность команд 32323 (здесь цифры обозначают номера команд), начав движение из клетки А? Какую последовательность команд следует выполнить Роботу, чтобы переместиться из клетки А в клетку В, не разрушившись от встречи со стенами? При разработке алгоритма: 1) выделяются фигурирующие в задаче объекты, устанавливаются свойства объектов, отношения между объектами и возможные действия с объектами; 2) определяются исходные данные и требуемый результат; 3) определяется последовательность действий исполнителя, обеспечивающая переход от исходных данных к результату; 4) последовательность действий записывается с помощью команд, входящих в систему команд исполнителя. Можно сказать, что алгоритм — модель деятельности исполнителя алгоритмов. 2.1.3. Свойства алгоритмаНе любая инструкция, последовательность предписаний или план действий может считаться алгоритмом. Каждый алгоритм обязательно обладает следующими свойствами: дискретность, понятность, определённость, результативность и массовость. Свойство дискретности означает, что путь решения задачи разделён на отдельные шаги (действия). Каждому действию соответствует предписание (команда). Только выполнив одну команду, исполнитель может приступить к выполнению следующей команды. Свойство понятности означает, что алгоритм состоит только из команд, входящих в систему команд исполнителя, т. е. из таких команд, которые исполнитель может воспринять и по которым может выполнить требуемые действия. Свойство определённости означает, что в алгоритме нет команд, смысл которых может быть истолкован исполнителем неоднозначно; недопустимы ситуации, когда после выполнения очередной команды исполнителю неясно, какую команду выполнять следующей. Благодаря этому результат алгоритма однозначно определяется набором исходных данных: если алгоритм несколько раз применяется к одному и тому же набору исходных данных, то на выходе всегда получается один и тот же результат. Свойство результативности означает, что алгоритм должен обеспечивать получение результата после конечного, возможно, очень большого, числа шагов. При этом результатом считается не только обусловленный постановкой задачи ответ, но и вывод о невозможности продолжения по какой-либо причине решения данной задачи. Свойство массовости означает, что алгоритм должен обеспечивать возможность его применения для решения любой задачи из некоторого класса задач. Например, алгоритм нахождения корней квадратного уравнения должен быть применим к любому квадратному уравнению, алгоритм перехода улицы должен быть применим в любом месте улицы, алгоритм приготовления лекарства должен быть применим для приготовления любого его количества и т. д. Пример 8. Рассмотрим один из методов нахождения всех простых чисел, не превышающих некоторое натуральное число п. Этот метод называется «решето Эратосфена» по имени предложившего его древнегреческого учёного Эратосфена (III в. до н. э.). Для нахождения всех простых чисел, не больших заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги: 1) выписать подряд все натуральные числа от 2 до n (2, 3, 4, ..., n); 2) заключить в рамку 2 — первое простое число; 3) вычеркнуть из списка все числа, делящиеся на последнее найденное простое число; 4) найти первое неотмеченное число (отмеченные числа — зачёркнутые числа или числа, заключённые в рамку) и заключить его в рамку — это будет очередное простое число; 5) повторять шаги 3 и 4 до тех пор, пока не останется неотмеченных чисел. Более наглядное представление о методе нахождения простых чисел вы сможете получить с помощью размещённой в Единой коллекции цифровых образовательных ресурсов анимации «Решето Эратосфена» (180279). Рассмотренная последовательность действий является алгоритмом, так как она удовлетворяет свойствам: Рассмотренные свойства алгоритма позволяют дать более точное определение алгоритма.
2.1.4. Возможность автоматизации деятельности человекаРазработка алгоритма — как правило, трудоёмкая задача, требующая от человека глубоких знаний, изобретательности и больших временных затрат. Решение задачи по готовому алгоритму требует от исполнителя только строгого следования заданным предписаниям. Пример 9. Из кучки, содержащей любое, большее трёх, количество каких-либо предметов, двое играющих по очереди берут по одному или по два предмета. Выигрывает тот, кто своим очередным ходом сможет забрать все оставшиеся предметы. Рассмотрим алгоритм, следуя которому первый игрок наверняка обеспечит себе выигрыш. 1. Если число предметов в кучке кратно 3, то уступить ход противнику, иначе начинать игру. 2. Своим очередным ходом каждый раз дополнять число предметов, взятых соперником, до 3 (число оставшихся предметов должно быть кратно 3). Исполнитель может не вникать в смысл того, что он делает, и не рассуждать, почему он поступает так, а не иначе, т. е. он может действовать формально. Способность исполнителя действовать формально обеспечивает возможность автоматизации деятельности человека. Для этого: 1) процесс решения задачи представляется в виде последовательности простейших операций; 2) создаётся машина (автоматическое устройство), способная выполнять эти операции в последовательности, заданной в алгоритме; 3) человек освобождается от рутинной деятельности, выполнение алгоритма поручается автоматическому устройству. Самое главное: Алгоритмы и исполнителиИсполнитель — некоторый объект (человек, животное, техническое устройство), способный выполнять определённый набор команд. Формальный исполнитель одну и ту же команду всегда выполняет одинаково. Для каждого формального исполнителя можно указать: круг решаемых задач, среду, систему команд и режим работы. Алгоритм — предназначенное для конкретного исполнителя описание последовательности действий, приводящих от исходных данных к требуемому результату, которое обладает свойствами дискретности, понятности, определённости, результативности и массовости. Способность исполнителя действовать формально обеспечивает возможность автоматизации деятельности человека.
Алгоритмы и исполнители. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Дополняет ли презентация информацию, содержащуюся в тексте параграфа? Какими слайдами вы могли бы дополнить презентацию? 2. Что называют алгоритмом? 3. Подберите синонимы к слову «предписание». 4. Приведите примеры алгоритмов, изучаемых вами в школе. 5. Кто может быть исполнителем алгоритма? 6. Приведите пример формального исполнителя. Приведите пример, когда человек выступает в роли формального исполнителя. 7. От чего зависит круг решаемых задач исполнителя «компьютер»? 8. Рассмотрите в качестве исполнителя текстовый процессор, имеющийся на вашем компьютере. Охарактеризуйте круг решаемых этим исполнителем задач и его среду. 9. Что такое команда, система команд исполнителя? 10. Какие команды должны быть у робота, выполняющего функции: а) кассира в магазине; б) дворника; в) охранника? 11. Перечислите основные свойства алгоритма. 12. К чему может привести отсутствие какого-либо свойства у алгоритма? Приведите примеры. 13. В чём важность возможности формального исполнения алгоритма? 15. Некоторый алгоритм получает из одной цепочки символов новую цепочку следующим образом. Сначала записывается исходная цепочка символов, после нее записывается исходная цепочка символов в обратном порядке, затем записывается буква, следующая в русском алфавите за той буквой, которая в исходной цепочке стояла на последнем месте. Если в исходной цепочке на последнем месте стоит буква «Я», то в качестве следующей буквы записывается буква «А». Получившаяся цепочка является результатом работы алгоритма. Например, если исходная цепочка символов была «ДОМ», то результатом работы алгоритма будет цепочка «ДОММОДН». Дана цепочка символов «КОМ». Сколько букв «О» будет в цепочке символов, которая получится, если применить алгоритм к данной цепочке, а затем ещё раз применить алгоритм к результату его работы? 16. Найдите в сети Интернет анимацию шагов алгоритма Эратосфена. С помощью алгоритма Эратосфена найдите все простые числа, не превышающие 50. 17. Что будет результатом исполнения Черепашкой (см. пример 5) алгоритма? Повтори 8 [Направо 45 Вперёд 45] 18. Запишите алгоритм для исполнителя Вычислитель (пример 6), содержащий не более 5 команд: а) получения из числа 3 числа 16;
19. Система команд исполнителя Конструктор состоит из двух команд, которым присвоены номера: 1 — приписать 2
По первой из них к числу приписывается справа 2, по второй число делится на 2. Как будет преобразовано число 8, если исполнитель выполнит алгоритм 22212? Составьте алгоритм в системе команд этого исполнителя, по которому число 1 будет преобразовано в число 16 (в алгоритме должно быть не более 5 команд). 20. В какой клетке должен находиться исполнитель Робот (пример 7), чтобы после выполнения алгоритма 3241 в неё же и вернуться? Ответы: Алгоритмы и исполнители14. 1, 1, 2, 3, 5, 8, 13, ... 19. 6, 12212. § 2.2. Способы записи алгоритмовСпособы записи алгоритмовКлючевые слова: • словесное описание • построчная запись • блок-схема • школьный алгоритмический язык Существуют различные способы записи алгоритмов. Основными среди них являются: • словесные; • графические; • на алгоритмических языках.
Теоретические исследования нашего соотечественника Андрея Андреевича Маркова (младшего) (1903-1979), выполненные в середине прошлого века, показали, что в общем случае алгоритмы должны содержать предписания двух видов: 1) предписания, направленные на непосредственное преобразование информации (функциональные операторы): 2) предписания, определяющие дальнейшее направление действий (логические операторы). Именно эти операторы положены в основу большинства способов записи алгоритмов.
2.2.1. Словесные способы записи алгоритмаСловесное описаниеСамой простой является запись алгоритма в виде набора высказываний на обычном разговорном языке. Словесное описание имеет минимум ограничении и является наименее формализованным. Однако все разговорные языки обладают неоднозначностью, поэтому могут возникнуть различные толкования текста алгоритма, заданного таким образом. Алгоритм в словесной форме может оказаться очень объёмным и трудным для восприятия. Пример 1. Словесное описание алгоритма нахождения наибольшего общего делителя (НОД) пары натуральных чисел (алгоритм Евклида). Чтобы найти НОД двух чисел, составьте таблицу из двух столбцов и назовите столбцы X и Y. Запишите первое из заданных чисел в столбец X, а второе — в столбец Y. Если данные числа не равны, замените большее из них на результат вычитания из большего числа меньшего. Повторяйте такие замены до тех пор, пока числа не окажутся равными, после чего число из столбца X считайте искомым результатом. Построчная записьЭто запись на естественном языке, но с соблюдением некоторых дополнительных правил: • каждое предписание записывается с новой строки; • предписания (шаги) алгоритма нумеруются; • исполнение алгоритма происходит в порядке возрастания номеров шагов, начиная с первого (если не встречается никаких специальных указаний). Кроме слов естественного языка предписания могут содержать математические выражения и формулы. Пример 2. Построчная запись алгоритма Евклида. 1. Обозначить первое из заданных чисел X, второе обозначить Y. 2. Если X = Y, то перейти к п. 8. 3. Если X > Y, то перейти к п. 4, иначе перейти к п. 6. 4. Заменить X на X - Y. 5. Перейти к п. 2. 6. Заменить Y на Y - X. 7. Перейти к п. 2. 8. Считать X искомым результатом. Построчная запись алгоритма позволяет избежать ряда неопре- делённостей; её восприятие не требует дополнительных знаний. Вместе с тем использование построчной записи требует от человека большого внимания.
2.2.2. Блок-схемы записи алгоритмовНаилучшей наглядностью обладают графические способы записи алгоритмов; самый распространённый среди них — блок-схема. Блок-схема представляет собой графический документ, дающий представление о порядке работы алгоритма. Здесь предписания изображаются с помощью различных геометрических фигур, а последовательность выполнения шагов указывается с помощью линий, соединяющих эти фигуры. Направления линий связи слева направо и сверху вниз считаются стандартными, соответствующие им линии связи можно изображать без стрелок. Линии связи справа налево и снизу вверх изображаются со стрелками. Рассмотрим некоторые условные обозначения, применяемые в блок-схемах. Выполнение алгоритма всегда начинается с блока начала и оканчивается при переходе на блок конца (рис. 2.2, а). Из начального блока выходит одна линия связи; в конечный блок входит одна линия связи. Внутри блока данных (рис. 2.2, б) перечисляются величины, значения которых должны быть введены (исходные данные) или выведены (результаты) в данном месте схемы. В блок данных входит одна линия связи, и из блока исходит одна линия связи. В блоке обработки данных (рис. 2.2, в) содержится описание тех действий, которые должны быть выполнены при переходе на этот блок (выполнение определённой операции или группы операций, приводящее к изменению значения, формы или размещения информации). В блок обработки данных входит одна линия связи, и из блока исходит одна линия связи. Проверка условия изображается с помощью блока принятия решения, внутри которого записывается это условие (рис. 2.2, г). В блок принятия решения входит одна линия, а выходят две линии, около которых записываются результаты проверки условия. Комментарии (рис. 2.2, д) используются для добавления пояснительных записей, делающих блок-схему более понятной.
Пример 3. Запись алгоритма Евклида с помощью блок-схемы (рис. 2.3).
Создание детальной блок-схемы сложного алгоритма — трудоёмкая задача. Кроме того, блок-схема, не умещающаяся на одном стандартном листе, теряет своё основное преимущество — наглядность. При разработке сложных алгоритмов блок-схемы удобно использовать в качестве средства для наглядного представлениям решения задачи в общем виде.
2.2.3. Алгоритмические языкиАлгоритмические языки — формальные языки, предназначенные для записи алгоритмов. Каждый из них характеризуется: Класс алгоритмических языков очень широк. При изучении курса информатики в школах используются различные версии школьного (учебного) алгоритмического языка. Школьный алгоритмический языкДля записи алгоритмов на школьном алгоритмическом языке используется некоторое ограниченное множество слов, смысл и способ употребления которых заданы раз и навсегда. Это так называемые служебные слова: алг (алгоритм), дано, надо, нач (начало), кон (конец), арг (аргумент), рез (результат) и др. При записи алгоритмов в книгах служебные слова выделяются жирным шрифтом, в тетради и на доске — подчёркиванием. В общем виде программу на школьном алгоритмическом языке можно представить так: алг <название алгоритма>
Пример 4. Алгоритм, позволяющий из полного сосуда ёмкостью 12 л отлить половину, пользуясь двумя пустыми сосудами ёмкостью 8 и 5 л. алг переливания
наполнить сосуд ёмкостью 8 л из сосуда ёмкостью 12 л наполнить сосуд ёмкостью 5 л из сосуда ёмкостью 8 л вылить всё из сосуда ёмкостью 5 л в сосуд ёмкостью 12 л вылить всё из сосуда ёмкостью 8 л в сосуд ёмкостью 5 л наполнить сосуд ёмкостью 8 л из сосуда ёмкостью 12 л долить из сосуда ёмкостью 8 л в сосуд ёмкостью 5 л вылить всё из сосуда ёмкостью 5 л в сосуд ёмкостью 12 л кон По ссылке http://www.niisi.ru/kumir/ вы можете скачать систему КуМир (Комплект учебных Миров), в которой используется школьный алгоритмический язык, со встроенными исполнителями Робот, Чертёжник, Водолей и др. Кумир работает в операционных системах Windows и Linux. Далее, говоря об алгоритмическом языке, мы будем иметь в виду именно школьный алгоритмический язык.
Способы записи алгоритмов.Самое главноеСуществуют различные способы записи алгоритмов: словесное описание, построчная запись, блок-схемы, школьный алгоритмический язык и др. Каждый из этих способов обладает своими достоинствами и недостатками.
Способы записи алгоритмов. Вопросы и заданияСамое главноеСуществуют различные способы записи алгоритмов: словесное описание, построчная запись, блок-схемы, школьный алгоритмический язык и др. Каждый из этих способов обладает своими достоинствами и недостатками. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Что вы можете сказать о формах представления информации в презентации и в учебнике? Какими слайдами вы могли бы дополнить презентацию? 2. Каковы основные способы записи алгоритмов? 3. Чем вызвано существование многих способов записи алгоритмов? 4. Дайте словесное описание алгоритма сложения двух обыкновенных дробей а/b и c/d. 5. Представьте в виде построчной записи алгоритм решения следующей задачи: «Имеются четыре арбуза различной массы. Как, пользуясь чашечными весами без гирь, путём не более пяти взвешиваний расположить их по возрастанию веса?». 6. Представьте с помощью блок-схемы алгоритм решения следующей задачи: «Из трёх монет одинакового достоинства одна фальшивая (более лёгкая). Как её найти с помощью одного взвешивания на чашечных весах без гирь? ». 7. Запишите на алгоритмическом языке алгоритм построения окружности заданного радиуса г, проходящей через заданные точки А и В. 8. В среде КуМир запишите и выполните алгоритм переливаний (пример 4) для исполнителя Водолей. 9. Подготовьте краткую биографическую справку о Маркове А. А. (младшем).
§ 2.3. Объекты алгоритмов2.3.1. Величины. Объекты алгоритмовКлючевые слова: Алгоритмы описывают последовательность действий, производимых над некоторыми объектами, определёнными условием задачи. Например, при решении задачи о начислении зарплаты сотрудникам предприятия такими объектами могут быть табельный номер сотрудника, его фамилия, имя, отчество, оклад, отработанное время и т. д.
Величины делятся на постоянные (константы) и переменные. Постоянной (константой) называется величина, значение которой указывается в тексте алгоритма и не меняется в процессе его исполнения. Переменной называется величина, значение которой меняется в процессе исполнения алгоритма. При исполнении алгоритма в каждый момент времени переменная обычно имеет значение, называемое текущим значением. Пример 1. Величины, выражающие количество дней в неделе, ускорение свободного падения, количество дней в первой декаде месяца, являются константами. Величины, выражающие количество дней в месяце, пульс человека, количество дней в третьей декаде месяца, являются переменными.
В алгоритмах над величинами выполняются некоторые операции. Например: Объекты, над которыми выполняются операции, называются операндами. Не всякий объект может быть операндом для выполнения любой операции. Например, текст не может быть объектом для выполнения арифметических операций; отрицательное число не может быть операндом для извлечения квадратного корня и т. д. Множество величин, объединённых определённой совокупностью допустимых операций, называют величинами определённого типа. При составлении алгоритмов используют величины числового (целого и вещественного), символьного, литерного и логического типов. В математике и физике оперируют числовыми величинами — натуральными, целыми, действительными числами. При составлении алгоритмов чаще всего используют числовые величины целого и вещественного1 типов, которые в алгоритмическом языке обозначаются цел и вещ соответственно. 1 Термин «вещественный» принято использовать наряду с термином «действительный». В задачах, возникающих в повседневной жизни, встречаются и нечисловые величины, значениями которых являются символы, слова, тексты и др. При составлении алгоритмов обработки текстовой информации используют величины символьного (сим) и литерного (лит) типов. Значением символьной величины является один символ: русская или латинская буква, цифра, знак препинания или другой символ. Значением литерной величины является последовательность символов. Иногда эту последовательность называют строкой или цепочкой. Литерные значения в алгоритме записывают в кавычках, например: 'алгоритм', 'литерная величина', '2011'. Величины логического (лог) типа могут принимать всего два значения: Для ссылок на величины используют их имена (идентификаторы). Имя величины может состоять из одной или нескольких латинских букв, из латинских букв и цифр: Al, М, АР. Рекомендуется выбирать мнемонические имена, т. е. имена, отражающие суть объектов решаемой задачи, например, SUMMA, PLAN, CENA и т. д.
Если величину представить как ящик, содержимым которого является некоторое значение, то имя величины — это ярлык, повешенный на ящик.
2.3.2. Выражения. Объекты алгоритмовВыражение — языковая конструкция для вычисления значения с помощью одного или нескольких операндов.Выражения состоят из операндов (констант, переменных, функций), объединённых знаками операций. Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, обыкновенных дробей и т. д.); знаки операций пропускать нельзя. Порядок выполнения операций определяется скобками и приоритетом (старшинством) операций; операции одинакового приоритета выполняются слева направо. Различают арифметические, логические и строковые выражения. Арифметические выражения служат для определения числового значения. Например, 2*х+3 — арифметическое выражение, значение которого при х — 1 равно пяти, а при х = -1 — единице. Выражение sqrt(x) служит для обозначения операции извлечения квадратного корня из x (√x). Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Логическое выражение может принимать одно из двух значений — ИСТИНА или ЛОЖЬ. Например, логическое выражение (х > 5) и (х < 10) определяет принадлежность точки х интервалу (5; 10):
При х = 6 значение этого выражения — ИСТИНА, а при х = 12 — ЛОЖЬ. Строковые выражения состоят из величин (констант, переменных) символьного и литерного типов, соответствующих функций и операций сцепления (присоединения). Операция сцепления обозначается знаком « + » и позволяет соединить в одну последовательность несколько последовательностей символов. Значениями строковы выражений являются последовательности символов. Например, если А = 'том', то значение строкового выражения 'а'+А есть ‘атом’.
2.3.3. Команда присваивания. Объекты алгоритмовЗадать конкретное значение величины можно с помощью операции присваивания, которая записывается так: <имя переменной>:= <выражение> Знак «:=» читается: «присвоить». Например, запись А := В + 5 читается так: «переменной А присвоить значение выражения В плюс 5». Знаки присваивания «:=» и равенства «=» — разные знаки: Например, запись А : = А + 1 выражает не равенство значений А и A + 1, а указание увеличить значение переменной А на единицу. При выполнении команды присваивания сначала вычисляется значение выражения, стоящего справа от знака «:=», затем результат присваивается переменной, стоящей слева от знака «:=». При этом тип выражения должен быть совместим с типом соответствующей переменной. Свойства присваивания: 1) пока переменной не присвоено значение, она остаётся неопределённой;
Пример 2. Составим алгоритм, в результате которого переменные А и В литерного типа обменяются своими значениями. Решение вида А: =В
неверно, так как после выполнения первой команды присваивания первоначальное значение переменной А будет безвозвратно утеряно. Вторая команда присвоит переменной В текущее значение переменной А. В результате обе переменные получат одно и то же значение. Для поиска правильного решения воспользуемся аналогией. Если требуется перелить жидкость из сосуда 1 в сосуд 2, а из сосуда 2 — в сосуд 1, то без дополнительного сосуда 3 здесь не обойтись. Алгоритм переливаний представлен на рис. 2.4.
Для решения исходной задачи введём промежуточную переменную М. Алгоритм обмена значениями переменных А я В запишем так: алг обмен значениями (лит А, В) арг А, В
нач лит М М:=А
Если А и В — числовые величины, то обмен их значениями можно организовать и без промежуточной переменной, например так: А:=А+В
2.3.4.Табличные величины. Объекты алгоритмовВ практической деятельности человек часто использует всевозможные таблицы. Это, например, список учащихся в классном журнале, табель успеваемости, таблица результатов спортивных соревнований и т. д. Чаще всего встречаются линейные и прямоугольные таблицы. Линейная таблицаЛинейная таблица (одномерный массив) представляет собой набор однотипных данных, записанных в одну строку или один столбец. Элементы строки (столбца) всегда нумеруются. Например, с помощью линейной таблицы могут быть представлены дни недели (рис. 2.5, а) или количество уроков, пропущенных учеником в течение 5-дневной учебной недели (рис. 2.5, б).
Прямоугольная таблицаПрямоугольная таблица (двумерный массив) — это упорядоченный некоторым образом набор строк (столбцов), содержащих одинаковое количество элементов. Строки прямоугольных таблиц имеют свою нумерацию, столбцы — свою. Например, с помощью прямоугольной таблицы можно представить количество уроков, пропущенных всеми учениками 8 класса в течение 5-дневной учебной недели (рис. 2.6).
Всей совокупности элементов табличной величины даётся одно имя. Элементы различают по их номерам, называемым индексами. Индекс записывается в квадратных скобках сразу за именем таблицы. Если первую из рассмотренных нами таблиц (см. рис. 2.5, а) назвать WEEK, то WEEK[1] = 'понедельник', WEEK[6] = 'суббота'. Назовём третью из рассмотренных таблиц LES. Тогда LES[1,1] = 6, LES[2,5] = 6, LES[3,4] = 0. Образно линейная и прямоугольная таблицы показаны на рис. 2.7.
Объекты алгоритмов. Самое главноеВ информатике отдельный информационный объект (число, символ, строка, таблица и др.) называется величиной. Величины делятся на постоянные (их значения указываются в тексте алгоритма и не меняются в процессе его исполнения) и переменные (их значения меняются в процессе исполнения алгоритма). При составлении алгоритмов используют величины целого, вещественного, логического, символьного и литерного типов. Для ссылок на величины используют их имена (идентификаторы). Имя величины может состоять из одной или нескольких латинских букв, из латинских букв и цифр. Таблица (массив) — набор некоторого числа однотипных элеменЧ^ тов, которым присвоено одно имя. Положение элемента в таблице однозначно определяется его индексами.
Объекты алгоритмов. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий. 2. Что такое величина? Чем отличаются постоянные и переменные величины? 3. Величины каких типов используются при записи алгоритмов? 4. Укажите тип величины, если её значение равно: 2010; 14.48; 'ДА'; FALSE, -125; ’142’; 1,4 • 105; .123Е-2; пять'. 5. Определите типы следующих величин: а) вес человека;
6. Приведите по одному примеру допустимых и недопустимых значений для каждой из величин: а) температура человека;
7. Для чего предназначена команда присваивания? Каковы её основные свойства? 8. Какие команды присваивания составлены правильно? а) А:=В
9. Придумайте свой алгоритм обмена значениями числовых переменных А к В. 10. Сколько промежуточных переменных потребуется для того, чтобы переменной А было присвоено значение переменной В, переменной В — значение переменной С, а переменной С — значение переменной А? Запишите соответствующий алгоритм на алгоритмическом языке. 11. После выполнения команды присваивания х:—х+у значение переменной х равно 3, а значение переменной у равно 5. Чему были равны значения переменных х и у до выполнения указанной команды присваивания? 12. Что называют выражением? Каковы основные правила записи выражений? 13. Переведите из линейной записи в общепринятую: а) а * b / с; г) (а + b) / с;
14. Запишите на алгоритмическом языке:
15. Запишите логическое выражение, истинное при выполнении указанного условия и ложное в противном случае: а) х принадлежит отрезку [0, 1];
16. Изобразите в декартовой прямоугольной системе координат область, в которой и только в которой истинны следующие логические выражения: а) (х>=-1) и (х<=1) и (у>=—1) и (у<=1);
17. Запишите логическое выражение, принимающее значение TRUE, когда точка с координатами (х, у) принадлежит закрашенной области.
18. Запишите команду присваивания, в результате выполнения которой логическая переменная t получает значение TRUE, если выполняется указанное условие, и значение FALSE в противном случае: а) х — положительное число;
19. Какие из приведённых ниже величин целесообразно представлять с помощью таблиц? Величины, список учеников класса, рост учеников класса, средний рост учеников класса, оценка ученика по физике, средний балл ученика по физике, оценки учеников за контрольную работу по информатике, длины сторон треугольника, длины сторон нескольких треугольников, названия дней недели, имя человека, площадь фигуры, периметры нескольких прямоугольников, самая холодная температура воздуха в январе, количество девочек в классе, самая дождливая декада июня. Ответы: Объекты алгоритмов10. Не более одной переменной. 15. г) (х > 0) или (у > 0);
18. a) t:=x>0; B) t:= (x=y) и (x=z). § 2.4. Основные алгоритмические конструкцииОсновные алгоритмические конструкцииКлючевые слова: • следование • ветвление • повторение • линейные алгоритмы • разветвляющиеся алгоритмы • циклические алгоритмы Человеку в жизни приходится решать множество различных задач. Решение каждой из них описывается своим алгоритмом, и разнообразие этих алгоритмов очень велико. Вместе с тем для записи любого алгоритма достаточно трёх основных алгоритмических конструкций (структур): следования, ветвления, повторения. Это положение выдвинул и доказал Э. Дейкстра в 70-х гг. прошлого века.
Эдсгер Вибе Дейкстра (1930-2002) — выдающийся нидерландский учёный, идеи которого оказали огромное влияние на развитие компьютерной индустрии.
2.4.1. Следование. Основные алгоритмические конструкции
Графическое представление алгоритмической конструкции «следование» приведено на рис. 2.8.
Пример 1. Линейный алгоритм приготовления отвара шиповника.
Обратите внимание, что многие из предписаний этого алгоритма могут потребовать детализации — представления в виде некоторой совокупности более мелких предписаний. Пример 2. У исполнителя Робот есть четыре команды перемещения (вверх, вниз, влево и вправо), при выполнении каждой из них Робот перемещается на одну клетку в соответствующем направлении. По команде закрасить Робот закрашивает клетку, в которой он находится. Запишем линейный алгоритм, исполняя который Робот нарисует на клетчатом поле следующий узор и вернётся в исходное положение, обозначенное звёздочкой:
Пример 3. Дан фрагмент линейного алгоритма: х: =2
Выясним, какое значение получит переменная s после выполнения этого фрагмента алгоритма. Для этого составим таблицу значений переменных, задействованных в алгоритме:
Составленная нами таблица значений переменных моделирует работу исполнителя этого алгоритма. Пример 4. Некоторый исполнитель может выполнять над целыми ЧЧ0, числами кроме операций сложения, вычитания, умножения и деления ещё две операции: с помощью операции div вычисляется целое частное, с помощью операции mod — остаток. Например: 5 div 2 = 2; 5 mod 2 = 1; 2 div 5 = 0; 2 mod 5 = 2. Покажем, как с помощью этих операций можно реализовать алгоритм работы кассира, выдающего покупателю сдачу (s) наименьшим количеством банкнот по 500 (k500), 100 (k100), 50 (k50) и 10 (k10)рублей. k500:=s div 500
Исполните алгоритм для s = 745 и s = 1864. Составьте соответствующие таблицы значений переменных. Ознакомьтесь с имеющимся в Единой коллекции цифровых образовательных ресурсов модулем для коллективной работы «Линейные алгоритмы» (217039). Совместно с друзьями постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование.
2.4.2. Ветвление. Основные алгоритмические конструкции
Блок-схема ветвления представлена на рис. 2.9. Каждая ветвь может быть любой степени сложности (рис. 2.9, а), а может вообще не содержать предписаний (рис. 2.9, б).
На алгоритмическом языке команда ветвления записывается так:
Для записи условий, в зависимости от результатов проверки которых выбирается та или иная последовательность действий, используются операции сравнения: А<В — А меньше В;
Здесь буквы А и В можно заменять на любые переменные, числа и арифметические выражения. Приведённые операции сравнения допускаются и для символьных переменных. Пример 7. Алгоритм вычисления функции ƒ(x) = |х| для произвольного числа х.
Обратите внимание на второй блок этой блок-схемы. В нём представлены имена и типы величин (данных), обрабатываемых в алгоритме. Условия, состоящие из одной операции сравнения, называются простыми. В качестве условий при организации ветвлений можно использовать и составные условия. Составные условия получаются из простых с помощью логических связок and (и), or (или), not (не): and означает одновременное выполнение всех условий, or — выполнение хотя бы одного условия, a not означает отрицание условия, записанного за словом not. Пример 8. Алгоритм определения принадлежности точки х отрезку [а, b]. Если точка х принадлежит данному отрезку, то выводится ответ ДА, в противном случае — НЕТ.
Существует достаточно много ситуаций, в которых приходится выбирать не из двух, а из трёх и более вариантов. Есть разные способы построения соответствующих алгоритмов. Один из них — составить комбинацию из нескольких ветвлений. Пример 9. Алгоритм, в котором переменной У присваивается значение большей из трёх величин А, Б и С.
Пусть А = 10, В = 30 и С = 20. Тогда процесс выполнения алгоритма можно представить в следующей таблице:
Пример 10. Алгоритм решения линейного уравнения ах + b = 0.
Пример 11. Исполнитель Робот может выполнять ту или иную последовательность действий в зависимости от выполнения следующих простых условий:
Также Робот может действовать в зависимости от выполнения составных условий. Подумайте, в какую клетку переместится Робот из клетки, обозначенной звёздочкой, при выполнении следующего фрагмента алгоритма. если справа свободно или снизу свободно
Ознакомьтесь с размещённым в Единой коллекции цифровых образовательных ресурсов модулем для коллективной работы «Алгоритмы с ветвящейся структурой» (217044). Совместно с друзьями постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование.
Повторение. Основные алгоритмические конструкции
В зависимости от способа организации повторений различают три типа циклов: 1) цикл с заданным условием продолжения работы;
Логика работы этой конструкции описывается схемой, показанной на рис. 2.10.
На алгоритмическом языке эта конструкция записывается так: нц пока <условие>
Выполняется цикл-ПОКА следующим образом: 1) проверяется условие (вычисляется значение логического выражения); 2) если условие удовлетворяется (Да), то выполняется тело цикла и снова осуществляется переход к проверке условия; если же условие не удовлетворяется, то выполнение цикла заканчивается. Возможны случаи, когда тело цикла не будет выполнено ни разу. Пример 12. Алгоритм, по которому из всех имеющихся кирпичей отбираются целые кирпичи и складываются в машину. алг отбор
Пример 13. Правее Робота (клетка со звёздочкой) расположен коридор неизвестной длины. Необходимо, чтобы Робот закрасил все клетки этого коридора.
Пока будет выполняться условие справа свободно, Роботу следует выполнять команды: вправо
Соответствующий алгоритм для Робота будет иметь вид: нц пока справа свободно
Пример 14. Требуется, не пользуясь операцией деления, получить частное q и остаток r от деления натурального числа х на натуральное число у. Представим операцию деления как последовательные вычитания делителя из делимого. Причём вычитать будем до тех пор, пока результат вычитания не станет меньше вычитаемого (делителя). В этом случае количество вычитаний будет равно частному от деления q, а последняя разность — остатку от деления r.
Исполним этот алгоритм для х = 23 и у = 5.
Ознакомьтесь с размещённым в Единой коллекции цифровых образовательных ресурсов модулем для коллективной работы «Циклические алгоритмы с предусловием» (217033). Совместно с друзьями постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование. Цикл с заданным условием окончания работы (цикл-ДО, цикл с постусловием)Логика работы этой конструкции описывается схемой, показанной на рис. 2.11.
На алгоритмическом языке эта конструкция записывается так: нц
Выполняется цикл-ДО следующим образом: 1) выполняется тело цикла; 2) проверяется условие (вычисляется значение логического выражения); если условие не удовлетворяется («Нет»), то снова выполняется тело цикла и осуществляется переход к проверке условия; если же условие удовлетворяется, то выполнение цикла заканчивается. В любом случае тело цикла будет выполнено хотя бы один раз. Пример 15. Алгоритм по выучиванию наизусть четверостишия. алг четверостишие
Пример 16. Вычислим значение переменной b согласно следующему алгоритму:
Составим таблицу значений переменных, задействованных в алгоритме:
Ответ: b = 255. Пример 17. Спортсмен приступает к тренировкам по следующему графику: в первый день он должен пробежать 10 км; каждый следующий день следует увеличивать дистанцию на 10% от нормы предыдущего дня. Как только дневная норма достигнет или превысит 25 км, необходимо прекратить её увеличение и далее пробегать ежедневно ровно 25 км. Начиная с какого дня спортсмен будет пробегать 25 км? Пусть х — количество километров, которое спортсмен пробежит в некоторый i-й день. Тогда в следующий (i + 1)-й день он пробежит х + 0,1х километров (0,1х — это 10% от х).
Ознакомьтесь с размещённым в Единой коллекции цифровых образовательных ресурсов модулем для коллективной работы «Циклические алгоритмы с постусловием» (217037). Совместно с друзьями постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование. Цикл с заданным числом повторений (цикл-ДЛЯ, цикл с параметром)Логика работы этой конструкции описывается схемой, показанной на рис. 2.12.
На алгоритмическом языке эта конструкция записывается так: нц для i от i1 до i2 шаг R
В цикле-ДЛЯ всегда есть параметр цикла — величина целого типа, изменяющаяся в ходе выполнения цикла от своего начального значения il до конечного значения i2 с шагом R. Выполняется цикл-ДЛЯ следующим образом: 1) параметру цикла присваивается начальное значение; 2) параметр цикла сравнивается с конечным значением; если параметр цикла не превышает конечное значение, то выполняется тело цикла, увеличивается значение параметра цикла на шаг и снова осуществляется проверка параметра цикла; если же параметр цикла превышает конечное значение, то выполнение цикла заканчивается. Если величина шага в цикле с параметром равна единице, то шаг не указывают. Мы ограничимся рассмотрением именно таких циклов. В отличие от двух предыдущих конструкций (цикл-ПОКА, цикл-ДО) цикл-ДЛЯ имеет строго фиксированное число повторений, что позволяет избежать зацикливания, т. е. ситуации, когда тело цикла выполняется бесконечно. Пример 18. Алгоритм переправы через реку воинского отряда из пяти человек. Солдаты могут воспользоваться помощью двух мальчиков — хозяев небольшой лодки, в которой может переправиться или один солдат, или два мальчика. алг переправа
Пример 19. Составим алгоритм вычисления степени с натуральным показателем n для любого вещественного числа а. По определению:
При составлении алгоритма воспользуемся единой формулой, в которой число умножений равно показателю степени:
Исполним этот алгоритм для а = 4 и n = 3.
Пример 20. Для исполнителя Робот цикл с известным числом повторений реализуется с помощью следующей конструкции: нц <число повторений> раз
Так, если правее Робота не встретится препятствий, то, выполнив приведённый ниже алгоритм, он переместится на пять клеток вправо и закрасит эти клетки: алг
Ознакомьтесь с размещённым в Единой коллекции цифровых образовательных ресурсов модулем для коллективной работы «Циклические алгоритмы с параметром» (217024). Совместно с друзьями постарайтесь составить алгоритмы для имеющихся в модуле задач. Пройдите тестирование.
Основные алгоритмические конструкции. Самое главноеДля записи любого алгоритма достаточно трёх основных алгоритмических конструкций (структур): следования, ветвления, повторения. Следование — алгоритмическая конструкция, отображающая естественный, последовательный порядок действий. Алгоритмы, в которых используется только структура «следование», называются линейными. Ветвление — алгоритмическая конструкция, в которой в зависимости от результата проверки условия («да» или «нет») предусмотрен выбор одной из двух последовательностей действий (ветвей). Алгоритмы, в основе которых лежит структура «ветвление», называют разветвляющимися. Повторение — алгоритмическая конструкция, представляющая собой последовательность действий, выполняемых многократно. Алгоритмы, содержащие конструкцию «повторение», называют циклическими или циклами. Последовательность действий, многократно повторяющаяся в процессе выполнения цикла, называется телом цикла. В зависимости от способа организации повторений различают три типа циклов: 1) цикл с заданным условием продолжения работы; 2) цикл с заданным условием окончания работы; 3) цикл с заданным числом повторений. Основные алгоритмические конструкции. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий. 2. Какие алгоритмы называются линейными? 3. Приведите пример линейного алгоритма: а) из повседневной жизни;
4. Запишите линейный алгоритм, исполняя который Робот нари- сует на клетчатом поле следующий узор и вернётся в исходное с положение:
5. По алгоритму восстановите формулу. а1:=1/х
6. Какое значение получит переменная у после выполнения алгоритма? х: =1
Восстановите формулу вычисления у для произвольного значения X. 7. Для заданного количества суток (tƒh) требуется определить количество часов (h), минут (m) и секунд (с). 8. Известно, что 1 миля = 7 вёрст, 1 верста = 500 саженей, 1 сажень = 3 аршина, 1 аршин = 28 дюймов, 1 дюйм = 25,4 мм. Пользуясь этой информацией, составьте линейный алгоритм перевода расстояния X миль в километры. 9. Исходное данное — целое трёхзначное число х. Выполните для х = 125 следующий алгоритм. а:=х div 100
Какой смысл имеет результат s этого алгоритма? 10. Определите значение целочисленных переменных х и у после выполнения алгоритма. х:=336
11. Какие алгоритмы называют разветвляющимися? 12. Приведите пример разветвляющегося алгоритма: а) из повседневной жизни;
13. Дополните алгоритм из примера 9 так, чтобы с его помощью можно было найти наибольшую из четырёх величин А, В, С и D. 14. Составьте алгоритм, с помощью которого можно определить, существует ли треугольник с длинами сторон а, b, с. 15. Составьте алгоритм, с помощью которого можно определить, является ли треугольник с заданными длинами сторон а, b, с равносторонним. 16. Составьте алгоритм возведения чётного числа в квадрат, а нечётного — в куб. 17. Какая задача решается с помощью следующего алгоритма?
18. Составьте блок-схему алгоритма определения количества чётных чисел среди заданных целых чисел А, В и С. 19. Составьте блок-схему алгоритма определения принадлежности точки X отрезку [А, В] (пример 8) с использованием комбинации из двух ветвлений. 20. Составьте блок-схему алгоритма правописания приставок, оканчивающихся на букву «з». 21. Известно, что 31 января 2011 года было понедельником. Какие значения должны быть присвоены литерной переменной у в алгоритме, определяющем день недели для произвольного числа (chislo) января 2011 года? chislo := chislo mod 7
22. Даны две точки на плоскости. Определите, какая из них находится ближе к началу координат. 23. Определите, есть ли среди цифр заданного целого трёхзначного числа одинаковые. 24. Приведите пример циклического алгоритма: а) из повседневной жизни;
25. Напишите алгоритм, под управлением которого Робот обойдёт прямоугольную область, обнесённую стеной, по периметру и закрасит угловые клетки. Размеры области неизвестны.
26. Запас рыбы в пруду оценён в А тонн. Ежегодный прирост рыбы составляет 15%. Ежегодный план отлова — В тонн. Наименьший запас рыбы составляет С тонн. (Запас ниже С тонн уже не восстанавливается.) Составьте блок-схему алгоритма для подсчёта количества лет, в течение которых можно выдерживать заданный план. 27. Дана последовательность 5, 9, 13, 17, ... . Составьте блок-схему алгоритма для определения числа слагаемых, сумма которых равна 324. 28. Составьте алгоритм для определения количества цифр в записи произвольного натурального числа. 29. Сумма 10 000 рублей положена в сберегательный банк, при этом прирост составляет 5% годовых. Составьте алгоритм, определяющий, через какой промежуток времени первоначальная сумма увеличится в два раза. 30. Одноклеточная амёба каждые три часа делится на 2 клетки. Составьте алгоритм вычисления времени, через которое будет X амёб. 31. Определите значения переменных пит после выполнения алгоритма.
32. Составьте алгоритм нахождения произведения z двух натуральных чисел х и у без использования операции умножения. 33. Население города Н увеличивается на 5% ежегодно. В теку- щем году оно составляет 40 000 человек. Составьте блок-схему алгоритма вычисления предполагаемой численности населения города через 3 года. Составьте таблицу значений переменных, задействованных в алгоритме. 34. Каждая бактерия делится на две в течение 1 минуты. В начальный момент имеется одна бактерия. Составьте блок-схему алгоритма вычисления количества бактерий через 10 минут. Исполните алгоритм, фиксируя каждый его шаг в таблице значений переменных. Ответы: Основные алгоритмические конструкции6. у = ((2x + 3)х + 4)х + 5; у = 14 при х = 1. 7. h := tƒh*24. 21. если chislo = 3 то у := понедельник. Основы алгоритмизации. Тестовые задания для самоконтроля1. Алгоритмом можно считать: а) описание процесса решения квадратного уравнения
2. Как называется свойство алгоритма, означающее, что данный алгоритм применим к решению целого класса задач? а) понятность
3. Как называется свойство алгоритма, означающее, что он всегда приводит к результату через конечное, возможно, очень большое, число шагов? а) дискретность
4. Как называется свойство алгоритма, означающее, что он задан с помощью таких предписаний, которые исполнитель может воспринимать и по которым может выполнять требуемые действия? а) дискретность
5. Как называется свойство алгоритма, означающее, что путь решения задачи разделён на отдельные шаги? а) дискретность
6. Как называется свойство алгоритма, означающее, что путь решения задачи определён вполне однозначно, на любом шаге не допускаются никакие двусмысленности и недомолвки? а) дискретность
7. Исполнителю Черепашка был дан для исполнения следующий алгоритм: Повтори 10 [Вперед 10 Направо 72] Какая фигура появится на экране? а) незамкнутая ломаная линия
8. Исполнитель Робот передвигается по клетчатому полю, выполняя команды, которым присвоены номера: 1 — на клетку вверх, 2 — на клетку вниз, 3 — на клетку вправо, 4 — на клетку влево. Между соседними клетками поля могут стоять стены. Если при выполнении очередного шага Робот сталкивается со стеной, то он разрушается. В результате выполнения программы 3242332411 Робот успешно прошел из точки А в точку Б. Какую программу необходимо выполнить, чтобы вернуться из точки Б в точку А по кратчайшему пути и не подвергнуться риску разрушения? а) 41
9. Система команд исполнителя Вычислитель состоит из двух команд, которым присвоены номера: 1 — вычти 2
Первая из них уменьшает число на 2, вторая увеличивает число в 3 раза. При записи алгоритмов для краткости указываются лишь номера команд. Запишите алгоритм, содержащий не более пяти команд, с помощью которого из числа 11 будет получено число 13. 10. Некоторый алгоритм строит цепочки символов следующим образом: Вот первые 3 строки, созданные по этому правилу: (1)1
Сколько символов будет в седьмой цепочке, созданной по этому алгоритму? 11. Наибольшей наглядностью обладают следующие формы записи алгоритмов: а) словесные
12. Величины, значения которых меняются в процессе исполнения алгоритма, называются: а) постоянными
13. Величиной целого типа является: а) количество мест в зрительном зале
14. Какое логическое выражение истинно, если х е [-10, 10]? а) (х>10) И (х<-10)
15. Укажите правильный вариант записи условия «х — двузначное число»: а) х div 10 <= 9
16. Какая команда присваивания должна следовать за командами А:=А+В и В:=А-В, чтобы последовательное выполнение всех трёх команд вело к обмену значениями переменных А и В? а) А:=А+В
а) линейный
18. К какому виду алгоритмов можно отнести алгоритм, схема которого представлена ниже?
а) линейный
19. К какому виду алгоритмов можно отнести алгоритм, схема которого представлена ниже?
а) цикл с параметром
20. К какому виду алгоритмов можно отнести алгоритм, схема которого представлена ниже?
а) цикл с заданным условием продолжения работы % .
21. К какому виду алгоритмов можно отнести алгоритм, схема которого представлена ниже?
а) цикл с заданным условием продолжения работы
22. Сергей, Антон, Таня и Надя, гуляя по лесу, наткнулись на овраг, который можно перейти по шаткому мосту. Сергей может перейти его за минуту, Антон — за две, Таня — за три, Надя — за четыре. Фонарик у группы только один, и он обязательно нужен для перехода по мосту, который выдерживает только двоих человек. Когда два человека вместе идут по мосту, то идут они со скоростью более медлительного из них. Ребята смогли разработать алгоритм перехода на другой берег за минимально возможное время. Какое время она затратили на его исполнение? а) 10 минут
23. Дан фрагмент линейного алгоритма. а: =8
Чему равно значение переменной а после его исполнения? 24. Исполните следующий фрагмент линейного алгоритм для а — х и b = у. а:=а+b
Какие значения присвоены переменным а и b? а) у, х
25. Определите значение целочисленных переменных хну после выполнения алгоритма. х:=11
а) х = 11, у = 5
26. Среди четырёх монет есть одна фальшивая. Неизвестно, легче она или тяжелее настоящей. Какое минимальное количество взвешиваний необходимо сделать на весах с двумя чашками без гирь, чтобы определить фальшивую монету? а) 2
27. Исполните алгоритм при х = 10 и у = 15.
Какие значения будут получены в результате его работы? а) -5, 10
28. Исполните фрагмент алгоритма при а = 2 и b =0.
Определите значение переменной Ь после выполнения фрагмента алгоритма. 29. Определите значение переменной ƒ после выполнения фрагмента алгоритма. f: =1
30. Определите значение переменной s после выполнения фрагмента алгоритма. s :=0
Ответы: Основы алгоритмизации
Глава 3. Начала программирования§ 3.1. Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования ПаскальКлючевые слова: • язык программирования • программа • алфавит • служебные слова • типы данных • структура программы • оператор присваивания Языки программирования — это формальные языки, предназначенные для записи алгоритмов, исполнителем которых будет компьютер. Записи алгоритмов на языках программирования называются программами. Существует несколько тысяч языков программирования. Мы с вами познакомимся с языком программирования Паскаль, который был разработан в 70-х годах прошлого века Никлаусом Виртом (Швейцария). Своё название этот язык получил в честь французского учёного Блеза Паскаля, известного не только своими достижениями в математике, физике и философии, но и созданием первой в мире механической машины, выполнявшей сложение двух чисел. Язык Паскаль считается универсальным языком программирования, так как он может применяться для записи алгоритмов решения самых разных задач (вычислительных, обработки текстов, построения графических изображений, поиска информации и т. д.). Он поддерживает процедурный стиль программирования, в соответствии с которым программа представляет собой последовательность операторов, задающих те или иные действия.
Никлаус Вирт (род. в 1934 г.) — швейцарский учёный, специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук. Разработчик языка Паскаль и ряда других языков программирования. Рекомендуем вам зайти на сайт pascalabc.net. Здесь вы найдёте много полезной информации для начинающих программистов, сможете скачать систему программирования PascalABC.NET.
3.1.1. Алфавит и словарь языкаОсновой языка программирования Паскаль, как и любого другого языка, является алфавит — набор допустимых символов, которые можно использовать для записи программы. Это: В качестве неделимых элементов (составных символов) рассматриваются следующие последовательности символов: := (знак операции присваивания);
В языке существует также некоторое количество различных цепочек символов, рассматриваемых как единые смысловые элементы с фиксированным значением. Такие цепочки символов называются служебными словами. В таблице 3.1 приведены основные служебные слова, которые мы будем использовать при записи программ на языке Паскаль.
Для обозначения констант, переменных, программ и других объектов используются имена — любые отличные от служебных слов последовательности букв, цифр и символа подчёркивания, начинающиеся с буквы или символа подчёркивания. Прописные и строчные буквы в именах не различаются. Длина имени может быть любой. Для удобства мы будем пользоваться именами, длина которых не превышает 8 символов.
3.1.2. Типы данных, используемые в языке ПаскальВ языке Паскаль используются различные типы данных. Мы будем пользоваться некоторыми из так называемых простых типов данных (табл. 3.2).
1 integer — основной, но не единственный тип для работы с целочисленными данными. Дополнительную информацию по этому вопросу вы можете найти в справочниках по программированию на языке Паскаль. В вещественном числе целая часть от дробной отделяется точкой, при этом перед точкой и после неё должно быть, по крайней мере, по одной цифре. Пробелы внутри числа недопустимы.
3.1.3. Структура программы на языке ПаскальВ программе, записанной на языке Паскаль, можно выделить: 1) заголовок программы;
Заголовок программы состоит из служебного слова program и имени программы. После имени программы ставится точка с запятой. Блок описания данных состоит из раздела описания констант (const), раздела описания переменных (var) и некоторых других разделов1. В разделе описания переменных указываются имена используемых в программе переменных и их типы. Имена переменных одного типа перечисляются через запятую, затем после двоеточия указывается их тип; описание каждого типа заканчивается точкой с запятой. Ниже приведён пример раздела описания переменных: 1 В 8 классе мы ограничимся рассмотрением разделов описания констант и переменных, оставив изучение других разделов для старшей школы.
Программа может не иметь заголовка; в ней может отсутствовать блок описания данных. Обязательной частью программы является программный блок. Он содержит команды, описывающие алгоритм решения задачи. Программный блок начинается со слова begin и заканчивается словом end с точкой. Ниже приведён общий вид программы: program <имя программы>;
Операторы — языковые конструкции, с помощью которых в программах записываются действия, выполняемые над данными в процессе решения задачи. Точка с запятой служит разделителем между операторами, а не является окончанием соответствующего оператора. Перед оператором end точку с запятой ставить не нужно.
3.1.4. Оператор присваиванияОсновное преобразование данных, выполняемое компьютером, — присваивание переменной нового значения, что означает изменение содержимого области памяти; оно осуществляется оператором присваивания, аналогичным команде присваивания алгоритмического языка. Общий вид оператора: <имя переменной:»: =<выражение> Операция присваивания допустима для всех приведённых в табл. 3.2 типов данных. Выражения в языке Паскаль конструируются по рассмотренным ранее правилам для алгоритмического языка. Рассмотрим процесс выполнения операторов присваивания на следующем примере: а:=10;
При выполнении оператора а: =10 в ячейку оперативной памяти компьютера с именем о заносится значение 10; при выполнении оператора b:=5 в ячейку оперативной памяти компьютера с именем b заносится значение 5. При выполнении оператора s:=a+b значения ячеек оперативной памяти с именами а и b переносятся в процессор, где над ними выполняется операция сложения. Полученный результат заносится в ячейку оперативной памяти с именем s (рис. 3.1).
Общие сведения о языке программирования Паскаль. Самое главноеПаскаль — универсальный язык программирования, получивший своё название в честь выдающегося учёного Блеза Паскаля. В языке Паскаль используются различные типы данных: целочисленный (integer), вещественный (real), символьный (char), строковый (string), логический (boolean) и другие. В программе, записанной на языке Паскаль, можно выделить: 1) заголовок программы; 2) описание используемых данных; 3) описание действий по преобразованию данных (программный блок). Общий вид программы: program <имя программы> ;
Общие сведения о языке программирования Паскаль. Вопросы и задания1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Дополняет ли презентация информацию, содержащуюся в тексте параграфа? Какими слайдами вы могли бы дополнить презентацию? 2. В честь кого назван язык программирования Паскаль? Подготовьте краткую биографическую справку об этом учёном. 3. Почему язык программирования Паскаль считается универсальным? 4. Что входит в состав алфавита языка Паскаль? 5. Каких требований следует придерживаться при выборе имён для различных объектов в языке Паскаль? 6. Указывая название, обозначение, диапазон и занимаемую область памяти, опишите известные вам типы данных, используемые в языке Паскаль. 7. В чём разница между числами 100 и 100.0 в языке Паскаль? 8. Какую структуру имеет программа, записанная на языке Паскаль? 9. Как записывается раздел описания переменных? 10. Запишите раздел описания переменных, необходимых для вычисления: а) значения функции у = х2;
11. Опишите процесс выполнения операторов присваивания. а:=3; b:=4; а:=а+b 12. Запишите оператор для: а) вычисления среднего арифметического переменных х1 и х2;
Ответы: Общие сведения о языке программирования Паскаль10. в) Пусть n — количество тетрадей (обложек), ct — цена одной тетради (целое число), со — цена одной обложки (целое число), s — общая стоимость покупки. В этом случае раздел описания переменных будет иметь вид: var s, n, ct, со: integer; 12. б) k:=k-1; § 3.2. Организация ввода и вывода данных3.2.1. Вывод данныхКлючевые слова: В предыдущем параграфе мы познакомились со структурой программы на языке Паскаль, научились описывать данные, рассмотрели оператор присваивания. Этого достаточно для того, чтобы записать программу преобразования данных. Но результат этих преобразований нам виден не будет. Для вывода данных из оперативной памяти на экран монитора используется оператор вывода write:
Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы. Произвольный набор символов, заключённый в апострофы, считается строковой константой. Строковая константа может содержать любые символы, набираемые на клавиатуре. Пример. Оператор write (' s=', s) выполняется так: 1) на экран выводятся символы, заключённые в апострофы: s=
Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15 Если значение переменной s равно 15, но она имеет вещественный тип, то на экране появится: s=1. 5Е+01 При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате работы оператора write (1, 20, 300) на экран будет выведена последовательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сделать выводимые данные более доступными для восприятия можно разными способами:
Формат вывода — это указываемое после двоеточия целое число, определяющее, сколько позиций на экране должна занимать выводимая величина. Если цифр в числе меньше, чем зарезервированных под него позиций на экране, то свободные позиции дополняются пробелами слева от числа. Если указанное в формате вывода после двоеточия число меньше, чем необходимо, то оно автоматически будет увеличено до минимально необходимого. Для вывода вещественного числа в формате с фиксированной запятой в списке вывода для каждого выражения указываются два параметра: 1) общее количество позиций, отводимых под число; 2) количество позиций в дробной части числа:
При выполнение нового оператора write вывод продолжается в той же строке. Чтобы осуществить переход к новой строке, используется оператор writeln. Других различий между операторами write и writeln нет.
3.2.2. Первая программа на языке ПаскальПользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см. Исходным данным в этой задаче является радиус: r = 5,4 см. Результатом работы программы должны быть величины с — длина окружности и s — площадь круга, с, s и r — величины вещественного типа. Исходные данные и результаты связаны соотношениями, известными из курса математики: с = 2πr, s = πr2. Программа, реализующая вычисления по этим формулам, будет иметь вид: program n_1;
Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:
И всё-таки составленная нами программа имеет существенный недостаток: она находит длину окружности и площадь круга для единственного значения радиуса (5,4 см). Для того чтобы вычислить длину окружности и площадь круга для другого значения радиуса, потребуется вносить изменения непосредственно в текст программы, а именно изменять оператор присваивания. Внесение изменений в существующую программу, по меньшей мере, не всегда удобно (например, когда программа большая и операторов присваивания много). Ниже вы познакомитесь с оператором, позволяющим вводить исходные данные в процессе работы программы, не прибегая к изменению текста программы.
3.2.3. Ввод данных с клавиатурыДля ввода в оперативную память значений переменных используется оператор ввода read:
При выполнении оператора read компьютер переходит в режим ожидания данных: пользователь должен ввести данные с клавиатуры и нажать клавишу Enter1. Несколько значений переменных числовых типов могут вводиться через пробел или через запятую. При вводе символьных переменных пробел и запятая воспринимаются как символы, поэтому ставить их нельзя. 1 Нажатием клавиши Enter может сопровождаться ввод каждого значения. Первое введённое пользователем значение переменной помещается в ячейку памяти, имя которой расположено первым в списке ввода, и т. д. Поэтому типы вводимых значений (входного потока) должны соответствовать типам переменных, указанных в разделе описания переменных. Пример. Пусть var i, j: integer; x: real; a: char; Присвоим переменным i, j, x, а значения 1, 0, 2,5 и 'А'. Для этого воспользуемся оператором read (i, j, x, a) и организуем входной поток одним из следующих способов:
Здесь мы не только использовали различные разделители (пробел, запятая), но и представляли входной поток в виде одной, двух и четырёх строк. Для ввода данных с клавиатуры можно также использовать оператор readln. Отличие состоит в том, что после выполнения readln осуществляется автоматический переход на новую строку входного потока, даже если в текущей строке остались невведённые символы. Таким образом, readln позволяет считать лишь начальную часть введённой пользователем строки и, проигнорировав её окончание, перейти к следующей строке. Усовершенствуем программу n_1, организовав в ней ввод данных с помощью оператора read. А чтобы пользователь знал, для чего предназначена программа, и понимал, какое именно действие ожидает от него компьютер, выведем соответствующие текстовые сообщения с помощью оператора writeln: program n_2;
Результат работы усовершенствованной программы;
Теперь наша программа может вычислить длину окружности и площадь круга для любого значения r. Иначе говоря, она решает не единичную задачу, а целый класс задач. Кроме того, в программе понятно и удобно организован ввод исходных данных и вывод получаемых результатов. Это обеспечивает дружественность пользовательского интерфейса.
Организация ввода и вывода данных. Вопросы и заданияСамое главное Для ввода в оперативную память значений переменных используются операторы ввода read и readln. Для вывода данных из оперативной памяти на экран монитора используются операторы вывода write и writeln. Ввод исходных данных и вывод результатов должны быть организованы понятно и удобно; это обеспечивает дружественность пользовательского интерфейса.
Вопросы и задания 1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий. 2. Запишите оператор, обеспечивающий во время работы программы ввод значения переменной summa. 3. Целочисленным переменным i, j, k нужно присвоить соответственно значения 10, 20 и 30. Запишите оператор ввода, соответствующий входному потоку: а) 20 10 30
4. Опишите переменные, необходимые для вычисления площади треугольника по его трём сторонам, и запишите оператор, обеспечивающий ввод необходимых исходных данных. 5. Что является результатом выполнения оператора? а) write (а)
6. Какой тип имеет переменная ƒ, если после выполнения оператора write (f) на экран было выведено следующее число? а) 125
7. Каким образом можно вывести на экран вещественное число в формате с фиксированной запятой? 8. Запишите операторы ввода двух чисел и вывода их в обратном порядке. 9. Дан фрагмент программы: read (a); read (b) ; c:=a+b; write (а, b) ; write (с) Упростите его, сократив число операторов ввода и вывода. 10. Дан фрагмент программы: а:=10; b:=a+l: a:=b-a; write (а, b) Какие числа будут выведены на экран компьютера? 11. Напишите программу, которая вычисляет площадь и периметр прямоугольника по длинам двух его сторон. Ответ10. 111.
§ 3.3. Программирование линейных алгоритмов3.3.1. Числовые типы данныхКлючевые слова: Программы, реализующие линейные алгоритмы, являются простейшими. Все имеющиеся в них операторы выполняются последовательно, один за другим. Программируя линейные алгоритмы, рассмотрим более подробно целочисленные, логические, символьные и строковые типы данных. Вы уже знакомы с основными числовыми типами данных integer и real. К ним применимы стандартные функции, часть из которых приведена в табл. 3.3.
Исследуем работу функций round, int и frac, применив их к некоторому вещественному х. Соответствующая программа будет иметь вид:
program n_3;
Запустите программу несколько раз для каждого х ∈ {10,2; 10,8; -10,2; — 10,8}. Что вы можете сказать о типе результата каждой из этих функций?
3.3.2. Целочисленный тип данныхНад целыми числами в языке Паскаль выполняются следующие операции: сложение (+), вычитание (-), умножение (*), получение целого частного (div), получение целого остатка деления (mod) и деление (/). Результаты первых пяти операций — целые числа. Результатом операции деления может быть вещественное число. Рассмотрим пример использования операций div и mod, записав на языке Паскаль программу нахождения суммы цифр вводимого с клавиатуры натурального трёхзначного числа. Используем тот факт, что положительное трёхзначное число можно представить в виде следующей суммы: х = а•100 + b•10 + с, где а, b, с — цифры числа.
var х, a, b, с, s: integer; begin writeln ('Нахождение суммы цифр трёхзначного числа') ; write ('Введите исходное число»'); readln (х); а:=х div 100; b:=x mod 100 div 10; с:=х mod 10; s:=a+b+c; writeln ( 's= ', s) end. Чему равна сумма цифр числа 123? А числа -123? Совпадают ли ваши результаты с результатами работы программы? Как можно объяснить и исправить ошибку в программе?
3.3.3. Символьный и строковый типы данныхЗначением символьной величины (тип char) в языке Паскаль является любой из символов, который можно получить на экране нажатием на клавиатуре одной из клавиш или комбинации клавиш, а также некоторых других символов, в том числе и невидимых. Множество таких символов состоит из 256 элементов, каждому из которых согласно используемой кодовой таблице поставлен в соответствие код — число 0 до 255. Символы, соответствующие первым 32 кодам, являются управляющими, а остальные — изображаемыми. К изображаемым символам относится и пробел, имеющий код 32. Знакам препинания, знакам арифметических операций, цифрам, прописным и строчным латинским буквам соответствуют коды от 33 до 127. Буквам национального алфавита соответствуют коды с номерами 128 и далее. В тексте программы константу символьного типа можно задать, заключив любой изображаемый символ в апострофы: '5', 'В', '*'. Если значение символьной переменной считывается с клавиатуры, то его следует набирать без апострофов. Чтобы найти код символа, используют функцию ord, где в качестве параметра задают символ. Чтобы по коду узнать символ, используют функцию chr, где в качестве параметра указывают код символа. Значением строковой величины (тип string) является произвольная последовательность символов, заключенная в апострофы. В Паскале (как и в алгоритмическом языке) строки можно сцеплять. Пример. Запишем на языке Паскаль программу, в которой для введённой с клавиатуры буквы на экран выводится её код. Затем на экран выводится строка, представляющая собой последовательность из трёх букв используемой кодовой таблицы: буквы, предшествующей исходной; исходной буквы; буквы, следующей за исходной. program n_5;
3.3.4. Логический тип данныхКак известно, величины логического типа принимают всего два значения; в Паскале это false и true. Эти константы определены так,что false < true. Логические значения получаются в результате выполнения операций сравнения числовых, символьных, строковых и логических выражений. Поэтому в Паскале логической переменной можно присваивать результат операции сравнения. Пример. Напишем программу, определяющую истинность высказывания «Число n является чётным» для произвольного целого числа n. Пусть ans — логическая переменная, а n — целая переменная. Тогда в результате выполнения оператора присваивания ans:=n mod 2 = 0 переменной ans будет присвоено значение true при любом чётном n и false в противном случае. program n_б;
Логическим переменным можно присваивать значения логических выражений, построенных с помощью известных вам логических функций и, или, не, которые в Паскале обозначаются соответственно and, or, not. Пример. Напишем программу, определяющую истинность выска зывания «Треугольник с длинами сторон а, b, с является равнобед ренным» для произвольных целых чисел а, b, с. program n_7;
Программирование линейных алгоритмов. Вопросы и заданияСамое главное В языке Паскаль используются вещественный, целочисленный, символьный, строковый, логический и другие типы данных. Для них определены соответствующие операции и функции.
Вопросы и задания 1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий. 2. Для заданного х вычислите у по формуле у = х3 + 2,5x2 - х + 1. При этом: а) операцию возведения в степень использовать запрещено;
Подсказка: преобразуйте выражение к следующему виду:
3. По заданным координатам точек А и Б вычислите длину отрезка АВ. Подсказка: Расстояние d между точками А (ха, уа) и В (xb, уb) выражается формулой
4. Известны длины сторон треугольника а, b, с. Напишите программу, вычисляющую площадь этого треугольника.
5. Известны координаты вершин А, В, С треугольника. Напишите программу, вычисляющую площадь этого треугольника.
6. Если сумма налога исчисляется в рублях и копейках, то налоговая служба округляет её до ближайшего рубля (до 50 копеек — с недостатком, свыше 50 копеек (включая 50) — с избытком). Используйте компьютер, чтобы ввести точную сумму налога и вывести, сколько следует уплатить. 7. Исследуйте работу функции random, запустив многократно на выполнение программу: program n_8;
Как можно получить случайное число из интервала (0, x)?
8. Одна компания выпустила лотерейные билеты трёх разрядов: для молодежи, для взрослых и для пенсионеров. Номера билетов каждого разряда лежат в пределах: для молодёжи — от 1 до 100;
С помощью компьютера выберите случайным образом лотерейный билет в каждом разряде. 9. Запишите на языке Паскаль программу, которая для произвольного натурального двузначного числа определяет: а) сумму и произведение его цифр;
10. Запишите на языке Паскаль программу, реализующую алгоритм работы кассира, выдающего покупателю сдачу (s) наименьшим возможным количеством банкнот по 500 (k500), 100 (k100), 50 (k50) и 10 (k10) рублей.
11. Идёт k-я секунда суток. Разработайте программу, которая по введённой k-й секунде суток определяет, сколько целых часов h и целых минут m прошло с начала суток. Например, если k = 13 257 = 3 • 3600 + 40 • 60 + 57, то h = 3 и m = 40. Выведите на экран фразу: It is ... hours ... minutes. Вместо многоточий программа должна выводить значения h и m, отделяя их от слов ровно одним пробелом.
12. Запишите на языке Паскаль программу, которая вычисляет сумму кодов букв в слове «БАЙТ». 13. Запишите на языке Паскаль программу, которая формирует и выводит на экран строку символов, коды которых равны 66, 69, 71, 73, 78. 14. Разработайте программу, которая запрашивает три строковые величины — взаимосвязанные прилагательное, существительное и глагол, а затем выводит все варианты фраз с использованием введённых слов.
15. Даны значения целочисленных переменных: а = 10, b = 20. Чему будет равно значение логической переменной rez после выполнения операции присваивания? а) rez:=(а=10) or (b>10)
16. Составьте программу, вводящую true, если высказывание является истинным, и false в противном случае: а) сумма цифр трёхзначного числа х является чётным числом;
Ответ15. a) true; б) true; в) false.
§ 3.4. Программирование разветвляющихся алгоритмов3.4.1. Условный операторКлючевые слова: При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор. Его общий вид: if <условие> then <оператор_1> else <оператор_2> Для записи неполных ветвлений используется неполная форма условного оператора: if <условие> then <оператор> Слова if — then — else переводятся с английского языка на русский как если — то — иначе, что полностью соответствует записи ветвления на алгоритмическом языке. Перед else знак «;» не ставится. В качестве условий используются логические выражения: 3.4.2. Составной операторВ условном операторе и после then, и после else можно использовать только один оператор. Если при некотором условии требуется выполнить определённую последовательность операторов, то их объединяют в один составной оператор. Конструкция вида begin <последовательность операторов> end называется составным оператором. Пример. Алгоритм решения квадратного уравнения вам хорошо известен. Запишем соответствующую программу на языке Паскаль. program n_11;
3.4.3. Многообразие способов записи ветвленийВ качестве оператора после then и else можно использовать условный оператор. Например, возможна следующая конструкция: if <условие1> then
При использовании таких сложных конструкций (их ещё называют вложенными ветвлениями) следует иметь в виду, что else всегда относится к ближайшему оператору if. Пример. Воспользуемся вложенным ветвлением для записи на языке Паскаль рассмотренного в п. 2.4.2 (пример 10) алгоритма решения линейного уравнения. program n_12;
Как правило, для решения одной и той же задачи можно предложить несколько алгоритмов. Убедимся в этом, записав программу решения линейного уравнения, не прибегая к вложенным ветвлениям.
program n_13;
Возможно, второй вариант программы покажется вам более наглядным. Но и у первого варианта есть свои преимущества: в нём делается меньше проверок. Используйте вложенные ветвления для записи программы, определяющей принадлежность точки х отрезку [а, b].
Программирование разветвляющихся алгоритмов.Самое главное При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор: if <условие> then <оператор_1> else <оператор_2> Для записи неполных ветвлений используется неполный условный оператор: if <условие> then <оператор> Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор, имеющий вид: begin <последовательность операторов> end Программирование разветвляющихся алгоритмов. Вопросы и заданияВопросы и задания 1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий. 2. Как на языке Паскаль записывается полное и неполное ветвление? 3. Является ли условным оператором следующая последовательность символов? а) if х<у then х:=0 else read (у)
4. Что такое составной оператор? Для чего он используется в условном операторе? 5. Используя составной оператор, упростите следующий фрагмент программы: if a>b then с:=1;
6. Дано трёхзначное число. Напишите программу, которая определяет: а) есть ли среди цифр заданного целого трёхзначного числа одинаковые;
б) является ли число «перевёртышем», т. е. числом, десятичная запись которого читается одинаково слева направо и справа налево.
7. Даны две точки в плоской прямоугольной системе координат. Напишите программу, определяющую, которая из точек находится ближе к началу координат.
8. Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторо- н. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний).
9. Имеются данные о количестве полных лет трёх призёров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призёра. 10. Напишите программу, определяющую, лежит ли точка А(ха, уа) на прямой у =kx + l, на ней или под ней.
11. Напишите программу, которая производит обмен значений переменных х и у, если х больше у.
12. Дан условный оператор: if а<5 then с:=1
Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? 13. Напишите программу, вычисляющую значение функции:
14. Составьте программу для решения задачи № 21 к § 2.4 (определение дня недели). 15. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей (k, l) и (m, n) определяет, являются ли эти поля полями одного цвета.
16. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число a (a — случайное число, меньшее 100). Ответ пользователя проверяется и комментируется. Ответы: Программирование разветвляющихся алгоритмов3. а) да; б) нет; в) нет. 12. 5. 8. Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторо- н. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний).
9. Имеются данные о количестве полных лет трёх призёров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призёра. 10. Напишите программу, определяющую, лежит ли точка А(ха, уа) на прямой у =kx + l, на ней или под ней.
11. Напишите программу, которая производит обмен значений переменных х и у, если х больше у.
12. Дан условный оператор: if а<5 then с:=1
Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? 13. Напишите программу, вычисляющую значение функции:
14. Составьте программу для решения задачи № 21 к § 2.4 (определение дня недели). 15. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей (k, l) и (m, n) определяет, являются ли эти поля полями одного цвета.
16. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число a (a — случайное число, меньшее 100). Ответ пользователя проверяется и комментируется. Ответы: Программирование разветвляющихся алгоритмов3. а) да; б) нет; в) нет. 12. 5. § 3.5 Программирование циклических алгоритмов3.5.1. Программирование циклов с заданным условием продолжения работыКлючевые слова: Цикл с заданным условием продолжения работы (цикл-ПОКА) программируется в языке Паскаль с помощью оператора while. Общий вид оператора: while <условие> do <оператор> Здесь: <условие> — логическое выражение; пока оно истинно, выполняется тело цикла; <оператор> — простой или составной оператор, с помощью которого записано тело цикла.
Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 14) алгоритм получения частного q и остатка r от деления натурального числа х на натуральное число у без использования операции деления. program n_14;
Каким будет результат выполнения программы при х = -10 и у = 3? Как вы можете объяснить этот результат?
3.5.2. Программирование циклов с заданным условием окончания работыЦикл с заданным условием окончания работы (цикл-ДО) программируется в языке Паскаль с помощью оператора repeat. Общий вид оператора: repeat <оператор1; оператор2; ...; > until <условие> Здесь: <оператор1>; <оператор2>; ... — операторы, образующие тело цикла; <условие> — логическое выражение; если оно ложно, то выполняется тело цикла. Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 17) алгоритм решения задачи о графике тренировок спортсмена.
program n_15;
3.5.3. Программирование циклов с заданным числом повторенийЦикл с заданным числом повторений (цикл-ДЛЯ) программируется в языке Паскаль с помощью оператора for. Его общий вид: for <параметр>:=<начальное_значение> to <конечное_значение> do <оператор> Здесь: <параметр> — переменная целого типа; <начальное_значение> и <конечное_значение> — выражения того же типа, что и параметр, вычисляемые перед началом цикла; <оператор> — простой или составной оператор — тело цикла. При выполнении этого оператора после каждого выполнения тела цикла происходит увеличение на единицу параметра цикла; условием выхода из цикла является превышение параметром конечного значения. Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 19) алгоритм вычисления степени с натуральным показателем n для любого вещественного числа а.
program n_16;
3.5.4. Различные варианты программирования циклического алгоритмаОсобенностью программирования является то, что для решения одной и той же задачи могут быть созданы разные программы. Вы могли убедиться в этом, программируя ветвления. Рассмотрим пример, показывающий, что и циклический алгоритм может быть запрограммирован разными способами. Пример. Напишем программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт количества введённых положительных и отрицательных чисел. Так как здесь в явном виде задано условие окончания работы, то воспользуемся оператором repeat. program n_17;
Имеющееся условие окончания работы можно достаточно просто преобразовать в условие продолжения работы — работа продолжается, пока n ≠ 0. И мы можем воспользоваться оператором while: program n_18;
В рассмотренном примере число повторений тела цикла заранее не известно, и поэтому оператор for здесь применить нельзя. Если число повторений тела цикла известно, то лучше воспользоваться оператором for. Вместе с тем любая задача, в которой число повторений тела цикла определено заранее, может быть запрограммирована с помощью любого из трёх рассмотренных выше циклов.
Программирование циклических алгоритмов. Вопросы и задания: Программирование циклических алгоритмов1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий. 2. Дана последовательность операторов: а:=1;
Сколько раз будет повторен цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов? 3. Требовалось написать программу вычисления факториала числа n (факториал числа n есть произведение всех целых чисел от 1 до n). Программист торопился и написал программу неправильно. Ниже приведён фрагмент его программы, в котором содержатся пять ошибок: k: =1;
Найдите ошибки. Допишите необходимые операторы и выполните программу на компьютере.
4. Проанализируйте следующий цикл: while a<b do
В чём его особенность? 5. Запишите на языке Паскаль программы решения задач № 25-29 из § 2.4. Используйте оператор while. 6. Дана последовательность операторов: а: =1;
Сколько раз будет повторён цикл и какими будут значения переменных а, Ь, s после исполнения этой последовательности операторов? 7. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт суммы и среднего арифметического введённых положительных чисел. Используйте оператор repeat. 8. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и определение максимального (наибольшего) из введённых чисел. Используйте оператор repeat. 9. Напишите программу вычисления наибольшего общего делителя двух целых чисел: а) используйте оператор repeat;
10. Сколько раз будет выполнен цикл? а) for i:=0 to 15 do s:=s+1;
11. Напишите программу, которая 10 раз выводит на экран ваши имя и фамилию. 12. Напишите программу, выводящую на экран изображение шахматной доски, где чёрные клетки изображаются звёздочками, а белые — пробелами. Рекомендуемый вид экрана после выполнения программы:
13. Напишите программу, которая вычисляет сумму: а) первых n натуральных чисел;
14. Напишите программу, которая генерирует 10 случайных чисел в диапазоне от 1 до 20, выводит эти числа на экран и вычисляет их среднее арифметическое. 15. Запишите на языке Паскаль программы решения задач № 32, 33 из параграфа 2.4. Используйте оператор for. 16. Напишите программу, которая выводит на экран таблицу степеней двойки (от нулевой до десятой). Рекомендуемый вид экрана после выполнения программы:
17. Напишите программу, которая выводит на экран таблицу умножения на n (n — целое число в диапазоне от 2 до 10, вводимое с клавиатуры).
18. Какой из трёх рассмотренных операторов цикла является, по вашему мнению, основным, т. е. таким, что им можно заменить два других? Обоснуйте свою точку зрения. Ответы2. Два раза. 3, 6, 9. 6. Четыре раза. 5, 16, 21. 10. а) 16; б) 6; в) 3; г) 1; д) 3. Начала программирования. Тестовые задания для самоконтроля1. Разработчиком языка Паскаль является: а) Блез Паскаль
2. Что из нижеперечисленного не входит в алфавит языка Паскаль? а) латинские строчные и прописные буквы
3. Какая последовательность символов не может служить именем в языке Паскаль? а) _mas
4. Вещественные числа имеют тип данных: а) real
5. В программе на языке Паскаль обязательно должен быть: а) заголовок программы
6. Какого раздела не существует в программе, написанной на языке Паскаль? а) заголовка
7. Языковые конструкции, с помощью которых в программах записываются действия, выполняемые в процессе решения задачи, называются: а) операндами
8. Разделителями между операторами служит: а) точка
9. Описать переменную — это значит указать её: а) имя и значение
program error;
ошибкой является: а) некорректное имя программы
11. Какая клавиша нажимается после набора последнего данного в операторе read? а) Enter
12. При присваивании изменяется: а) имя переменной
а) begin
а) abs(х)
15. Для генерации случайного целого числа из интервала [10, 20) необходимо использовать выражение: а) random*20
16. В каком из условных операторов допущена ошибка? а) if b=0 then writeln ('Деление невозможно.');
17. В условном операторе и после then, и после else нельзя использовать: а) оператор вывода
18. Определите значение переменной с после выполнения следующего фрагмента программы. а:=100;
а) 20
19. Условный оператор if a mod 2=0 then write ('Да') else write ('Нет') позволяет определить, является ли число а: а) целым
20. Какого оператора цикла не существует в языке Паскаль? а) for
21. Цикл в фрагменте программы р:=2;
будет исполнен: а) 0 раз
22. Цикл в фрагменте программы а:=1;
выполнится: а) 0 раз
23. Определите значения переменных s и i после выполнения фрагмента программы: s:=0; i:=5;
а) s = 0, i = -1
24. Выберите фрагмент программы, в котором ищется произведение 1•2•3•4•5. а)р:=0; i:=1; while i<=5 do i:=i+1; p:=p*i;
25. В данном фрагменте программы s :=0;
вычисляется: а) сумма целых чисел от 1 до 10
Ответы: Глава 3. Начала программирования
|
|||||||||||||||||||||||
17.08.2022 22:31 | Автор/источник: Информатика 8 класс. Босова |
Октябрь 2024 | ||||||
---|---|---|---|---|---|---|
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Сейчас на сайте - 1 (0 зарег.) | |
Всего хитов | 993 |
Сегодня хитов | 993 |
Сегодня хостов | 529 |