Основы программирования. Арифметические выражения. Приоритет арифметических операций Арифметическое выражение состоит из констант, переменных и функций,

Презентация:



Advertisements
Похожие презентации
1 Программирование на языке Паскаль Тема 2. Ветвления.
Advertisements

1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
Pascal Алгоритмы разветвляющейся структуры, программирование на языке Pascal 10 «А» класс.
1 Программирование на языке Паскаль Сложные условия.
1 Программирование на языке Паскаль Тема 3. Сложные условия.
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
1 Прикладное программирование Kafmi21. ru – учеба – заочнику – прикладное программирование.
1 Программирование на языке Паскаль Тема 1. Введение.
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
Арифметические выражения. Выражение - это формальное правило для вычисления некоторого значения. В зависимости от типа значения выражения можно разделить.
1 Переменные Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы. Значение Имя Поместится?
1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
1 Вариант 2. Программа сложное условие program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); and if (x >= 25) and (x = = равно не равно.
Программирование на языке Паскаль Тема 2. Ветвления 1.
1 Программирование на языке Паскаль Тема 1. Введение.
Условный оператор. Проводится соревнование по поеданию пирожков. За 10 минут Вася съел a пирожков, а Коля b пирожков. На командном первенстве они составили.
1 Программирование на языке Паскаль Тема 2. Ветвления © К.Ю. Поляков,
1 Программирование на языке Паскаль Тема 1. Введение Кулебякин В.В.
Ветвления 8 класс. 2 Основные теоретические сведения Примеры решения задач.
Транксрипт:

Основы программирования

Арифметические выражения. Приоритет арифметических операций Арифметическое выражение состоит из констант, переменных и функций, соединённых знаками арифметических операций. Арифметические операции имеют различный приоритет (старшинство). Если в выражении имеются операции разного приоритета, то в первую очередь выполняются более приоритетные операции. Операции одного приоритета выполняются подряд, слева направо.

3 program qq; var a, b: integer; x, y: real; begin a := 5; 10 := x; y := 7,8; b := 2.5; x := 2*(a + y); a := b + x; end. program qq; var a, b: integer; x, y: real; begin a := 5; 10 := x; y := 7,8; b := 2.5; x := 2*(a + y); a := b + x; end. Какие операторы неправильные? имя переменной должно быть слева от знака := целая и дробная часть отделяются точкой нельзя записывать вещественное значение в целую переменную

ПриоритетОперацииНазвание 1 ( )группировка 2 +, знаковые операции 3 *умножение мультипликативные операции /дробное деление divцелочисленное деление modостаток от деления 4 +сложение аддитивные операции -вычитание Арифметические операции

5 Порядок выполнения операций 1)вычисление выражений в скобках 2)умножение, деление, div, mod слева направо 3)сложение и вычитание слева направо z := (5*a+c)/a*(b-c)/ b; x:=(5*c*c-d*(a+b))/((c+d)*(d-2*a));

Обычный знак деления ( / ) в Паскале используется как дробное деление, то есть, делит вещественные числа, и результат деления – вещественное число. Даже если поделить 6 на 3, результат будет не 2, а 2.0, то есть, вещественное число. Кроме дробного деления есть ещё деление без остатка div. Оно работает только с целыми числами, и результат деления – целое число. Остаток игнорируется. Если же, наоборот, нужен остаток от деления, используется операция mod. Например, выражение 20 div 6 даёт 3, а результат выражения 20 mod 6 равен 2. Пробелы в этих выражениях пропускать нельзя. Операция mod будет полезна при определении, делится ли одна величина на другую. Если остаток от деления равен нулю, - значит, делится без остатка.

7 Ручная прокрутка программы program qq; var a, b: integer; begin a := 5; b := a + 2; a := (a + 2)*(b – 3); b := a div 5; a := a mod b; a := a + 1; b := (a + 14) mod 7; end. program qq; var a, b: integer; begin a := 5; b := a + 2; a := (a + 2)*(b – 3); b := a div 5; a := a mod b; a := a + 1; b := (a + 14) mod 7; end. ab ??

