Основные конструкции языка
Паскаль - это язык структурного программирования. Это значит, что программа должна выражать свои мысли очень дисциплинированно, с использованием малого числа четко оговоренных конструкций, используя как чередование их, так и вложения друг в друга. Не рекомендуется (хотя и возможно) использовать оператор перехода goto. Реализация последовательности действий (т.е. структуры следования) выполняется с помощью составного оператора: Begin <последовательность операторов> end Раздел операторов в программе всегда является составным оператором. Служебные слова begin и end часто называют операторными скобками. Для реализации развилки в Паскале предусмотрены два оператора: условный оператор и оператор варианта (выбора). Они предназначены для выделения из составляющих их операторов одного, который и выполняется. Структура и действие условного оператора таковы: IF < логическое выражение> Then <оператор 1 > Else < оператор 2> Условный оператор может быть неполным, т.е. не содержать часть “else <оператор 2>". В этом случае, если значение логического выражения равно false, условный оператор не вызывает никаких действий. Оператор варианта имеет следующую форму: Case <выражение> of <список констант 1>: <оператор 1>; <список констант 2>: <оператор 2>; ……………………………………… <список констант n>: <оператор n>; end; Выражение, стоящее между служебными словами case и of, должно иметь значение ординального типа. Любой список констант может состоять из одной константы. Оператор варианта вычисляет значение выражения, записанного после case. Если его значение совпадает с одной из констант в некотором списке, то выполняется оператор, стоящий после этого списка. Если значение выражения не совпало ни с одной константой во всех вариантах, то оператор варианта ничего не делает.
Для реализации циклов в Паскале имеются три оператора. Если число повторений известно заранее, то удобно воспользоваться оператором цикла с параметром. В других случаях следует использовать операторы цикла с предусловием (цикл "пока") или с постусловием (цикл "до"). Цикл с предусловием является наиболее мощным в Паскале. Другие операторы цикла можно выразить через него. Его форма такова: While < логическое выражение> do <оператор > Действие: вычисляется значение логического выражения. Если оно равно true, то выполняется оператор, после чего снова вычисляется значение логического выражения, в противном случае действие заканчивается. Оператор цикла с постусловием имеет форму: Repeat <последовательность операторов > Until < логическое выражение> Действие: выполняется последовательность операторов. Далее вычисляется значение логического выражения. Если оно равно true, то действие заканчивается, в противном случае снова выполняется последовательность операторов цикла и т.д. Оператор цикла с параметром предусматривает повторное выполнение некоторого оператора с одновременным изменением по правилу арифметической прогрессии значения управляющей переменной (параметра) этого цикла. Оператор цикла с параметром имеет две формы. Форма 1: For < параметр>: = < выражение 1 > to < выражение 2 > do < оператор> Параметр, выражение 1, выражение 2 должны быть одного ординального типа. Параметр в этом цикле возрастает. Действие эквивалентно действию следующего составного оператора: Begin < параметр >: = <выражение 1 >; while < параметр> <= < выражение 2> do begin < оператор>; <параметр >: = succ (<параметр >) end end. Если в этом описании отношение <= заменить на >=, а функцию succ на pred, то параметр в цикле будет убывать, в этом случае цикл с параметром принимает форму 2.
Форма 2: For < параметр>: = < выражение 1 > downto < выражение 2 > do < оператор> Структуры данных
В Паскале кроме простых типов данных: real, integer, boolean, byte, char, программист по своему желанию может определить новый тип путем перечисления его элементов - перечисляемый тип, который относится к простым ординальным типам. Описание перечисляемого типа выполняется по схеме: Type < имя типа> = <список имен > Например, type operator = (plus, minus, multi, divide); Интервальный тип - это подмножество другого уже определенного ординального типа, называемого базовым. Интервал можно задать в разделе типов указанием наименьшего и наибольшего значений, входящих в него и разделяющихся двумя последовательными точками, например: Type days = (mon, tue, wed, thu, fri, sat, sun); Workdays= mon. fri; Index=1..30; Операции и функции - те же, что и для базового типа. Использование интервальных типов в программе позволяет экономить память и проводить во время выполнения программы контроль присваивания. Естественно и часто очень удобно группировать однотипные данные в последовательности - массивы, строки символов, объединять разнотипные данные в одном и том же объекте в виде записей. Значительное удобство представляются пользователю в Паскале при организации однотипных величин в виде множества с соответствующим набором операций: объединения, пересечения и т.д. Последовательность однотипных величин переменной длины можно представить в Паскале в виде файла данных и хранить на внешних носителях, используя его в разных программах. Массив -это последовательность, состоящая из фиксированного числа однотипных элементов. Все элементы массива имеют общее имя и различаются индексами. Индексы можно вычислять, их тип должен быть ординальным. В описании массива используются служебные слова array и of. В описании массива указывается тип его элементов и типы их индексов. Процедуры и функции
В Паскале подпрограммы называются процедурами и функциями и описываются в разделе с тем же названием. Все имена, описанные в программе до процедуры, действуют во всей программе и в любой ее подпрограмме. Они называются глобальными, в отличии от локальных имен, описанных в процедуре и действующих лишь в ней.
Данные для обработки могут передаваться процедуре через глобальные имена или через аргументы процедуры. В процедуре каждый аргумент имеет свое имя - формальный параметр, описываемый в заголовке процедуры по схеме Procedure < имя > (<список формальных параметров >) Описание формальных параметров может иметь вид <список имен >: < тип> или var < список имен>: < тип> Оператор вызова процедуры имеет вид < имя процедуры> (< список выражений>); Указанные выражения называются фактическими параметрами. Их список должен точно соответствовать списку описаний формальных параметров процедуры. Во время вызова процедуры каждому параметру-значению присваивается значение соответствующего фактического параметра и поэтому их используют для передачи входных данных. Параметры - переменные используются для представления результатов процедуры. Функция - это подпрограмма, определяющая единственное скалярное, вещественное или строковое значение. Отличия подпрограммы - функции от процедуры: заголовок функции начинается со служебного слова function и заканчивается указанием типа значения функции: function < имя> (список описаний формальных параметров): < тип>; раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции; обращение к функции - не оператор, а выражение вида: < имя функции> (< список фактических параметров>) Описание программы Работа программы
Для решения систем линейных уравнений методом Гаусса и матричным методом создана программа на языке Паскаль. Программа запрашивает исходные данные (рис.1): матрицу коэффициентов при неизвестных х; столбец свободных членов способ решения системы линейных уравнений - вариант 1 или 2.
Рисунок 3.1 Ввод исходных данных
В зависимости от выбранного вариант в программе происходит решение системы уравнений методом Гаусса (рис.2) или матричным методом (рис.3) с выдачей на экран результатов:
Рисунок 3.2 Результаты расчетов системы линейных уравнений методом Гаусса.
Рисунок 3.3 Результаты расчетов системы линейных уравнений матричным методом.
Программа состоит из 7 подпрограмм - 6 процедур и одной функции: процедура Gauss обеспечивает решение системы линейных уравнений по методу Гаусса; процедура matrica обеспечивает решение системы линейных уравнений матричным методом; процедура PrintMatr2 предназначена для выдачи на экран исходной и обратной матрицы; процедура MultString предназначена для умножения строк матрицы на число r; процедура AddStrings прибавляет к i1-ой строке матрицы i2-ю, умноженную на число r; процедура MultMatr предназначена для умножения матриц. Функция Sign используется для изменения знака на противоположный при вычислении обратной матрицы. Программа настроена на решение системы 3-х линейных уравнений с тремя неизвестными. Чтобы решить систему из 2-х уравнений с 2-мя неизвестными необходимо в программе изменить значение константы N с N=3 на N =2 (рис.4).
Рисунок 3.4. Фрагмент программы с описанием констант и переменных. Блок-схема программы
Заключение
В данной курсовой работе рассмотрены математические методы решения систем линейных уравнений: матричный метод и метод Гаусса, приводятся основные конструкции языка Паскаль. Рассмотренные теоретические вопросы дают возможность создания программы на Паскале для решения систем линейных уравнений. В курсовой работе приводится текст данной программы, рассматривается структура программы, анализируются все подпрограммы. Данная программа может быть использована в различных областях, где требуется решение систем линейных уравнений.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|