Язык программирования

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

 

ГОСУДАРСТВЕННОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ  УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО  ОБРАЗОВАНИЯ

 

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

 

(ГОУВПО “ВГТУ”)

 

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

 

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

 

 

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

 

к курсовой работе по дисцеплине “Информатика”

 

Вариант № 4

 

 

 

 

 

 

                                  Выполнил студент: Иващенко А.А.

 

Группа: РК-101

 

                                            Проверил: к.т.н., доцент Ромащенко М.А.

 

 

 

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

 

 

Содержание

 

 

 

Введение

Язык Паскаль, названный в честь  французского математика и философа Блеза Паскаля (1623-1662), был создан как учебный язык программирования в 1968-71 годах швейцарским ученым Никлаусом Виртом на кафедре информатики Стэнфордского университета (Цюрих). В настоящее время это язык имеет более широкую сферу применения, чем предусматривалось при его создании. Свое признание Паскаль получил с появлением пакета Турбо Паскаль (Turbo Pascal). Этот язык отличается простотой понимания, стройностью и структурностью алгоритмов, быстротой компилятора и удобными средствами создания и отладки программ.

Достоинствами языка Паскаль являются:

  1. Простой синтаксис языка. Небольшое число базовых понятий. Программы на Паскале достаточно легко читаемы.
  2. Достаточно низкие аппаратные и системные требования как самого компилятора, так и программ, написанных на Паскале.
  3. Универсальность языка. Язык Паскаль применим для решения практически всех задач программирования.
  4. Поддержка структурного программирования, программирования "сверху-вниз", а также объектно-ориентированного программирования.

В настоящей работе рассматривается и используется Turbo Pascal v7.0. Данная версия разработана фирмой Borland и является последней в линейке компиляторов Pascal для DOS. Дальнейшее развитие Паскаль получил в Delphi - системе разработки программ для Windows.

 

  1. Теоретическая часть

    1. Математическая постановка задачи

Дан двумерный массив размером M´N. Найти сумму элементов каждой строки массива. Из первых четырех строк массива сформировать четыре новых вектора (одномерные массивы). Определить отношение суммы элементов массива, расположенных до минимального элемента в массиве, к сумме элементов, расположенных после минимального.

    1. Язык программирования

Описание каждого элемента языка  задается его СИНТАКСИСОМ и СЕМАНТИКОЙ. Синтаксические определения устанавливают  правила построения элементов языка. Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения.

Алфавит - это совокупность допустимых в языке символов. Алфавит Турбо  Паскаль включает следующий набор  основных символов:

  • строчные и прописные латинские буквы:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

  • пробел
  • подчеркивание: _
  • арабские цифры:

0 1 2 3 4 5 6 7 8 9

  • знаки операций:

+ - * / = <> < > <= >= := @

  • ограничители:

. , ' ( ) [ ] (. .) { } (*  *) .. : ;

  • спецификаторы:

^  #  $

  • служебные (зарезервированные) слова:
    • ABSOLUTE          EXPORTS           LIBRARY           SET    
    • ASSEMBLER         EXTERNAL          MOD               SHL    
    • AND               FAR               NAME              SHR    
    • ARRAY             FILE              NIL               STRING 
    • ASM               FOR               NEAR              THEN   
    • ASSEMBLER         FORWARD           NOT               TO     
    • BEGIN             FUNCTION          OBJECT            TYPE
    • CASE              GOTO              OF                UNIT
    • CONST             IF                OR                UNTIL
    • CONSTRUCTOR       IMPLEMENTATION    PACKED            USES
    • DESTRUCTOR        IN                PRIVATE           VAR
    • DIV               INDEX             PROCEDURE         VIRTUAL
    • DO                INHERITED         PROGRAM           WHILE
    • DOWNTO            INLINE            PUBLIC            WITH
    • ELSE              INTERFACE         RECORD            XOR
    • END               INTERRUPT         REPEAT   
    • EXPORT            LABEL             RESIDENT 

Элементарные конструкции языка  Паскаль включают в себя имена, числа  и строки.

Имена (идентификаторы) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. Идентификатор в Турбо Паскале может включать в себя:

  • буквы латинского алфавита,
  • цифры
  • символ подчеркивания.

Строчные и прописные буквы  не различаются (например, NAME, Name и name будет  означать одно и то же). Цифра не может  стоять на первом месте в идентификаторе, а символ подчеркивания может  находиться в любой позиции (например, name1 и name2item являются допустимыми идентификаторами, а 5name - нет; _name, name_, name_item - тоже допустимые названия). Длина идентификатора может быть любой, но значимыми являются только первые 63 символа. В качестве имен не допускается использовать служебные слова.

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

- пробел и табуляцию;

- перевод строки;

- комментарий. 

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

Комментарии заключаются либо в  скобки { ... }, либо в скобки вида (* ... *) и могут занимать любое число строк.

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

217  -45  8954  +483

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

28.6  0.65  -0.018  4.0