Стандартные арифметические функции Кроме операций над числами можно выполнять более сложные действия, называемые арифметическими функциями. Функции, встроенные в Паскаль, называются стандартными. К ним относятся: На ПаскалеВ математикетиппояснение 1abs(x)|x|ц, вмодуль x 2exp(x)e x вэкспонента x 3ln(x) внатуральный логарифм x 4sqr(x)x 2 ц, вквадрат x 5sqrt(x)вквадратный корень из x 6sin(x) всинус x 7cos(x) вкосинус x 8arctan(x)arctg(x)варктангенс x 9int(x) вцелая часть числа x 10trunc(x) ццелая часть x, преобразованная к целому типу 11round(x) цокруглённое до ближайшего целого значение x 12frac(x) вдробная часть числа x 13random вслучайное число в интервале [0; 1) 14random(x) цслучайное целое число в интервале [0; x)

Пояснения к некоторым функциям Функции int и trunc делают одно и то же: отбрасывают дробную часть числа. Только int оставляет его вещественным (например, 13.0), а trunc делает целым. Функция random(x) даёт целое случайное число от 0 до x (не включая x). Пока программа работает, каждое следующее обращение к random даст новое число в этом интервале. Но при следующем запуске программы набор случайных чисел повторится. Чтобы этого избежать, нужно в начале программы поставить команду randomize. Чтобы получить случайные числа не от 0 до x, а в произвольном диапазоне от a до b, нужно использовать формулу: a+random(b-a+1) Простейший пример использования функции в выражении: y:=2*sin(x/2+0.7); Аргумент функции может содержать и другие функции. Например: c:=trunc(sqrt(sqr(a)+sqr(b))) ;

Процедуры инкремента и декремента Кроме функций над целочисленными переменными можно выполнять процедуры увеличения и уменьшения: ПроцедураЧто делаетКак сделать это же 1inc(x)увеличивает x на 1x := x + 1; 2inc(x,12)увеличивает x на 12x := x + 12; 3dec(x)уменьшает x на 1x := x – 1; 4dec(x,12)уменьшает x на 12x := x – 12; По сравнению с присваиванием процедуры inc и dec работают значительно быстрее, но применимы только для переменных целого типа. Кроме того, при больших именах переменных эти процедуры записываются компактнее. Сравните: inc(wozrast); или wozrast:=wozrast+1;

Примеры решения линейных задач Пример 1. Каждый пиксел рисунка занимает 3 байт. Сколько килобайт ( 1 Кбайт = 1024 байт ) требуется для хранения картинки размерами 500х300 пикселов? program risunok; var a,b,v : real; begin a:=500; b:=300; v:=a*b*3/1024; writeln(Потребуется, v:3:1, Кбайт памяти); end. В команде writeln после переменной V стоят две цифры, отделённые двоеточиями. Это – формат числа. Если его не указывать, вещественное число (типа real) будет выведено в формате с фиксированной точкой. В этой записи первое число обозначает точность, то есть, общее количество цифр, оставляемых в числе. Вторая цифра показывает число знаков после десятичной точки (все остальные знаки округляются). В данном случае ответ будет состоять из 3-х цифр, одна из которых будет стоять после точки. Если целая часть числа будет больше, чем две цифры, она, несмотря на формат, выведется полностью. Если меньше, чем число цифр, указанное в формате, перед числом будут добавлены пробелы.

Пример 2. Корова съедает в сутки около 70 кг. травы. Пастбищный сезон длится в среднем 150 суток. Примерная урожайность пастбищных культур 250 ц/га. Какова площадь пастбища, необходимого одной корове на пастбищный сезон? Сколько гектаров понадобится, если в стаде 65 коров? program stado; var t,u,s1,ss,k,m : real; begin m:=70; t:=150; u:=250; k:=65; s1:=u/m*t; {площадь для одной коровы} ss:=s1*k; {площадь для всего стада } writeln(Корове нужно,s1:4:1, Га пастбища); writeln(Стаду нужно,ss:4:1, Га пастбища); end.

