Правила записи арифметических выражений

Занятие № 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!