Разделы презентаций


Основы, программирования Fortran, C++, D

Содержание

Занятие 5, операторы и WindowsПроцедуры, функции и операторы– функции – основные процедурные блоки при алгоритмическом программировании, на языке Си++– правила записи, вызова и согласованного использования различных параметровИмена функцийНеобязательные аргументы

Слайды и текст этой презентации

Слайд 1Основы, программирования Fortran, C++, D
Санкт-Петербургский государственный университет фак. Прикладной математики – процессов управления гр.

103 – прикладная математика и информатика
2013.10.05. Процедуры и

функции. Занятие № 5 Храмушин Василий Николаевич – V.Khramushin@SPBU.ru каф. компьютерного моделирования и многопроцессорных систем
Основы, программирования Fortran, C++, DСанкт-Петербургский  государственный университет фак. Прикладной математики – процессов управления гр. 103 –

Слайд 2Занятие 5, операторы и Windows
Процедуры, функции и операторы
– функции –

основные процедурные блоки при алгоритмическом программировании, на языке Си++
– правила

записи, вызова и согласованного использования различных параметров
Имена функций
Необязательные аргументы функций
Вызов функций
Рекурсия
Занятие 5, операторы и WindowsПроцедуры, функции и операторы– функции – основные процедурные блоки  при алгоритмическом программировании,

Слайд 3гр.103 – Прикладная математика и информатика
1. Власов Александр Александрович

+ + + +
2. Данилов Артем Дмитриевич + + + +
3. Каюмова Диана Шамильевна

+ --- + +
4. Колесова Александра Александровна + + + +
5. Лапин Егор Дмитриевич + + + +
6. Леганькова Дарья Андреевна + + + +
7. Минаева Ульяна Сергеевна + + + +
8. Мозин Виталий Романович + + + +
9. Пенкрат Андрей Олегович + + --- +
10. Глотова Екатерина Андреевна + +
11. Пономарева Юлия Константиновна + + + +
12. Сатина Алена Юрьевна + + + +
13. Сафронов Вадим Викторович + --- --- ---
14. Симанков Сергей Сергеевич + + + +
15. Смирнова Дарья Сергеевна + + ---
16. Фатькина Анна Игоревна + + + +
17. Федосеев Георгий Александрович + + + +
гр.103 – Прикладная математика и информатика1.  Власов Александр Александрович 	+	+	+	+	2.  Данилов Артем Дмитриевич 	+	+	+	+3.

Слайд 4Вопросы от 28 сентября:
Структура типовой программы на алгоритмическом языке программирования

(операторы описания данных и выполняемые команды);
Типовое построение среды компиляции и

сборки программ на алгоритмических языках программирования (структура библиотек на примере проекта GCC.GNU)
Реализация простейшей интерактивной графики в среде GLFW и Glut для OpenGL (особенности исполнения программы, управляемой внешними прерываниями).
… и то уже не просто …
Вопросы от 28 сентября:Структура типовой программы на алгоритмическом языке программирования  (операторы описания данных и выполняемые команды);Типовое

Слайд 5Реализация вычислений на объектно-ориентированном языке
1. Функциональное программирование (LISP, Planner):
– потоки

информации управляют ходом вычислений
= искусственный интеллект  режим интерпретации
2. Декларативное

программирование (FORTRAN, Algol, С):
– трансформация данных по заданным алгоритмам
= наиболее эффективные расчеты на современных арифметико-логических устройствах
2+Объектно-ориентированное программирование (C++,D):
– на этапах компиляции множатся алгоритмы для всех числовых объектов с контролем допустимости операций
= сохраняется линейность расчетов + накладные расходы
Реализация вычислений на  объектно-ориентированном языке1. Функциональное программирование (LISP, Planner):	– потоки информации управляют ходом вычислений	= искусственный интеллект

Слайд 6Процедуры, функции и операторы
Процедуры служат оптимизации программ по объёму занимаемой

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

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

Слайд 7Функциональное и алгоритмическое (декларативное/императивное/) программирование
Компиляция – построение эффективной программы непосредственно

в кодах процессора.
Интерпретация – построение контекстно-зависимых описаний и непосредственное исполнение

операций на языке программирования.
ЭВМ Эльбрус (asm – отсутствует), язык — автокод Эль-76 (класса Алгол), с динамическим связыванием типов на уровне аппаратной поддержки.
При компиляции программа переводится в безоперандные команды стековой архитектуры, выбор нужного варианта операции и контроль типов операндов происходит на этапе выполнения.
Эльбрус-2С+, 2011.
Функциональное и алгоритмическое (декларативное/императивное/) программированиеКомпиляция – построение эффективной программы непосредственно в кодах процессора.Интерпретация – построение контекстно-зависимых описаний

Слайд 8Функциональное и алгоритмическое (декларативное/императивное/и др.) МФТИ + Московский центр Sparc

