Тема: "Линейные вычислительные процессы. Математические функции. Разработка алгоритмов на линейные вычислительные процессы".
Цель работы:
Получение практических навыков по разработке алгоритмов на линейные вычислительные процессы.
Количество часов на выполнение работы
Продолжительность выполнения данной практической работы составляет 2 академических часа.
Оборудование
Аппаратное обеспечение: персональный компьютер следующей конфигурации:
процессор не ниже Intel i3;
жесткий диском со свободным объемом не менее 1 Гб;
Программное обеспечение:
операционная система Windows 7 / 8 / 8.1 / 10.
установленная среда программирования PascalABC.
Краткие теоретические сведения
Program Prog1;
var a, b : integer;
begin
write ('Введите число ');
readln(a);
b:=a*a;
writeln ('Квадрат этого числа = ',b);
end.
Термины:
var – начало секции описания переменных
a, b, Prog1 – идентификаторы (имена) различных объектов
a, b – переменные целочисленного (integer) типа
integer – целочисленный тип
write, writeln – операторы вывода
readln – оператор ввода
b := a + 1 – оператор присваивания (переменной b присваивается значение выражения a+1)
begin ... end – операторные скобки
Переменная – это величина, которая может менять свое значение. Переменная всегда должна быть явно описана как принадлежащая какому-либо типу данных.
Тип данных – множество значений, которые может принимать объект (чаще всего это переменная) данного типа. Кроме множества значений тип данных задает множество допустимых операций. Например, целочисленный тип integer определяет диапазон целых чисел от –2 147 483 648 до +2 147 483 647, в целочисленных выражениях можно применять операции сложения, вычитания и т.п.
Непосредственные константы – это числа, используемые в арифметических выражениях. Например, в операторе b :=a+1 единица – это непосредственная константа.
Правила записи целых чисел. Целые числа записываются так же, как и в математике.
Цифрам может предшествовать знак "–" или "+" (последнее обычно не нужно). Пробелы между знаком и цифрами, а также между цифрами недопустимы. Примеры правильных записей чисел: 1, 123, –4567, 003, +012.
Оператор – инструкция языка Паскаль. Операторы отделяются точкой с запятой друг от друга. Операторы можно объединить в составной оператор, заключив их в операторные скобки begin ... end.
Оператор присваивания. Оператор присваивания обозначается двумя символами :=, между которыми нет пробела. Слева от знака оператора должна стоять переменная, а справа – выражение. Суть оператора заключается в вычислении выражения и присвоения получившегося значения переменной.
Примеры: a:=2; a:=2+3; a:=b*2+1;
Неправильные примеры: a+1:=a; 2:=b+3;
Очень часто используется оператор вида a:=a+1; Он не содержит ошибки. Вначале берется старое значение переменной, к нему прибавляется единица, и результат записывается в опять в переменную a. Таким образом, этот оператор увеличивает значение переменной a на единицу.
Важно следить, чтобы все переменные, используемые в правой части оператора присваивания были определены к моменту вычисления оператора. В противном случае результат будет непредсказуем.
Существует два способа задать переменной значение: оператор присваивания и оператор ввода (read или readln).
Согласование типов в операторе присваивания. Общее правило таково: тип выражения в правой части оператора присваивания должен совпадать с типом переменной в левой части оператора присваивания. Т.е. если переменная имеет тип integer, то справа должно быть выражение, значение которого есть также целое число.
Арифметическое выражение – целочисленное арифметическое выражение состоит из переменных, констант, знаков операций, скобок и вызовов функций. Правила построения выражения очень похожи те, которые употребляются в математике, за исключением деления, для которого существуют две операции, обозначаемые ключевыми словами div и mod. Надо запомнить, что знак операции умножения * никогда не опускается в отличие от алгебры. Операции имеют обычный приоритет: умножение и деление выполняется раньше, чем сложение и вычитание. Вычисление функций (см. далее) выполняется еще раньше. В остальном операции выполняются слева направо. Для изменения порядка операций используются круглые скобки. Уровень вложенности скобок не ограничен.
Кроме бинарных операций в Паскале используются унарные операции – и + (в последнем особого смысла нет). Например, в выражении –2*(–a–b) минус перед переменной a является унарной операцией, а минус перед двойкой может рассматриваться и как унарная операция и как запись отрицательной константы.
При выполнении оператора присваивания следует следить за тем, чтобы значение целочисленного выражения не вышло за допустимый диапазон целого числа. Например, если переменная a имеет тип word, то в операторе a:=512*128; произойдет ошибка, так как значение выражения является 65536, а это число больше верхней границы типа word. Отметим, что если бы переменная a описана как integer, то оператор a:=512*128; является допустимым. Без особой необходимости не следует использовать типы byte и word.
Консольный ввод/вывод – исторически самый «древний» способ диалога с компьютером. У первых ЭВМ консоль – это электрическая пишущая машинка, подключенная к компьютеру, печатающая на рулонной бумаге (как факс). Оператор мог вводить информацию в компьютер, завершая команду нажатием клавиши перевода строки (Enter). Компьютер отвечал, заставляя консоль печатать цифры и символы. Несмотря на простоту такого интерфейса, он весьма эффективен и до сих пор используется в самых современных операционных системах. В Windows-системах консоль обычно представляет текстовое окно шириной 80 символов, а высотой 25 символов. При достижении ввода или вывода последней строки все строки скроллируются на одну позицию вверх, а первая строка исчезает.
Операторы вывода – write и writeln выводят заданную информацию на консоль.
Оператор writeln после этого еще и переводит курсор на следующую строку (при достижении последней строки осуществляется скроллинг). Операторы могут иметь произвольное число аргументов, разделенных запятыми. В качестве аргументов могут выступать буквальные константы (например, строки символов) и переменные стандартных типов (в т.ч. и целочисленные).
Пример: write ('Текстовая строка'); writeln (a,b);
Форматы вывода. В операторах write и writeln можно указывать формат, определяющий число позиций, используемых для вывода целого числа на экран, например: writeln ('Ответ ',a:5);
Это означает, что для вывода значения, хранящегося в переменной a следует зарезервировать 5 символов, т.е. если число будет не пятизначным, то при выводе оно будет дополнено слева пробелами. Если число «не помещается» в формат, он будет автоматически «растянут», так чтобы число «влезло».
Оператор ввода – read, readln. Оператор read при чтении данных с консоли используется крайне редко, в основном используется оператор readln. Параметры оператора – только переменные и только стандартных типов, возможно использование оператора вообще без аргументов для создания ситуации ожидания нажатия клавиши Enter. По оператору readln программа приостанавливает свою работу, ожидая ввода данных от пользователя. Пользователь набирает желаемые значения переменных, разделяя их пробелами (или Enter) и нажимает Enter. Оператор интерпретирует введенные символы, переводя их во внутреннее (машинное) представление соответствующих переменных. Если это не удается (например, вместо целого числа введены буквы), программа аварийно завершает свою работу.
Пример: readln (a,b);
Недопустимо : readln (a+3);
Для того чтобы пользователь знал что «хочет» ввести программа, полезно перед оператором readln выводить подсказку с помощью оператора write или writeln.
Например:
write ('Введите количество учеников в классе ');
readln (n);
Обратите внимание на пробел перед вторым апострофом. Он сделан для того, чтобы ввод пользователя отделялся от подсказки.
Встроенные функции – в языке Pascal предусмотрено большое число различных встроенных функций. Функции можно применять в выражениях, аргумент(ы) функции всегда заключаются в скобки, например: x:=x-abs (x). Функции требуют аргументы определенных типов (например, целого типа) и возвращают значение также определенного типа (может не совпадать с типом аргумента). Ниже приведен список арифметических функций, имеющих целочисленный аргумент .
sqr(n) - возвращает квадрат аргумента. Необходимо помнить о диапазоне возвращаемого значения.
abs(n) - возвращает модуль (абсолютное значение) числа.
pred(n) - возвращает значение, на единицу меньшее аргумента.
succ(n) - возвращает значение, на единицу большее аргумента.
odd(n) - возвращает TRUE, если аргумент нечетный, иначе – FALSE
even(n) - возвращает TRUE, если аргумент четный, иначе – FALSE
chr(n) - возвращает символ (тип char) с кодом n.
random(n) - возвращает случайное число в диапазоне от 0 до n-1.
Задания по практической работе
Дана сторона квадрата a. Найти его периметр P = 4·a.
Дана сторона квадрата a. Найти его площадь S = a2.
Даны стороны прямоугольника a и b. Найти его площадь S = a·b и периметр P = 2·(a + b).
Дан диаметр окружности d. Найти ее длину L = π·d. В качестве значения π использовать 3.14.
Дана длина ребра куба a. Найти объем куба V = a3 и площадь его поверхности S = 6·a2.
Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).
Найти длину окружности L и площадь круга S заданного радиуса R: L = 2·π·R, S = π·R2. В качестве значения π использовать 3.14.
Даны два числа a и b. Найти их среднее арифметическое: (a + b)/2.
Даны два неотрицательных числа a и b. Найти их среднее геометрическое, то есть квадратный корень из их произведения: √a·b.
Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.