Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
75
Добавлен:
12.04.2015
Размер:
581.63 Кб
Скачать

Лекция 2. Создание программы. Основные элементы языка Фортран.

Программный способ записи алгоритма

Определение. Программа (на современном языке программный код или код) - последовательность команд, определяющая деятельность компьютера для выполнения алгоритма.

При составлении программы важны:

  • логическое и иные формы мышления,

  • знание условий выполнения программы и возможностей компьютера,

  • предугадывание возможных ошибок,

  • умение писать программы на понятном исполнителю языке – конкретном языке программирования.

  • и др.

Составление подобных программ – это программирование. При составлении программы важно умение писать программы на понятном исполнителю языке – конкретном языке программирования. Единственным языком, понятным компьютеру является язык машинных команд. Он реализуется аппаратно: каждую команду выполняет некоторое электронное устройство.

С появлением первых компьютеров стали развиваться формализованные алгоритмические языки программирования, понятные человеку-программисту. Эти языки не ориентированы на конкретный компьютер, а предназначены для записи алгоритмов.

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

Наиболее активный период разработки языков и систем программирования приходится на 1960-е годы. За это десятилетие в мире родилось более тысячи разнообразных языков, как универсальных, так и специализированных, но выжили и доросли до XXI века немногие, в том числе бессмертные Fotran, Basic, Algol, Cobol, Simula, Lisp и их потомки.

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

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

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

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

Программа – компилятор (Фортран) переводит в объектный код лишь завершенную программу (исходный код), дополнительно необходима компоновка (сборка) и создание исполняемого exe файла, который и выполняет программу.

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

Примеры: C, C++, Visual Basic, Java, Python, PHP, Ruby, Perl, Delphi (Pascal). Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.

Язык программирования - это синтаксис, то есть, правильно описанная операция:

  • взяли правильные для этого языка ключевые слова,

  • правильно описали переменные и их типы,

  • правильно закончили строки,

  • правильно написали операторы и т.д.

Чтобы компилятор или интерпретатор - работающий с программой на этом языке - понял в чем дело, что от него требуют и не выдал ошибки.

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

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

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

Способ записи алгоритма зависит от конкретного выбора языка программирования. Приведем примеры программ решения квадратного уравнения a·x2 +b·x + c = 0, созданных на различных языках высокого уровня.

Пример 1. Программа на Паскале:

var a,b,c,d,x:real;

begin

     writeln('введите A,B,C');

     readln( a,b,c );

     d:=sqr(b)-4*a*c;

     if d<0 then begin

        writeln('действительных корней нет');

     end else if d=0 then begin

        x:=(-b)/2*a;

        writeln('корень уравнения: ',x);

     end else begin

        x:=(-b+sqrt(d))/2*a;

        writeln('1-й корень уравнения: ',x);

        x:=(-b-sqrt(d))/2*a;

       writeln('2-й корень уравнения: ',x);

     end

end.

Пример 2. Программа на С++:

Пример 3. Программа на Фортране:

program uravnenie     real :: a, b, c, d, x1, x2         print *, "введите коэффициенты квадратного уравнения a, b, c"     read *, a, b, c     d = b * b - 4 * a * c     if (d > 0) then         x1 = (-b - sqrt(d)) / (2 * a)         x2 = (-b + sqrt(d)) / (2 * a)         print *, "два корня: ", x1, x2     elseif (d == 0) then         x1 = -b / (2 * a)         print *, "один корень: ", x1     else         print *, "нет действительных корней "     end if end

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

  • внутреннее представление данных в памяти компьютера;

  • множество значений, которые могут принимать величины этого типа;

  • операции и функции, которые можно применять к величинам этого типа.

От типа величины зависят машинные команды, которые будут использоваться для обработки данных. Наиболее часто используются следующие типы данных:

  • целый

  • вещественный

  • символьный

  • логический

В информатике наиболее часто используются следующие простейшие структуры данных:

  • константы,

  • переменные,

  • массивы.

Основные элементы языка Фортран

  1. Алфавит Фортрана

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

  • прописные и строчные латинские буквы A B C … Z и знак подчеркивания _ (регистр букв не различается)

  • арабские цифры от 0 до 9

  • специальные знаки:

+

´´, ´´´´апостроф и двойные кавычки

– символ пробел

*

:

/ и //

; – отделяет операторы, если они записываются в одной строке бланка

( )

! – начало строки комментариев

=

& (амперсенд)знак продолжения строки оператора (максимальная длина 132 символа)

. и ,

Замечание: русские буквы нельзя использовать в операторах (можно только в комментариях или символьных константах и переменных). Все остальные символы клавиатуры можно использовать в комментариях и текстовых данных. Пример, ´ D = ? ´ и ´#%#+@ ´.

Из символов алфавита формируются элементарные конструкции языка:

  • идентификаторы (имена);

  • ключевые (зарезервированные) слова;

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

  • константы;

  • разделители (скобки, точка, запятая, пробельные символы).

Идентификаторы (имена)

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

Примеры имен: x a_2 kp Time ZX_789

