Л05 Лингвистическое обеспечение.ppt
- Количество слайдов: 15
ОСНОВЫ САПР Лекция 5 Лингвистическое обеспечение
Языки программирования высокого уровня обычно делят на 4 класса: − императивные (процедурные); − функциональные; − логические; − объектно ориентированные.
Головной блок Модуль program <имя> [операторы описания] [операторы] end module <имя> [операторы описания] [операторы] end Подпрограммы Процедура subroutine <имя>([параметры]) [операторы описания] [операторы] end Функция function <имя>([параметры]) [операторы описания] [операторы] <имя>=[выражение] [операторы] end Вызов блока для исполнения производится следующими операторами: − для модуля use <имя>; − для процедуры call <имя>([параметры]); − для подпрограммы функции – в контексте программы.
Элементы программирования на языке Фортран Оператор program Пояснение Определяет имя головной (main) программной единицы, с которой начинается выполнение всей программы module Определяет имя программной единицы «Модуль» для выполнения одинакового программного кода из различных программ мных компонент subroutine Определяет заголовок програм мной единицы «Процедура» Определяет заголовок програм мной единицы «Функция» Определяет подпрограмму «Блок данных» для задания начальных значений переменных (устарело) function block data Пример stop Заканчивает выполнение программной единицы (не используем) pause Приостанавливает выполнение программной единицы; возможно выполнение команд ОС (заменяем оператором read*) Возвращает вычисление к месту, откуда вызвано выполнение процедуры или функции Определяет завершение программной единицы end return end
use include external common call Оператор data (=) Обеспечивает доступ к модулю из программной единицы Включение исходного кода одного файла в код другого Delineates variables shared between program units Пояснение Задание начальных значений Оператор присваивания Пример data i, j/2, 3/, c/2. 4/ a=a+1; b=1. 4 e 3
Следование Ветвление Цикл Да ? Нет Предопределённый процесс Начало Окончание Ввод/вывод
Операторы описания (неисполняемые операторы) Оператор Пояснение Пример real integer Объявление вещественного типа Объявление целого типа real(8) x, y integer k complex character logical implicit Объявление комплексного типа Объявление символьного типа Объявление логического типа Изменение типа complex z character(*) tr implicit none implicit real(8) (c f), . . . double precision Объявление двойной точности (есть другие способы описания) dimension Определение переменной как массива с определенным количеством элементов (есть другие способы описания) allocatable external Declares a user defined subroutine or function to be passable as an argument data Assigns initial values to variables
Пример Пояснение real : : p=3. 14, v, s complex : : z=(1. 41, 1. 4) character(30) : : tr=’c: rez. txt’ character(*) Разделитель : : позволяет задавать начальные значения Символьные значения указываются в кавычках или апострофах real g/3. 3/ Задание начальных значений при описании типа real a(4) Объявление вещественного массива из 4 элементов real: : a(-1: 2)=(/1. , . 2, 1. , 5. 3/) Объявление вещественного массива из 4 элементов с заданием начальных значений, используя конструктор массива: a 1 = 1; a 0 = 0, 2; a 1 = 1; a 2 = 5, 3 real a(4). . . a=(/1. , . 2, 1. , 5. 3/) Присваивание значений элементам массива, используя конструктор массива
Операции (по убыванию приоритета) Операция ** *, / +, ==, /=, >, <, >=, <=, . not. . and. . or. Пояснение Арифметическая Возведение в степень Нельзя возводить отрицательное число в нецелочисленную степень, или 0 в отрицательную и нулевую степень Умножение, деление Сложение, вычитание Логическая Равно, не равно, больше, меньше, больше или равно, меньше или равно Логическое отрицание Логическое умножение Логическое сложение Пример 2. **(1. /3. ) a*b/c 2+z del<=. 001. not. x (a>b). and. (k==0) (x<0. ). or. (x>xmax) Арифметическое выражение: 2**3**(1. /3. -. 1) (Порядок вычисления: в скобках, по приоритету, слева направо (кроме возведения в степень). Логическое выражение: . not. fl. and. a>d
Операторы ввода/вывода Оператор Пояснение read write Оператор ввода Оператор вывода print open Оператор вывода на экран Подключение устройства В/В Пример read(2, *)x, y, z print ’(1 x, a, f 5. 2, a, f 6. 4)’, ’x=’, x, & ‘y=’, y allocate deallocate read*, <список ввода> write(2, *) <список вывода> print*, ’KU KU’, 8 open(2, file=’myfile. txt’) Пояснение print*, (a(i), i=1, n) Оператор Пример Вывод на экран значений массива в циклическом списке Чтение с устройства 2 (например, из файла) трех значений Форматный вывод (применение дескрипторов преобразования) Пояснение Динамическое выделение памяти Освобождение памяти Пример
Оператор Пояснение do Перечисляемый цикл do while Цикл с предусловием cycle Передача управление на enddo exit Выход из цикла enddo Оператор – граница цикла if Условный оператор, ветвление if. . . then. . . else. . . endif Пример Условный оператор, ветвление Пример Пояснение [имя]: do i=5, -2 <БO> exit <БO> cycle <БO> enddo [имя] БО – блок операторов do; <БO>; enddo Бесконечный цикл do 111 i=1, 10 <БO> 111 <О> О – последний оператор цикла
Пример Пояснение if(<ЛВ>)then; <БO> if(<ЛВ>)then; <БО>; else<БО> if(<ЛВ>)then; <БО>[; elseif(<ЛВ>)…] ЛВ – логическое выражение; О – оператор БО – блок операторов Операнды оператора elseif такие же, как и в операторе if. if(<ЛВ>)<О> endif Оператор Пояснение Пример select case Множественное ветвление select case(i) case Вариант в множественном ветвлении case(1) case(1, 7, 10: 17, 4) case default Вариант по умолчанию end case Окончание конструкции case
Примеры элементов программы на языке Фортран module mod_zai use dialogm include 'resource. fd' integer retint, iend logical retlog, err character(80) trez, str dimension x(29), err(29) data x/1020. e 3, 1. 45 e 5, 5. 24 e 5, 0. , . 05, 0. , . 942, 0. , . 07, & . 11, . 03, . 9, 1. 45, 2*. 85, . 018, 2*. 006, 2*. 003, 2*. 0002, . 001, . 06, 5, 5/ end program Plrki. Dia use mod_zai external indata … retlog=dlgsetsub(dlg, combo 1, indata) … end subroutine indata(dlg, cname, cbt) use mod_zai integer cname, cbt character(50)terr …
… open(1, file='rez. txt') write(1, *)' ИСХОДНЫЕ ПАРАМЕТРЫ' write(1, *)'Тепловой поток, Вт: Q=' , Q … ИСХОДНЫЕ ПАРАМЕТРЫ Тепловой поток, Вт: Q= 2100. 000 do i=1, 3 TS=TS+x(i)*T(i) enddo … do while (abs(x 1 -xk 1 v)>=eps. or. abs(x 2 -xk 2 v)>=eps) call olet(pk, xk 1 v, xk 2 v, a 1 v, a 2 v) x 1=xk 1 v; x 2=xk 2 v cc=(yk 1/a 1 v+yk 2/a 2 v+1 -yk 2) xk 1 v=(yk 1/a 1 v)/cc; xk 2 v=(yk 2/a 2 v)/cc enddo
SELECT CASE(MOD(N, 17)) CASE(0); N = 0 CASE(1, 6); N = -N CASE(2, 3, 5); N = 2 * N CASE(4); N = 3 * N CASE DEFAULT; N = 5 * N END SELECT if(d. Ts>d. Tr)then; qeka=qek; else; qeki=qek; endif
Л05 Лингвистическое обеспечение.ppt