Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Какие понятия используют алгоритмические языки?



Каждое понятие алгоритмического языка подразумевает некоторую синтаксическую единицу (конструкцию) и определяемые ею свойства программных объектов или процесса обработки данных.

Понятие языка определяется во взаимодействии синтаксических и семантических правил. Синтаксические правила показывают, как образуется данное понятие из других понятий и букв алфавита, а семантические правила определяют свойства данного понятия

Основными понятиями в алгоритмических языках обычно являются следующие.

Имена (идентификаторы) — употpебляются для обозначения объектов пpогpаммы (пеpеменных, массивов, функций и дp.).

Опеpации. Типы операций:

· аpифметические опеpации +, -, *, / и дp.;

· логические опеpации и, или, не;

· опеpации отношения < , > , < =, > =, =, < > ;

· опеpация сцепки (иначе, " присоединения", " конкатенации" ) символьных значений дpуг с другом с образованием одной длинной строки; изображается знаком " +".

Данные — величины, обpабатываемые пpогpаммой. Имеется тpи основных вида данных: константы, пеpеменные и массивы.

· Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.

Пpимеpы констант:

o числовые 7.5, 12;

o логические да (истина), нет (ложь);

o символьные " А", " +";

o литеpные " abcde", " информатика", " " (пустая строка).

 

· Пеpеменные обозначаются именами и могут изменять свои значения в ходе выполнения пpогpаммы. Пеpеменные бывают целые, вещественные, логические, символьные и литерные.

· Массивы — последовательности однотипных элементов, число которых фиксировано и которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами (одним, в случае одномерного массива, или несколькими, если массив многомерный). Иногда массивы называют таблицами.

Выpажения — пpедназначаются для выполнения необходимых вычислений, состоят из констант, пеpеменных, указателей функций (напpимеp, exp(x)), объединенных знаками опеpаций.

Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, " многоэтажных" дробей и т.д.), что позволяет вводить их в компьютер, последовательно нажимая на соответствующие клавиши клавиатуры.

Различают выражения арифметические, логические и строковые.

· Арифметические выражения служат для определения одного числового значения. Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=p/2 - единице.

· Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения — " истина" или " ложь" (да или нет). Рассмотрим в качестве примера логическое выражение x*x + y*y < r*r, определяющее принадлежность точки с координатами (x, y) внутренней области круга радиусом r c центром в начале координат. При x=1, y=1, r=2 значение этого выражения — " истина", а при x=2, y=2, r=1 — " ложь".

· Значения строковых (литерных) выражений — текcты. В них могут входить литерные константы, литерные переменные и литерные функции, разделенные знаком операции сцепки. Например, А + В означает присоединение строки В к концу строки А. Если А = " куст " , а В = " зеленый" , то значение выражения А+В есть " куст зеленый" .

Операторы (команды). Оператор — это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных. В состав опеpатоpов входят:

· ключевые слова;

· данные;

· выpажения и т.д.

Операторы подpазделяются на исполняемые и неисполняемые. Неисполняемые опеpатоpы пpедназначены для описания данных и стpуктуpы пpогpаммы, а исполняемые — для выполнения pазличных действий (напpимеp, опеpатоp пpисваивания, опеpатоpы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и дp.).

Что такое стандартная функция?

При решении различных задач с помощью компьютера бывает необходимо вычислить логарифм или модуль числа, синус угла и т.д.

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

Таблица стандартных функций школьного алгоритмического языка

