Введение в программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel

Первые программы

Показывать лекцию целиком

Вы можете скачать презентацию к данной лекции здесь.

Создание проекта

File ---> New ---> Project...

Файл программы

File ---> New ---> File...

Первая программа

! ------------- первая программа
program prog1
  print *, "Hello World!"
end

Сохраним файл с программой в папку проекта

Добавление в проект

Компиляция и запуск

Результат работы программы

Комментарии

Комментарий – пояснительный текст к программе, начинается с символа " ! ".

! Снабжайте программу комментариями.

! Если не используете комментарии, то

! будете заново тратить время на разбор

! программы, в которой уже разбирались!

! Используйте комментарии для временного

! исключения строк кода программы.

Операторы

Оператор program

Оператор program – задает имя программе; является необязательным оператором.

Правило хорошего тона – записывать оператор program с именем программы.

Имя программы может состоять из символов:

  • латинские буквы (большие/маленькие);
  • цифры 0..9, со второй позиции;
  • знак "подчеркивание", со второй позиции.
  • program flow_3D или program TestSolveDiff

    ! Отсутствие зарезервированных имен !

    program program

    Оператор print

    Оператор print – печатает данные на экране

    !  Вывод строки текста
      print *, "Fortran 2008"
    
    !  Вывод текста и числа
      print *, "Resistance R0 = ", 2000, " Om"

    "*" означает вывод под управлением списка или с форматом по умолчанию, т.е. "программа знает" как печатать данные на экране.

    Умолчания можно изменить, если вместо "*" указать строку формата.

    Строка формата

    Строка формата заключается между символами "( строка формата )" и может содержать дескрипторы:

  • A – вывод символов,
  • \ – запрет перехода на следующую строку,
  • / – переход на следующую строку,
  • // – пропуск строки,
  • nx – вывод n пробелов
  • ...
  • ! Форматированный вывод строки текста
      print "(A)", "Hello world!"
    
    ! Курсор останется на той же строке 
      print "(A,\)", "Hello world!" 
    

    Форматированный вывод

    print "(A5)", "Hello world!" 
     ! 5 позиций под вывод символов текста
     ! Выведется только 5 букв, Hello
    
     print "(A30)", "Hello world!" 
     ! 30 позиций под вывод символов текста
     ! Сначала выводятся пробелы, затем текст
     ! Используется для выравнивания
    
     print "(2(A10))", "Hello", " world!" 
     ! Вывод двух строк текста на одной строке
    
     print "(A10,/,A10)", "Hello", " world!" 
     ! Вывод двух строк текста, на двух строках

    Оператор format

    Позволяет избегать дублирование строки формата.

    print "(A20,\)", "Pressure = " 
     print "(A20,\)", "Velocity = " 
     print "(A20,\)", "Length = " 
     print "(A20,\)", "Width = " 
    

    Лучше записать с использованием целочисленной метки на оператор format

    print 100, "Pressure = " 
     print 100, "Velocity = " 
     print 100, "Length = " 
     print 100, "Width = " 
     100 format(A20,\)
    

    Оператор end

    Указывает на конец программы.

    End может использоваться с другими операторами. Можно указать явно к какому оператору относится данный end.

    program solver
    ....
    end program solver
    $$\Longleftrightarrow$$
    program solver
    ....
    end

    Самая короткая программа на языке Fortran состоит из одного оператора end.

    Об ошибках компиляции

    Неверно записанная программа приводит к синтаксическим ошибкам!

    Устранять ошибки – работа программиста!

    Как писать без ошибок ?

    Писать без ошибок не получится

    Учитесь исправлять ошибки.

    Изучайте язык и пишите программы

    2-я программа

    Печать текста в столбик.

    program prog2A
    !--- первый вариант
     print *, "W" 
     print *, "o" 
     print *, "r" 
     print *, "l" 
     print *, "d" 
     print *, "!" 
    end
    
    program prog2B
    !--- второй вариант
     print 100, "W",  
                "o", 
                "r",  
                "l",  
                "d",  
                "!" 
    100 format(6(A,/))
    end
    

    Если не хватает строки в редакторе, то используем символ "" для продолжения на следующей.

    Оператор write

    Вместо оператора print можно использовать оператор write.

    print *,   "TEXT"
    print 100, "TEXT"
    
    ! печать
    ! пустой строки
    print *
    
    $$\Longleftrightarrow$$
    write(*,*) "TEXT"
    write(*,100) "TEXT"
    
    ! печать
    ! пустой строки
    write(*,*)
    

    Оператор write также используется при работе с файлами, имеется возможность обработки ошибок.

    3-я программа

    Вывод текста по буквам после нажатия клавиши Enter.

    Оператор read используется для ввода данных в программу.

    read(*,*) – ожидание нажатия клавиши Enter

    Оператор stop

    program prog3
     write(*,*) "Fortran"
     write(*,*) "BASIC"
     stop "Only two rows necessary!"
    
     ! остальные операторы не выполняются
     write(*,*) "C++"
     write(*,*) "JAVA"
    end
    

    Оператор stop останавливает выполнение программы.

    Текстовая строка содержит сообщение по какой причине произошла остановка.

    4-я программа

    program prog4
                    ! ----- второй вариант -----
     write(*,100)   ! write(*,"(A)") "**********" 
     write(*,101)   ! write(*,"(A)") "*        *" 
     write(*,101)   ! write(*,"(A)") "*        *" 
     write(*,100)   ! write(*,"(A)") "**********" 
     
    100 format(10("*"))     ! повторяем 10 "*" и
    101 format("*",8x,"*")  ! 8 пробелов
    end
    

    Результат работы программы

    Задания

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