Информатика

Автор: Пользователь скрыл имя, 30 Марта 2010 в 10:32, курсовая работа

Описание работы

ЗАДАНИЕ: Задана действительная матрица размера n*m. Построить матрицу той же размерности, если каждый элемент новой матрицы равен сумме элементов в не заштрихованной области.

Содержание

Задание на курсовую работу…………………………………………………2
Замечания руководителя……………………………………………….……..3
Введение…...………………….……………………………………………….5
1. Теоретическая часть…………….………………………………………….6
1.1 Стандартные типы данных……….……………………………….……6
1.2 Массивы в языке программирования Pascal…….…………………….9
1.3 Процедуры и функции…………………………………………….…....10
1.4 Графические возможности языка программирования Pascal………..13
2. Экспериментальная часть………………………………………………….15
2.1 Постановка задачи……………………………………………….……..15
2.2 Алгоритм решения задачи……………………………………….….....15
2.3 Описание диалога с пользователем……………………………….…..25
2.4 Контрольный пример……………………………………………….….26
Заключение…………………………………………………………………….27
Список литературы……………………………………………………………28
Приложение……………………………………………………………………29

Работа содержит 1 файл

Курсяк.doc

— 508.00 Кб (Скачать)

           Trunc(X) и Round(X),  

      Первая  из них выделяет целую часть действительного  аргумента  путем отсечения дробной части, вторая округляет аргумент до ближайшего целого.

      Символьный  тип (Char) определяет упорядоченную совокупность символов, допустимых    в  данной ЭВМ.  Значение символьной переменной или константы - это один символ из допустимого набора. Символьная константа  может  записываться в тексте программы тремя способами:

      -как  один символ, заключенный в апострофы,  например:  

          'A'   'a'   'Ю'  'ю';  

      -с  помощью конструкции вида #K, где K - код соответствующего символа, при этом значение K должно находиться в пределах 0..255;

      -с  помощью конструкции вида ^C, где C - код соответствующего управляющего  символа, при этом  значение C должно быть на 64 больше кода управляющего символа.

      К величинам символьного типа применимы все операции отношения. Для величин символьного типа определены две функции преобразования  

            Ord(C)     Chr(K).  

      Первая  функция определяет порядковый номер символа С в наборе символов,  вторая  определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип.

      К аргументам символьного типа применяются  функции, которые определяют предыдущий и последующий символы:  

          Pred(C)    Succ(C).   Pred('F') = 'E' ; Succ('Y') = 'Z' .  

      При отсутствии  предыдущего или последующего символов значение соответствующих функций не определено. Для литер из интервала 'a'..'z' применима функция UpCase(C), которая переводит эти литеры в верхний регистр 'A'..'Z'. 

      1.2 Массивы в языке программирования  Pascal 

      Представьте себе таблицу, состоящую из нескольких строк. Каждая строка состоит из нескольких ячеек. Тогда для точного определения положения ячейки нам потребуется знать не одно число (как в случае таблицы линейной), а два: номер строки и номер столбца. Структура данных в языке Паскаль для хранения такой таблицы называется двумерным массивом. Описать такой массив можно двумя способами:

I. Var

A : Array [1..20] Of Array [1..30] Of Integer;

II. Var

A : Array [1..20,1..30] Of Integer;

      В обоих случаях описан двумерный  массив, соответствующий таблице, состоящей  из 20 строк и 30 столбцов. Приведенные описания совершенно равноправны.

      Отдельный элемент двумерного массива адресуется, естественно, двумя индексами. Например, ячейка, находящаяся в 5-й строке и 6-м столбце будет называться A[5][6] или A[5,6].

      Для иллюстрации способов работы с двумерными массивами решим задачу: "Задать и распечатать массив 10X10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали."

      При отсчете, начиная с левого верхнего угла таблицы, главной будем считать диагональ из левого верхнего угла таблицы в правый нижний. При этом получается, что элементы, лежащие на главной диагонали будут иметь одинаковые индексы, а для элементов выше главной диагонали номер столбца будет всегда превышать номер строки. Договоримся также сначала указывать номер строки, а затем - номер столбца. 

Program M5;

Var

A : Array[1..10,1..10] Of Integer;

I, K : Byte;

S : Integer;

Begin

S:=0;

For I:=1 To 10 Do

Begin

For K:=1 To 10 Do

Begin

A[I,K]:=Trunc(Random*100)+1;

Write(A[I,K]:6);

If K>I Then S:=S+A[I,K]

End;

Writeln

End;

Writeln('Сумма элементов выше гл. диагонали равнаV',S)

End.  

      Если  модель данных в какой-либо задаче не может свестись к линейной или  плоской таблице, то могут использоваться массивы произвольной размерности. N-мерный массив характеризуется N индексами. Формат описания такого типа данных:

Type

<Имя  типа>=Array[<диапазон индекса1>,<диапазон  индекса2>,...

<диапазон  индекса N>] Of <тип компонент>;  

Отдельный элемент именуется так:

<Имя  массива>[<Индекс 1>,<Индекс 2>,...,<Индекс N>] 

      1.3 Процедуры и функции 

      При решении сложных объемных задач  часто целесообразно разбивать  их на более простые. Метод последовательной детализации позволяет составить  алгоритм из действий, которые, не являясь  простыми, сами представляют собой достаточно самостоятельные алгоритмы. В этом случае говорят о вспомогательных алгоритмах или подпрограммах. Использование подпрограмм позволяет сделать основную программу более наглядной, понятной, а в случае, когда одна и та же последовательность команд встречается в программе несколько раз, даже более короткой и эффективной.

      В языке Паскаль существует два  вида подпрограмм: процедуры и функции, определяемые программистом. Процедурой в Паскале называется именованная  последовательность инструкций, реализующая некоторое действие. Функция отличается от процедуры тем, что она должна обязательно выработать значение определенного типа.

      Процедуры и функции, используемые в программе, должны быть соответствующим образом  описаны до первого их упоминания. Вызов процедуры или функции производится по их имени.

      Подпрограммы  в языке Паскаль могут иметь  параметры (значения, передаваемые в  процедуру или функцию в качестве аргументов). При описании указываются  так называемые формальные параметры (имена, под которыми будут фигурировать передаваемые данные внутри подпрограммы) и их типы. При вызове подпрограммы вместе с ее именем должны быть заданы все необходимые параметры в том порядке, в котором они находятся в описании. Значения, указываемые при вызове подпрограммы, называются фактическими параметрами. 

Формат  описания процедуры:

Procedure <Имя  процедуры> (<Имя форм. параметра  1>:<Тип>;

< Имя  форм. параметра 2>:<Тип>?);

<Раздел  описаний>

Begin

<Тело  процедуры>

End; 

      Раздел  описаний может иметь такие же подразделы, как и раздел описаний основной программы (описание процедур и функций - в том числе). Однако все описанные здесь объекты "видимы" лишь в этой процедуре. Они здесь локальны также, как и имена формальных параметров. Объекты, описанные ранее в разделе описаний основной программы и не переопределенные в процедуре, называются глобальными для этой подпрограммы и доступны для использования.

      Легко заметить схожесть структуры программы  целиком и любой из ее процедур. Действительно, ведь и процедура  и основная программа реализуют некий алгоритм, просто процедура не дает решения всей задачи. Отличие в заголовке и в знаке после End. 

Формат  описания функции:

Function <Имя  функции> (<Имя форм. параметра  1>:<Тип>;

< Имя  форм. параметра 2>:<Тип>?) : <Тип  результата>;

<Раздел  описаний>

Begin

<Тело  функции>

End; 

      В теле функции обязательно должна быть хотя бы команда присвоения такого вида: <Имя функции>:=<Выражение>; Указанное выражение должно приводить к значению того же типа, что и тип результата функции, описанный выше.

      Вызов процедуры представляет в программе  самостоятельную инструкцию:

      <Имя  процедуры>(<Фактический параметр 1>, < Фактический параметр 2>?); Типы фактических параметров должны быть такими же, что и у соответствующих им формальных.

      Вызов функции должен входить в выражение. При вычислении значения такого выражения функция будет вызвана, действия, находящиеся в ее теле, будут выполнены, в выражение будет подставлено значение результата функции.

      Приведем  простейший пример использования подпрограммы.

Задача: "Найти максимальное из трех введенных чисел". Для решения воспользуемся описанием функции, принимающей значение максимального из двух чисел, которые передаются в нее в виде параметров.

Program Fn;

Var

A,B,C :Real;

Function Max(A,B:Real):Real; {Описываем функцию Max с формальными}

Begin {параметрами  A и B, которая принимает } 

If A>B Then Max:=A {значение максимального из  них }

Else Max:=B {Здесь A и B - локальные переменные } 

End;

Begin 

Writeln('Введите три числа');

Readln(A,B,C);

Writeln('Максимальным из всех является ', Max(Max(A,B),C)) 

End. 

      Обратите  внимание на краткость тела основной программы и на прозрачность действий внутри функции. Формальные параметры A и B, используемые в подпрограмме, не имеют никакого отношения переменным A и B, описанным в основной программе.

      Существует  два способа передачи фактических  параметров в подпрограмму: по значению и по ссылке. В первом случае значение переменной - фактического параметра при вызове подпрограммы присваивается локальной переменной, являющейся формальным параметром подпрограммы. Что бы потом ни происходило с локальной переменной, это никак не отразится на соответствующей глобальной. Для одних задач это благо, но иногда требуется произвести в подпрограмме действия над самими переменными, указанными в качестве фактических параметров. На помощь приходит второй способ. Происходит следующее: при обращении к подпрограмме не происходит формирования локальной переменной -формального параметра. Просто на время выполнения подпрограммы имя этой локальной переменной будет указывать на ту же область памяти, что и имя соответствующей глобальной переменной. Если в этом случае изменить локальную переменную, изменятся данные и в глобальной.

      Передача  параметров по ссылке отличается тем, что при описании подпрограммы перед именем переменной - формального параметра ставится служебное слово Var. Теперь использование в качестве фактических параметров выражений или непосредственных значений уже не допускается - они должны быть именами переменных. 

      1.4 Графические возможности языка программирования Pascal 

      Экран дисплея ПК представляет собой прямоугольное  поле, состоящее из большого количества точек. Дисплей может работать в  текстовом и графическом режимах. Но в отличие от текстового режима в графическом режиме имеется  возможность изменять цвет каждой точки.

      Чтобы сделать процесс графического программирования более эффективным, фирма Borland International разработала специализированную библиотеку Graph (в этом библиотечном модуле содержится 79 графических процедур, функций, различных стандартных констант и типов данных), набор драйверов, позволяющих работать с разными типами мониторов, и набор шрифтов для вывода на графический экран текстов разной величины и формы.

      Аппаратная  поддержка графики ПК обеспечивается двумя основными модулями: видеомонитором и видеоадаптером. Какой бы адаптер ни был установлен на компьютере, мы можем использовать один и тот же набор графических процедур и функций Турбо Паскаля благодаря тому, что их конечная настройка на конкретный адаптер осуществляется автоматически. Эту настройку выполняют графические драйверы.

Информация о работе Информатика