Правила записи арифметических выражений
Занятие № 18 лекция, практическая работа
Тема: Структура программы на Паскале.
Практическая работа № 8 Программирование линейных алгоритмов
Дидактическая цель: знакомство с основами алгоритмизации и структурного программирования
Литература: Семакин, Информатика, 10 класс, стр. § 14,15, [1] с. 231
Вопросы и задания
1 Внимательно прочитать материал § 14,15
2 Устно ответить на вопросы после параграфов
3 В тетради записать дату и тему занятия.
4 Составить блок-схему и программу на языке Паскаль решения одной из задач задания к работе
Справочная информация
Программирование линейных алгоритмов
Команду алгоритма, записанную на языке программирования, принято называть оператором.
Программа на Паскале близка по своему виду к описанию алгоритма на АЯ. Сравните алгоритм решения уже знакомой вам задачи деления простых дробей с соответствующей программой на Паскале:
Структура программы на Паскале
Заголовок программы начинается со слова Program (программа), за которым следует произвольное имя, придуманное программистом:
Program <имя программы>;
Раздел описания переменных начинается со слова Var (variables — переменные), за которым идет список имен переменных через запятую. Тип указывается после двоеточия. В стандарте языка Паскаль существуют два типа числовых величин: вещественный и целый. Слово integer обозначает целый тип (является идентификатором целого типа). Вещественный тип обозначается словом real. Например, раздел описания переменных может быть таким:
|
|
var a, b: integer; с, d: real;
Идентификаторы переменных составляются из латинских букв и цифр; первым символом обязательно должна быть буква.
Раздел операторов — основная часть программы. Начало и конец раздела операторов программы отмечаются служебными словами begin (начало) и end (конец). В самом конце программы ставится точка:
begin
<операторы>
end.
Операторы ввода, вывода, присваивания
Ввод исходных данных с клавиатуры происходит по оператору read (read — читать) или readln (read line — читать строку):
read(<список переменных>)
или readln(<список переменных>)
При выполнении команды ввода компьютер ожидает действий пользователя. Пользователь набирает на клавиатуре значения переменных в том порядке, в каком переменные указаны в списке, отделяя их друг от друга пробелами. Одновременно с набором данных на клавиатуре они появляются на экране. В конце нажимается клавиша <ВВОД> (<Enter>). Разница в выполнении операторов readln и read состоит в том, что после выполнения ввода по оператору readln экранный курсор перемещается в начало новой строки, а по оператору read этого не происходит.
|
|
Вывод результатов происходит по оператору write (write — писать) или writeln (write line — писать в строку):
write(<список вывода>)
или writeln(<список вывода>)
Результаты выводятся на экран компьютера в порядке их перечисления в списке. Элементами списка вывода могут быть константы, переменные, выражения.
Разница в выполнении операторов writeln и write состоит в том, что после выполнения вывода по оператору writeln экранный курсор перемещается в начало новой строки, а по оператору write этого не происходит.
Арифметический оператор присваивания на Паскале имеет следующий формат:
<числовая переменная>:=<арифметическое выражение>
Арифметическое выражение может содержать числовые константы и переменные, знаки арифметических операций, круглые скобки. Кроме того, в арифметических выражениях могут присутствовать функции.
Знаки основных арифметических операций записываются так:
+ сложение,
- вычитание,
* умножение,
/ деление.
Правила записи арифметических выражений
Запись арифметических выражений на Паскале похожа на обычную математическую запись. В отличие от математики, где часто пропускается знак умножения (например, пишут 2А), в Паскале этот знак пишется обязательно: 2*А. Например, математическое выражение
|
|
А2 + В2 - 12С
на Паскале записывается так:
А*А + В*В - 12*С
Это же выражение можно записать иначе:
SQR(А) + SQR(В) - 12*C
Здесь использована функция возведения в квадрат — SQR. Аргументы функций всегда пишутся в круглых скобках.
Последовательность выполнения операций определяется по их приоритетам (старшинству). К старшим операциям относятся умножение (*) и деление (/). Операции сложения и вычитания — младшие. В первую очередь выполняются старшие операции. Несколько операций одинакового старшинства, записанные подряд, выполняются в порядке их записи слева направо. Приведенное выше арифметическое выражение будет вычисляться в следующем порядке (порядок вычислений указан цифрами сверху):
Круглые скобки в арифметических выражениях влияют на порядок выполнения операций. Как и в математике, в первую очередь выполняются операции в скобках. Если имеется несколько пар вложенных скобок, то сначала выполняются операции в самых внутренних скобках. Например:
Пунктуация Паскаля
Необходимо строгое соблюдение правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации.
|
|
Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, является разделителем описания переменных в разделе переменных и разделителем операторов. Перед словом end точку с запятой можно не ставить.
Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списках вводимых и выводимых величин.
Текст программы заканчивается точкой.
Строгий синтаксис в языке программирования необходим потому, что компьютер является формальным исполнителем программы. Если, допустим, разделителем в списке переменных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Если точка с запятой является разделителем операторов, то в качестве оператора компьютер воспринимает всю часть текста программы от одной точки с запятой до другой. Если программист забыл поставить «;» между какими-то двумя операторами, то компьютер будет принимать их за один с неизбежной ошибкой.
В программу на Паскале можно вставлять комментарии. Комментарий — это пояснение к программе, которое записывается в фигурных скобках. В комментариях можно использовать русские буквы. На исполнение программы комментарий никак не влияет.
Заметим, что в Паскале нет различия между строчными и прописными буквами. Например, для Паскаля тождественны следующие варианты записи: begin, Begin, BEGIN, BeGiN. Использование строчных или прописных букв — дело вкуса программиста.
Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы.
Латинские буквы: от А до Z (заглавные) и от a до z (строчные).
Цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Специальные символы: + - * / = < > [ ] . , ( ) : ; { } ^ @ $ #.
Следующие комбинации специальных символов являются едиными символами (их нельзя разделять пробелами):
Пробелы — символ пробела (код ASCII 32) и все управляющие символы кода ASCII (от 0 до 31).
Служебные слова. К спецсимволам относятся и служебные слова, смысл которых определен однозначно. Служебные слова не могут быть использованы для других целей. С точки зрения языка, они являются едиными элементами алфавита. Вот некоторые служебные слова: Program, Var, array, If, Do, While и др.
Идентификаторы. Идентификатором называется символическое имя определенного программного объекта. Такими объектами являются: имена констант, переменных, типов данных, процедур и функций, программ. Идентификатор — это любая последовательность букв и цифр, начинающаяся с буквы. К буквам приравнивается также знак подчеркивания. Длина идентификатора может быть произвольной, но значащими являются только первые 63 символа.
Комментарии. Следующие конструкции представляют собой комментарии и поэтому пропускаются компилятором
{любой текст, не содержащий символ "фигурная скобка"}
(* любой текст, не содержащий символы "звездочка, круглая скобка"*)
//последующий текст до конца строки
Буквы русского алфавита употребляются только в комментариях, символьных и текстовых константах.
Линейная программа. Следование — простейшая алгоритмическая структура. Программа, реализующая следование, называется линейной программой. В линейной программе могут присутствовать только операторы присваивания, ввода, вывода и обращения к процедурам. Заметим, что операторы Read и Write являются обращениями к стандартным процедурам Паскаля.
Одним из обязательных условий хорошего стиля программирования является организация диалога между компьютером и пользователем. Такое диалоговое взаимодействие называется интерактивным интерфейсом.
Пример 1. Составим линейную программу, по которой в диалоге будут вводиться два целых числа и вычисляться их произведение.
Тестирование этой программы отразится на экране следующим образом.
А= 13
В= 28
13*28=364
Числа 13 и 28 вводятся пользователем с клавиатуры, всё остальное автоматически выводится по программе.
Пример 2. Дано натуральное трехзначное число. Требуется вычислить сумму его цифр. Например, если дано число 325, то в результате должно получиться: 3 + 2 + 5 = 10.
Сначала составим программу, а потом ее прокомментируем.
В этой программе использованы две операции целочисленной арифметики: div — целочисленное деление и mod — остаток от целочисленного деления (см. табл. 3.3). Остаток от деления на 10 (mod) выделяет младшую цифру числа, а целочисленное деление на 10 (div) отбрасывает младшую цифру.
Чтобы лучше понять работу программы, выполним ее трассировку. Для программы SumCifr таблица будет выглядеть следующим образом:
Выполнение программы на компьютере приводит к такому же результату.
Заметим, что эту задачу можно решить с помощью всего одного оператора присваивания:
Sum: = Х mod 10 + X div 10 mod 10 + X div 100
Проверьте самостоятельно.
Вопросы и задания
1. Назовите последовательность действий при выполнении оператора присваивания.
2. Сформулируйте правило соответствия типов для оператора присваивания. Какое существует исключение из этого правила?
3. Если у — вещественная переменная, а n — целая, то какие из следующих операторов присваивания правильные, а какие — нет?
4. Напишите линейную программу, в результате выполнения которой целочисленные переменные х и у обменяются значениями. При этом нельзя использовать дополнительные переменные. Найдя такой алгоритм, определите, в чем его недостаток по сравнению с методом обмена через третью переменную. Можно ли его применять для вещественных чисел?
5. Напишите оператор присваивания, в результате выполнения которого целочисленной переменной h присвоится значение цифры, стоящей в разряде сотен в записи положительного целого числа k (например, если k = 28 796, то h = 7).
6. Напишите линейную программу, в результате выполнения которой в целочисленной переменной S получится перевернутое целое четырехзначное число k. Например: если k = 1357, то S = 7531.
7. Напишите линейную программу перевода любого целого четырехзначного двоичного числа в десятичную систему счисления. Например, дано число в двоичной системе счисления: 11012. Перевод в десятичную систему выполняется так: 1 • 23 + 1 • 22 + 0 • 21 + 1 = 13.
Линейным называется алгоритм, все действия которого выполняются строго последовательно.
Рассмотрим задачу 1. Найдите сумму и произведение трех введенных с клавиатуры чисел.
Входные данные: 1 2 3.
Выходные данные: S=6, P=6.
Обратите внимание на структуру линейного алгоритма.
Алгоритм решения задачи:
1. Постановка задачи. Внимательное прочтение задачи.
2. Определение цели моделирования. Анализ объекта моделирования.
Дано: 3 числа, вводимые с клавиатуры. Определение типов переменных.
Найти: сумму и произведение введенных чисел.
3. Формализация. Запись алгоритма с помощью блок-схемы.
4. Разработка компьютерной модели. Написание программы с подробным комментарием.
5. Компьютерный эксперимент. Тестирование программы в среде TP.
6. Использование результатов моделирования для принятия решений.
7. Анализ полученных результатов.
Program pr1
Var
a,b,c,S,P: integer;
Begin
writeln ('vvedite 3 chisla');
readln (a,b,c);
S:=a+b+c;
writeln ('S=', S);
P:=a*b*c;
writeln ('P=', P);
readln;
End.
Задача 2 Даны длины двух катетов прямоугольного треугольника. Определить периметр этого треугольника.
Обсудим путь решения задачи:
1. Что дано в задаче? (длины 2 катетов)
2. Что надо найти? (периметр треугольника)
3. Какие могут быть введенные значения переменных? (введенные переменные могут быть и целыми, и вещественными, результат: только вещественный).
4. Как найти периметр треугольника? (сумма всех сторон)
5. Чего не хватает? (третьей стороны - гипотенузы)
6. Как найти? (по теореме Пифагора с2=a2+b2).
7. Как выглядит искомая формула на языке TP для нахождения периметра без ввода вспомогательных переменных? (P:=a+b+sqrt(sqr(a)+sqr(b)).
8. Как вывести результат привычным числом для пользователя? (с помощью форматированного вывода
Program pr2;
Var a,b,P: real;
Begin
writeln ('vvedite a,b');
readln (a,b); P:=a+b+sqrt(sqr(a)+sqr(b));
writeln ('P=', P:6:2);
readln;
End.
Практическая работа № 8 "Программирование линейных алгоритмов"
Задание
Для каждой вычислительной задачи составить программу, содержащую операторы ввода, вывода, присваивания.
Уровень 1
1. Вычислить длину окружности и площадь круга одного и того же заданного радиуса R.
2. Вычислить расстояние между двумя точками с данными координатами на плоскости (х1, у1) и (х2, у2).
3. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.
4. Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление всей цепи.
5. Найти сумму членов арифметической прогрессии, если известны ее первый член, разность и число членов прогрессии.
6. Вычислить корни квадратного уравнения ах2 + bх + с = О с заданными коэффициентами а, b и с (предполагается, что а ≠ О и что дискриминант уравнения неотрицателен).
7. Найти площадь равнобедренной трапеции с основаниями а и b и углом α при большем основании а.
Уровень 2
8. Заданы координаты трех вершин треугольника (x1, у1), (х2, у2), (x3, у3). Найти его периметр и площадь.
9. Найти произведение всех цифр заданного четырехзначного числа.
10. Вычислить площадь и периметр правильного N-угольника, описанного около окружности радиуса R (рассмотреть N — целого типа, R — вещественного типа).
11. Дано натуральное число Т — длительность прошедшего времени в секундах. Вывести данное значение длительности в часах (НН), минутах (ММ) и секундах (SS) в следующей форме: НН ч ММ мин SS с.
12. Дано действительное число R вида nnn.ddd (три цифровых разряда в целой и дробной частях). Поменять местами дробную и целую части числа и вывести полученное значение числа.
13. Составить программу перевода радианной меры угла в градусы, минуты и секунды.
14. С начала суток часовая стрелка повернулась на у градусов (О ≤ у < 360, у — вещественное число). Определить число полных часов и полных минут, прошедших с начала суток. Сформулировать и решить обратную задачу.
Уровень 3
15. Дан произвольный треугольник ABC, для которого определен следующий набор характерных параметров: а, b, с — стороны треугольника; α, β, γ — углы (в градусах); h — высота, опущенная на сторону с; S — площадь; Р — периметр треугольника. По трем заданным параметрам вычислить все остальные. Различные сочетания параметров определяют варианты заданий.
Замечание: входные (исходные) и выходные значения углов представить в градусной мере.
https://xn----7sbbfb7a7aej.xn--p1ai/informatika_10_sim/informatika_materialy_zanytii_10_33_35.html
Обратная связь: выполненные задания, вопросы отправляем в комментариях или личные сообщения преподавателю или на электронную почту колледжа dktidistanc@mail.ru
Дата добавления: 2020-11-23; просмотров: 492; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!