Пример 3. Новое колесо выдерживает в среднем оборотов. Радиус колеса 0,5 м. Сколько километров пробежит автомобиль с новыми шинами? program koleso; var maxob,r,km,l : real; begin maxob:=100000; r:=0.5; l:=2*pi*r; {длина окружности колеса} km:=l*maxob; {путь в метрах} km:=km/1000; {путь в километрах} writeln(Автомобиль пройдёт,km:6:2, км.); end.

ВВОД ДАННЫХ С КЛАВИАТУРЫ Обычно программист и пользователь – это разные люди. Не всегда программисту заранее известно, с какими числами придётся работать пользователю. Поэтому вместо присваивания часто используют другой способ занесения чисел в переменные: ввод с клавиатуры. Программист с помощью команды write (или writeln) задаёт пользователю вопрос, а его ответ ожидает с помощью команды readln. После этой команды в скобках указывается переменная, куда должен попасть ответ, введённый с клавиатуры пользователем. write(Сколько Вам лет? ); readln(wozr); Одной командой readln можно ввести и несколько значений. Переменные для этих значений нужно перечислить после readln в скобках через запятую. Пользователь, отвечая на вопрос, должен после каждого числа ставить пробел или нажимать клавишу write(Введите размеры вагона ); readln(a,b,c);

Примеры решения диалоговых задач Пример 1. Какой процент составляет число a от числа b? program procent; var a,b,p:real; begin write(Введите a и b ); readln(a,b); p:=a/b*100; writeln(a:3:1, составляет,p:3:1,% от,b:3:1); end.

Пример 2. Проводится соревнование по поеданию пирожков. За 10 минут Вася съел a пирожков, а Коля b пирожков. На командном первенстве они составили одну команду. За сколько минут эта команда съест с пирожков? program edoki; var a,b,c,t,vv,vk,v:real; begin write(Сколько пирожков съел Вася? ); readln(a); write(Сколько пирожков съел Коля? ); readln(b); write(Сколько пирожков должна съесть команда? ); readln(с); vv:=a/10; {скорость Васи} vk:=b/10; {скорость Коли} v:=vv+vk; {общая скорость} t:=c/v; writeln(Команда справится за,t:3:1, минут); end.

Пример 3. С клавиатуры вводится цена одного килограмма пшеницы в рублях и копейках. Программа должна рассчитать стоимость n килограммов пшеницы и тоже выразить её в рублях и копейках program cena; var cr,ck,n,sr,sk:integer; c,s:real; begin writeln(Введите цену 1 кг. пшеницы:); write(- Рубли: ); readln(cr); write(- Копейки: ); readln(ck); write(Ск. кг. пшеницы надо купить? ); readln(n); c:=cr+ck/100; {Переводим копейки в доли рубля.} s:=c*n; {Стоимость всей пшеницы} sr:=trunc(s); {Целая часть стоимости – рубли} sk:=trunc(frac(s)*100); {Дробн.часть – доли рубля} writeln(Вся пшеница стоит,sr, руб. и,sk, коп.); end.

Домашнее задание: Решить задачи, введя величины, значения которых не заданы по условию, с клавиатуры. 1.Известны периметр и длины двух сторон треугольника. Найти третью. 2.Известны площадь и одна из сторон прямоугольника. Найти вторую. 3.Известна площадь круга. Найти его радиус. 4.Буханку хлеба массой m граммов разделили на одинаковые ломти массой m 1. На всю буханку имеется 200 г. масла. По сколько граммов масла придётся на каждый ломоть хлеба? 5.Известна длина окружности. Найти её радиус.

Оператор условия Программы, в которых каждое следующее действие выполняется после предыдущего, называются линейными. Однако часто встречаются нелинейные программы, в которых порядок действия отличается от порядка расположения команд. Ветвление – участок программы, позволяющий выбрать для исполнения, в зависимости от истинности условия, одну из двух групп команд.