Возможна также запись с использованием десятичного порядка, который изображается буквой Е:

5Е12  -1.72Е9  73.1Е-16

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

5´1012  -1.72´109  73.1´10-16

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

$7F  $40  $ABC0

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

'СТРОКА'  'STRING'  'ПРОГРАММА'  'АД''ЮТАНТ'

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

Тип определяет:

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

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

Иерархия типов в языке Паскаль  такая:

  • Простые
    • Порядковые
      • Целые
      • Логические
      • Символьные
      • Перечисляемые
      • Интервальные
    • Вещественные
  • Структуированные
    • Массивы
    • Строки
    • Множества
    • Записи
    • Файлы
  • Указатели

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

Идентификатор

Длина (байт)

Диапазон значений

Операции

Целые типы

integer

2

-32768..32767

+, -, /, *, Div, Mod,

>=, <=, =, <>, <, >

byte

1

0..255

+, -, /, *, Div, Mod,

>=, <=, =, <>, <, >

word

2

0..65535

+, -, /, *, Div, Mod,

>=, <=, =, <>, <, >

shortint

1

-128..127

+, -, /, *, Div, Mod,

>=, <=, =, <>, <, >

longint

4

-2147483648..2147483647

+, -, /, *, Div, Mod,

>=, <=, =, <>, <, >

Вещественные  типы

real

6

2,9x10-39 - 1,7x1038

+, -, /, *,

>=, <=, =, <>, <, >

single

4

1,5x10-45 - 3,4x1038

+, -, /, *,

>=, <=, =, <>, <, >

double

8

5x10-324 - 1,7x10308

+, -, /, *,

>=, <=, =, <>, <, >

extended

10

3,4x10-4932 - 1,1x104932

+, -, /, *,

>=, <=, =, <>, <, >

Логический тип

boolean

1

true, false

Not, And, Or, Xor,

>=, <=, =, <>, <, >

Символьный  тип

char

1

все символы кода ASCII

+,>=, <=, =, <>, <, >


 

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

Наряду с переменными в программах используются и константы. Константа - это идентификатор, обозначающий некоторую неизменную величину определенного типа. Константы, как и переменные, должны объявляться в соответствующем разделе программы.

В Турбо Паскаль применяется  несколько стандартных видов  констант:

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

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

В таблице приведены основные математические операции Турбо Паскаль.

Символ операции

Название операции

Пример

*

умножение

2*3 (результат: 6)

/

деление

30/2 (результат: 1.5E+01)

+

сложение

2+3 (результат: 5)

-

вычитание

5-3 (результат: 2)

div

целочисленное деление

5 div 2 (результат: 2)

mod

остаток от деления

5 mod 2 (результат: 1)


Над логическими аргументами в  Турбо Паскаль определены следующие  операции:

  • NOT - логическое отрицание ("НЕ")
  • AND - логическое умножение ("И")
  • OR - логическое сложение ("ИЛИ")
  • XOR - логическое "Исключающее ИЛИ"

Результаты выполнения этих операций над переменными А и В логического  типа приведены в таблице истинности.

A

B

not A 

A and B 

A or B 

A xor B 

true

true

false

true

true

false

true

false

 

false

true

true

false

true

true

false

true

true

false 

false 

 

false

false

false


К операциям отношения в Турбо  Паскаль относятся такие операции, как:

  • > - больше
  • < - меньше
  • = - равно
  • <> - не равно
  • >= - больше или равно
  • <= - меньше или равно

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

Порядок вычисления выражения определяется старшинством (приоритетом) содержащихся в нем операций. В языке Паскаль  принят следующий приоритет операций:

  • унарная операция not, унарный минус -, взятие адреса @
  • операции типа умножения:  *  /  div  mod  and
  • операции типа сложения:  +  -  or  xor
  • операции отношения:  =  <>  <  >  <=  >=  in

Порядок выполнения операций переопределить можно с помощью скобок. Например 2*5+10 равно 20, но 2*(5+10) равно 30.

Ниже приведены основные математические функции, встроенные в системную библиотеку Турбо Паскаль.

Abs(X) - Возвращает абсолютное значение числа X.

Cos(X), Sin(X) - Возвращает косинус (синус) числа X, где X - угол в радианах.

Функций тангенс и котангенс  в Турбо Паскале нет. Для их вычисления используйте выражение sin(x)/cos(x) (или cos(x)/sin(x) для котангенса).

ArcTan(X) - Возвращает арктангенc числа X.

Exp(X) - Возвращает число, равное e в степени X.

Ln(x) - Возвращает число, равное натуральному логарифму от числа X.

Pi - Число Пи.

Sqr(X) - Возвращает число, равное квадрату числа X.

Sqrt(X) - Возвращает число, равное квадратному корню из числа X.

Trunc(X) - Возвращает число, равное целой части числа X. (Происходит отбрасывание дробной части числа X. Результат выполнения имеет тип Longint).

Frac(X) - Возвращает число, равное дробной части числа X.

