Імперати́вне програмува́ння — парадигма програмування (стиль написання вихідного коду комп'ютерної програми), згідно з якою описується процес отримання результатів як послідовність інструкцій зміни стану програми.
Імперативна програма схожа на накази (англ. imperative — наказ). Подібно до того, як за допомогою наказового способу в мовознавстві перелічується послідовність дій, що необхідно виконати, імперативні програми є послідовністю операцій комп'ютера для виконання. Поширений синонім імперативному програмуванню є процедурне програмування.
Для імперативного програмування характерні наступні риси
- у вихідному коді програми записуються інструкції (команди);
- інструкції повинні виконуватися по черзі;
- дані, отримані при виконанні попередніх інструкцій, можуть читатися з пам'яті наступними інструкціями;
- дані, отримані при виконанні інструкцій можуть записуватися в пам'ять.
Імперативні мови програмування протиставляються функційним і логічним мовам програмування. Функційні мови, наприклад, Haskell, не є послідовністю інструкцій і не мають глобального стану. Логічні мови програмування, такі як Prolog, зазвичай визначають що треба обчислити, а не як це треба робити.
При імперативному підході до складання програми(на відміну від функціонального підходу, що належить до декларативної парадигми) широко використовується присвоєння. Наявність операторів присвоєння збільшує складність обрахункової моделі й робить імперативні програми схильні до специфічних помилок, які не зустрічаються при функціональному підході.
Обґрунтування та основи імперативного програмування
Апаратне забезпечення є обов'язковим для всіх комп'ютерів і призначене для виконання машинного коду. Машинний код є інтегрований для апаратної частини(далі hardware) комп'ютера і написаний в особливому імперативному стилі. З точки зору низькорівневих команд стан програми визначається заповненістю пам'яті, а вирази — це інструкції, що написані інтегрованою низькорівневою мовою для hardware. Імперативні мови вищого рівня використовують змінні та складніші вирази, але все ж слідують тій же парадигмі. Засоби та списки процесів хоч і не є комп'ютерними програмами та вони також схожі за стилем з імперативним програмуванням. Кожен крок — команда.
Основні особливості імперативних мов програмування
- використання іменованих змінних;
int main() { int number = 1; }
- використання оператора присвоєння;
int main() { int number = 1; int b += a; //присвоєння }
- використання складних виразів;
//Приклад обрахунку складного виразу sin(4*x); #include<iostream> #include<cmath> using namespace std; int main() { double x; double res = 0.0; cin >> x; res = sin(1 * x); cout << res << endl; system("pause"); return 0; }
- використання підпрограм;
//Викорисатння підпрограм на прикладі знаходження найбільшого числа #include<iostream> using namespace std; int main() { int a, b, c; cout << "Ведіть a = "; cin >> a; cout << "Ведіть b = "; cin >> b; c = max(a, b); // виклик підпрограми if (c == (a + b)) cout << "Числа рівні" << endl; else cout << "Максимальне число = " << c << endl; system("pause"); return 0; } int max(int x, int y) //код підпрограми { if (x > y) return x; else return y; if (x == y) { int s = x + y; return s; } }
- та інші.
Історія
Першими імперативними мовами були машинні інструкції (коди) — команди, готові до виконання комп'ютером одразу (без будь-яких перетворень). Пізніше були створені асемблери (assembler), програми стали записувати на мовах асемблерів. Асемблер — комп'ютерна програма призначена для перетворення машинних інструкцій, записаних у вигляді тексту на мові зрозумілій людині (мові асемблера) в машинні інструкції, зрозумілі комп'ютеру (машинний код). Одній інструкції мовою асемблера відповідала одна команда в машинному коді. Різні комп'ютери підтримували різні набори інструкцій. Програми, записані для одного комп'ютера, доводилося заново переписувати для перенесення на інший комп'ютер. Були створенні нові мови програмування високого рівня і відповідні компілятори для них — програми, що перетворювали текст з мови програмування на машинний код. Одна інструкція мови високого рівня відповідала одній або кільком інструкціям машинної мови й для різних машин ці інструкції були різними. Першою розповсюдженою високорівневою мовою програмування, що отримала застосування на практиці, стала мова Fortran, розроблена Джоном Бекусом в 1954 році. Fortran є компільованою мовою програмування і дозволяє використовувати іменовані , , підпрограми і багато інших елементів, що поширені в імперативних мовах. Для написання операційних систем для деяких моделей комп'ютерів. Мови COBOL (1960 рік) і Basic (1964 рік) стали першими мовами розробники яких намагалися зробити ці мови схожими на англійську. В 1970-тих роках Ніклаус Вірт розробив мову Pascal. Деніс Рітчі створив мову C. В 1978 році команда розробників з компанії Honeywell розпочала розробку мови Ada, а вже через чотири роки опублікували вимоги для її роботи. Специфікація мови вийшла в 1983 році, була оновлена в 1995 і 2005—2006 роках.
В 1980-тих роках зріс попит на об'єктноорієнтоване програмування (ООП). В 1980 році працівники дослідницького центра Xerox PARC на основі мови Smalltalk, розробленого Аланом Кеєм в 1969 році, творили мову Smalltalk-80. Б'ярн Страуструп на основі мови С і по зразку мови Simula (можливо, першої с світі ООП мови програмування, розробленої ще в 1960-тих роках) розробив мову . Перша реалізація була створена в 1985 році. В 1987 році Ларі Уолл випустив мову Perl і інтерпретатор для неї. В 1990 році Гвідо ван Россум випустив мову Python. В 1994 році в компанії Sun MIcrosystems була розроблена мова Java. В 1995 році Расмус Леодорф створив мову PHP. Мова Ruby була випущена 1995 році. Мова С# була випущена у 2002 разом з програмною платформою (фреймворком) .NET Framework, що підтримував кілька мов програмування.
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Imperati vne programuva nnya paradigma programuvannya stil napisannya vihidnogo kodu komp yuternoyi programi zgidno z yakoyu opisuyetsya proces otrimannya rezultativ yak poslidovnist instrukcij zmini stanu programi Imperativna programa shozha na nakazi angl imperative nakaz Podibno do togo yak za dopomogoyu nakazovogo sposobu v movoznavstvi perelichuyetsya poslidovnist dij sho neobhidno vikonati imperativni programi ye poslidovnistyu operacij komp yutera dlya vikonannya Poshirenij sinonim imperativnomu programuvannyu ye procedurne programuvannya Dlya imperativnogo programuvannya harakterni nastupni risiu vihidnomu kodi programi zapisuyutsya instrukciyi komandi instrukciyi povinni vikonuvatisya po cherzi dani otrimani pri vikonanni poperednih instrukcij mozhut chitatisya z pam yati nastupnimi instrukciyami dani otrimani pri vikonanni instrukcij mozhut zapisuvatisya v pam yat Imperativni movi programuvannya protistavlyayutsya funkcijnim i logichnim movam programuvannya Funkcijni movi napriklad Haskell ne ye poslidovnistyu instrukcij i ne mayut globalnogo stanu Logichni movi programuvannya taki yak Prolog zazvichaj viznachayut sho treba obchisliti a ne yak ce treba robiti Pri imperativnomu pidhodi do skladannya programi na vidminu vid funkcionalnogo pidhodu sho nalezhit do deklarativnoyi paradigmi shiroko vikoristovuyetsya prisvoyennya Nayavnist operatoriv prisvoyennya zbilshuye skladnist obrahunkovoyi modeli j robit imperativni programi shilni do specifichnih pomilok yaki ne zustrichayutsya pri funkcionalnomu pidhodi Obgruntuvannya ta osnovi imperativnogo programuvannyaAparatne zabezpechennya ye obov yazkovim dlya vsih komp yuteriv i priznachene dlya vikonannya mashinnogo kodu Mashinnij kod ye integrovanij dlya aparatnoyi chastini dali hardware komp yutera i napisanij v osoblivomu imperativnomu stili Z tochki zoru nizkorivnevih komand stan programi viznachayetsya zapovnenistyu pam yati a virazi ce instrukciyi sho napisani integrovanoyu nizkorivnevoyu movoyu dlya hardware Imperativni movi vishogo rivnya vikoristovuyut zminni ta skladnishi virazi ale vse zh sliduyut tij zhe paradigmi Zasobi ta spiski procesiv hoch i ne ye komp yuternimi programami ta voni takozh shozhi za stilem z imperativnim programuvannyam Kozhen krok komanda Osnovni osoblivosti imperativnih mov programuvannyavikoristannya imenovanih zminnih int main int number 1 vikoristannya operatora prisvoyennya int main int number 1 int b a prisvoyennya vikoristannya skladnih viraziv Priklad obrahunku skladnogo virazu sin 4 x include lt iostream gt include lt cmath gt using namespace std int main double x double res 0 0 cin gt gt x res sin 1 x cout lt lt res lt lt endl system pause return 0 vikoristannya pidprogram Vikorisatnnya pidprogram na prikladi znahodzhennya najbilshogo chisla include lt iostream gt using namespace std int main int a b c cout lt lt Vedit a cin gt gt a cout lt lt Vedit b cin gt gt b c max a b viklik pidprogrami if c a b cout lt lt Chisla rivni lt lt endl else cout lt lt Maksimalne chislo lt lt c lt lt endl system pause return 0 int max int x int y kod pidprogrami if x gt y return x else return y if x y int s x y return s ta inshi IstoriyaPershimi imperativnimi movami buli mashinni instrukciyi kodi komandi gotovi do vikonannya komp yuterom odrazu bez bud yakih peretvoren Piznishe buli stvoreni asembleri assembler programi stali zapisuvati na movah asembleriv Asembler komp yuterna programa priznachena dlya peretvorennya mashinnih instrukcij zapisanih u viglyadi tekstu na movi zrozumilij lyudini movi asemblera v mashinni instrukciyi zrozumili komp yuteru mashinnij kod Odnij instrukciyi movoyu asemblera vidpovidala odna komanda v mashinnomu kodi Rizni komp yuteri pidtrimuvali rizni nabori instrukcij Programi zapisani dlya odnogo komp yutera dovodilosya zanovo perepisuvati dlya perenesennya na inshij komp yuter Buli stvorenni novi movi programuvannya visokogo rivnya i vidpovidni kompilyatori dlya nih programi sho peretvoryuvali tekst z movi programuvannya na mashinnij kod Odna instrukciya movi visokogo rivnya vidpovidala odnij abo kilkom instrukciyam mashinnoyi movi j dlya riznih mashin ci instrukciyi buli riznimi Pershoyu rozpovsyudzhenoyu visokorivnevoyu movoyu programuvannya sho otrimala zastosuvannya na praktici stala mova Fortran rozroblena Dzhonom Bekusom v 1954 roci Fortran ye kompilovanoyu movoyu programuvannya i dozvolyaye vikoristovuvati imenovani zminni pidprogrami i bagato inshih elementiv sho poshireni v imperativnih movah Dlya napisannya operacijnih sistem dlya deyakih modelej komp yuteriv Movi COBOL 1960 rik i Basic 1964 rik stali pershimi movami rozrobniki yakih namagalisya zrobiti ci movi shozhimi na anglijsku V 1970 tih rokah Niklaus Virt rozrobiv movu Pascal Denis Ritchi stvoriv movu C V 1978 roci komanda rozrobnikiv z kompaniyi Honeywell rozpochala rozrobku movi Ada a vzhe cherez chotiri roki opublikuvali vimogi dlya yiyi roboti Specifikaciya movi vijshla v 1983 roci bula onovlena v 1995 i 2005 2006 rokah V 1980 tih rokah zris popit na ob yektnooriyentovane programuvannya OOP V 1980 roci pracivniki doslidnickogo centra Xerox PARC na osnovi movi Smalltalk rozroblenogo Alanom Keyem v 1969 roci tvorili movu Smalltalk 80 B yarn Straustrup na osnovi movi S i po zrazku movi Simula mozhlivo pershoyi s sviti OOP movi programuvannya rozroblenoyi she v 1960 tih rokah rozrobiv movu S Persha realizaciya S bula stvorena v 1985 roci V 1987 roci Lari Uoll vipustiv movu Perl i interpretator dlya neyi V 1990 roci Gvido van Rossum vipustiv movu Python V 1994 roci v kompaniyi Sun MIcrosystems bula rozroblena mova Java V 1995 roci Rasmus Leodorf stvoriv movu PHP Mova Ruby bula vipushena 1995 roci Mova S bula vipushena u 2002 razom z programnoyu platformoyu frejmvorkom NET Framework sho pidtrimuvav kilka mov programuvannya Div takozhProgramuvannya Imperativni movi programuvannya Funkcionalne programuvannya Paradigma programuvannya Istoriya mov programuvannya Mova programuvannya Funkcionalne programuvannya