Язык программирования TurboPascal
Turbo Pascal. Программирование арифметических выражений
Оператор присваивания
Оператор присваивания является одним из основных операторов любого языка программирования.
Оператор присваивания предназначен для присваивания переменной значения выражения.
Формат оператора присваивания:
В операторе присваивания слева от знака присваивания «:=» записывается переменная, а справа – выражение, численное значение которого присваивается этой переменной.
Выполнение оператора присваивания приведет к вычислению выражения и присваиванию значения выражения переменной.
Обязательным является требование, чтобы выражение и переменная были совместимы по присваиванию.
Например, оператор присваивания
означает, что переменной y присваивается число, полученное в результате вычисления выражения x+h/2 при известных числовых значениях переменных x и h .
Следует обратить внимание, что всем переменным в правой части оператора присваивания ранее уже были присвоены значения предыдущими операторами, например,
Здесь переменной t присваивается значение, которое до этого момента имела переменная t, плюс 1. Если переменная t имела до выполнения этого оператора значение равное 7, то после исполнения оператора t:=t+1 значение переменной будет равно 8.
Арифметические выражения
Арифметические выражения строятся из арифметических констант, переменных, функций и операций над ними.
Правила записи и смысл арифметических выражений в Паскале почти не отличаются от обычной математической записи.
В арифметических выражениях используются следующие операции и соответствующие знаки:
Операция | Знак операции |
Сложение | + |
Вычитание | — |
Умножение | * |
Деление | / |
Деление целых чисел | div |
Остаток от деления целых чисел | mod |
Операции +, -, *, / имеют очевидный смысл. Результатом операции div будет целое значение, равное целой части результата деления первого числа на второе. Результатом операции mod будет целое значение, равное остатку от деления (но не дробной части).
Примеры арифметических операций:
Арифметические операции выполняются в порядке старшинства: сначала вычисление функции, затем умножение, деление, сложение, вычитание.
Если последовательность выполнения операций не определяется их старшинством, действия выполняются слева направо. Желаемый порядок выполнения операций всегда может быть задан соответствующим образом расставленными круглыми скобками. Допускается ставить лишние круглые скобки, если это упрощает чтение формулы.
Рассмотрим арифметическое выражение
В таблице приведен порядок выполнения операций:
№ | Операция | № | Операция |
1 | a*x | 7 | -a*x*x+b/x*c+y |
2 | a*x*x | 8 | c*n |
3 | -a*x*x | 9 | (a-b) |
4 | b/x | 10 | c*n/(a-b) |
5 | b/x*c | 11 | -a*x*x+b/x*c+y-c*n/(a-b) |
6 | -a*x*x+b/x*c |
ЗАМЕЧАНИЕ. Все данные, входящие в арифметическое выражение, должны быть одного типа.
Исключение составляют только константы и переменные целого типа (integer), которые разрешается использовать в выражениях вещественного типа (real). Если в выражении используются данные целого и вещественного типа, результат операции будет вещественного типа. В других случаях необходимо выполнять преобразование данных.
Пример. Пусть переменные x и y описаны следующим образом:
Рассмотрим оператор y:= x+2 , в котором используются переменные целого, вещественного типов и константа. Результат операции будет вещественного типа, поэтому оператор y:=x+2; является допустимым, хотя справа от присваивания стоит целая переменная и константа;
Следующие операторы являются ошибочными:
Для обеспечения совместимости типов необходимо выполнять преобразования данных. Для преобразования Real в Integer имеются две функции:
Round() – округляет Real до ближайшего целого;
Trunc() – усекает Real путем отбрасывания дробной части.
Правильная запись рассматриваемых операторов: x:=y+2; и x:=y/x; имеет вид:
Программируя арифметические выражения, нужно иметь в виду следующие основные правила:
- Два знака арифметических операций нельзя писать рядом. Например, следующие записи будут неправильными:
+–a –b — следует писать +(–a) –b
a*–b — следует писать a*(–b)
- Знак умножения опускать нельзя, например, при записи произведения: a*b и 2*n , запись ab и 2n будет неправильной, так как ab воспринимается как идентификатор, а запись 2n не является идентификатором, потому что начинается с цифры.
- В арифметических выражениях допускается использовать только круглые скобки. Количество открывающих круглых скобок должно соответствовать количеству закрывающих круглых скобок. Применение фигурных и квадратных скобок запрещается, так как они имеют особое значение.
- Все данные, входящие в выражения должны быть одного типа. Если в выражении используются данные целого и вещественного типа, результат операции будет вещественного типа.
В арифметических выражениях могут использоваться различные элементарные функции. В языке Турбо Паскаль существуют стандартные функции. Пользователь может не знать, как вычисляется стандартная функция, ему достаточно правильно записать имя функции и ее аргумент. Наиболее часто используемые стандартные функции приведены в таблице:
Функция | Назначение | ||||||||||||||||
Abs(x) | Абсолютное значение аргумента x | ||||||||||||||||
Sqr(x) | Вычисляет квадрат аргумента x | ||||||||||||||||
Sqrt(x) | Вычисляет квадратный корень аргумента x | ||||||||||||||||
Exp(x) | Возвращает экспоненту аргумента e x (степень числа e=2,72) | ||||||||||||||||
Ln(x) | Вычисляет натуральный логарифм аргумента x | ||||||||||||||||
Pi | Значение числа p=3.1415926 | ||||||||||||||||
Frac(x) | Дробная часть числа x | ||||||||||||||||
Int(x) | Целая часть числа x | ||||||||||||||||
Sin(x) | Синус аргумента x (угол в радианах) | ||||||||||||||||
Cos(x) | Косинус аргумента x (угол в радианах) | ||||||||||||||||
Arctan(x) | Арктангенс аргумента x (угол в радианах) | ||||||||||||||||
Randomize | Инициализация генератора случайных чисел | ||||||||||||||||
Random(x) | Если x отсутствует, то значением функции является случайное число типа real из диапазона 0 x n = exp(n*ln(x)); Примеры записи простых арифметических выражений и операторов присваивания приведены в таблице:
Типичные ошибки в записи выражений: 4x+1 Пропущен знак умножения между 4 и x a+sinx Аргумент x функции sinx не заключен в скобки ((a+b)/sqr(c*7) не хватает закрывающей скобки ЗАДАЧА2 . Вычислить корни квадратного уравнения по известным формулам Предположим, что дискриминант этого уравнения больше нуля и уравнение имеет только действительные корни. Программа нахождения корней уравнения приведена ниже. Программирование арифметических выражений. Составление арифметических выражений на языке программированияСтраницы работыФрагмент текста работыЛЕКЦИЯ №1 ПРОГРАММИРОВАНИЕ АРИФМЕТИЧЕСКИХ ВЫРАЖЕНИЙЦель: научиться составлять арифметические выражения на языке программирования Арифметические выражения образуются из констант, переменных, функций и выражений, заключенных в круглые скобки, которые соединены знаками арифметических операций. Стандартные математические функции Visual Basic приведены в таблице 1. Таблица 1.Стандартные математические функции Visual Basic В Visual Basic существуют следующие виды арифметических операций: ^ – возведение в степень; — и + – присвоение знака числу (унарные операции); \ – целочисленное деление; mod – взятие остатка от деления; + – сложение, — – вычитание. При составлении арифметических выражений необходимо учитывать приоритет выполнения арифметических операций. Наивысший приоритет имеют стандартные математические функции, затем – возведение в степень. После возведения в степень идет присвоение знака числу. Умножение и деление осуществляется после присвоения знака числу. Более низкий приоритет, за умножением и делением, имеют целочисленное деление и взятие остатка от числа. Самый низкий приоритет у вычитания и сложения. Операции в арифметических выражениях выполняются последовательно: слева на право в порядке их приоритета. В ряде случаев, приоритет может быть изменен при помощи скобок. При написании арифметических выражений, как правило, числитель и знаменатель берутся в круглые скобки. Если знаменатель или числитель составляет только одна функция, то скобки можно не ставить. Также скобки не ставятся, когда в числителе присутствуют только операции умножения или деления, что укладывается в естественный ход вычисления выражения: последовательно слева на право. Например, при вычислении выражения F = F=7*x^3*a^2/(5*x^5). Если скобки в знаменателе не поставить, то компилятор Visual Basic разделит числитель на 5, а затем, результат умножит на x^5. В случае, когда арифметическое выражение не помещается в одной строке, то при переходе на следующую строчку следует поставить знак _ и продолжить запись выражения на следующей строке. ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ: Пусть требуется написать арифметическое выражение на языке программирования Visual Basic:
Арифметическое выражение будет иметь следующий вид: F=(X^(3/5)+COS(X)^2-EXP(-7*X+4))/(LOG(ABS(X-7))*X^2-4*SQR(ABS(X))) Более оптимальной для вычислений будет следующая запись: Дело в том, что при возведении X в квадрат, X*X будет работать быстрее, чем X^2. При однократном вычислении эта тонкость останется незаметной для пользователя, но может привести к некоторой задержке выполнения программного кода при многократном повторении в теле цикла с большими значениями его параметра. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВЦель: научиться составлять алгоритмы и программы на языке программирования Visual Basic, содержащие ввод и вывод данных, а также арифметические выражения. Microsoft Visual Basic является объектно-ориентированным языком программирования. Он позволяет достаточно быстро создавать программные продукты, работающие в среде операционных систем семейства Windows. Программирование на Visual Basic состоит из двух основных этапов: Программирование арифметических выражений
Цель работы – научиться составлять программы на языке Паскаль, содержащие операторы ввода-вывода и вычисления значений арифметических выражений. Любая паскаль-программа состоит из заголовка программы и тела програм-мы. Заголовок начинается со служебного слова program, за которым указывается имя программы. Например: Именем может служить любая конечная последовательность букв и цифр,на-чинающаяся обязательно с буквы. Под буквой в этом определении понимается любая из букв латинского алфавита. Большие и малые буквы не различаются и могут употребляться программистом по своему усмотрению, например, для того, чтобы придать тексту прог-раммы большую выразительность. В Паскале имеется ряд зарезервированных (служеб-ных) слов, употребление которых определяется правилами языка. Их нельзя использовать каким-либо другим образом, в том числе, в качестве имен. Список служебных слов: asm file not string array for object then begin function of to const if packed unit constructor implementation procedure until destructor in program uses div inline record var do interface repeat while downto label set with Тело программы состоит из двух основных разделов: раздела объявлений и описаний и раздела операторов. Объявления и описания необходимы для того, чтобы ввести в употребление используемые в программе объекты и дать им индивидуальные имена. Раздел операторов задает те действия, которые должны быть выполнены по данной программе. Он начинается служебным словом begin ,за которым следует последователь-ность операторов, отделенных друг от друга точкой с запятой, и заканчивается служебным словом end, после которого обязательно ставиться точка. В настоящей работе рассмотрим построение простейшей паскаль-програм-мы,использующей константы и переменные стандартных типов integer(целый) и real(ве-щественный),операторы ввода, присваивания и вывода. Стандартные типы данных integer и real связаны с двумя формами представления чисел в языке Турбо-Паскаль: целыми и вещественными. Целые числа в программе запи-сываются в общепринятом виде: без дробной части, со знаком или без него. Например:105, -54,0,-2000.Вещественные значения можно записывать или в форме с фиксированной точкой,например:0.0023,-12.04,+1.0,1500.7, или в форме с плавающей точкой в виде 23Е-4, -0.1204Е2,0.1Е+1,150.07Е1. Над целочисленными значениями, результатом которых также является целое число, в Турбо-Паскале определены следующие операции: + (сложение), — (вычитание), *(умножение), div (целочисленное деление),mod(взятие остатка).В качестве результата операции div принимается целая часть частного от деления двух целых чисел, а операции mod-остаток от деления. Например, 9 div 4 =2; 9 mod 4=1. Над данными вещественного типа определены четыре обычные арифметические операции, результат которых также является вещественным: +(сложение),-(вычитание), *(умножение), / (деление).Результат будет вещественным и в том случае, если один из аргументов в первых трех операциях будет целого типа. При выполнении деления результат имеет вещественный тип и в том случае, когда оба аргумента целые. В Турбо-Паскале имеются стандартные функции, которые всегда дают вещест-венный результат при вещественном или целом аргументе: ln(x)-натуральный логарифм(по основанию e), exp(x)-экспонента(e в степени x), sqrt(x)-квадратный корень из x, pi- число Еще две стандартные функции: abs(x)-абсолютная величина переменной x, sqr(x)-квадрат значения переменной x при целом аргументе дают результат целого типа, а при вещественном- вещественного. Числа в программе являются значениями констант, переменных или функций. Все используемые константы и переменные должны быть описаны в разделе описаний прог-раммы. Описание констант начинается со служебного слова const,после которого, используя разделитель « ; » , перечисляются имена констант и их значения в следующем виде: имя константы = значение константы; Тип константы,integer или real, соответствует типу принимаемого ею значения и, следова-тельно, определяется формой представления правой части в ее описании. Например, описание const n=5; k=-43; a=1.65; b=-6E3; Позволяет использовать в программе четыре константы: две целого типа n,k и две вещественного типа a,b. Значения констант сохраняются в течении всего времени работы программы. В отличие от констант переменные могут изменять свои значения. Описание переменных начинается со служебного слова var, за которым следует одна или несколько разделенных точкой с запятой конструкций вида: список имен переменных:= тип переменной; Здесь список имен переменных— имена переменных, разделенные запятой, тип переменной – в данном случае real или integer. Пример описания переменных: Числа, константы, переменные, обращения к функциям с помощью знаков арифметичес-ких операций и скобок образуют арифметические выражения. Вычисленное значение, как правило, необходимо запомнить для последующего использования. Это может быть выполнено с помощью оператора присваивания, который определяется следующей схемой: где символ := обозначает операцию присваивания. Выполнение оператора присваивания сводится к вычислению значения выражения и последующего присвоения этого значения переменной, стоящей слева. Рассмотрим подробнее правила записи арифметических выражений и выполнения соответствующих операторов присваивания. Переменная, стоящая в левой части оператора, должна иметь тип integer или real. Если переменная имеет тип real ,то арифметическое выражение может определять значение как типа real,так и типа integer. В последнем случае получаемое целочисленное значение автоматически преобразуется в вещественное значение типа real.Если же переменная в левой части имеет тип integer,то арифметическое выражение должно определять значение этого же типа. Введенные ранее арифметические операции разделяются на две категории: мультипликативные *, /, div , mod; аддитивные +, — . Операции в каждой из этих категорий имеют одинаковый ранг( старшинство), но мультипликативные операции имеют более высокий ранг, чем аддитивные, то есть выполняются в первую очередь. Операции одного и того же ранга, если они встречаются в выражении подряд, выполняются в порядке их следования слева направо. Указанный порядок выполнения операций можно изменить с помощью круглых скобок. Части выражения, заключенные в круглые скобки, вычисляются независимо от других операций. Приведем несколько примеров: Математическая запись Запись на Турбо Паскале В языке Паскаль отсутствует операция возведения в степень. Поэтому ее приходится выполнять, используя различные приемы. Так, если показатель степени не слишком большое натуральное число, можно комбинировать умножение и функцию sqr. Например, вычисление a 5 запишется в виде sqr(sqr(a))*a В более общем случае, когда в выражении a b — показатель, и – вещественное число, можно использовать логарифмическое тождество: a b =e b * ln ( a ) и имеющиеся в языке Паскаль стандартные функции expи ln. При этом следует помнить, что логарифмическая функция определена только для положительных аргументов. Например, арифметическое выражение И, наконец, осталось познакомиться с правилами записи операторов ввода и вывода, с помощью которых паскаль – программа общается с пользователем. Ввод данных – это передача информации от внешних устройств в оперативную память. Вводятся, как правило, исходные данные решаемой задачи. Вывод данных – это передача данных из оперативной памяти на внешние носители (печать, дисплей, магнитные устройства и. т. д.). Результаты решения любой задачи должны быть выведены. Основными устройствами ввода-ввода персонального компьютера являются клавиатура и дисплей (экран монитора). Именно через эти устройства, главным образом, осуществляется диалог между человеком и ПК. Процедура ввода с клавиатуры имеет следующий формат: Здесь − это последовательность имен переменных, разделенных запятыми, а read(читать) – оператор обращения к стандартной процедуре ввода. Например: При выполнении этого оператора работа компьютера прерывается, после чего пользователь набирает на клавиатуре значения переменных a, b, c, d, отделяя их друг от друга пробелами. При этом вводимые значения высвечиваются на экране. В конце набора нажимают клавишу . Ввод значений должен выполняться в строгом соответсвии с синтаксисом языка Паскаль. Например, при выполнении ввода в программе на клавиатуре следует набирать Если в программе имеется несколько операторов read,то данные для них вводятся потоком, т.е. после считывания значений переменных для одного оператора readданные для следующего оператора до окончания строки считываются из той же строки на экране, что и для предыдущего затем происходит переход на следующую строку. Например, при выполнении ввода в программе на клавиатуре следует набирать 18758 34 [Enter] 2.62E-02 1.54E+01 [Enter]. Оператор ввода с клавиатуры также может иметь вид Здесь readln(от readline) – считать строку. В отличие от оператора readпосле считывания последнего в списке значений для одного оператора readlnданные для следующего оператора readlnбудут считываться с начала новой строки. Если в предыдущем примере заменить оператора readи readln, т. е. записать ввод значений будет происходить из двух строк: 2. 62E−02 1.54E+01 [Enter] Оператор ввода на экран (обращение к стандартной процедуре вывода) имеет следующий формат: Здесь элементами списка вывода могут быть выражения различных типов (в частности, константы и переменные), например: write( X, Summa, Arg1, Arg2) ; При выводе на экран нескольких чисел в строку они не отделяются друг от друга пробелами, об этом должен позаботиться программист. Пусть, например, I= 1; J= 2; K= 3. Тогда при выполнении оператора на экране получим следующую строку: 1 2 3. Причем после вывода последнего символа курсор останется в той же строке, и следующий ввод на экран будет начинаться с этой позиции курсора. Процедура вывода на экране также может иметь вид: Здесь writeln( от writeline) – записать строку. Действие этого оператора отличается от writeтем, что после вывода последнего в списке значении происходит перевод курсора в начало следующей строки. Оператор writeln, записанный без параметров, выполняет перевод строки. Пример. Дана формула для вычисления значения выражения следующего вида: Написать программу вычисления значения выражения. Будем полагать, что x- переменная, значение которой вводится с клавиатуры, а a ,b- константы, имеющие значения a=1,b=15. Приведем текст программы: 1.Использование и описание констант. 2.Использование и описание переменных. 3.Назначение оператора присваивания и правила записи арифметического выражения. 4.Правила записи операторов ввода и вывода. Задания Составить программу вычисления функции у для нескольких значений xпри некоторых постоянных значениях aи b. Подписаться авторизуйтесь 0 Комментарий Старые |