технологий
Процессор Эльбрус-8С с архитектурой "Эльбрус" для вычислительно-интенсивных задач и создания многопроцессорных и

многомашинных систем терафлопного класса (ОС «Эльбрус» на базе Linux 2.6.33.): 
















Микропроцессор совместим с разрабатываемым южным мостом КПИ-2. 
Ожидаемый год завершения работы: 2015
Функциональное и алгоритмическое (декларативное/императивное/и др.)  МФТИ + Московский центр Sparc технологийПроцессор Эльбрус-8С с архитектурой

Слайд 9 "Эльбрус" МФТИ + Московский центр Sparc технологий Зеленоград
Эльбрус-3
Железо ЭВМ


Слайд 10Функциональное и алгоритмическое (декларативное/императивное/) программирование
PASCAL
Реентерабельность – повторновходимость  рекурсия; параллельное выполнение

независимых процедур; режим аппаратных прерываний, в том числе одновременных;
все данные инициируются

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

Такие процедуры управляются только противными (ортогональными или независимыми) типами функций.
Функциональное и алгоритмическое (декларативное/императивное/) программированиеPASCALРеентерабельность – повторновходимость  рекурсия; параллельное выполнение независимых процедур; режим аппаратных прерываний, в

Слайд 11Определение процедур и функций
FORTRAN
C определение данных (по необходимости)
C исполняемый

код без начала и условностей A = FUNC( 3.1415, VR )

call PROC( 2.71 ) stop end function FUNC( E ) FUNC = log( E ) return end subroutine PROC( PI, RES ) RES = sin( PI ) return end
Определение процедур и функцийFORTRAN C 	определение данных (по необходимости)C 	исполняемый код без начала и условностей 	A =

Слайд 12Определение процедур и функций
С
// Здесь уже строго соблюдаются правила


// видимости, сначала определение, лишь
// затем возможно обращение по именам
static
float Func(

float E ){ return ln( E ); }
static void Proc( float Pi, float& Res )
{ Res = sin( PI );
}
external int main( int c, chat ** a )
{ float Vr,Wr,A = Func( 3.1415, Vr ); Proc( 2.71,Wr ); return( 0 );
}
float ExtVar = Func( 1.0 ); // до начала!
Определение процедур и функцийС // 	Здесь уже строго соблюдаются правила //	видимости, сначала определение, лишь//	затем возможно обращение по

Слайд 13Виды процедур-функций в C++, D
Функция — это процедура специального вида,

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

через параметры, имеет возможность — возвращать один числовой объект в качестве члена арифметического выражения. Функция используется в любых выражениях времени исполнения (и константных – до исполнения).
Процедура — это именованный вариант функции, которая не планируется для использования в составе арифметических выражений (void – имеет смысл использования в адресных выражениях).
Оператор – функция с особым синтаксисом
Методы - процедуры, функции и операторы в составе структур – членов объекта - класса.
Виды процедур-функций в C++, DФункция — это процедура специального вида, которая, кроме получения параметров, исполнения операций и

Слайд 14Параметры процедур-функций в C++, D
Формальные имена и фактические параметры –

в описании и при вызове функций – фактические параметры становятся

значениями формальных.
Передача по копии – по формальному имени обычной локальной переменной с начальной инициализацией, при этом внешний фактический параметр может быть выражением времени исполнения (может быть адрес: type *var).
int fun1(int x){ fun2(++x); return x; }
Передача по ссылке. Формальный параметр является ссылкой на внешний объект, и должен в точности ему соответствовать.
void func2(int &x) { x--; }
Передача по имени – параметр-функция, значение вычисляется только при обращении – в С нет.
Передача через стек – также отсутствует.
Параметры процедур-функций в C++, DФормальные имена и фактические параметры – в описании и при вызове функций –

Слайд 15Cи – ключевые слова
Имена, начинающиеся с двойного подчёркивания (__), или

с подчёркивания и _Заглавной буквы, не должны использоваться в качестве

идентификаторов программных переменных. Все имена, начинающиеся с _подчёркивания, зарезервированы для использования в качестве производных имён компоновщика; --- такие имена могут использоваться в локальных переменных, в именах членов структуры и т.д.
Cи – ключевые словаИмена, начинающиеся с двойного подчёркивания (__), или с подчёркивания и _Заглавной буквы, не должны

Слайд 16Вопросы:
Алгоритмическое и функциональное программирование (реентерабельность, рекурсия, демоны и драйверы….);
Виды процедур

функций в алгоритмических языках программирования, особенности реализации (процедуры, функции, операторы)
Соглашения

о связях – правила передачи параметров в процедурных блоках программы … (по адресу, по значению?).
… начало элементарного программирования …
Вопросы:Алгоритмическое и функциональное программирование  (реентерабельность, рекурсия, демоны и драйверы….);Виды процедур функций в алгоритмических языках программирования, особенности