Название и математическое обозначение функции Указатель функции
Абсолютная величина (модуль) | х | abs(x)
Корень квадратный   sqrt(x)
Натуральный логарифм ln x ln(x)
Десятичный логарифм lg x lg(x)
Экспонента (степень числа е " 2.72) ex exp(x)
Знак числа x (-1, если х< 0; 0, если x=0; 1, если x> 0) sign x sign(x)
Целая часть х (т.е. максимальное целое число, не превосходящее х)   int(x)
Минимум из чисел х и y   min(x, y)
Максимум из чисел х и y   max(x, y)
Частное от деления целого х на целое y   div(x, y)
Остаток от деления целого х на целое y   mod(x, y)
Случайное число в диапазоне от 0 до х-1   rnd(x)
Синус (угол в радианах) sin x sin(x)
Косинус (угол в радианах) cos x cos(x)
Тангенс (угол в радианах) tg x tg(x)
Котангенс (угол в радианах) ctg x ctg(x)
Арксинус (главное значение в радианах) arcsin x arcsin(x)
Арккосинус (главное значение в радианах) arccos x arccos(x)
Арктангенс (главное значение в радианах) arctg x arctg(x)
Арккотангенс (главное значение в радианах) arcctg x arcctg(x)  
 

В качестве аргументов функций можно использовать константы, переменные и выражения. Например:

sin(3.05) min(a, 5) sin(x) min(a, b) sin(2*y+t/2) min(a+b, a*b) sin((exp(x)+1)**2) min(min(a, b), min(c, d))

 

Каждый язык программирования имеет свой набор стандартных функций.

Как записываются арифметические выражения?

Арифметические выражения записываются по следующим правилам:

· Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.

· Индексы элементов массивов записываются в квадратных (школьный АЯ, Pascal) или круглых (Basic) скобках.

· Для обозначения переменных используются буквы латинского алфавита.

· Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание.

· Операции одного старшинства выполняются слева направо. Например, a/b*c соответствует a/b*c. Однако, в школьном АЯ есть одно исключение из этого правила: операции возведения в степень выполняются справа налево. Так, выражение 2**(3**2) в школьном АЯ вычисляется как 2**(3**2) = 512. В языке QBasic аналогичное выражение 2^3^2 вычислясляется как (2^3)^2 = 64. А в языке Pascal вообще не предусмотрена операция возведения в степень, в Pascal x^y записывается как exp(y*ln(x)), а x^y^z как exp(exp(z*ln(y))*ln(x)).

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

Математическая запись Запись на школьном алгоритмическом языке
  x*y/z
  x/(y*z) или x/y/z
  (a**3+b**3)/(b*c)
  (a[i+1]+b[i-1])/(2*x*y)
  (-b+sqrt(b*b-4*a*c))/(2*a)
(x< 0) sign(x)*abs(x)**(1/5)
  0.49*exp(a*a-b*b)+ln(cos(a*a))**3
  x/(1+x*x/(3+(2*x)**3))

Типичные ошибки в записи выражений:

5x+1 a+sin x ((a+b)/c**3 Пропущен знак умножения между 5 и х Аргумент x функции sin x не заключен в скобки Не хватает закрывающей скобки

Как записываются логические выражения?

В записи логических выражений помимо арифметических операций сложения, вычитания, умножения, деления и возведения в степень используются операции отношения < (меньше), < = (меньше или равно), > (больше), > = (больше или равно), = (равно), < > (не равно), а также логические операции и, или, не.

Примеры записи логических выражений, истинных при выполнении указанных условий.

Условие Запись на школьном алгоритмическом языке
Дробная часть вещественого числа a равна нулю int(a) = 0
Целое число a — четное mod(a, 2) = 0
Целое число a — нечетное mod(a, 2) = 1
Целое число k кратно семи mod(a, 7) = 0
Каждое из чисел a, b положительно (a> 0) и (b> 0)
Только одно из чисел a, b положительно ((a> 0) и (b< =0)) или ((a< =0) и (b> 0))
Хотя бы одно из чисел a, b, c является отрицательным (a< 0) или (b< 0) или (c< 0)
Число x удовлетворяет условию a< x< b (x> a) и (x< b)
Число x имеет значение в промежутке [1, 3] (x> =1) и (x< =3)
Целые числа a и b имеют одинаковую четность ((mod(a, 2)=0) и (mod(b, 2)=0) или ((mod(a, 2)=1) и (mod(b, 2)=1))
Точка с координатами (x, y) лежит в круге радиуса r с центром в точке (a, b) (x-a)**2+(y-b)**2< r*r
Уравнение ax^2+bx+c=0 не имеет действительных корней b*b-4*a*c< 0
Точка (x, y) принадлежит первому или третьему квадранту ((x> 0) и (y> 0)) или ((x< 0) и (y> 0))
Точка (x, y) принндлежит внешности единичного круга с центром в начале координат или его второй четверти (x*x+y*y> 1) или ((x*x+y*y< =1) и (x< 0) и (y> 0))
Целые числа a и b являются взаимнопротивоположными a = -b
Целые числа a и b являются взаимнообратными a*b = 1
Число a больше среднего арифметического чисел b, c, d a> (b+c+d)/3
Число a не меньше среднего геометрического чисел b, c, d a> =(b+c+d)**(1/3)
Хотя бы одна из логических переменных F1 и F2 имеет значение да F1 или F2
Обе логические переменые F1 и F2 имеют значение да F1 и F2
Обе логические переменые F1 и F2 имеют значение нет не F1 и не F2
Логическая переменная F1 имеет значение да, а логическая переменная F2 имеет значение нет F1 и не F2
Только одна из логических переменных F1 и F2 имеет значение да (F1 и не F2) или (F2 и не F1)

Упражнения

7.1. Запишите по правилам алгоритмического языка выражения:

a)   e)  
б)   ж)  
в)   з)  
г)   и)  
д)   к)  


