Информатика. 2

Федеральное агентство по образованию Российской Федерации

ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Радиотехнический  факультет

Кафедра конструирования и производства радиоаппаратуры 
 
 
 

Курсовая  работа 

По дисциплине: «Информатика»

Вариант №22 
 
 
 
 
 

Выполнил студент              РК-082                                                Рощупкин А.Д.

                                                                   Группа                     Подпись, дата                          Фамилия, инициалы 

Руководитель                                                                                    Новикова И.А.

                                                                                     Подпись, дата                                          Фамилия, инициалы 

Защищена     ___________________  Оценка    ___________________________

                                                                                                                                                       Дата 
 
 

Воронеж

2009

Воронежский государственный технический университет 

Кафедра конструирования и производства радиоаппаратуры 
 

ЗАДАНИЕ

на курсовую работу

По дисциплине: «Информатика» 
 

Студент группы                  РК-082                                                Рощупкин А.Д.

                                                                                                                                                  Фамилия, имя, отчество

Вариант №22

а)            б)              в)              г)         

      Задана  действительная матрица размера  n*m. Построить матрицу той же размерности, если каждый элемент новой матрицы равен сумме элементов в не заштрихованной области. Варианты a), б), в), г) 

Сроки выполнения этапов    системный анализ и проектирование алгоритмов

с 1.03.2009 по 3.03.2009, структурное проектирование с 3.03.2009

  по 4.03.2009, разработка программного комплекса с 8.03.2009 по 17.03.2009,

отладка и испытание с 17.03.2009 по 20.03.2009, оформление с 28.04.2009

по 12.05.2009

Срок защиты курсовой работы 26.05.2009_______________________________ 
 

Руководитель                                                                                    Новикова И.А.

                                                                                     Подпись, дата                                          Фамилия, инициалы 

Задание принял студент                                                                  Рощупкин А.Д.                                                                                                                                                      

                                                                                         Подпись, дата                                      Фамилия, инициалы

Замечания руководителя  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

      Содержание 

Задание на курсовую работу…………………………………………………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. Теоретическая часть 

      1.1 Стандартные типы данных 

      К стандартным относятся целые, действительные, символьный и адресный типы.

      Целые типы  определяют константы, переменные и функции, значения

которых реализуются множеством целых чисел,  допустимых в данной ЭВМ.  

                тип            диапазон значений       требуемая память

      __________________________________________________________  

               Shortint               -128 .. 127                         1 байт

       

               Integer            -32768 .. 32767                    2 байта  

               Longint     -2147483648 .. 2147483647      4 байта  

               Byte                       0 .. 255                            1 байт  

               Word                   0 .. 65535                          2 байта

      __________________________________________________________

   

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

           +      -     *     div     mod  

      Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции  получения остатка от деления - остаток от деления целых. Например:  

                   17 div 2 = 8,   3 div 5 = 0.  

              17 mod 2 = 1,   3 mod 5 = 3.  

      Операции  отношения,  примененные к целым  операндам, дают результат логического  типа TRUE или FALSE ( истина или  ложь ). В языке ПАСКАЛЬ имеются следующие операции отношения: равенство(=), неравенство (<>), больше или равно (>=),  меньше или равно (<=),больше (>), меньше (<) .

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

         Abs(X),   Sqr(X),   Succ(X),   Pred(X),  

они определяют соответственно абсолютное значение Х,  Х в квадрате, Х+1, Х-1.

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

         Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X).  

      Эти функции вычисляют синус,  косинус  и арктангенс угла, заданного 

в радианах, логарифм натуральный, экспоненту и корень квадратный соответственно.

      Результат выполнения функции проверки целой  величины на нечетность Odd(X) имеет значение  истина,  если аргумент нечетный,  и значение ложь, если аргумент четный:  

         X=5    Odd(X)=TRUE ,    X=4    Odd(X)=FALSE.  

Для быстрой  работы с целыми числами определены процедуры:  

         Inc(X)     X:=X+1  

          Inc(X,N)   X:=X+N  

          Dec(X)     X:=X-1  

          Dec(X,N)   X:=X-N  

      Действительные  типы  определяет  те данные,   которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ.  

         Тип           Диапазон             Количество цифр     Требуемая

                           значений                   мантиссы               память

      __________________________________________________  

         Real      2.9e-39 .. 1.7e+38               11                      6 байт 

        Single  1.5e-45 .. 3.4e+38               7                      4 байт 

        Double   5.0e-324 .. 1.7e+308           15                      8 байт 

      Extended 3.4e-4932 .. 1.1e+4932      19                      10 байт

      ___________________________________________________ 

      Тип Real определен в стандартном Pascal и математическим  сопроцессором не поддерживается.

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

          Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X),  Ln(X), Exp(X),  

      Sqrt(X), Frac(X), Int(X), Pi.  

      Функция Frac(X) возвращает дробную часть X, функция Int(X) - целую часть X. К аргументам действительного типа применимы также функции дающие целый результат: 

           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 графических процедур, функций, различных стандартных констант и типов данных), набор драйверов, позволяющих работать с разными типами мониторов, и набор шрифтов для вывода на графический экран текстов разной величины и формы.

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

Информатика. 2