Слайд 17Практика, 5 октября, 2-3 пара
Персональные компьютеры
CB\codeblocks.exe – интегрированная среда

разработки
MinGW – компиляторы Fortran, C, C++, (D)
MinGW\bin – исполняемые модули

(*.exe, *.dll)
MinGW\include – прототипы стандартных пакетов (*.h)
MinGW\lib – библиотеки программ Win32 и Сlib (*.а)

Классный компьютер
login: student101e, password: student101e \\ws101-operator\Shared folder\Khram\GL
Практика, 5 октября, 2-3 пара Персональные компьютерыCB\codeblocks.exe – интегрированная среда разработкиMinGW – компиляторы Fortran, C, C++, (D)MinGW\bin

Слайд 18Вычислительные объекты физической теории поля (прикладной математики)
1) Скаляр – числовая величина, не

зависящая от системы отсчета, являющаяся либо инвариантом пространственно-временных преобразований, либо

физической (эмпирической) константой. Используется в операциях произведения с любыми объектами;
2) Вектор – сложный пространственно-ориентированный числовой объект, заданный в собственной системой отсчета (СК). Допустимо сложение с определенными векторами в той же СК. Произведение – только с векторами из дуального (связанного) базиса, и с тензорами – для перехода к другому опорному базису;
3) Тензор II ранга – образует линейный пространственный базис (ЛСК); моделирует напряжения и конвективные потоки или внутреннюю энергию (живые силы) в механике и физике. Участвуют в произведениях свертки с векторами и тензорами; в анализе и конструировании полей и реологических свойств среды.
Вычислительные объекты физической теории поля (прикладной математики)1) Скаляр – числовая величина, не зависящая от системы отсчета, являющаяся

Слайд 19Координатные системы отсчета ( компьютерное представление )
typedef struct { char s;

int d } integer; // для индексов, typedef struct { char

s; double d } real; // для чисел,
typedef struct { char s; double X,Y,Z } Point; // координатная точка в общей системе отсчета typedef struct { char s; double x,y,z } point; // координатный отсчет внутри локального базиса

Уровень языка С
(как макроассемблера)

Координатные системы отсчета ( компьютерное представление )typedef struct { char s; int d } integer; // для

Слайд 20Распределение памяти ЭВМ для числовых рядов и полей
1. Статическая память распределяется

в сегменте программного кода и может изменяться только при компиляции

программы.
2. Стековая память распределяется в прологе выполняемых программ и существует только во время жизни конкретной процедуры.
3. Память типа «куча» динамически выделяется при выполнении программ и может иметь произвольный объем и любую структуру:
– существуют проблемы сборки мусора
Распределение памяти ЭВМ для числовых рядов и полей1. Статическая память распределяется в сегменте программного кода и может

Слайд 21Allocate.h – распределение памяти
#ifndef __Allocate__
//

Ver 3.1 /1991.01.19 - 2008.11.09/
//
// Малый пакет наиболее употребительных программ
//
// При распределении памяти резервируется одно слово
// для хранения длины массива в байтах, а для матриц
// здесь сохраняется количество строк, соответственно.
// Если длина указывается нулевой,
// то происходит освобождение существующего массива
// Если адрес нулевой - выделяется новый массив,
// иначе происходит перераспределения памяти, при котором
// начальный фрагмент сохраняется, добавленный - очищается
// Если при распределении двумерного массива в качестве длины строк
// указывается 0, то реальное распределение и памяти и управление
// типом и длиной строк производится в вызывающей программе.
// ~~~~~~~~~~~~~~~~~~~~~~
#include // На выходе из запроса длина массива в байтах
size_t Allocate( void* A ); // или - количество строк матрицы
void *Allocate( size_t s, void *A=NULL ); // Линейный массив в байтах
void **Allocate( size_t y, size_t s, void *A=NULL ); // Массив массивов
//
// y - количество строк в матрице (фиксированном списке)
// y=0 - второй параметр не анализируется, а сама матрица удаляется
// s - длина строки в байтах
// s=0 - новые строки не выделяются, а старые не изменяются
//
#define __Allocate__
#endif

Allocate.h – распределение памяти#ifndef __Allocate__//

Слайд 22Allocate.h – распределение памяти
Для обеспечения эффективного доступа к числовым данным

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

