|
Введение
Важнейшую роль в курсе информатики играет формирование у студентов алгоритмического стиля мышления, который выступает не только как стимулятор общего развития, но и позволяет ввести их в сложный мир новых информационных технологий. Без программирования развитие алгоритмического мышления практически невозможно, так как отсутствует возможность компьютерного эксперимента: проверки работоспособности разработанного алгоритма. Взаимодействие человека с ЭВМ носит характер общения, поэтому возникли и широко используются различные специальные языки программирования как средство общения человека с компьютером.
Язык Паскаль был разработан в начале 70-х годов ХХ века швейцарским профессором Никлаусом Виртом как инструмент для систематического обучения программированию. Для этого в состав языка были включены элементы структурного программирования (последовательные, разветвляющиеся и циклические структуры) и структуры данных (массивы, записи, файлы и т.д.). В 1983 году французский математик Филипп Кан разработал компактный, быстродействующий компилятор, названный Турбо Паскалем. В 1992 году фирма Borland International выпустила в свет очередную версию языка Турбо Паскаль 7.0 с улучшенным интерфейсом пользователя и более быстрым компилятором. Принципы построения программ, заложенные в Паскале, получили развитие в таких языка программирования как Ада, Модула-2, Си и т.д. Турбо Паскаль не только обеспечивает возможность создания больших программ, поддерживая их строгую логическую структуру, что весьма ценно для начинающих программистов, создающих серьезные программы, так как приучает их к определенной дисциплине. Кроме того, Паскаль считается достаточно простым и эффективным инструментом для решения инженерных задач.
Предлагаемые методические указания к выполнению лабораторных работ (части 3 и 4) разработаны в помощь первокурсникам в самостоятельном освоении одного из важнейших разделов курса информатики «Алгоритмизация и программирование». Изложение основных вопросов программирования подкрепляется конкретными примерами и сопровождается необходимыми комментариями. В приложениях содержится весь необходимый справочный материал. Для достижения наилучшего результата при изучении изложенного материала необходимо придерживаться следующих общих требований и рекомендаций по выполнению лабораторных работ:
- при подготовке к лабораторным работам и в процессе их выполнения студенты приобретают навыки построения блок-схем и практического программирования, учатся эффективно использовать операторы языка, а также анализировать полученные результаты;
- перед выполнением лабораторной работы студент обязан внимательно ознакомиться с ее описанием, изучить предлагаемый теоретический материал (при необходимости следует обратиться к дополнительным источникам информации) и подготовить бланк отчета, включающий титульный лист установленной формы, цель работы, текст варианта задания, соответствующие блок-схему, листинг программы и ответы на контрольные вопросы. Вариант задания выдается преподавателем. Студенты, неподготовленные к работе, к выполнению лабораторной не допускаются;
- в процессе выполнения работы непосредственно на компьютере студент должен проанализировать полученные результаты и внести данные в таблицы регистрации результатов заключительного отчета по лабораторной работе. Отчет утверждается преподавателем и, если он не соответствует установленным требованиям, отчет возвращается студенту для доработки;
- защита лабораторной работы осуществляется только после того, как преподаватель утвердит представленный студентом отчет по работе. Форма защиты лабораторных работ выбирается по усмотрению преподавателя в соответствии с рекомендациями кафедры.
Лабораторная работа №1. Программирование алгоритмов линейной структуры
Цель работы – ознакомление с правилами построения алгоритмов, структурой программы на языке Паскаль, правилами записи арифметических выражений, особенностями программирования алгоритмов линейной структуры, а также использования оператора присваивания, процедур ввода и вывода данных.
1.1 Алгоритм и блок-схема
При решении задач на ЭВМ производится подготовительная работа, включающая в себя следующие этапы: математическая формулировка задачи, разработка алгоритма ее решения, запись программы и подготовка исходных данных. Если математическая формулировка задачи есть, то можно сразу начать с разработки алгоритма.
Алгоритм – это формальное описание способа решения задачи путем разбиения ее на конечную по времени последовательность понятных исполнителю действий (этапов). При этом должны быть четко указаны как содержание каждого этапа, так и порядок выполнения этапов. Отдельный этап алгоритма либо представляет собой другую, более простую задачу, алгоритм которой разработан ранее, либо должен быть достаточно простым и понятным без пояснений. Наиболее распространенный вид алгоритма – графический выполняется в виде блок-схемы – совокупности геометрических фигур (блоков), связанных между собой при помощи стрелок. Все формулы в блок-схеме записываются на языке математики, а не конкретном языке программирования. В таблице А1 приведены наиболее используемые виды блоков. Блок-схемы выполняются в соответствии с ГОСТ 19.701-90, ЕСПД, но для упрощения записи их можно строго не соблюдать. Любой алгоритм синтезируют из типовых элементов: алгоритмов линейной, разветвляющейся и циклической структуры.
1.2 Особенности языка Турбо Паскаль и структура программы
К основным особенностям Турбо Паскаль можно отнести довольно строгие требования к структуре программы. Программа на языке Паскаль записывается в виде последовательности символов, к числу которых относятся латинские буквы, арабские цифры, знаки препинания, знаки операций. Для обозначения исходных данных и результатов вычислений (промежуточных и итоговых) употребляются переменные, имена (идентификаторы) которых могут быть не только буквами - a, b, X, Y и т.д., но и последовательностью символов вида x1, time, alfa2 и т.д., которые состоят из букв и цифр и начинаются с буквы. Ключевые слова – это множество имен, которые используются в языке для написания операторов и других конструкций. Имена, применяемые пользователем для обозначения конструкция не должны совпадать с ключевыми словами. Список зарезервированных слов и перечень операций языка приведены в таблицах В1 и В2. Соответствующее исходное данное или результат вычисления называется значением переменной. Константы отличаются от переменной тем, что их значения не меняются в ходе выполнения программы. Числа записываются в десятичной системе, вместо запятой ставится точка: 0, -19, 0.27, 3.1415 и т.д.
К основным типам данных языка Паскаль относятся: вещественный (Real), целочисленный (Integer), логический (Boolean) и литерный (Char). Целые числа и числа с плавающей точкой могут быть представлены в различных формах (таблица В3).
Структура простейшей программы на Паскале приведена в таблице С1. В описательной части задается имя программы, все метки и константы, которые будут использоваться в программе, а также идентификаторы и тип переменных. Главной частью программы является ее исполнительная часть, то есть последовательность инструкций, которую должен выполнить компьютер. Эти инструкции принято называть операторами.
Более сложные арифметические выражения строятся из операндов (констант и переменных), соединенных знаками арифметических операций. Кроме того, в выражении могут быть использованы круглые скобки и функции (таблица С2). Результатом расчета арифметического выражения является число. При составлении арифметических выражений должны соблюдаться следующие правила:
- два знака арифметических операций не должны стоять рядом;
- при вычислении значений арифметических выражений действуют правила старшинства операций: указатели функций; умножение и деление слева направо; сложение и вычитание слева направо; круглые скобки изменяют этот естественный порядок, то есть старшим действием является действие в скобках.
1.3 Алгоритмы линейной структуры и используемые в них операторы
Алгоритм называется линейным, если все операции в нем выполняются последовательно друг за другом.
Оператор присваивания позволяет изменить текущее значение переменной. Вид оператора приведен в таблице D1. Вычисляется выражение, стоящее справа от знака " := " ("присвоить"), полученный результат присваивается переменной, стоящей в левой части оператора. При этом старое значение, хранившееся в ней, безвозвратно пропадает. Например, Р:= 5; (в переменную Р запишется число 5).
Для ввода данных и вывода результатов используются процедуры ввода и вывода (таблица D1). Существуют форматный и бесформатный способы вывода.
1.4 Пример алгоритма и программы линейной структуры
Даны переменные a и b. Найти
При составлении алгоритма необходимо выделить однотипные выражения (здесь a2+b2), которые достаточно посчитать один раз, а затем использовать результат вычислений. Желательно разбить сложные вычисления одного выражения на более простые (например, отдельно вычислить числитель и знаменатель дроби) для того, чтобы в алгоритме не было громоздких формул. На рисунке 1.1 представлен вариант блок-схемы алгоритма и программа.
Program Primer1; Var a,b,c,z:real; Begin Write ('Введите a и b'); Read (a, b); C:= sqr(a) + sqr(b); z:= sqrt (sqrt(c)) + sin(c) – 1/с; Write('Z=', z:10:3) End.
|
Рисунок 1.1 - Блок-схема алгоритма и программа линейной структуры
Вычисление значения Z производится в следующей последовательности:
1) в блоке 2 вводятся исходные данные – значения a и b;
2) в блоке 3 вычисляется арифметическое выражение a2+b2 и результат запоминается в переменной c;
3) в блоках 4-6 вычисляются первое слагаемое, числитель и знаменатель второго слагаемого;
4) в блоке 7 производится окончательный расчет Z;
5) в блоке 8 выводятся исходные данные и результат.
В программе действия блоков 3-7 записываются операторами присваивания, блоки 2 и 8 реализуются операторами ввода/вывода. Ввод осуществляется с запросом, поэтому сначала записан оператор Write, а затем Read. Вывод осуществляется форматным способом. Все переменные, участвующие в программе, объявляются в разделе Var ее описательной части.
1.5 Варианты заданий
Составить блок-схему и программу вычисления значений функции при заданных значениях аргумента.
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) |
1.6 Контрольные вопросы
1 Назовите основные этапы подготовки и решения задач на ПК?
2 Что такое алгоритмический язык?
3 Что такое алгоритм? Назовите основные свойства алгоритмов.
4 Что понимается под «блок-схемой»? Назовите элементы блок-схемы.
5 Опишите структуру простейшей Паскаль-программы.
6 Какие типы данных используются в Паскале?
7 Какой алгоритм называется линейным? Опишите оператор присваивания.
8 Каких правил следует придерживаться при составлении арифметических выражений?
9 Подумайте как можно представить в Паскале функции tg x, ctg x, lg x?
10 Какие операторы используются для ввода и вывода данных в Паскале?
11 Как осуществляется форматный и бесформатный выводы в Паскале?
12 Как осуществляется вывод с комментарием в Паскале?
Лабораторная работа №2. Программирование алгоритмов разветвленной структуры
Цель работы – ознакомление с особенностями программирования алгоритмов разветвленной структуры, а также использования различных операторов перехода.
2.1 Алгоритмы разветвленной структуры. Операторы перехода и выбора
Ветвящимся (разветвленным) называется алгоритм, в котором в зависимости от исходных данных или промежуточных результатов вычисления реализуется по одному из нескольких заранее предусмотренных (возможных) направлений, называемых ветвями вычислений.
Оператор условного перехода реализует разветвление алгоритма и применяется, когда в зависимости от условия необходимо выполнить либо одно, либо другое действие. В качестве условий используются логические отношения. Логические отношения представляют собой записи равенств и неравенств: <, >, =, <=, >=,<> (не равно), AND (логическое "и"), OR (логическое "или"). В Паскале оператор условного перехода имеет две конструкции (таблица D1).
В Паскале принят порядок выполнения операторов согласно их следованию в программе. Если необходимо обойти какую-то группу операторов, то используется оператор безусловного перехода, который в блок-схеме отображается в виде стрелки, а не отдельного блока (таблица D1). Метка, используемая в операторе, показывает, что дальнейшая работа должна проводиться в другой части программы, с той строки, на которую она указывает и должна быть предварительно описана в разделе Label (например, Goto NM;). Этот оператор используется только в исключительных ситуациях, поскольку такие переходы разрушают связи между структурой программы и структурой вычислений, что приводит к потере ясности программы и затрудняет задачу верификации (доказательства правильности составления программы).
Кроме оператора безусловного перехода, в Турбо Паскале 7.0 иногда используются четыре безусловные функции:
- Break – позволяет досрочно закончить цикл;
- Continue – позволяет начать новую итерацию цикла, не дожидаясь окончания предыдущей итерации;
- Exit – позволяет завершить работу текущего программного блока (программу, процедуру);
- Halt(n) – позволяет завершить работу программы с кодом завершения n.
К операторам разветвляющейся структуры относится также оператор выбора (варианта), позволяющий программировать сложные ветвления, когда имеется несколько (обычно равновероятных) вариантов действия (таблица D1).
2.2 Примеры решений задач разветвленной структуры
2.2.1 Вычислить |
На рисунке 2.1 представлена блок-схема и программа для решения данной задачи. В блоке 4 производится ввод значения х из какого-либо одного заданного интервала. В блоках 5 и 6 осуществляется проверка условий принадлежности х к одному из интервалов. Если х <0 (блок 5), то вычисления производятся по формуле в блоке 7, если нет, то проверяется условие х =0. Если это условие выполнено, то для вычисления у используется блок 8, иначе - блок 9. Независимо от того, по какой формуле осуществлено вычисление, следующее действие - вывод вычисленного значения у. Блоки 2, 3, 11, 12 используются для организации многократного ввода различных значений х, что называется зацикливанием. Блоки 5, 6, 12 реализуются в программе операторами условного перехода, а блоки 3, 7, 8, 9, 11 – операторами присваивания. В качестве аналогов блоков 2, 4, 10 в программе используются процедуры ввода-вывода.
| Program primer2_1; Label m1; Var i, n:integer; x, y:real; Begin Write(‘Введи N’); Read(n); i:=1; m1: Write(‘Введи x’); Read(x); If x<0 then y:=exp(x) else if(x>=0)and(x<=1) then y:=0 else y:=sin (x); write (‘Y=’,y:10:3); i:=i+1; if i<=n then goto m1 end.
|
Рисунок 2.1 - Блок-схема алгоритма и программа разветвленной структуры
2.2.2 В старояпонском календаре принят 60-летний цикл, состоящий из пяти 12-летних малых циклов. Малые циклы обозначаются названиями цвета. Внутри каждого малого цикла годы носят названия животных. Определить название заданного года нашей эры по японскому календарю. Так как в данном случае блок-схема получается достаточно громоздкой, ниже приведена только программа решения задачи.
Program primer2_2;
Var year, i, k: integer;
Begin
Write ('Введите год'); Read (year); Write (‘- the year of the ‘);
i:= (year-3) mod 12; k:= (3010 – year) mod 60 div 12;
Case k of
0: writе ('green ');
1: write ('red ');
2: write ('yellow ');
3: write ('white ');
4: write ('black ');
end;
Case i of
1: Writeln ('rat'); {крыса}
2: Writeln ('bull'); {бык}
3: Writeln ('tiger'); {тигр}
4: Writeln ('rabbit'); {кролик}
5: Writeln ('dragon'); {дракон}
6: Writeln ('snake'); {змея}
7: Writeln ('horse'); {лошадь}
8: Writeln ('sheep'); {овца}
9: Writeln ('monkey'); {обезьяна}
10: Writeln ('hen'); {петух}
11: Writeln ('dog'); {собака}
0: Writeln ('pig'); {свинья}
end;
end.
2.3 Варианты заданий
2.3.1 Составить блок-схему и программу разветвляющейся структуры для вычисления заданной функции.
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 |
2.3.2 Составить программу решения задачи, используя оператор выбора
1 Определить время года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
2 Определить знаки координат точки по вводимому номеру квадранта. В случае если пользователь укажет недопустимый номер, повторить попытку ввода.
3 Определить квартал текущего года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
4 Вводится ответ на вопрос "Язык общения? русский (р) / английский (а)". Если введено "р", то вывести "Привет!", если введено "а", то вывести "Hello!". В остальных случаях вывести "Повторите ввод".
5 Вводится ответ на вопрос "Продолжить работу? да (1) / нет (0)". Если введено "1", то вывести "Я готов к работе", если введено "0", то вывести "Работа завершена".
6 Вводится целое число. Если введено "1", то вывести "понедельник". Если введено "2", то вывести "вторник" и т.д. В остальных случаях - "Повторите попытку ввода".
7 Вводится целое число от 2 до 5. Если введено "2", то вывести "неудовлетворительно". Если введено "3", то вывести "удовлетворительно" и т.д. В остальных случаях - "Такой оценки не существует".
8 Вводится символ. Если этот символ равен "***", то вывести "Осадки в виде снега". Если - ":::", то - "Осадки в виде дождя". В остальных случаях - "Безоблачно".
9 Ввести целое число. Если введено "0", то вывести "незачет", если введено "1", то вывести "зачет". В остальных случаях вывести "Повторите ввод".
10 По вводимому номеру вывести название ноты: 1-"до", 2-"ре", 3-"ми", 4-"фа", 5-"соль", 6-"ля", 7-"си". В остальных случаях - "Нота не определена".
11 По вводимому номеру вывести название цвета: 1-"красный", 2-"оранжевый", 3-"желтый", 4-"зеленый", 5-"голубой", 6-"синий", 7-"фиолетовый". В остальных случаях - "Цвет не определен".
12 По вводимому номеру вывести название времени года: 1-"зима", 2-"весна", 3-"лето", 4-"осень". В остальных случаях - "Время года не определено".
13 Вывести название месяца, если вводится его номер. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
14 Вводится целое число от 1 до 10. Если введено "1", то вывести "Средний возраст учеников - 7 лет". Если введено "2", то вывести "Средний возраст учеников - 8 лет" и т.д.
15 Даны два числа. Ввести целое число n. Если n=1, то найти минимум этих двух чисел. Если n=2, то найти максимум этих чисел. В остальных случаях повторить ввод n.
16 Вводится символ. Если этот символ равен "я", то вывести "январь". Если - "ф", то - "февраль". Если - "д", то - "декабрь". В остальных случаях - "Зимний месяц не определен".
17 Вводится символ. Если этот символ равен "с", то вывести "сентябрь". Если - "о", то - "октябрь". Если - "н", то - "ноябрь". В остальных случаях - "Осенний месяц не определен".
18 Вводится целое число n (1£n£5), выводится n звездочек (*). В остальных случаях повторить ввод n.
19 По вводимому значению n (1£n£5) вывести наименование геометрической фигуры 1-"точка", 2-"прямая", 3-"треугольник", 4-"квадрат", 5-"пентагон". В остальных случаях повторить ввод n.
20 Дано натуральное число n (1£n£10). Вывести фразу "Мы нашли n грибов (гриб, гриба), используя правильный падеж существительного "гриб".
21 По вводимому номеру вывести название дня недели 1-"понедельник", 2-"вторник", 3-"среда", 4-"четверг", 5-"пятница", 6-"суббота", 7-"воскресенье". В остальных случаях повторить попытку ввода.
22 По вводимому номеру вывести наименование пальцев руки 1-"мизинец", 2-"безымянный", 3-"средний", 4-"указательный", 5-"большой". В остальных случаях повторить попытку ввода.
23 По вводимому номеру вывести результаты спортивных соревнований 1-"золотая медаль", 2-"серебряная медаль", 3-"бронзовая медаль", 4-"утешительный приз". В остальных случаях повторить попытку ввода.
24 По вводимому номеру вывести наименование типов темперамента 1-"сангвиник", 2-"флегматик", 3-"меланхолик", 4-"холерик". В остальных случаях повторить попытку ввода.
25 По вводимому номеру вывести наименование пяти чувств 1-"зрение", 2-"слух", 3-"обоняние", 4-"осязание", 5-"вкус". В остальных случаях повторить попытку ввода.
26 В зависимости от количества участников вывести название музыкальных ансамблей 1-"соло", 2-"дуэт", 3-"трио", 4-"квартет", 5-"квинтет", 6-"сикстет", 7-"октет". В остальных случаях повторить попытку ввода.
27 По вводимому номеру вывести наименование одного из факультетов АИЭС 1-"ТЭФ", 2-"ЭЭФ", 3-"ФРТС", 4-"ФЗО и ПС", 5-"ФДП". В остальных случаях повторить попытку ввода.
28 Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье". Если пользователь укажет недопустимый номер, то повторить попытку ввода.
29 Написать программу, которая подводит итоги экзамена. При вводе кода 0 вывести "неявка"; 1 - "неудовлетворительно"; 2,3,4 -"удовлетворительно"; 5,6,7 - "хорошо"; 8,9 -"отлично"; 10 -"не допущен". В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
30 Дано натуральное число n (1 £ n £ 10). Вывести фразу "n рублей (рубль, рубля), используя правильный падеж существительного "рубль".
2.4 Контрольные вопросы
1 Какие логические отношения используются в Паскале?
2 Какие функции выполняет оператор условного перехода?
3 Чем отличаются полная и краткая формы оператора условного перехода?
4 Как изображается на блок-схеме оператор условного перехода?
5 Какую функцию выполняет оператор безусловного перехода?
6 Как изображается на блок-схеме оператор безусловного перехода?
7 Какие особенности характерны для оператора выбора?
8 Как можно изобразить на блок-схеме оператор выбора?
Лабораторная работа №3. Программирование алгоритмов циклической структуры
Цель работы – ознакомление с особенностями программирования алгоритмов циклической структуры.
3.1 Алгоритмы циклической структуры. Операторы цикла
Алгоритм, в котором предусмотрено многократное выполнение одной и той же последовательности действий, называется алгоритмом циклической структуры, а эта последовательность – циклом. Циклический алгоритм позволяет существенно сократить объем программы. Цикл можно организовать двумя способами:
- с помощью счетчика и условия перехода (см. пример 2.2.1);
- с помощью оператора цикла.
В Паскале существует несколько операторов цикла. Оператор цикла представляет собой единую синтаксическую конструкцию, в которой можно выделить три основные части: заголовок цикла, тело цикла, заключительную строку. Заголовок цикла образуют ключевое слово и управляющая фраза, задающая способ управления повторениями. Заключительную строку составляет ключевое слово, заканчивающееся знаком “; ”. Тело задает действия, которые повторяются в соответствии с правилами, заданными управляющей фразой. Если число повторений известно заранее (до начала повторений), то в такой ситуации лучше воспользоваться оператором цикла с параметром For-To или For-Downto (оператор цикла с фиксированным числом повторений). В остальных случаях следует использовать операторы цикла с предусловием While-Do или постусловием Repeat-Until.
Оператор цикла с параметром имеет две модификации For-To и For-Downto и следующие ограничения:
- i, m1, m2 могут быть только переменными целого типа;
- параметр i не может изменяться внутри цикла.
Все операторы цикла (For-To, For-Downto, While-Do и Repeat-Until) приведены в таблице D1. Общим для всех перечисленных операторов цикла является то, что циклы, организованные с их помощью, содержат обязательные компоненты: задание начального значения параметра цикла; тело цикла; задание шага изменения параметра цикла; проверку на выход из цикла.
Для операторов While и Repeat изменение параметра цикла по какому-либо закону в теле цикла обязательно.
При программировании алгоритмов циклической структуры часто используются приемы накапливания сумм, произведения, количества:
Накапливание суммы | до цикла | S = 0 | в цикле | S=S+элемент |
Накапливание произведения |
| P = 1 |
| P=P*элемент |
Накапливание количества |
| K = 0 |
| K=K+1 |
3.2 Примеры алгоритмов и программ циклической структуры
3.2.1 Вычислить все значения функции Y=A*K2, если К меняется от 1 до 10 с шагом 1. Решить задачу несколькими способами (на рисунках 3.1, 3.2, 3.3 и 3.4 показаны все способы решения задачи).
Program Primer3_1; var k: integer; a, y: real; begin read (a); for k:= 1 to 10 do begin y:= a * sqr(k); writeln(’K=’,k:2,’Y=’,y:10:3); end; end. | |
Рисунок 3.1 – Пример решения задачи с использованием оператора For-To | |
Program Primer3_2; var k: integer; a, y: real; begin read (a); for k:= 10 downto 1 do begin y:= a * sqr(k); writeln(’K=’,k:2,’Y=’,y:10:3); end; end. | |
Рисунок 3.2 – Пример решения задачи с использованием оператора For-Downto | |
Program primer3_3; var k:integer; a,y: real; begin read (a); k:=1; while k<=10 do begin y:= a * sqr(k); writeln(’K=’,k:2,’Y=’,y:9:3); k:= k + 1; end; end.
| |
Рисунок 3.3 – Пример решения задачи с использованием оператора While-Do | |
Program primer3_4; var k:integer; a,y: real; begin read (a); k:=1; repeat y:= a * sqr(k); writeln(’K=’,k:2,’Y=’,y:9:3); k:= k + 1; until k > 10 end.
| |
Рисунок 3.4 – Пример решения задачи с использованием оператора Repeat-Until |
3.2.2 Вычислить значения функции для х, меняющегося в интервале от –5 до 7 с шагом 0,5. Найти количество (К) значений у(х) равных нулю, сумму (S) положительных значений у(х) и произведение (P) отрицательных значений у(х). Решить задачу, используя, оператор For-To.
Блок-схема и программа решения задачи представлены на рисунке 3.5.
| Program primer3_5; var S, P, y, x:real; K, i:integer; begin K:= 0; S:= 0; P:= 1; N:= trunc((7+5)/0.5+1); x:= -5; for i:= 1 to N do begin y:= x*sin(x)-exp(x); writeln(’x=’, x:4:1,’y=’, y:10:3); if y = 0 then K:= K+1 else if y > 0 then S:= S+y else P:= P*y; x:= x+0.5; end; writeln(K, S, P) end. | ||
Рисунок 3.5 – Пример решения задачи с использованием цикла FOR-TO с вещественным параметром |
При использовании оператора цикла For-To для решения данной задачи выбрать х в качестве параметра цикла нельзя, так как это вещественная переменная, кроме того, интервал ее изменения и шаг, также вещественные числа. Поэтому для организации цикла используем дополнительный параметр i, который будет изменяться параллельно с х требуемое число раз. Для этого определим количество итераций (повторений) по формуле: , где m1 и m2 - начальное и конечное значение х, m3 – шаг. Так как значение N не всегда получается целым числом, в программе рекомендуется использовать функцию trunc(x), результатом которой является целое число, а аргументом - вещественное. Вычисления значения функции производятся в цикле. До организации цикла необходимо задать начальные значения переменных для хранения суммы (S=0), количества (K=0) и произведения (P=1). Также необходимо задать начальное значение переменной (х =-5), а затем внутри цикла изменять х на величину шага (х:= х + 0.5). Для накопления суммы и количества в теле цикла используется оператор присваивания типа счетчика, суть которого: последующее значение = предыдущее значение + текущее значение (S:= S + y и K:= K +1), а для накопления произведения используется идентичный оператор присваивания, но со знаком * в правой его части (P:= P * y).
3.3 Варианты заданий
Решить задачу согласно варианту тремя способами, т.е. с использованием операторов цикла For-To (или For-Downto), While-Do и Repeat-Until.
1 Вычислить сумму четных и нечетных первых N чисел натурального ряда.
2 Дано целое число N. Вычислить P=N!=1´2´3´…´N.
3 Даны числа a и n. Вычислить P = a´(a-n) ´ (a-2n) ´ (a-3n) ´…´ (a-n2).
4 Вычислить произведение первых n сомножителей .
5 Вычислить произведение четных и нечетных первых N чисел натурального ряда.
6 Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых S = sinX + sinX2 + sinX3 +…+ sinXn.
7 Даны вещественное число X и натуральное число n. Вычислить произведение первых N сомножителей S = sinX ´ sinX2 ´ sinX3 ´…´ sinXn.
8 Дано целое число n. Вычислить .
9 Дано целое число n. Вычислить .
10 Вычислить произведение первых n сомножителей .
11 Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых .
12 Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых .
13 Даны числа b и n. Вычислить P = b´(b+1) ´ (b+2) ´ (b+3) ´…´ (b+n).
14 Вычислить сумму первых N чисел натурального ряда.
15 Вычислить произведение четных и нечетных первых N чисел натурального ряда.
16 Вычислить сумму первых n слагаемых .
17 Дано целое число n. Вычислить .
18 Даны числа x и n. Вычислить .
19 Даны числа b и n. Вычислить P = (b-n) + (b - (n-1)) + (b- (n-2)) +…+ (b-1).
20 Даны вещественное число b и натуральное число n. Вычислить bn .
21 Даны вещественное число x и целое число n. Вычислить .
22 Даны числа x и n. Вычислить .
23 Дано целое число n. Вычислить .
24 Дано целое число n. Вычислить .
25 Дано целое число n. Вычислить .
26 Дано целое число n. Вычислить .
27 Дано целое число n. Вычислить .
28 Даны числа a и n. Вычислить S = a+(a-n) + (a-2n) + (a-3n) +…+ (a-n2).
29 Даны вещественное число X и натуральное число n. Вычислить сумму первых n слагаемых S = sin2X + 2sin2X +…+ nsin2 X.
30 Дано целое число n. Вычислить .
3.4 Контрольные вопросы
1 Что называется циклом?
2 Что представляет собой оператор цикла?
3 Какие виды оператора цикла существуют в Паскале?
4 Дайте сравнительную характеристику операторов For-To и For-Downto.
5 Что представляет собой оператор цикла While-Do?
6 Что представляет собой оператор цикла Repeat-Until?
7 Как организовать цикл For-To с вещественным параметром?
8 Как осуществляется накапливание суммы в программе?
9 Какое значение следует принять за начальное при накапливании произведения?
10 В какой последовательности выполняются действия при накапливании количества?
Приложение A
Описание символов, используемых в графической схеме алгоритмов (ГСА)
Таблица А1 – Основные элементы блок-схем
Наименование | Обозначение | Примечание |
Терминатор |
| Отображает выход во внешнюю среду или вход из внешней среды. Используется для обозначения начала или окончания алгоритма |
Данные |
| Отображает данные, носитель данных не определен. Используется для обозначения операций ввода и вывода данных |
Процесс |
| Отображает функцию обработки данных любого вида. Используется для обозначения операций присваивания |
Подготовка |
| Используется для обозначения заголовка цикла |
Решение |
| Используется для обозначения оператора условного перехода или оператора выбора (варианта) |
Предопределен-ный процесс |
| Отображает предопределенный процесс, состоящий из одной или нескольких операций, которые определены, например, в подпрограмме или модуле. Обычно используется для обозначения подпрограмм. |
Соединитель |
| Отображает выход в часть схемы и вход из другой части этой же схемы и используется для обрыва линии и продолжения ее в другом месте. |
Линия |
| Отображает поток данных или управления. Направления слева направо и снизу вверх обозначаются стрелками. Используется для соединения символов в алгоритме |
Комментарий |
| Используется для добавления описательных комментариев или пояснительных записей с целью объяснений или примечаний. |
Примечание – символы могут быть вычерчены в любой ориентации, но предпочтительной является горизонтальная. Внутрь символа помещают обозначения или описания операций. Символы ГСА могут быть отмечены идентификаторами или порядковыми номерами. |
Приложение В
Основные элементы языка Турбо Паскаль
Таблица В1 – Список зарезервированных слов
ABSOLUTE | Downto | In | Or | Then |
And | Else | Inherited | Packed | To |
Array | End | Inline | Private | Type |
Asm | External | Interface | Procedure | Unit |
Assembler | Far | Interrupt | Program | Until |
Begin | File | Label | Public | Uses |
Case | For | Mod | Record | Var |
Const | Forward | Near | Repeat | Virtual |
Constructor | Function | Nil | Set | While |
Destructor | Goto | Not | Shl | With |
Div | If | Object | Shr | XOR |
Do | Implementation | Of | String |
Таблица B2 – Перечень операций языка
Операции | Действие | Тип результата | |||||
Арифмети-ческие | + | Сложение | Целый или вещественный | ||||
- | Вычитание | ||||||
* | Умножение | ||||||
/ | Деление | Вещественный | |||||
Div | Целочисленное деление | Целый | |||||
Mod | Остаток от деления | Целый | |||||
Операции сравнения | = | Равенство | Логический | ||||
<> | Неравенство | ||||||
< | Меньше | ||||||
> | Больше | ||||||
<= | Меньше или равно | ||||||
>= | Больше или равно | ||||||
Логические | Not | Отрицание | Логический | ||||
Or | Дизъюнкция | ||||||
And | Конъюнкция | ||||||
Xor | Исключающее ИЛИ | ||||||
Таблица В3 - Типы переменных (целые и действительные числа)
Целые числа | Действительные числа | ||
Формат | Диапазон значений | Формат | Диапазон значений |
shortint | -128 ¸ 127 | real | 2.9E-39 ¸1.7E+38 |
integer | -32768 ¸ 32767 | single | 1.5E-45 ¸3.4E+38 |
longint | -2147483648 ¸ 2147483647 | double | 5.0E-324 ¸1.7E+308 |
byte | 0 ¸ 255 | extended | 3.4E-4932 ¸ 1.1E+4932 |
word | 0 ¸ 65 535 |
|
|
Приложение С
Структура простейшей Паскаль-программы и встроенные функции языка
Таблица С1 – Структура простейшей программы
Части | Раздел | Обозначение в программе |
Описа-тельная | Заголовок программы | Program Primer; |
Объявление меток | Label 1,2,x1; | |
Объявление констант | Const a=3.5; b=5; | |
Объявление переменных | Var y,z:real; i:integer; | |
Исполни-тельная | Начало главной программы | Begin |
{Ввод исходных данных}; {Обработка исходных данных}; {Вывод результата}; | ||
Конец программы | End. |
Таблица С2 - Некоторые встроенные функции языка Паскаль
Математическая запись или ее назначение | Запись на Паскале |
sin x, x – в радианах | Sin(x) |
cos x, x – в радианах | Cos(x) |
arctg x | Arctan(x) |
ln x – значение натурального логарифма | Ln(x) |
ex или exp(x) | Exp(x) |
- абсолютное значение величины х | Abs(x) |
, x>=0 | Sqrt(x) |
x2 | Sqr(x) |
дробная часть числа х | Frac(x) |
целая часть числа х, получаемая путем отбрасывания дробной части | Trunc(x) |
целая часть числа х, получаемая путем округления до ближайшего меньшего целого | Int(x) |
целая часть числа х, получаемая путем округления до ближайшего большего целого по абсолютной величине | Round(x) |
случайное число от 0 до х | Random(x) |
случайное число от 0 до 1 | Random |
Выдает значение True, если целое число х нечетно | Odd(x) |
Примечания 1 В Паскале нет операции возведения в произвольную степень n, поэтому используют выражение xn = enlnx. 2 Для получения tg x, ctg x, arcsin x, arccos x, arcctg x, logax могут быть использованы известные математические соотношения. |
Библиография
1 Ю.Аляев, О.Козлов. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: учебно-справочное пособие. – М.: Финансы и статистика, 2004.
2 ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов и программ. Обозначения условные, графические. – М.: Издательство стандартов,1990.
3 С.Немнюгин, Л.Перколаб. Изучаем Turbo Pascal. – СПб.: Питер, 2001.
4 О.А.Меженный.Turbo Pascal: учитесь программировать.- М.:Издательский дом «Вильямс», 2001.
5 Симонович С.В. Информатика. Базовый курс.- СПб.: Питер, 2000.
Содержание
Введение............................................................................................ 3
Лабораторная работа №1. Программирование алгоритмов линейной структуры................................................................................................... 4
Лабораторная работа №2. Программирование алгоритмов разветвленной структуры......................................................................... 8
Лабораторная работа №3. Программирование алгоритмов циклической структуры............................................................................. 15
Приложение А................................................................................... 22
Приложение В................................................................................... 23
Приложение С................................................................................... 24
Приложение D................................................................................... 25
Библиография................................................................................... 29
Дата добавления: 2015-10-21; просмотров: 51 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
| | Задача 1. Имеются данные о деятельности крупнейших компаний США в 1996 г. |