Рекомендации. Для облегчения работы лучше сохранять имена, принятые при формулировке задачи: Y C A X S.

Для улучшения читаемости программы следует давать объектам осмысленные имена, например, SUM PI INTEGRAL_1 ALPHA MASSA

Имена не должны совпадать с ключевыми словами и именами встроенных функций.

  1. Константы

Определение. Константыэто величины, значение которых не изменяется в процессе выполнения программы.

Например, числовые константы: 5, -0.543, 3.14159.

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

В алгоритмическом языке ФОРТРАН используются следующие типы данных:

  • Целый (INTEGER),

  • Вещественный (REAL),

  • Комплексный (COMPLEX),

  • Логический (LOGICAL),

  • Символьный (CHARACTER).

Операции по обработке этих данных определяются заданным типом данных и различны для разного типа данных.

Целые константы (тип INTEGER) – это целые числа (со знаком или без знака). Например, -55 , +67,  100.

Для записи целых констант в памяти компьютера используются ячейки памяти длиной 2 байта или 4 байта, поэтому значение целой константы, занимающей ячейку 4 байта, по модулю не должно превышать значение 231-1, т.е. 2 147 483 647.

Для целых констант используется точное двоичное представление - поразрядная запись цифр числа в ячейке памяти. Арифметические операции с такими константами проводятся с получением целочисленного результата (в этом особенность работы с целыми числами в Фортране). Например, 4/5=0, 9/4=2 (в примерах знак / определяет операцию деления).

Вещественные константы (тип REAL) используются для записи действительных чисел – чисел с дробной десятичной частью. Вещественные константы могут быть записаны в обычном виде с целой и дробной десятичной частью (со знаком или без знака), например, 93.678 -5.76 -9.0 (или –9.) .934 (или 0.934).

Такая форма в ФОРТРАНЕ называется формой F формой с фиксированной точкой. Эта точка может стоять в начале числа, в конце числа или посередине. Незначащие нули в начале или в конце числа могут быть опущены. Для записи таких значений в компьютере используются ячейки 4 байта (стандартная длина) или 8 байтов (двойная точность).

Вещественные константы стандартной длины содержат от одной до шести цифр, вещественные константы двойной длины — от семи до пятнадцати цифр независимо от положения точки в числе.

Арифметические операции с этими константами выполняются с получением вещественного результата (с дробной десятичной частью) Так, 4.0/5.0=0.8 и 9.0/4.0=2.25.

Если число содержит большее число цифр, чем предусмотрено в стандартной или двойной точности, то «лишние» цифры отбрасываются (усекаются). Поэтому вычисления с вещественными данными приближенные.

При переводе чисел с дробной десятичной частью в двоичное представление не каждое число может быть представлено точно (всеми своими цифрами). Для записи вещественных констант с плавающей точкой используется так называемая экспоненциальная форма или форма E.

В этом случае число записывается в виде ,

где q - мантисса числа, ±N - целый порядок.

Такая форма числа называется формой с плавающей точкой, потому что обычное число переводится в такую форму смещением десятичной точки вправо или влево от первоначального положения. Для сохранения величины исходного числа полученное при переносе число необходимо умножить на 10±N, где ±N определяет число разрядов, на которое перемещена точка (+ смещение влево, — смещение вправо).

В Фортране такие числа записываются в одну линию, и основание степени 10 заменяется символом E (знак умножения между q и E не ставится)

.

Таблица 1. Примеры записи чисел в форме Е:

Обычная запись

Экспоненциальная форма

Форма E

-12.564

- 1.2564·101

- 1.2564E 1

0.000345

3.45·10 – 4

3.45E –4

4.456

4.456·100

4.456E 0

0.00674

0.674·10-2

0.674E –2

-5678.6543

-5.6786543·103

-5.6786543D 3

В последнем примере мантисса содержит 8 цифр, и число записано с двойной точностью (вместо формы E использована форма D).

Если мантисса | q | ≤ 1, то такая форма записи числа называется нормализованной. В строке 1 и 4 таблицы 1 (колонка 2) – запись числа в нормализованной форме.

Диапазон изменения абсолютных значений вещественных констант стандартной длины от 1.17·10-38 до 3.4·1038, двойной точности 1.8·10-308 до 2.2·10308.

Рассмотрим примеры перевода чисел из формы E в обычную форму. Для этого будем переносить положение точки в мантиссе на N разрядов влево, если порядок отрицательный, и вправо, если положительный.

Примеры:

1.234570E-04 0.000123457;

9.951000E 05 995100.0;

-3.8721951E 00 -3.8721951.

Символьные константы (тип CHARACTER) – это любая последовательность символов, заключенных в апострофы или двойные кавычки, например:

FORTRAN90’

LAB

STUDENT

45_rty

Эти константы можно использовать в поясняющих текстах и как отдельные константы. Каждый символ константы занимает 1 байт в кодировке ASCII.

Логические константы (тип LOGICAL) могут принимать только два значения: .TRUE. (Истина) и .FALSE. (Ложь).

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

Соседние файлы в папке Лекции_фортран_текст