Int(X) - Возвращает число, равное целой части числа X. Результат выполнения функции - real.

Round(X) - Функция округляет число X. Возвращаемое значение имеет тип Longint.

Random(X) - Возвращает случайное целое число в диапазоне 0..X. Если аргумент опущен (Random), то возвращается случайное вещественное число от 0 до 1.

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

Inc(X,Y) - Увеличивает значение числа X на Y. Если число Y не указано, то увеличение происходит на 1.

Dec(X,Y) - Уменьшает значение числа X на Y. Если число Y не указано, то уменьшение происходит на 1.

Для ввода исходных данных чаще всего  используется процедура ReadLn:

ReadLn(A1,A2,...AK);

Процедура производит чтение К значений исходных данных и присваивает эти  значения переменным А1, А2, ..., АК.

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

Значения исходных данных могут  отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.

Не допускается разделение вводимых чисел запятыми!

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

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

Первый из этих операторов производит вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.

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

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

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент  списка вывода имеет вид А:К, где А - выражение или строка, К - выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций.

Для величин действительного типа элемент списка вывода может иметь  вид А:К:М, где А - переменная или  выражение действительного типа, К - ширина поля вывода, М - число цифр дробной части выводимого значения. К и М - выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.

Программа на языке Паскаль состоит  из заголовка, разделов описаний и раздела  операторов. Заголовок программы содержит имя программы, например:

Program PRIM;

Описания могут включать в себя:

  • раздел подключаемых библиотек (модулей);
  • раздел описания меток;
  • раздел описания констант;
  • раздел описания типов;
  • раздел описания переменных;
  • раздел описания процедур и функций.

Раздел описания модулей определяется служебным словом USES и содержит имена подключаемых модулей (библиотек) как входящих в состав системы Turbo Pascal, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей отделяются друг от друга запятыми:

uses CRT, Graph;

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

label 3, 471, 29, Quit;

Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описания констант:

const K= 1024; MAX= 16384;

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

var P,Q,R: Integer;

    A,B:   Char;

    F1,F2: Boolean;

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

Раздел операторов представляет собой составной оператор, который содержит между служебными словами

begin.......end

последовательность операторов. Операторы  отделяются друг от друга символом ;. Текст программы заканчивается  символом точка.

Кроме описаний и операторов Паскаль - программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную  между открывающей скобкой комментариев { и закрывающей скобкой комментариев }.

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

Оператор условного перехода в  Турбо Паскаль имеет вид:

if условие then оператор 1 else оператор 2;

условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполнению команды, стоящей непосредственно после оператора if.

Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!

else - часть в операторе if может  отсутствовать:

if условие then оператор 1;

Тогда в случае невыполнения логического  условия управление сразу передается оператору, стоящему в программе после конструкции if.

Следует помнить, что синтаксис  языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно  надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.

Часто возникают ситуации, когда  приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if .. then, удобнее воспользоваться специальным оператором выбора. Его формат:

case выражение of

    вариант : оператор;

    ...

    вариант : оператор;

end;

или

case выражение of

    вариант : оператор;

    ...

    вариант : оператор;

    else оператор

end;

выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания вариантов записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else (если он есть).

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

Если заранее известно количество необходимых повторений, то цикл называется арифметическим. Если же количество повторений заранее неизвестно, то говорят об итерационном цикле.

В итерационных циклах производится проверка некоторого условия, и в  зависимости от результата этой проверки происходит либо выход из цикла, либо повторение выполнения тела цикла. Если проверка условия производится перед выполнением блока операторов, то такой итерационный цикл называется циклом с предусловием (цикл "пока"), а если проверка производится после выполнения тела цикла, то это цикл с постусловием (цикл "до").

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

Арифметические циклы

Синтаксис:

for переменная := значение 1 to значение 2 do оператор

или

for переменная := значение 1 downto значение 2 do оператор

Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2.

Переменная цикла, начальное и  конечное значения должны иметь порядковый тип. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.

Как и в случае использования  оператора условного перехода, следует  помнить, что синтаксис языка  допускает запись только одного оператора  после ключевого слова do, поэтому, если вы хотите в цикле выполнить группу операторов, обязательно надо объединить их в составной оператор (окаймить операторными скобками begin ... end). В противном случае будет сделана логическая ошибка программы.

Итерационные циклы с предусловием

Синтаксис:

while выражение do оператор

Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.

Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным (False), то оператор не будет выполнен ни разу.

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

Итерационные циклы с постусловием

Синтаксис:

repeat

   оператор;

   оператор;

   ...

   оператор

until выражение

Операторы между словами repeat и until повторяются, пока логическое выражение является ложным (False). Как только логическое выражение становится истинным (True), происходит выход из цикла.

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

Операторы завершения цикла

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

В версии Турбо Паскаль 7.0 определены стандартные процедуры:

Break

Continue

Процедура Break выполняет безусловный  выход из цикла. Процедура Continue обеспечивает переход к началу новой итерации цикла.