[ Ответ ]

7.2. Запишите в обычной математической форме арифметические выражения:

а) a/b**2; б) a+b/c+1; в) 1/a*b/c; г) a**b**c/2; д) (a**b)**c/2; е) a/b/c/d*p*q; ж) x**y**z/a/b; з) 4/3*3.14*r**3; и) b/sqrt(a*a+b); к) d*c/2/R+a**3; л) 5*arctg(x)-arctg(y)/4; м) lg(u*(1/3)+sqrt(v)+z); н) ln(y*(-sqrt(abs(x)))); о) abs(x**(y/x)-(y/x)**(1/3)); п) sqrt((x1-x2)**2+(y1-y2)**2); р) exp(abs(x-y))*(tg(z)**2+1)**x; c) lg(sqrt(exp(x-y))+x**abs(y)+z); т) sqrt(exp(a*x)*sin(x)**n)/cos(x)**2; у) sqrt(sin(arctg(u))**2+abs(cos(v))); ф) abs(cos(x)+cos(y))**(1+sin(y)**2);


[ Ответ ]

7.3. Вычислите значения арифметических выражений при x=1:
а) abs(x-3)/ln(exp(3))*2/lg(10000);
Решение: abs(1-3)=2; ln(exp(3))=3; lg(10000)=4; 2/3*2/4=0.33;

б) sign(sqrt(sqrt(x+15)))*2**2**2;
в) int(-2.1)*int(-2.9)/int(2.9)+x;
г) -sqrt(x+3)**2**(sign(x+0.5)*3)+tg(0);
д) lg(x)+cos(x**2-1)*sqrt(x+8)-div(2, 5);
е) sign(x-2)*sqrt(int(4.3))/abs(min(2, -1));
ж) div(10, x+2)*mod(10, x+6)/max(10, x)*mod(2, 5).
[ Ответ ]

7.4. Запишите арифметические выражения, значениями которых являются:
а) площадь треугольника со сторонами a, b, c (a, b, c> 0) и полупериметром p;
Ответ: sqrt(p*(p-a)*(p-b)*(p-c));

б) среднее арифметическое и среднее геометрическое чисел a, b, c, d;
в) расстояние от точки с координатами (x, y) до точки (0, 0);
г) синус от x градусов;
д) площадь поверхности куба (длина ребра равна а);
е) радиус описанной сферы куба (длина ребра равна а);
ж) координаты точки пересечения двух прямых, заданных уравнениями
a1x+b1y+c1=0 и a2x+b2y+c2=0 (прямые не параллельны).
[ Ответ ]

7.5. Вычислите значения логических выражений:
а) x*x+y*y< =9 при x=1, y=-2
Ответ: да;

б) b*b-4*a*c< 0 при a=2, b=1, c=-2;
в) (a> =1) и (a< =2) при a=1.5;
г) (a< 1) или (a> 1.2) при a=1.5;
д) (mod(a, 7)=1) и (div(a, 7)=1) при a=8;
е) не ((a> b) и (a< 9) или (а*а=4)) при a=5, b=4.
[ Ответ ]

7.6. Запишите логические выражения, истинные только при выполнении указанных условий:
а) x принадлежит отрезку [a, b]
Ответ: (x> =a) и (x< =b);

б) x лежит вне отрезка [a, b];
в) x принадлежит отрезку [a, b] или отрезку [c, d];
г) x лежит вне отрезков [a, b] и [c, d];
д) целое k является нечетным числом;
е) целое k является трехзначным числом, кратным пяти;
ж) элемент ai, j двумерного массива находится на пересечении нечетной строки и четного столбца;
з) прямые a1x+b1y+c1=0 и a2x+b2y+c2=0 параллельны;
и) из чисел a, b, c меньшим является с, а большим b;
к) среди чисел a, b, c, d есть взаимно противоположные;
л) среди целых чисел a, b, c есть хотя бы два четных;
м) из отрезков с длинами a, b, c можно построить треугольник;
н) треугольники со сторонами a1, b1, c1 и a2, b2, c2 подобны;
о) точка с координатами (x, y) принадлежит внутренней области треугольника с вершинами A(0, 5), B(5, 0) и C(1, 0);
п) точка с координатами (x, y) принадлежит области, внешней по отношению к треугольнику с вершинами A(0, 5), B(1, 0) и C(5, 0);
р) четырехугольник со сторонами a, b, c и d является ромбом.
[ Ответ ]

7.7. Начертите на плоскости (x, y) область, в которой и только в которой истинно указанное выражение. Границу, не принадлежащую этой области, изобразите пунктиром.

