|
Вычисление значения арифметического выраженияСтр 1 из 6Следующая ⇒ Тема 1 Основы построения программы Вычисление значения арифметического выражения Алфавит языка Turbo Pascal Программа в Turbo Pascal записывается в виде последовательности символов, к числу которых относятся: - латинские буквы: а, b, с, …, z; - русские буквы: а, б, в, …, я; - арабские цифры: 0,1, 2, …, 9; - знаки действий: + – * / = > <; - специальные символы: ',.:; () [ ] {}. - зарезервированные слова:
Русские буквы используются только в значениях текстовых констант и в комментариях. Переменные Для обозначения исходных данных и результатов вычислений употребляются переменные. Переменная – это область памяти (ячейка) компьютера. Переменныемогут менять свое значение в процессе выполнения программы, каждая переменная, используемая в программме, должна иметь имя. Имена (идентификаторы) переменных представляют собой последовательность латинских букв и цифр, начинающуюся с буквы, например: alfa,suml, n 22, a 1 b 2 c 3. Система Turbo Pascal латинские строчные и прописные буквы воспринимает одинаково.
Типы переменных и констант В системе Turbo Pascal для описания числовых переменных и констант используются следующие стандартные типы: − действительных чисел (real); − символьный тип (char); − строковый (string); − логический (boolean); − целые типы. Целые типы данных языка Turbo Pascal
Границы изменения: для действительного типа (real) от –10–39 до 1038, Константа – величина, которая в процессе выполнения программы не изменяет своего значения. Числовые константы в программе записываются в десятичной системе счисления. Они могут быть целыми и действительными. Положительный знак числа можно не писать. Вместо десятичной запятой при записи действительной константы ставится десятичная точка. Можно записывать числа «в форме Е (или е)». Символ Е (или е) означает десятичный порядок и имеет смысл «умножить на 10 в степени», например, число –3,1*10–4 в Паскале записывают как –3.1 е –4. Примеры: целые числа: 0, –13, 783, –12345, 2 е + 3; действительные числа: 3.1415, –1.567, 0.08631, – 0.13 е – 3, З.14 Е 5. Стандартные математические функции, используемые В Turbo Pascal
Обращение к функции выполняется по указателю функции, который состоит из идентификатора и аргумента функции, заключенного в скобки. Аргументом функции может быть как переменная, так и арифметическое выражение. Для тригонометрических функций аргумент берется в радианах. Арифметические выражения Переменные, константы и стандартные функции, соединенные знакамиарифметических операций и круглыми скобками, называют арифметическими выражениями. Правила построения арифметических выражений: - знак операции следует писать обязательно; - два знака арифметических операций не могут быть записаны друг за другом (следует использовать скобки); - количество открывающихся и закрывающихся скобок должно быть одинаковым; - операции выполняются в следующей последовательности: вычисление значений функций, умножение (деление), сложение (вычитание), - если числитель и (или) знаменатель – алгебраическая сумма, то они записываются в скобках. в Turbo Pascal: – если знаменатель является произведением, то есть , то возможны два варианта записи: a /(c * d) или a / c / d. Для переменных и констант целого типа в Turbo Pascal существуют две операции деления: mod (нахождение остатка от деления) и div (вычисление целой части частного), например, 20 div 6 = 3 и 20 mod 6 = 2. В Turbo Pascal отсутствуют возведение в степень, извлечение корня и вычисление логарифма c произвольным основанием. Если арифметическое выражение содержит хa (х> 0), аx (а> 0) или log a х, то для их вычисления используют известные формулы, которые можно записать с применением стандартных функций языка Turbo Pascal.
Некоторые целые степени удобнее записывать непосредственно или использовать функции извлечения квадратного корня и возведения в квадрат:
Операторы Оператор языка представляет собой некоторый неделимый элемент программы, который позволяет выполнять определенное алгоритмическое действие. Отличительной чертой оператора по отношению к другим элементам программы является то, что под ним всегда подразумевается какое-либо действие. Все операторы, используемые в программе, должны обязательно отделяться от всех других элементов (в том числе и от других операторов) точкой с запятой. Все операторы условно можно разбить на группы: простые, сложные (структурные), вспомогательные. Простые операторы: − оператор присваивания, − оператор безусловного перехода, − оператор обращения к процедуре. Структурными операторами называются такие, которые состоят из других операторов. Структурные операторы: − условный оператор, − оператор варианта, − операторы цикла, − оператор присоединения. Вспомогательные операторы: − пустой оператор (простой), − составной оператор (структурный). Необходимость в использовании вспомогательных операторов связана главным образом со спецификой синтаксиса самого языка. Каждый оператор в программе, написанной на Турбо Паскале, определяет некоторый логически законченный самостоятельный этап процесса обработки. Для однозначности понимания и интерпретации программы зафиксирован набор допустимых операторов и четко определены правила их записи, то есть синтаксис операторов. Оператор присваивания Для задания правил вычисления новых значений в Турбо Паскале служит такое понятие, как выражение, причем каждое выражение задает правила вычисления только одного значения. Заметим, что выражение ничего не говорит о том, что следует делать с этим значением, и потому выражение не задает логически завершенного этапа вычисления. Наиболее типичной является ситуация, когда вычисленное значение необходимо запомнить для его использования на последующих этапах вычислительного процесса – такое запоминание достигается путем присваивания вычисленного значения некоторой переменной. Для задания такого действия и служит оператор присваивания, который относится к числу основных операторов: Переменная := выражение; где := – знак присваивания. Оператор вычисляет значение выражения, стоящего справа от знака присваивания и присваивает полученное значение переменной, стоящей слева (при этом предыдущее значение этой переменной безвозвратно теряется). Примеры: Var a,b:integer; x:real; c:boolean; s,s 1:char; ........................ a:=5; {Значение переменной становится равным пяти} b:= a; {Значение переменной в становится равным значению переменной а } b:= b +1; {Значение переменной в увеличивается на 1} Оператор присваивания считается верным, если тип выражения соответствует типу переменной или может быть приведен к типу переменной. Переменной типа real можно присвоить значение выражения типа real или integer. Переменной типа integer можно присвоить значение выражения только лишь типа integer. a:= b /10; { a – целого типа, b /10 –выражение действительного типа, поэтому оператор неверен} x:= a mod 2; c:=(a >3) and (a <5); Компьютер проверяет соответствие типов и при несоответствии типов выдает сообщение об ошибке. Оператор присваивания можно использовать для всех типов данных, кроме файлового.
Тема 2 Логические выражения Условный оператор Логические выражения состоят из переменных и констант логического типа, логических операций и операций отношений. Логическое выражение может принимать значения true (истина) или false (ложь). Отношения могут состоять из двух арифметических выражений, соединенных знаком операции отношения. Операции отношения:
В Паскале определены три логические операции:
Эти операции применимы только к логическим операндам и дают результат того же типа. Логическое умножение (A and В) дает значение true только в том случае, если и А, и В имеют значение true. Если хотя бы один операнд (или оба) имеет значение false, то результат также имеет значение false. Логическое сложение (A or В) дает значение false в том и только в том случае, если А и В одновременно имеют значение false. Если хотя бы один операнд (или оба) имеет значение true, то результат также имеет значение true. Операция отрицания (not A) дает значение false, если А имеет значение true и, наоборот, дает значение true, если false. В логическом выражении принят следующий приоритет операций:
1. not (выполняется в первую очередь). 2. *, /, div, mod, and. 3. +, ~, or. 4. <, <=, =, <>, >, >=. Операции, указанные в строке с одним порядковым номером, имеют одинаковый приоритет и в логическом выражении выполняются слева направо. В логическом выражении допускается использование только круглых скобок. При наличии скобок сначала выполняются действия в них (в первую очередь, в самых внутренних), а затем вне скобок. В круглые скобки обязательно заключаются отношения, стоящие слева и справа от логических операций and и or. Примеры:
Запишем выражения, зависящие от координат точки (x,y) и принимающее значение TRUE, если точка принадлежит заштрихованной области, и FALSE, если не принадлежит.
Условный оператор В Turbo Pascal имеется две формы условного оператора: полная и сокращенная. Полный условный оператор имеет вид: if A then S 1 else S 2; где if (если), then (то), else (иначе) – служебные слова, А –логическое выражение, S 1, S 2– операторы. Перед then и else нельзя ставить точку с запятой. Если логическое выражение А принимает значение true, то выполняется оператор S 1, в противном случае выполняется оператор S 2. Пример: if x > 0 then y:= ln(x) else y:=1; Когда необходимо выполнить несколько операторов, а не один, как в определении, используется составной оператор. Составной оператор – это последовательность операторов, взятая в операторные скобки begin … end, т. е. это конструкция вида begin S 1; S 2; ...; Sk end; где S 1, S 2,…, Sk – операторы. Пример: if abs(x) <= abs(y) then begin z:= x + y; write(z:5:2) end else begin z:= sqr(x) – sqr(y); write(z:5:2) end; Краткий условный оператор имеет вид: if A then S; где А – логическое выражение, S –оператор. Если выполняется условие (логическое выражение принимает значение true), то выполняется оператор S, иначе управление передается оператору, следующему за данным условным оператором.
Пример: if у < 1 then z:= ехр(у); Пример: if(a > b)and (x > 0) then begin с:= а – b; у:= х + 2 end;
Часто в программах требуется найти максимальное или минимальное значения среди нескольких переменных. В Turbo Pascal нет стандартных функций для их нахождения. Определяют максимум или минимум, используя условный оператор.
Пример 1. Найти максимальное из значений двух переменных, т. Е. х = мах(a, b). If а > b then х:= a else х:= b;
Пример 2. Найти максимальное из значений трех переменных, то есть х = мах(а, b, с). If a > b then x:= a else x:= b; if c > x then x:= c. Примечание. При нахождении минимального значения знак неравенства меняется на противоположный. Пример выполнения задания 2 Даны три целых числа A, B и C. Определить значения переменных X Y, Z. Вывести их на экран монитора. Пусть D l и D 2 – заштрихованные части плоскости (см. рис.1) и пусть U определяется как функция X и Y. Вывести на экран значение функции U. Вывод результатов оформить пояснительным текстом. Если то
иначе Вычислить значение функции U по правилу:
Записи (x, y) Î D l, (x, y) Î D 2 означают, что точка с координатами (х, у) принадлежит области D 1или D 2. Рис. 1 Program lab2; uses crt; var u, x, y, z:real; a, b, c:integer; begin clrscr; writeln (‘Введите a, b, c ¢); readln (a, b, c); if a + b > с then begin x:= a + b; y:= sqrt(a * a + b * b); z:= ln(b + c) end else begin x:= a – с; y:= a * a – c * c; z:=ln(a*c) end; writeln (‘ x =’, x:5:2,’ y =’, y:5:2,’ z =’, z:5:2) if (y <=2* x /3 + 2) and (y >= x * x) then и:= x * x else if (sqrt(sqr(x) + sqr(y)) >= 2) and (sqrt(sqr(x) + sqr(y))<=3) and (y < 0) then u:= x + y else u:= 0; writeln(‘ u =’, u:7:2); readkey end. Тема 3 Тема 4 Оператор цикла с параметром Оператор цикла с параметромудобно использовать, когда необходимо выполнить оператор заранее известное число раз. Существует два варианта оператора цикла с параметром for к:= n 1to n 2do S; или for к:= п 1downto n 2do S; где к – параметр цикла; п 1и п 2 –выражения, задающие начальное и конечное значения параметра цикла соответственно; S –простой или составной оператор (тело цикла). Тип параметра цикла обязательно должен совпадать с типом начального и конечного значений цикла. Можно использовать любой из стандартных скалярных типов, кроме действительного. Шаг параметра цикла к при выполнении оператора цикла с параметром для целого типа равен 1 (для цикла to) и –1 (для цикла downto). Следует запомнить и то, что для обоих вариантов записи цикла с параметром справедливо: если начальное и конечное значения равны, то тело цикла (оператор S) выполнится один раз. Если в цикле необходимо выполнить несколько операторов, то пользуются составным оператором. Для оператора цикла с параметром имеются некоторые ограничения. ¾ Оператор цикла с параметром применяется, если число повторений тела цикла заранее известно. ¾ Войти в цикл можно только через его начало, а выйти – либо при достижениипараметром цикла его конечного значения, либо при выполнении оператора break, который прекращает выполнение цикла, причем следующим будет выполняться оператор, расположенный за циклом. ¾ Для каждого значения параметра цикл выполняется только 1 раз. ¾ Значения параметра цикла запрещено изменять операторами в теле цикла. Пример1. Вычислить сумму квадратов натуральных чисел с 1 до 10. S:= 0; for i:=1 to 10 do s:= s +sqr (i); Примечание. Произведение n последовательных натуральных чисел обозначают n! (произносится n факториал), то есть . Пример 2. Вычислить 8!. P:=1; for i:=2 to 8 do p:= p * i; Заметим так же, что параметр цикла может и не использоваться в теле цикла, так что основное его назначение – это управление числом повторений цикла. Пример 3 Значение y=x n, где n >=0 – целое, можно вычислить по следующему алгоритму: предварительно положить y =1, а затем n раз домножить это значение на x: Readln(n); Readln(x); y:=1; for i:=1 to n do y:= y * x; Как видно, здесь параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y * x) выполнилось нужное число раз. Пример 4. Вычислить сумму . sum:= 0; for i:=1 to 12 do sum:= sum +(sqr (i)+1)/(i * i*i); Пример 5. Вычислить произведение . P:= 1; for i:=1 to 7 do p:= p*i /(i* i-2* i+5); В теле цикла с параметром среди операторов может находиться и оператор цикла, такие циклы называются вложенными (внешний и внутренний циклы). При использовании вложенных циклов необходимо помнить, что тело внутреннего цикла должно находиться внутри внешнего. Пример выполнения задания 4 Вычислить значение выражения . program lab4; uses crt; var c,p,sum:real; k,i:integer; begin p:=1; for k:=1 to 5 do begin sum:=0; a:=1; b:=1; for i:=1 to k do begin a:= a *2; {вычисляем 2 i } b:= b *I; {вычисляем i!} sum:= sum + a/b; {вычисляем сумму} end; p:= p *(sqr(k +2)+ sum; {вычисляем произведение} end; writeln(‘ p =’, p:0:2); readkey; end.
Тема 5 Тема 6 Задачи с использованием Тема 7 Организация программ С использованием функций В алгоритмических языках, в отличии от математического понятия функции, рассматриваются только такие функции, для которых можно задать алгоритм определения их значений. Самостоятельный алгоритм можно оформить как функцию в том случае, если в результате получается одно единственное значение простого типа. Функция, как и процедура, может содержать несколько операторов, несколько входных параметров, но результат ее выполнения только один. Этот единственный результат обозначается именем функции и передается в основную программу. Описание функции содержится в главной программе после раздела описания переменных (var) и перед началом (begin) программы. В общем виде функция записывается следующим образом: function имя(формальные параметры):тип результата; Раздел описаний Begin Раздел операторов end; Формальные параметры – это наименования переменных (аргументы описываемой функции), через которые передаются входные данные из программы в функцию. Формальными параметрами функции, как правило, являются параметры – значения. Само имя функции представляет собой идентификаторпараметр, значение которого после окончания работы функции равно результату вычисления. Тип результата (функции) указывается следом за списком параметров – после закрывающей скобки этого списка и двоеточия. В разделе операторов функции обязательно должен присутствовать хотя бы один оператор присваивания, в котором переменной с именем, совпадающим с именем функции, присваивается определенное значение, тип которого совпадает с типом результата (функции). Если такого присваивание в разделе операторов функции не выполнено, то функция не возвращает никакого результата (точнее, возвратит произвольный результат). Например, описания вычисления функции тангенса угла:
function tg(x:real): real; begin tg:= sin(x)/cos(x) end;
Вызов и выполнение функции производится при вычислении указателя функции: имя функции(фактические параметры). При этом вызов функции необходимо делать непосредственно внутри выражения, подобно тому, как используются стандартные встроенные функции, например синус sin(x). Фактические и формальные параметры должны согласовываться ¾ по порядку следования, ¾ количеству, ¾ типам. Например, вызов ранее описанной функции tg можно произвести так: a:= tg(y); После выполнения функции выработанный ею результат используется в качестве значения указателя функции в том выражении, в котороe входит этот указатель. При вызове функции передача фактических параметров производится так же, как и при вызове процедуры.
Пример. Заданы стороны двух треугольников MNK (стороны m, n, k) и PLF (стороны p, l, f). Переменной s присвоить значение –1, если площадь треугольника MNK меньше или равнa площади треугольника PLF, и значение 1 в противном случае. Вычисление площади треугольников по формуле Герона оформить в виде функции pl. Примечание. Формула Герона для вычисления площади треугольника со сторонами a, b, c: , где , где p – полупериметр треугольника. program pr1; uses crt; var m, n, k, l, p, f, h, q: real; s: integer; function pl (a, b, c: real): real; var r: real; begin r:= (a + b + c) / 2; pl:= sqrt (r *(r – a)*(r – b)*(r – c)); end; begin clrscr; writeln(‘Введите стороны m, n, k, p, l, f’); readln(m, n, k, p, l, f); h:= pl (m, n, k); q:= pl (p, l, f); if h > q then s:= 1 else s:= –1; writeln('s=', s:3); readkey; end.
При передаче в функцию массива фактическим параметром является имя массива. Обратим внимание на то, что в заголовке функции для указания типов формальных параметров могут использоваться только имена типов, но не их описания. Нельзя записать так: function sum (a: array[1..5] of real; var: real):real;
Пример. Пусть заданы два вектора а (8) и b (12). Вычислить для каждого вектора произведение его элементов. program pr2; type vect = array [ 1.. 12 ] of real; var a, b: vect; ta, tb: real; .............. function prl (var x: vect; n: integer): real; var i: integer; p: real; begin p:= 1; for i:= 1 to n do p:= p * x [ i ]; pr:= p end; begin ............... ta:= pr (a, 8); tb:= pr (b, 12); ................. end. Пример выполнения задания 7 Дана матрица А(4,4). Вычислить Z= X1X4 +X2X3 + X3X2+ X4X1, где Xk – наибольшее из значений элементов K – го столбца матрицы A. Вычисление наибольшего значения оформить в виде функции.
program lab6; type matr = array[1..4,1..4] of real; var a: matr; z: real; x: array[1..4] of real; i, j: integer; function max(y:matr; k: integer): real; var m: real; i: integer; begin m: = a [1, k ]; for i:= 2 to 4 do if a [ i,k ]> m then m:= a [ i,k ]; max:= m end; begin writeln(‘введите матрицу a(4,4)’); for i:= 1 to 4 do for j:= 1 to 4 do read(a [ i,j ]); for i:= 1 to 4 do x [ i ]:=max(a,i); z:=0; for i:= 1 to 4 do z:= z + x [ i ] * x [5 – i ]; writeln(‘z=’, z:6:2); readkey; end.
Тема 8 Организация программ С использованием процедур Довольно часто, уже на этапе разработки алгоритма программы, можно обнаружить, что некоторые одинаковые или очень похожие действия в программе должны выполняться несколько раз. Текст программы, реализующей такой алгоритм, будет содержать последовательность одинаковых операторов. Избежать дублирования операторов можно, если оформить повторяющуюся последовательность как процедуру и в том месте программы, где надо выполнить эти инструкции, указать ее имя. В Турбо Паскале процедурой называется часть программы, имеющая имя и предназначенная для решения определенной задачи (вместо термина «процедура», часто используют термин подпрограмма). Описание процедуры включает заголовок и тело процедуры. Заголовок состоит из зарезервированного слова procedure, идентификатора (имени) процедуры и заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра. В общем виде описание процедуры выглядит так: procedure имя (формальные параметры); Раздел описаний; begin Раздел операторов end; Имя процедуры должно быть уникальным и не должно встречаться в разделе операторов данной процедуры. Нетрудно заметить, что структура процедуры копирует структуру программы в целом, т. е. состоит из заголовка, раздела описаний и раздела операторов. Различия лишь в заголовках и в том, что в конце процедуры ставится точка с запятой вместо точки в конце программы. Процедура помещается в основной программе после раздела описания переменных и перед разделом операторов основной программы. Все переменные, представленные в разделе описаний основной программы, называются глобальными. Они действуют как в разделе операторов основной программы, так и в любой процедуре. Переменные, представленные в разделе описаний процедуры, называются локальными. Они действуют только в рамках процедуры и недоступны операторам основной программы. Формальные параметры – это наименование фиктивных переменных, через которые передается информация из программы в процедуру (входные параметры) либо из процедуры в программу (выходные параметры). Выходным параметрам присваиваются результаты вычислений. Описание процедуры, расположенное в описательной части программы, само по себе никакого действия не производит. Выполнение программы начинается с выполнения раздела операторов основной программы. Для обращения к процедуре применяется оператор вызова процедуры, который имеет вид: Имя процедуры(список фактических параметров). Фактические параметры отделяются друг от друга запятыми и являются реальными объектами программы, замещающими в разделе операторов процедуры формальные параметры. Описание фактических параметров содержится в разделе описаний переменных основной программы. При вызове процедуры компьютер производит следующие действия. Сначала устанавливает взаимно однозначное соответствие между фактическими и формальными параметрами. Соответствие между фактическими и формальными параметрами должно быть следующим: – число фактических параметров должно быть равно числу формальных параметров; – соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу. Данные из основной программы поступают в процедуру. Затем управление передается процедуре. Результаты выполнения процедуры передаются в основную программу и управление передается на оператор, следующий за вызовом процедуры. Соответствующие формальные и фактические параметры во избежание путаницы обычно обозначают разными буквами.
Параметры Параметры, перед которыми отсутствует зарезервированное слово var и за которыми следует тип, называются параметрами-значениями. Например, в описании procedure korrect (s, к: real; x: integer); s, k, x –параметры-значения. Фактический параметр, соответствующий параметру-значению, может быть выражением соответствующего типа, например: korrect (2.5, (х + 2)/5, 1); Изменение формальных параметров-значений не влияет на значения соответствующих фактических параметров. Параметры, перед которыми следует ключевое слово var и за которым следует тип, называются параметрами-переменными. Например, в описании procedure obr(var s, k: real; var x: integer); s, k, x – параметры-переменные. Фактический параметр, соответствующий параметру-переменной, может быть только переменной, например: obr(a, b, k); где а, b – переменные вещественного типа, а k –целого типа. Любые изменения в значении формального параметра-переменной отражаются на фактическом параметре. Параметр-переменная используется в том случае, если значение должно быть передано из процедуры в вызывающий блок. Пример. Решить два квадратных уравнения и , считая, что его дискриминант неотрицателен. program primer1; uses crt; var y 1, y 2, z l, z 2: real; {текст процедуры для нахождения корней квадратного уравнения } procedure sq(a, b, с: real; var x l, x 2: real); var d: real; begin d:= b * b – 4* a * c; x 1:=(– b + sqrt(d))/(2* a); х 2:= ( – b – sqrt(d))/(2* a); end; {операторы основной программы} begin clrscr; sq(5.7, –1.2, –8.3, y 1, y 2); sq(2.4, 3.4, –8.4, z l, z 2); writeln(¢корни y 1, y 2 =¢, y l: 6: 2, y 2: 6: 2); writeln(¢корни z l, z 2 =¢, z l: 6: 2, z 2: 6: 2); readkey end.
Если в процедуру необходимо передать массив, то в этом случае фактическим параметром является имя массива. Обратим внимание на то, что в заголовке процедуры для указания типов формальных параметров могут использоваться только имена типов. Нельзя (!) записать так:
Как же написать одну процедуру для обработки двух массивов одного типа, имеющих разное число элементов?
Пример. Вычислить z = (s + к) * (s 1+ k 1), где s, k – сумма и количество отрицательных элементов a (10), s 1, k 1 – сумма и количество отрицательных элементов массива b (8). program primer 2; uses crt; type vect = array [1..10] of real; {Значение верхней границы индекса равно максимальному числу элементов двух массивов а, b } var а, b: vect; i, k, k 1: integer; s, s 1: real; {Процедура для фиктивного массива х с числом элементов п, где п <= 10 вычисляет сумму (sum) и количество (col) отрицательных элементов}
procedure sumcol (x:vect; n:integer; var sum:real; var col:integer); var i:integer; begin sum:= 0; col:= 0; for i:=1 to n do if x [ i ]< 0 then begin sum:= sum + x [ i ]; соl:= соl + 1; end end; begin clrscr; writeln(¢ввeдитe массив а(10)¢); for i:= 1to 10 do read(a[ i ]); writeln(¢введите массив b (8)¢); for i:= 1 to 8 do read(b [ i ]); {в процедуру передается массив а длиной 10} sumcol(a, 10, s, к); {в процедуру передается массив b длиной 8} sumcol(b, 8, s l, k 1); z:= (s + k)*(s l + k l); writeln(¢z=¢, z: 6: 2); readkey end.
Такой подход можно применить и для двумерных массивов. Пример выполнения задания 8 Даны две вещественные матрицы a (7, 7) и b (5, 5). Из отрицательных элементов матрицы а сформировать одномерный массив с, а из отрицательных элементов матрицы b сформировать одномерныймассив d. В программе использовать три процедуры: – для ввода матриц, – для формирования одномерных массивов, – для вывода одномерных массивов. program lab5; uses crt; const n =7; type matr=array [1.. n, 1.. n ] of real; vect = array[l.. n * n ] of real; var a, b:matr; c, d:vect; t, q:integer; {процедура для ввода квадратной матрицы с фиктивным именем х с числом строк k и с числом столбцов k, где k <= п} procedure vvod (var x:matr; k:integer); var i, j:integer: begin for i:=1 to k do for j:=1 to k do read(x [ i, j ]); end; {процедура вывода одномерного массива с фиктивным именем y с числом элементов т, где т <= п*п } procedure vyvod (y:vect; m:integer); var i:integer: begin for i:= 1to m do write(y [ i ]:6:2); writeln end; {процедура формирования из матрицы х (k, k) одномерного массива у (т)} procedure form (x:matr; k:integer; var у:vect; var m:integer); var i,,j:integer: begin m:=0; for i:=1 to k do for j:=1 to k do if x [ i, j ] <0 then begin m:= m + 1; y [ m ]:= x [ i, j ] end end; {раздел операторов основной программы} begin clrscr; writeln (¢введите элементы матрицы а(7, 7)¢); vvod (a, 7); writeln (¢введите элементы матрицы b (5, 5)¢); vvod (b, 5); form(a, 7, с, t); writeln (¢вывод одномерного массива с длиной t элементов¢); vyvod(c, t); form (b, 5, d, q); writeln (¢вывод одномерного массива d длиной q элементов¢); vyvod (d, q); readkey end. Тема 9 Текстовые файлы Файловый тип данных, т. е. файл, является в Турбо Паскале единственным типом, посредством которого данные, обрабатываемые программой, могут б ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|