внутренних предикатов
#define AWord 4u //
#define Align (sizeof(size_t)*AWord) // выравнивание на границу 4 слов
static //
inline void* ALset( size_t *A, size_t L )
{ *A++ = 0; *A++ = 0; *A++ = 0; *A++ = L; return A;
} //
size_t Allocate( void* A ) // На выходе длина в байтах
{ if( A )return ((size_t*)A)[-1]; else return 0; // или количество
} // строк матрицы
void *Allocate( size_t s, void *A ) // Линейный массив
{ size_t S=0; // -- в байтах
if( s!=0 || A!=NULL ) // 4 слова для выравнивания
{ if( !s ) //
{ free( ((size_t*)A)-AWord ); A=NULL; } else // Новый массив или
{ if( A==NULL )A=malloc( s+Align ); else // перераспределение
{ S = ((size_t*)A)[-1]; // изначально заданная длина массива
A = ((size_t*)A)-AWord; // реальный адрес для всего массива
A = realloc( A,s+Align ); // перераспределение без замены метки
}
if( A==NULL ){ printf( "\n\7 No memory %d",s ); exit( 1 ); } else
{ A=ALset((size_t*)A,s); // расчистка метки, запись длины массива
if( s>S )memset( ((char*)A)+S,0,s-S ); // и расчистка хвоста
} } } return A;
}

Слайд 23Allocate.h – распределение памяти
Массив массивов моделирует двумерные (плоские) регуляризованные сетки

для числовых полей или последовательные списки с прямой индексацией
//
// y

- количество строк в матрице (списке)
// y=0 - второй параметр не анализируется, а сама матрица удаляется
// s - длина строки в байтах
// s=0 - новые строки не выделяются, а старые не изменяются
//
void **Allocate( size_t y, size_t s, void *A )
{ size_t Y=0; //
if( y!=0 || A!=NULL ) // Для двумерной матрицы или списка
{ if( A!=NULL ) // -- если массив уже есть, то
{ Y=((size_t*)A)[-1]; // -- его размер в префиксном слове
while( Y>y )Allocate(0,((void**)A)[--Y]); // освобождение пустых
if( !Y ){ free( ((size_t*)A)-AWord ); A=NULL; } // строк и полное
} //освобождение
if( y!=0 ) //
{ if(A!=NULL)((size_t*)A)[-1]*=sizeof(A); // Приведение к линейному
((size_t*)( A=Allocate( y*sizeof( A ),A ) ))[-1]=y; // и
} // перераспределение
if( s!=0 )
for( Y=0; Y } return (void**)A;
}
Allocate.h – распределение памятиМассив массивов моделирует двумерные (плоские) регуляризованные сетки для числовых полей  или последовательные списки

Слайд 24Шестое занятие 12 октября …
Встроенные типы данных
Все типы языка Си++:

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

символы и их кодировка.
Общая информация
Целые числа
Вещественные числа
Логические величины
Символы и байты
Кодировка, многобайтовые символы
Наборы перечисляемых значений

== Вычислительная математика:
++ комплексные числа и арифметика,
++ векторы и тензоры аналитической геометрии и базовые операции с синтезированными вычислительными объектами

Шестое занятие 12 октября …Встроенные типы данных		Все типы языка Си++: целые числа разной разрядности, вещественные числа, логические

Слайд 25Вопросы
14 сентября
Концепция построения и особенности реализации языков программирования на примерах

Fortran(57), Algol(58), В(69), C(72), C++(83), D(2001) и др;
Машинно-зависимые типы данных

(стек, статика, куча), особенности их использования, скорость доступа и эффективность выполнения операций на линейном процессоре.
Компиляция и интерпретация, достоинства в использовании и проблемы реализации формализованных и специальных языков программирования (декларативные алгоритмы и функциональные языки искусственного интеллекта)
21 сентября
Ключевые слова и зарезервированные идентификаторы языков программирования (объявление данных и исполняемые операторы – Алгол – Фортран, С, С++, Ди);
Математические и логические операции исторических языков программирования (математические и программные выражения)
Приоритеты и последовательность константных и исполняемых выражений (литералы времени компиляции и интерпретация выражений на этапах сборки и исполнения программы).
… только суть – что и зачем?
Вопросы14 сентябряКонцепция построения и особенности реализации языков программирования на примерах Fortran(57), Algol(58), В(69), C(72), C++(83), D(2001) и

Слайд 26Вопросы
28 сентября
Структура типовой программы на алгоритмическом языке программирования (операторы описания

данных и выполняемые команды);
Типовое построение среды компиляции и сборки программ

на алгоритмических языках программирования (структура библиотек на примере проекта GCC.GNU)
Реализация простейшей интерактивной графики в среде GLFW и Glut для OpenGL (особенности исполнения программы, управляемой внешними прерываниями).
… и то уже не просто …
5 октября

Вопросы28 сентябряСтруктура типовой программы на алгоритмическом языке программирования (операторы описания данных и выполняемые команды);Типовое построение среды компиляции

Слайд 27Квалификационное задание (к зачету)
Оформить научную публикацию …
Выполнить конвертацию исходных…
Подготовить презентацию


Дополнительно:
Выполнить систематизацию, обработку и анализ результатов вычислительного эксперимента и (или)

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

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика