Локальные и глобальные идентификаторы
Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
Основные правила работы с глобальными и локальными именами можно сформулировать так:
- Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
- Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
Оглавление - содержание
Лабораторная работа № 17
Использование подпрограмм при программировании
На языке Паскаль
Подпрограммы процедуры и функции представляют собой важный инструмент ТР, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций):они представляют собой во многом самостоятельные фрагменты программы, связанные с основной программой лишь с помощью нескольких параметров. Самостоятельность процедур (функций) позволяет локализовать в них все детали программной реализации того или иного алгоритмического действия и поэтому изменения этих деталей, например, в процессе отладки обычно не приводит к изменениям основной программы.
При создании крупных программ в тысячи и десятки тысяч строк писать такие программы как нечто единое целое, без расчленения на относительно самостоятельные фрагменты, т.е. без структурирования, просто невозможно.
Процедурой в ТР называется особым образом оформленный фрагмент программы, имеющий собственное имя. Упоминание этого имени в тексте программы приводит к активизации процедуры и называется его вызовом. Сразу после активизации процедуры начинают выполнятся входящие в него операторы, после выполнения последнего из них управление возвращается обратно в основную программу и выполняются операторы, стоящие непосредственно за оператором вызова процедуры.
Для обмена информацией между основной программой и процедурой используется один или несколько параметров вызова. Если они есть, то перечисляются в круглых скобках за именем процедуры и вместе с ним образуют оператор вызова процедуры.
В ТР имеется много стандартных процедур и функций, они созданы одновременно с системой ТР и являются ее неотъемлемой частью. Наличие богатой библиотеки таких подпрограмм существенно облегчает разработку прикладных программ. Нестандартные процедуры и функции необходимо писать самому. Описание процедуры (функции) помещается в разделе описаний и внешне выглядит как программа, но вместо заголовка программы фигурирует заголовок процедуры (функции).
Требования к работе
1. Составить алгоритм решения задачи, указанной в варианте.
2. Составить блок-схемы алгоритмов основной программы и
подпрограммы
3. Составить подпрограмму и основную программу, использую
щую подпрограмму.
4. Отладить обе программные единицы.
Лабораторные задания
Вариант 1. Заданы четыре вектора x={x1, x2, x3}, y={y1, y2, y3}, z={z1, z2, z3, z4} и p={p1, p2, p3, p4}. Логической переменной a присвоить значение TRUE, если скалярное произведение вектора x и y больше скалярного произведения вектора z и p, и значение FALSE в противном случае.
Вычисление скалярного произведения оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: x={1; 2; 3}; y={2,5; 6; 3,2}; z={3,7; 1,2; 6,4; -5,3}; p= {-1; 4; 1; -2}
Вариант 2. Решить уравнение dx=c, где d-длина вектора a= {a1, a2, a3, a4} и c -длина вектора b= {b1, b2, b3}.
Вычисление длины вектора оформить в виде подпрограммы типа FUNCTION.
Исходные данные: a={-2,4; 3; 5; 2}; b={6,1; 2; -3}
Вариант 3. Заданы две матрицы:
Проверить, является ли призведение этих матриц перестановочным, т.е. проверить равенство АВ=ВА. В случае положительного ответа напечатать “АВ=ВА”, иначе напечатать литерал “ПРОИЗВЕДЕНИЕ НЕПЕРЕСТАНОВОЧНО”. Вычисление произведения двух матриц оформить в виде подпрограммы.
Исходные данные:
Вариант 4. Заданы два вектора x={x1, x2, x3} и y={y1, y2, y3, y4, y5}. Логической переменной а присвоить значение TRUE, если длина вектора х больше длины вектора y, и присвоить значение FALSE в противном случае.
Вычисление длины вектора оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: x={-1,2; 3; 5}, y={1; 2,1; 6; -2; 3}
Вариант 5. Заданы два вектора x={x1, x2, x3, x4} и y={y1, y2, y3, y4}. Определить угол j между векторами x и y по формуле
Вычисление скалярного произведения оформить в виде подпрограммы типа FUNCTION. Исходные данные: x={-2,3;4; 5; 1,6}; y={1; 2; 3; 4}
Вариант 6. Заданы две матрицы:
Выяснить и напечатать, сколько из них является симметричными (нуль, одна или две). (Матрица называется симметричной, если транспорированная матрица равна исходной.) Транспонирование матрицы оформить в виде подпрограммы. Исходные данные:
Вариант 7. Заданы два массива: a={a1, a2, a3, a4} и b={b1, b2, ... , b6}. Переменной S присвоить значение -1, если максимальный элемент массива а больше максимального элемента массива b; 0, если максимальные элементы массивов a и b равны; 1, если максимальный элемент массива a меньше максимального элемента массива b.
Поиск максимального элемента массива оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: a={-5,2; 8; 1,3; -6}; b={-4,7; -3; 2,6; 7; 13; -1}
Оглавление - содержание
Вариант 8. Четыре точки заданы своими координатами x={x1, x2}, y={y1, y2}, z={z1, z2}, p={p1,p2}. Выяснить, какие из них находятся на максимальном расстоянии друг от друга, и вывести на печать значение этого расстояния.
Вычисление расстояния между двумя точками оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: x={4,8;-3}; y={-6,5;1,2}; z={-3,7;-4,5}; p={7,8; 2}
Вариант 9. Четыре точки заданы своими координатами x={x1, x2, x3}, y={y1, y2, y3}, z={z1, z2, z3}, p={p1, p2, p3}. Выяснить, какие из них находятся на минимальном расстоянии друг от друга, и вывести на печать значение этого расстояния. Вычисление расстояния между двумя точками оформить в виде подпрограммы типа FUNCTION. Исходные данные: x={-3,2; 5; 1,4}; y={2,2; -4; 3} z={-6,1; -3; 1}; p={2,7; 1; -1} 10. Заданы экспериментальные значения четырех случайных величин a={a1, a2, a3}, b={b1, b2, b3, b4}, c={c1, c2, c3, c4, c5}, d={d1, d2, d3, d4}. Вычислить дисперсию случайной величины r={r1, r2, r3, r4}, считая ее экспериментальными значениями, математические ожидания a, b, c и d (т.е. r1 = M(a), r2 = M(b), r3 = M(c), r4 = M(d)).
Математическое ожидание M(x) и дисперсия D(x) случайной величины x={x1, x2, ... , xn} вычисляются по формулам:
Вычисление математического ожидания оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: a={1; 2; 3}; b={-5; 6; 1,2; 2,4}; c={-3,2; 0; 1; -1; 2}; d={2; 3; 1; 4}
Вариант 11. Заданы две матрицы:
Построить таблицу функции y=cx2+d при x, меняющемся от 0 до 1 с шагом 0,1, где с есть след матрицы А, d есть след матрицы В.
(Следом матрицы называется сумма элементов главной диагонали).
Вычисление следа матрицы оформить в виде подпрограммы типа PROCEDURE.
Исходные данные:
Вариант 12. Заданы три массива: x={x1, x2, x3, x4}, y={y1, y2, y3} и z={z1, z2, z3, z4, z5}. Упорядочить по возрастанию три числа a, b и c, где а - минимальный элемент массива x, b - минимальный элемент массива y, а с- минимальный элемент массива z. Поиск минимального элемента массива оформить в виде подпрограммы типа FUNCTION. Исходные данные: x={4,2; 3; 7; 3,6}; y={5,6; 3; 2}; z={1; 2; 3; 4; 5}
Оглавление - содержание
Вариант 13. Заданы экспериментальные значения трех случайных величин а={a1, a2, a3}, b={b1, b2, b3, b4} и c={c1, c2, c3, c4, c5}. Найти максимальное из трех чисел x, y и z, где x - математическое ожидание случайной величины a, y - математическое ожидание случайной величины b, а z-математическое ожидание случайной величины с. Математическое ожидание М(x) случайной величины x={x1, x2, ... , xn} вычисляется по формуле:
Вычисление математического ожидания оформить в виде подпрограммы типа FUNCTION.
Исходные данные: a={-7,3; 2; 1}; b={1; 0; 2; 2,5}; c={-1,7; 3; 1,2; 1; -0,1}
Оглавление - содержание
Вариант 14. Заданы два вектора x={x1, x2, x3}, y={y1, y2, y3} и матрица
Найти сумму двух векторов c и d, где вектор с есть произведение вектора x на матрицу А, а вектор d- произведение вектора y на матрицу А.
Вычисление произведения вектора на матрицу оформить в виде подпрограммы.
Исходные данные: x={-2,2; 5; 1}; y={-1; 0; 2};
Оглавление - содержание
Вариант 15. Заданы три матрицы:
Найти минимальное из трех чисел x, y, и z, где x есть след матрицы A, y - след матрицы В, z - след матрицы С. (Следом матрицы называется сумма элементов главной диагонали.)
Вычисление следа матрицы оформить в виде подпрограммы типа FUNCTION.
Исходные данные:
Оглавление - содержание
Вариант 16.
Заданы стороны двух треугольников: АВС (стороны a, b, c) и PLF (cтороны p, l, f). Переменной S присвоить значение -1, если площадь треугольника АВС меньше или равна площади треугольника PLF, и значение 1, если площадь треугольника АВС больше площади треугольника PLF. Площадь треугольника MNK со сторонами m, n, k вычисляется по формуле Герона следующим образом:
где r - полупериметр треугольника MNK.
Вычисление площади треугольника оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: a=1; b=2,7; c=3,2; p=1,3; l=2,5; f=2,7
Вариант 17.
Построить таблицу функции z=sh(x+y), где x меняется от 1 до 2 с шагом 0,2; у меняется от 2 до 3 с шагом 0,1. Гиперболический синус вычисляется по формуле:
Вычисление гиперболического синуса оформить в виде подпрограммы типа PROCEDURE
Вариант 18.
Заданы стороны двух треугольников: АВС (стороны а, b, c) и PLF (стороны p, l, f). Найти сумму и разность площадей треугольников АВС и PLF. Площадь треугольника MNK со сторонами m, n, k вычисляется по формуле Герона следующим образом: где r- полупериметр треугольника МНК. Вычисление площади треугольника оформить в виде подпрограммы типа FUNCTION. Исходные данные: a=3; b=2,5; c=1,7; p=2; l=7.8; f=7
Вариант 19.
Построить таблицу функции z=ch(x2+y2), где х меняется от 3 до 4 с шагом 0,1 у меняется от 2 до 3 с шагом 0,2. Гиперполический косинус вычисляется по формуле
Вычисление гиперболического косинуса оформить в виде подпрограммы типа FUNCTION
Вариант 20.
Заданы три квадратных уравнения: ax2+bx+c=0, dx2+fx+r=0, px2+gx+k=0. Найти минимальное значение среди корней этих уравнений. В случае комплексных корней принять за корни действительную часть.
Решение квадратного уравнения оформить в виде подпрограммы.
Исходные данные: a=2; b=-5,2; c=1,3; d=3,7; f=1,8; r=6; p=1,2; q=-3; k=5
Вариант 21.
Задана последовательность чисел a={a1, a2, ... ,a6}. Выбрать из них принадлежащие отрезку {x, y}. Из выбранных чисел образовать вектор.
Проверку на принадлежность числа отрезку оформить в виде подпрограммы типа FUNCTION.
Исходные данные: a={-4,1; -1; 1,2; 3; 5; 0,75}; x=-2,5; y=1,2
Вариант 22. Ч
етыре точки заданы своими координатами x={x1, x2}, y={y1, y2}, z={z1, z2}, p={p1, p2}. Выяснить и напечатать, сколько из них принадлежит полосе, аналитичеки заданной неравенствами;
f < Ma1 + Na2 < r.
Проверку на принадлежность точки полосе оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: x={-4,2; 2}; y={1,8; 0,8}; z={-8,6; -4,1}; p={-1; -0,1}; M=5; N=3; f=2,5; r=7,1.
Вариант 23.
Три точки заданы своими декартовыми координатами x={x1, x2}, y={y1, y2}, z={z1, z2}. Вычислить и выдать на печать полярные координаты этих точек. При выдаче на печать координаты точек упорядочить по возрастанию полярного радиуса r . Полярный радиус r и полярный угол j вычисляются по следующим формулам:
Перевод в полярные координаты оформить в виде подпрограммы.
Исходные данные: x={1; 2}; y={-3; 1}; z={1,2; -1}
Оглавление - содержание
Вариант 24.
Три точки заданы своими координатами x={x1,x2}, y={y1,y2}, z={z1,z2}. Выдать на печать координаты этих точек по возрастанию угла между осью абсцисс и лучом, соединяющим начало координат с соответствующей точкой.
Вычисление угла между осью абсцисс и лучом, соединяющим начало координат с точкой, оформить в виде подпрограммы типа FUNCTION.
Исходные данные: x={-1,65;2}; y={1,2;-1}; z={1;2}.
Вариант 25. Заданы три матрицы:
Упорядочить по убыванию три числа x, y и z, где x есть максимальный элемент матрицы А, y- максимальный элемент матрицы В, а z-максимальный элемент матрицы С. Поиск максимального элемента матрицы оформить в виде подпрограммы типа PROCEDURE. Исходные данные:
Вариант 26. Заданы две матрицы:
Найти след матрицы, равной произведению АВ, и след матрицы,равной произведению ВА. (Следом матрицы называется сумма элементов главной диагонали.) Вычисление произведения двух матриц оформить в виде подпрограммы. Исходные данные:
Вариант 27. Три точки заданы своими координатами: x={x1,x2}, y={y1,y2}, z={z1, z2}. Определить и выдать на печать координаты точки,для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой , минимальный. Вычисление величины угла между осью абсцисс и лучом, соединяющим начало координат с точкой, оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: x={-1,8; 3}; y={1,2; 1}; z={-1; 2}
Оглавление - содержание
Вариант 28. Заданы три матрицы:
Решить уравнение px2+dx+r=0, где p есть минимальный элемент матрицы А, d - минимальный элемент матрицы В, а r - минимальный элемент матрицы С. Поиск минимального элемента матрицы оформить в виде подпрограммы типа FUNCTION. Исходные данные:
Вариант 29. Заданы три вектора: x={x1, x2, x3}, y={y1, y2, y3}, z={z1, z2, z3}. Логической переменной a присвоить значение TRUE, если длина вектора d, равного сумме вектора х и у, больше длины вектора с, равного сумме вектора у и z, и значение FALSE в противном случае.
Вычисление суммы двух векторов оформить в виде подпрограммы.
Исходные данные: x={-6,5; 2; 1}; y={-3,1; 7; -2}; z={-1,3; 6; -4}
Вариант 30. Задана окружность (x-a)2+(y-b)2=r2 и две точки p={p1, p2} и f={f1, f2}. Выяснить и напечатать сколько точек (нуль, одна или две) лежит внутри окружности.
Проверку, лежит ли точка внутри окружности, оформить в виде подпрограммы типа FUNCTION.
Исходные данные: a=3,2; b=4,1; r=2; p={6,1; 4,3}; f={27,48; -6}.
Оглавление - содержание
Лабораторная работа № 18
Сложные сочетания циклов и разветвлений.
Требования к работе
1. Разработать алгоритм решения задачи.
2. Составить блок-схему алгоритма.
3.Составить программу.
4.Отладить программу.
Оглавление - содержание
Лабораторные задания
Вариант 1. Составить программу для вычисления таблицы значений неявной функции y(x),определяемой уравнением xy=e-y для значений x, изменяющихся от 1 до 2 с шагом 0,05.
Уравнение при каждом x решать методом Ньютона с абсолютной погрешностью, не превосходящей 10-6 . За начальное приближение при x=1 принять 0 (проверить условие сходимости метода Ньютона) , а при других x в качестве начального приближения использовать вычисленное значение y для предыдущего x . Полученные значения x и y организовать в векторы и вывести на печать .
Вариант 2. Составить программу, каторая из вектора r={r1,¼,rn} ( n£20 ) выделяет вектор r={r1, ... , rm} (m£n)по правилу: компонента вектора r является компонентой вектора r, если квадратное уравнение x2-2rix+q=0
имеет вещественные и различные корни. Исходные данные: n=7; q=4,0; p={2,6; 3,3; 1,8; 5,6; 0,5; -2,8; -4,2}
Вариант 3. Компоненты заданного вектора a={a1, ..., an} расположены в порядке убывания, Составить программу для решения следующей задачи: из вектора а и переменной r построить вектор b={b1, ... , bm} с компонентами, так же расположенными в порядке убывания, т.е. переменную r расположить между компонентами вектора а таким образом, чтобы выполнилось условие ai< r < ai+1. Компоненты вектора b получаются следующим образом:
bj = aj (1£j£J).
bj+1 = r,
bj = aj-1 (i+2£j£m).
Вычислить сумму логарифмов квадратов четных компонент вектора b:
Вектор b и значение S вывести на печать.
Исходные данные: n=9, m=10 a={9,6; 7,4; 4,1; 4,0; 3,8; 2,5; 2,4; 2,2; 1,7}; r=2,3
Вариант 4. Компоненты вектора a={a1, ... , an} расположены в порядке возрастания по абсолютной величине. Заданы k- целое и r- вещественное. Составить программу для решения следующей задачи: построить и вывести на печать вектор b={b1, ... , bm}, исключая из a k-ю компоненту и вставляя на нужное место r так, чтобы компоненты вектора b оказались так же расположенными в порядке возрастания по абсолютной величине.
Исходные данные: n=10, a={0,1; -0,4; 0,8; 1,5; -1,8; 4,6; 5,2; -8,9; 9,1; 12,6} k=6; r=-1,2
Вариант 5. Вычислить значения компонент a={a1, ... , a30} по формуле
Вывести полученный вектор на печать. Далее вычислить следующие суммы:
S1=a1+a6+a11+...+a26,
S2=a2+a7+a12+...+a27,
. . . . . . . . . . . . . . . . . . . .
S5=a5+a10+a15+...+a30.
Полученный вектор S={S1, ... S5} напечатать
Вариант 6. На плоскости на расстоянии S1, S2, ... , S15 от центра кругового кольца с внутренним радиусом r и внешним R расположены точки. Определить количество точек, расположенных внутри кольца.Исходные данные: S={0,1; 0,25; 0,3; 0,8; 0,9; 4,6; 8,9; 1,4; 2,8; 5,4; 4,9; 11,7; 2,9; 4,4; 6,2}; r=0,5; R=2,5
7. Образовать вектор a={a1, ..., a21} из членов последовательности cos x, cos(x+h), ..., cos(x+20h). Вектор a вывести на печать. Найти сумму тех членов последовательности, которые по абсолютной величине больше, чем 0,5.
Исходные данные: x=0,2; h=0,3
Вариант 8. Задана прямоугольная матрица А={aij} размером m´n (n, m£20). Получить новую матрицу путем деления всех элементов полученной на элемент, наибольший по абсолютной величине.
Исходные данные: m=3; n=2;
Оглавление - содержание
Вариант 9.Найти норму заданной квадратной матрицы порядка m(m £ 20) по формуле
Исходные данные: m=3;
Вариант 10. Составить программу преобразования вещественного вектора x={x1, ... , xn} по правилу: если x1 £ x2 £...£ xn, то всем компонентам присвоить значение наибольшей из них. Если x1>x2>...>xn, то вектор оставить без изменения. В противном случае все компоненты заменить квадратами. Компоненты вектора x вычислить предварительно по формуле:
Вычисленный вектор вывести на печать. Исходные данные: n=6.
Оглавление - содержание
Вариант 11.
Вычислить компоненты вектора x={x1, ... , xn} (n£20) по формуле
xi=4arctg(1+0,1i)+e-0,5i-2p, i=1, ... , n.
Вычисленный вектор вывести на печать. Преобразовать далее полученный вектор по правилу: все отрицательные компоненты увеличить на 0,5, а все положительные - заменить на 0,1. Преобразованный вектор также вывести на печать.
Исходные данные: n=13
Вариант 12.
Заданы логический вектор a={a1, ... , an} и вещественный вектор x={x1, ... , xn} (n£20). Преобразовать вектор x по правилу: если ai имеет значение TRUE, то xi увеличить на 10, в противном случае заменить xi нулем. Вывести на печать преобразованный вектор x.
Исходные данные: n=4; a={TRUE, FALSE, TRUE, FALSE}; x={1,2; 6,4; -3,8; 0,6}
Вариант 13. Вычислить компоненты вектора x={x1, ... , xn} (n£20) по формуле:
Вывести полученный вектор на печать. Подсчитать число отрицательных компонент вектора x и число компонент, принадлежащих отрезку [a, b]. Все отрицательные компоненты не принадлежащие указанному отрезку, заменить на 1. Остальные компоненты оставить без изменения. Преобразованный вектор вывести на печать.
Исходные данные: n=15; a=-0,5; b=0,5
Вариант 14. Вычислить значения компонент вектора x={x1, ... , x20} по формуле
Полученный вектор вывести на печать. Логическое переменной присвоить значение TRUE, если компоненты вектора x образуют монотонно возрастающую последовательность (x1< x2< ... <xn) и значение FALSE в противном случае. Исходные данные: n=20.
Вариант 15. Вычислить значения компонент вектора x={x1, ..., x15} по формуле
xi = 1,3 cos0,1i + sin2, i=1,2,...,n.
Вывести на печать полученный вектор. Найти сумму компонент вектора х, принадлежащих отрезку [-0,5; 0,5] и число таких компонент, а также сумму компонент, принадлежащих отрезку [0,5; 1] и число таких компонент.
Исходные данные: n=15.
Вариант 16. Дана вещественная матрица {aij}, i, j=1, ... , n, n£ 15.
Найти сумму элементов матрицы, расположенных в строках с отрицательным элементом на главной диагонали. (Главная диагональ состоит из элементов aii (i=1, .. , n).)
Исходные данные: n=3;
Вариант 17. Дан вектор x={x1, ... , xk), k£15. Осуществить циклический сдвиг компонент этого вектора:
а) влево на одну позицию, т.е. получить вектора x={x2, x1, ... , xk, x1};
б) вправо на две позиции, т.е. получить вектор x={xk-1, xk, x1, ... , xk-2}.
Вывести на печать исходный вектор и оба преобразованных вектора.
Исходные данные: k=8; x={0,4; 0,6; 0,8; 1,4; 6,2; 8,3; 2,1; 3,3}
Вариант 18. Значения компонент вектора x={x1, ... , xn} вычислить по формуле xi=1,5 lg 0,5i, i= 1, .. ,n.
Полученный вектор x вывести на печать. Вектор x и заданный вектор y преобразовать по правилу: большее из xi, yi принять в качестве нового значения xi, а меньшее в качестве нового значения yi, i= 1, ... ,n. Преобразованные векторы x, y вывести на печать.
Исходные данные: n=10, y={0,4; 0,1; 0,6; 1,2; 4,4; 0,2; -6,8; -1,4; 2,6; 1,5}.
Оглавление - содержание
Вариант 19. Вещественный вектор x={x1, ..., xn} - задан. Компоненты вектора y={y1, ... , yn} вычислить по формуле: yi = 0,26 ln(1+Öi), i=1,...,n. Логической переменной а присвоить значение TRUE, если
S = (x1yn)2+(x2yn-1)2 +...+(xny1)2
принадлежит отрезку [0; 1] и значение FALSE в противном случае. Вектор x, y, а также значения S и а вывести на печать.
Исходные данные: n=10, x={0,6; 1,8; 1,2; 0,4; -0.8; 2,6; 3,1; -0,4; -0,2; 1,3}
Вариант 20. Значения компонент вектора a={a1, ... , an} и b={b1, ... , bn} вычислить по формулам:
i=1,2,...,n.
Полученные векторы вывести на печать. Из векторов а и b получить вектор с={a1, b1, a2, b2, ... , an, bn}, компоненты которого перенумерованы от 1 до 2 n. Полученный вектор с вывести на печать.
Исходные данные: n=15.
Вариант 21. Задана матрица A={aij}, i, j = 1, ... , n. Переменной t присвоить значение, равное скалярному произведению векторов x и y, - компоненты которых определяются следующим образом:
Исходные данные: n = 3;
Вариант 22. Задан целочисленный вектор a={a1, ... , an} Построить вектор b={b1, ... , bn} приняв в качестве первых его компонент все отрицательные компоненты вектора a (с сохранением порядка их следования), а в качестве остальных компонент все неотрицательные компоненты вектора a, также с сохранением порядка их следования.
Исходные данные: n =16, a={6;-8; 1; 12; 4; 26; -4; 11; 2; -19; 6; 0; 3; -11; -3; 4}
Оглавление - содержание
Вариант 23. Задан целочисленный вектор a={a1, .. , an}, n£20. Если среди компонент этого вектора есть компонента со значением, равным целому числу b (b - задано), то переменной l присвоить значение, равной сумме всех компонент, предшествующих этой компоненте.
В противном случае положить l=0.
Исходные данные: n=6; a={8; 4; 12; 26; 1; 0}; b=1
Вариант 24. Значения компонент вектора x={x1, ... , xn} вычислить по формуле:
xi = 1,2 sin 0,1i+0,4 cos(i-1), i=1, ... , n.
Полученный вектор вывести на печать.
Найти наибольшую компоненту вектора х, ее номер k и вывести на печать. Все компоненты вектора x, с четными номерами помножить на xk. Остальные компоненты оставить без изменения. Преобразованный вектор вывести на печать.
Исходные данные n=20.
Вариант 25.
Задан вектор x={x1, ... , xn}, n£20. Если хотя бы одна компонента этого вектора меньше, чем t=-2, то все отрицательные компоненты заменить их квадратами, оставив остальные компоненты без изменения; в противном случае все компоненты вектора x домножить на 0,1. Преобразованный вектор вывести на печать.
Исходные данные: n=9; x={-1,6; 2,4; -0,8; 0,4; 0,2; -2,1; 6,4; 0,0; 0,1}
Вариант 26. Задана вещественная матрица A={aij}, i, j=1, ... , n. Построить логический вектор b={b1, ... , bn} по следующему правилу: если в строке с номером k, k=1, ... , n число положительных элементов больше числа отрицательных, то bk присвоить значение TRUE; в противном случае bk присвоить значение FALSE.
Исходные данные: n=4;
Вариант 27. Задана вещественная матрица A={aij}, i, j=1, ... , n. n£15. Построить вещественный вектор b={b1, ... , bn} по правилу: если aij<0, i=1, ... , n. то в качестве bi принять сумму элементов i-й строки, предшествующих элементу aij; если aij³0, то в качестве bi принять сумму элементов i-й строки, следующих за a (включая aij). Исходные данные: n=4;
Вариант 28. Вычислить значения компонент вектора x={x1, ... , xn}, n£30 по формуле:
Полученный вектор вывести на печать. Подсчитать число положительных и отрицательных компонент вектора x. Полученный результат вывести на печать. Исходные данные: n=14.
Вариант 29. Задана вещественная матрица A={aij}, i,j=1, ... , n, n£15.
Построить логический вектор l={l1, ... , ln} по правилу: если i-я строка матрицы А образует неубывающую последовательность , то l присвоить значение TRUE. В противном случае li присвоить значение FALSE.
Исходные данные: n=4;
Вариант 30. Заданы логический вектор a={a1, ..., an}, n£10 и вещественный вектор x={x1, ..., xn}. Преобразовать вектор x по правилу: если ai имеет значение TRUE, то xi умножить на 10, в противном случае изменить знак xi на противоположный.
Исходные данные: n=8; a={T,F, F, T, F, T, T, F} (T - TRUE, F- FALSE); x={0,8; 4,1; -2,6; 0,1; 2,1; 8,9; -0,5; -8,1}.
Файлы
Оглавление - содержание
Введение файлового типа в язык Паскаль вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.
Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.
Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.
При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл).
Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:
'LAB1.DAT'
'c:\ABC150\pr.txt'
'my_files'
Оглавление - содержание
Типы файлов Турбо Паскаль
Турбо Паскаль поддерживает три файловых типа:
- текстовые файлы;
- типизированные файлы;
- нетипизированные файлы.
Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов:
file of тип - типизированный файл (указан тип компоненты);
text - текстовый файл;
file - нетипизированный файл.
Примеры описания файловых переменных:
var
f1: file of char;
f2: file of integer;
f3: file;
t: text;
Оглавление - содержание