230 likes | 388 Views
Програмн і модулі. Бєлошенко Микита. http://www.beloshenko.e-hosting.com.ua http://www.beloshenko.ucoz.ru. Модульне програмування. Плюси і мінуси – + скорочується час написання програми, зменшується імовірність помилки. написання власних програм у деяких випадках може дати
E N D
Програмні модулі Бєлошенко Микита http://www.beloshenko.e-hosting.com.ua http://www.beloshenko.ucoz.ru
Модульне програмування • Плюси і мінуси – • + скорочується час написання програми, зменшується • імовірність помилки. • написання власних програм у деяких випадках може дати • кращі результати (економія оперативної пам’яті, швидкість). Класифікація і стандартні позначення - - модулі вводу/виводу. - логічний аналіз, обробка. - структури даних.
Ввод / вивід З файлу Ввод З консолю З форми (вікна) Криві Ввод кривої мишкою Графічний вивід У файл Вивід Зображення 3D решітки Таблиці Графік функції Текст Графіки у полярній с.к.
Логічний аналіз, обробка Сортування • Qsort (швидке сортування) • Метод Неймана Поліноми Лагранжа Інтерполяція Математична обробка результатів досліду Сплайнами Апроксимація Лінійна МНК Поліномами Робота з векторами Робота з матрицями 3D обертання, трансляції, розтяг, розкладання, векторне множення. +, -, *a, AxB, transp. Розв’язок СЛАР.
Структури даних Списки (List) + ,-, Find, Edit На базі БД – база даних Списки у списках Таблиці
1 0 Ввод / вивід
Побудова графіку функції • Задання області перегляду на екрані ViewPort. • Пошук максимуму і мінімуму функції на заданому • інтервалі. • Відображення (лініями або крапками) • значень функції у область перегляду. • З врахуванням маштабу.
Полярна с.к. x=r*cos(fi) y=r*sin(fi) Обертання показчика. Полярна сітка. Градієнтна замальовка.
Зглажування кутів. C A B O
… c b a y x Логічний аналіз, обробка z C=A x B vecA x vecB
… … Сортування Неймана. const maxarr=1001; type ta=array[1..maxarr] of word; var a:ta; n:word;
… Сортування Неймана var b,b1,b2,c:ta; i:word; procedure fon_neym_clear_mas; begin for i:=1 to 100 do begin a[i]:=0; b1[i]:=0; b2[i]:=0; c[i]:=0; end; end;
… Сортування Неймана procedure un(p1,p2,p3:byte); var j1,j2,s1,s2,n1,n2,s,k,l:byte; begin s1:=0; for j1:=p1 to p2 do begin inc(s1); b1[s1]:=a[j1]; end; s2:=0; for j2:=p2+1 to p3 do begin inc(s2); b2[s2]:=a[j2]; end; if b1[s1]>b2[s2] then boder:=b1[s1]+1 else boder:=b2[s2]+1; b1[s1+1]:=boder; b2[s2+1]:=boder; n1:=1; n2:=1; s:=0; while (b1[n1]<boder) and (b2[n2]<boder) do begin if b1[n1]<b2[n2] then begin inc(s); c[s]:=b1[n1]; inc(n1); end; if b2[n2]<=b1[n1] then begin inc(s); c[s]:=b2[n2]; inc(n2); end; end; if n2<=s2 thenfor k:=n2 to s2 do begin inc(s); c[s]:=b2[k]; end; if n1<=s1 then for l:=n1 to s1 do begin inc(s); c[s]:=b1[l]; end; l:=0; for k:=p1 to p3 do begin inc(l); a[k]:=c[l]; end; end; N*ln(N)
… Сортування Неймана procedure fon_neym_sort; begin d:=1; p1:=1; while 2*d<n do begin p1:=1; j:=trunc(int((n/d)/2)); for i:=1 to j do begin p2:=p1+d-1; p3:=p2+d; un(p1,p2,p3); p1:=p3+1; end; if p3<n then un(p2,p3,n); d:=2*d; end; un(1,p3,n); end; N*ln(N)
… nil nil … … nil nil Структури Даних
Додати елемент Видалити елемент Корекція елементу Пошук елементу Список (List) … nil Free реалізація – Structures.h • Приклади використання – • Криві; • Прості БД; • Якщо у поле списку добавити вершину іншого • списку -> Таблиці подібні до Excel;
Короткий перелік розроблених програмних кодів • LW1.0. - Робота з БД(базою даних) вольт амперних характеристик. Вивод графіку. • DataBase - БД з ВАХами. • Grafic - Побудова графіку. • Help - Довідка. • Theory - Теорія. • VAXconstructor - Конструкція ВАХ. • FOR_Prj (Програми на фортрані) • Faktorial - N!
IntCom - інтегрування з використовуванням common на фортрані. • Integral - чисельне інтегрування. • MATRIX - множення матриць. • aprpol - апроксимація поліномами. • InterpSpl - інтерполяція сплайнами. • Lagr - інтерполяційні поліноми Лагранжа. • Newton - пошук нуля методом Ньютона. • Gaus - розв'язання СЛАР методом Гауса. • Runge - чисельне розв'язання системи диференційних рівнянь методом Рунге-Кутта. • PAS_Prj (Паскаль) • BITCOD - робота з бітами у байті.
WORK_SYS - графічна оболонка з різними функціями • (текстовий редактор, калькулятор, менеджер файлів і інше) • My3Deditor - графічні 3D примітиви • (кубічна гратка, тороід, циліндр, багатокутник) • можливості - трансляції+ротації,компілювання,перегляд. • MySystem - програма, що слугує для ведення статистики лотерей. • Має графічну оболонку - велика кількість колонок у яких, або нічого, або одиниця. • -Багато рядків. • -Можливість прокрутки. • -Можливість робити перебір варіантів.
CYBERG.PRJ • EXAMPLE_.SYS • 4 • ORIGINAL • MODULE15.PAS - графічний редактор (юніт) з макрокомандами. • PASSWORD.PAS - парольна система. • MATH.PAS –математична бібліотека (вектора, функції). • MLAPP.PAS - юніт графічної оболонки (вікна, панелі, меню, іконки ...). • MLMP.PAS - мова програмування з циклами, умовами, змінними, командами, стрибками.
L_SMART1.PAS - Нейманівське сортування, швидке сортування. • L_SMART2.PAS - Перебір. • TRIS.PAS - Теорія розв'язання винахідницьких задач. (бетта версія пошуку шляху у графі) • GRAFCONV.PAS - Перетворення графу. • ! Авторське свідоцтво №22357. Бєлошенко Микита Анатолійович (с)
Eugen – пакет модулів для роботи з 3D графікою, розроблений Івановом Євгеном. Інші алгоритми Іванова Євгена можна подивитись на сайті http://ejsoft.mylivepage.com. Тематика – графи, дерева.
Висновки Модульне написання програм є широковживанним у сучасному програмуванні. Добровільна спілка програмістів БТІ може запропонувати власну авторську реалізацію багатьох модулів, у цій презентації я намагався розкрити деякі принципи їх роботи. Дякую за увагу!