а) (x< =0) и (y> =0) Ответ: е) ((x-2)**2+y*y< =4) и (y> x/2) Ответ:
б) (x> =0) или (y< =0) в) x+y> =0 г) (x+y> 0) и (y< 0) д) abs(x)+abs(y)> =1 ж) (x*x+y*y< 1) и (y> x*x); з) (y> =x) и (y+x> =0) и (y< =1); и) (abs(x)< =1) и (y< 2); к) (x**2+y**2< 4) и (x**2+y**2> 1);


[ Ответ ]

7.8. Запишите логическое выражение, которое принимает значение " истина" тогда и только тогда, когда точка с координатами (x, y) принадлежит заштрихованной области.

     
     
     


[ Ответ ]

7.9. Пусть a=3, b=5, c=7. Какие значения будут иметь эти переменные в результате выполнения последовательности операторов:
а) a: =a+1; b: =a+b; c: =a+b; a: =sqrt(a)
Решение: a=3+1=4, b=4+5=9, c=4+9=13, a= {корень из}4 =2.
Ответ: а=2, b=9, c=13;
б) с: =a*b+2; b: =b+1; a: =c-b**2; b: =b*a;
в) b: =b+a; c: =c+b; b: =1/b*c;
г) p: =c; c: =b; b: =a; a: =p; c: =a*b*c*p;
д) c: =a**(b-3); b: =b-3; a: =(c+1)/2*b; c: =(a+b)*a;
е) x: =a; a: =b; b: =c; c: =x; a: =sqrt(a+b+c+x-2);
ж) b: =(a+c)**2; a: =lg(b**2)**2; c: =c*a*b.
[ Ответ ]

7.10. Задайте с помощью операторов присваивания следующие действия:
а) массив X=(x1, x2) преобразовать по правилу: в качестве x1 взять сумму, а в качестве х2 — произведение исходных компонент;
Решение: c: =x[1]; x[1]: =x[1]+x[2]; x[2]: =c*x[2]
б) поменять местами значения элементов массива X=(x1, x2);
в) в массиве A(N) компоненту с номером i (1< i< N) заменить полусуммой исходных соседних с нею компонент, соседнюю справа компоненту заменить на нуль, а соседнюю слева компоненту увеличить на 0.5;
г) u=max(x, y, z)+min(x-z, y+z, y, z);
[ Ответ ]

7.11. Задайте с помощью команд если или выбор вычисления по формулам:

a)  
б)  
в) где
г)  
д)  
е)  
ж)   если точка лежит внутри круга радиусом r (r> 0) с центром в точке (a, b) в противном случае


[ Ответ ]

7.12. Постройте графики функций y(x), заданных командами если:

а) если x< =-1 то y: =1/x**2 иначе если x< =2 то y: =x*x иначе y: =4 всевсе в) если x< -0.5 то y: =1/abs(x) иначе если x< 1 то y: =2 иначе y: =1/(x-0.5) всевсе
Решение г) если x< 0 то y: =1 иначе если x< 3.14 то y: =cos(x) иначе y: =-1 всевсе
б) если x< -5 то y: =-5 иначе если x< 0 то y: =x иначе если x< 3 то y: =2*x иначе y: =6 все всевсе д) если abs(x)> 2 то y: =x*x иначе если x< 0 то y: =-2*x иначе если x> =1 то y: =4 иначе y: =4*x*x все всевсе


[ Ответ ]

7.13. Определите значение целочисленной переменной S после выполнения операторов:

а) S: =128нц для i от 1 до 4 S: =div(S, 2)кц Решение
i S
 
128/2=64
64/2=32
32/2=16
16/2=8

Ответ: S=8

г) S: =0нц для i от 1 до 2 нц для j от 2 до 3 S: =S+i+j кцкц Решение
i j S
   
0+1+2=3
  3+1+3=7
7+2+2=11
  11+2+3=16

Ответ: S=16

б) S: =1; a: =1нц для i от 1 до 3 S: =S+i*(i+1)*a a: =a+2кц д) нц для i от 1 до 3 S: =0 нц для j от 2 до 3 S: =S+i+j кц кц
в) S: =1; a: =1нц для i от 1 до 3 S: =S+i нц для j oт 2 до 3 S: =S+j кцкц е) нц для i от 1 до 2 S: =0 нц для j oт 2 до 3 нц для k oт 1 до 2 S: =S+i+j+k кц кцкц


[ Ответ ]

7.14. Определите значение переменной S после выполнения операторов:

а) i: =0; S: =0нц пока i< 3 i: =i+1; S: =S+i*iкц г) S: =0; N: =125нц пока N> 0 S: =S+mod(N, 10) | S — сумма цифр N: =div(N, 10) | числа Nкц
Решение
Условие i < 3 i S
 
0 < 3? да 0+12=1
1 < 3? да 1+22=5
2 < 3? да 5+32=14
3 < 3? нет(кц)    

Ответ: S=14

Решение
Условие N > 0 S N
 
125 > 0? да 0+5=5 12
12 > 0? да 5+2=7 1
1 > 0? да 7+1=8 0
0 > 0? нет (кц)    

Ответ: S=8

б) S: =0; i: =1нц пока i> 1 S: =S+1/i i: =i-1 кц д) а: =1; b: =1; S: =0; нц пока a< =5 a: =a+b; b: =b+a; S: =S+a+bкц
в) S: =0; i: =1; j: =5нц пока i< j S: =S+i*j i: =i+1 j: =j-1кц е) a: =1; b: =1нц пока a+b< 10 a: =a+1 b: =b+aкц S: =a+b


[ Ответ ]

7.15. Составте алгоритмы решения задач линейной структуры (условия этих задач заимствены из учебного пособия В.М. Заварыкина, В.Г. Житомирского и М.П. Лапчика " Основы информатики и вычислительной техники", 1989):

а) в треугольнике известны три стороны a, b и c; найти (в градусах) углы этого треугольника, используя формулы:

    С=180o-(А+В).

Пояснение. Обратите внимание на то, что стандартные тригонометрические функции arccos и arcsin возвращают вычисленное значение в радианной мере.
Решение:

алг Углы треугольника(арг вещ a, b, c, рез вещ UgolA, UgolB, UgolC)нач вещ RadGr, UgolARad | RadGr — коэф. перевода угла из радианной меры в градусную | UgolARad — угол A (в радианах) RadGr: =180/3.14 UgolARad: =ArcCos((b*b+c*c-a*a)/(2*b*c)) UgolA: =UgolARad*RadGr UgolB: =ArcSin(b*sin(UgolARad)/a)*RadGr UgolC: =180-(UgolA+UgolB)кон

б) в треугольнике известны две стороны a, b и угол C (в радианах) между ними; найти сторону c, углы A и B (в радианнах) и площадь треугольника, используя формулы:


с2 = a2 + b2 - 2ab cos C.

Пояснение. Сначала нужно найти сторону c, а затем остальные требуемые значения;

в) в треугольнике известны три стороны a, b и c; найти радиус описанной окружности и угол A (в градусах), используя формулы:

где

г) в правильной треугольной пирамиде известны сторона основания a и угол A (в градусах) наклона боковой грани к плоскости основания; найти объем и площадь полной поверхности пирамиды, используя формулы:

V=Socн· H/2;  
где    
     

д) в усеченном конусе известны радиус оснований R и r и угол A (в радианах) наклона образующей к поверхности большого основания; найти объем и площадь боковой поверхности конуса, используя формулы:

   
где    
     

e) в правильной четырехугольной пирамиде сторона основания равна a, а боковое ребро наклонено к плоскости основания под углом A; найти объем и площадь полной поверхности пирамиды и площадь сечения, проходящего через вершину пирамиды и диагональ основания d; использовать формулы:

   
   


[ Ответ ]

7.16. Составте алгоритм решения задач развлетвляющейся структуры:

а) определить, является ли треугольник с заданными сторонами a, b, c равнобедренным;
Решение:

алг Треугольник(арг вещ a, b, c, рез лог Otvet) дано | a> 0, b> 0, c> 0, a+b> c, a+c> b, b+c> a надо | Otvet = да, если треугольник равнобедренный | Otvet = нет, если треугольник не равноведренныйнач если (a=b) или (a=c) или (b=c) то Otvet: = да иначе Otvet: = нет всекон

б) определить количество положительных чисел среди заданных чисел a, b и c;

в) меньшее из двух заданных неравных чисел увеличить вдвое, а большее оставить без изменения;

г) числа a и b — катеты одного прямоугольного треугольника, а c и d — другого; определить, являются ли эти треугольники подобными;

д) данны три точки на плоскости; определить, какая из них ближе к началу координат;

е) определить, принадлежит ли заданная точка (x, y) плоской фигуре, являющейся кольцом с центром в начале координат, с внутренним радиусом r1 и внешним радиусом r2;

ж) упорядочить по возрастанию последовательность трех чисел a, b и c.
[ Ответ ]


Поделиться:



Последнее изменение этой страницы: 2017-05-05; Просмотров: 182; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.042 с.)
Главная | Случайная страница | Обратная связь