20 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.

21 Вариант 1. Блок-схема начало max:= a; ввод a,b вывод max a > b? max:= b; конец да нет полная форма ветвления блок «решение» Если a = b? ?

22 Вариант 1. Программа max := a ; max := b ; полная форма условного оператора program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); if a > b then begin end else begin end; writeln ('Наибольшее число ', max); end.

23 Условный оператор if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; Особенности: перед else НЕ ставится точка с запятой вторая часть ( else …) может отсутствовать (неполная форма) если в блоке один оператор, можно убрать слова begin и end

24 Что неправильно? if a > b then begin a := b; end else b := a; end; if a > b then begin a := b; end else b := a; end; if a > b then begin a := b; else begin b := a; end; if a > b then begin a := b; else begin b := a; end; if a > b then begin a := b; end; else begin b := a; end; if a > b then begin a := b; end; else begin b := a; end; if a > b then begin a := b; end else b > a begin b := a; end; if a > b then begin a := b; end else b > a begin b := a; end; begin end begin end

25 Вариант 2. Блок-схема неполная форма ветвления начало max:= a; ввод a,b вывод max max:= b; конец да нет b > a?

26 Вариант 2. Программа program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); max := a; if b > a then max := b; writeln ('Наибольшее число ', max); end. неполная форма условного оператора

27 Вариант 2Б. Программа program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); max := b; if ??? then ??? writeln ('Наибольшее число ', max); end. max := a; a > b

28 Что неправильно? if a > b then begin a := b; else b := a; if a > b then begin a := b; else b := a; if a > b then begin a := b; end; else b := a; if a > b then begin a := b; end; else b := a; if a > b then else begin b := a; end; if a > b then else begin b := a; end; if a > b then a := b; else b := a; end; if a > b then a := b; else b := a; end; a := b end a := b if b >= a then b := a; if b >= a then b := a;

29 Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»). Особенность: надо проверить, выполняются ли два условия одновременно. Можно ли решить известными методами? ?

30 Вариант 1. Алгоритм начало ввод x 'подходит' конец да нет x >= 25? да нет x < = 40? 'не подходит'

31 Вариант 1. Программа program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); if x >= 25 then if x

32 Вариант 2. Алгоритм начало ввод x 'подходит' да нет x >= 25 и x

33 Вариант 2. Программа сложное условие program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); if (x >= 25) and (x

34 Сложные условия Простые условия (отношения) >= = Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: not – НЕ (отрицание, инверсия) and – И (логическое умножение, конъюнкция, одновременное выполнение условий) or – ИЛИ (логическое сложение, дизъюнкция, выполнение хотя бы одного из условий) xor – исключающее ИЛИ (выполнение только одного из двух условий, но не обоих) равно не равно

35 Сложные условия Порядок выполнения (приоритет = старшинство) выражения в скобках not and or, xor, >=, =, Особенность – каждое из простых условий обязательно заключать в скобки. Пример if not (a > b) or (c d) and (b a) then begin... end if not (a > b) or (c d) and (b a) then begin... end

36 Истинно или ложно при a := 2; b := 3; c := 4; not (a > b) (a < b) and (b < c) not (a >= b) or (c = d) (a < c) or (b < c) and (b < a) (a c) Для каких значений x истинны условия: (x < 6) and (x < 10) (x 10) (x > 6) and (x < 10) (x > 6) and (x > 10) (x < 6) or (x < 10) (x 10) (x > 6) or (x < 10) (x > 6) or (x > 10) Сложные условия True FALSE (- ; 6) (6; 10) (10; ) (- ; 10) (- ; 6) (10; ) (- ; ) (6; ) x < 6x < 6 x > 10 x < 10 x > 6x > 6 True

37 Задания «4»: Ввести номер месяца и вывести название времени года. Пример: Введите номер месяца: 4 весна «5»: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год», «года» или «лет». Пример: Введите возраст: Вам 24 года Вам 57 лет