Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. Программалау.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.05 Кб
Скачать
  1. Fortran тілінде статикалық массивтерді хабарлау және инициализациялау.

DIMENSIONf атрибуттарын қолданбай массивтерді хабарлауға болады. Мысалы келесі хабарлаулар екіөлшемді бүтін санды массив береді

integer, parameter :: m = 2, n = 4

integer a(m, n) ! или a(1:m, 1:n)

или

integer b

dimension b(m, n) ! Оператор DIMENSION

или

integer, dimension(m, n) :: с ! Атрибут DIMENSION

массивтерді хабарлау үшін әр түрлі әдістер:

integer, allocatable :: а(:, :)

или

integer, dimension(:, :) :: b

allocatable b ! Оператор ALLOCATABLE

или

integer с

dimension c(:, :) ! Оператор DIMENSION

alocatable с

или

integer, alocatable, dimension (:, :):: d

  1. Fortran тілінде динамикалық массивтерді хабарлау және инициализациялау.

Массивтерді сипаттау кезінде әрбір өлшем үшін массивтің элементтернің саны белгіленеді. Мысалы :

integer q(10)

немесе

double precision p(30,30,30)

программаны компиляциялау кезінде массивтерге жұмыстың соңына дейін сақталатын жады бөлінеді. Мұндай массивтер статикалық массиытер деп аталады. Бірақ статикалық массивтермен жұмыс істеу кейде қолайсыз болады. Мысалы программамен жұмыс істейтін қолданушыға алдымен 400 элементтен тұратын матрица, ал кейін 5000, ары қарай 1000000нан, және де соңында 100 элементтен тұратын матрица керек делік. Осы жерде программаның жұмысы процессінде екіөлшемді массивтердің шекараларын ауыспалы етуге болады деген сұрақ туындайды. Әрине бірден массивтің максималды шамасын енгізуге болады, мысалы (1000 1000), және шектеулерді бере отырып керек өлшемдермен жұмыс істеуге болады. Бірақ мұндай әдіс жадының үлкен көлемде жқмсалуына әкеледі. Осындай есептерді шешу үшін өлшемі компиляция кезінде емес, программаны орындау кезінде берілетін динамикалық массивтер қолданылады. Мұндай массивтерді сипаттау үшін allocatable атрибуты қолданылады. Мысалы:

real, allocatable :: s(: , :)

Массивті жариялау кезінде өлшемдердің орнына қос нүкте қойылады, ол массивтің өлшемі еркін бола алады дегенді білдіреді. Ораналастыру массивтерінің мысалы:

logical, allocatable : : g(:)

integer, allocatable : : c(: , :)

real, allocatable : : s(: , : , : )

Массивті компьютер жадында орналастыру үшін allocatable операторы қолданылады. Динамикалық массивтермен жұмыс жасап біткеннен кейін жадыны босату керек, ол үшін deallocatable операторын қолданамыз.

Мысал. Массивінің индекстерінің квадратты мәні бар бірөлшемді динамикалық массив құрастыру:

program use_allocatable

integer, allocatable : : b(:)

integer M

write (*, “ (A, \)”) “ Number of elements…” ; read (* , *) M

allocate (b(M)) !

do k=1, M

b(k)=k**2

write (*, “ (i6, \) ” ) b(k)

end do

deallocate (b) !

end

программаның нәтижесі:

Number of elements…10

  1. 4 9 16 25 36 49 64 81 100

23.Fortran тіліндегі процедуралар (функциялар, ішкі программалар).Ішкі бағдарлама - көлемі жағынан орташа болып келетін бағдарламаларды құрастырғанда құрылымды бағдарламалау қолданылады. Бағдарламаның құрылымы шығарылып жатқан есептің құрылымын көрсету керек. Ол үшін қарапайым операторлар жеткіліксіз, алгоритмнің нақты құрылымын дәлірек көрсететін құралдар қажет. Сондықтан бағдарламалауға жаңа ұғым – ішкі бағдарламалар енгізілді. Ішкі бағдарламаның екі түрі боладыпроцедуралар және функциялар. Олардың айырмашылығы: процедура белгілі бір операторлар тобын орындаса, функция осыған қоса қандай да бір нәтижені есептеп, оны негізгі бағдарламаға қайта жібереді. Бұл нәтиженің өзіне тән типі болады. Ішкі бағдарлама негізгі бағдарлама сияқты құрылады, яғни бағдарлама атауынан, операторлар бөлігінен және аяқталуынан құрылады. Процедура – белгілі ретпен іске асырылатын іс-әрекеттер жиыны, жалпы бағдарламаның бір бөлігі. Функция – басқа мәліметтер алу үшін анықталған мәліметтерге қолданылатын компьютердің іс-әрекеті. Функцияның ерекшелігі – оның орындалуы барысында бір ғана нәтиже шығады, ал кіру параметрлері бірнешеу болуы мүмкін. Нәтиже функция атауымен белгіленіп, негізгі бағдарламаға беріледі. FUNCTION <атауы> (<форм. параметрлер тізімі>);

<операторлар бөлігі>

END FUNCTION

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]