Воскресенье, 05.05.2024, 22:06
Приветствую Вас Гость | RSS
Меню сайта
Мини-чат
Наш опрос
Оцените мой сайт
Всего ответов: 26
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2011 » Февраль » 10 » Мова програмування C++
21:43
Мова програмування C++

Мо́ва програмува́ння — система позначень для опису алгоритмів та структур даних. Мову програмування визначає набір лексичних, синтаксичних і семантичних правил, що задають зовнішній вигляд програми і дії, які виконує виконавець (комп'ютер) під її управлінням.
З часу створення перших програмованих машин людство придумало більше двох з половиною тисяч мов програмування.[1] Щороку їх кількість поповнюється новими. Деякими мовами уміє користуватися тільки невелике число їх власних розробників, інші стають відомі мільйонам людей. Професійні програмісти зазвичай застосовують в своїй роботі декілька мов програмування
 
 
Історія
Першу мову програмування високого рівня — Планкалькюль (нім. Plankalkül) спроектував німець Конрад Цузе у 1945 році[Джерело?], але вона не мала комп'ютерної реалізації і не одержала уваги, хоча мала дуже потужні на той час можливості. У кінці 40-их — початку 50-их застосовувалися інтерпретовані системи кодування, коли певні команди мови програмування кодувалися числами, які уже інтерпретувалися машинним кодом. Ці системи називалися «автоматичним програмуванням», були простішими для програмування, ніж машинні коди, але могли мати значно меншу (до 50 разів) швидкодію, через що часто надавали перевагу машинним кодам. До таких систем належали — Short Code для BINAC (1949) і UNIVAC I (1952), Speedcoding для IBM 701, розроблена Джоном Бекусом у 1954.
Першою широковживаною компільованою мовою став розроблений групою Джона Бекуса Фортран, анонсований у 1954 році і випущений у 1957 для IBM 704. Основним призначенням Фортрану були швидкі наукові обчислення, оголошувалося що швидкодія згенерованого компілятором коду майже не відрізянтиметься від машинного коду написаного вручну. Уже у квітні 1958 близько половини програм для IBM 704 були написані на Фортрані. Випущений у 1958 році Фортран II дозволяв незалежну компіляцію підпрограм, що дозволило створювати більші програми, оскількі низька надійність IBM 704 не дозволяла скомпілювати без збоїв велику програму (понад 300-400 рядків) одразу. Розроблений у 1960—1962 роках Фортран IV був однією з найпоширеніших мов того часу і лишався стандартною версією Фортрану до появи у 1978 році Фортрану 77.
У 1958 році у MIT розробили LISP — першу функціональну мову, яка понад чверть століття домінувала у програмуванні задач штучного інтелекту.
У кінці 1950-их почали розроблятися різні мови програмування. У 1958 році декілька значних груп комп'ютерних користувачів у США, включаючи SHARE — групу науковців-користувачів IBM і USE (UNIVAC Scientific Exchange, група науковців-користувачів UNIVAC) запропонували ACM заснувати робочу групу зі створення універсальної мови програмування. Також ще у 1955 році німецьке Товариство прикладної математики і механіки (GAMM) заснувало комітет зі створення універсальної мови програмування. У кінці травня 1958 року було проведено зустріч у Цюриху між ACM і GAMM, на матеріалах якої у грудні опубліковано ALGOL 58 Report. На його основі було створено 3 значні реалізації — MAD (1961), NELIAC (1963), JOVIAL (1963). З них лише JOVIAL отримав поширення, ставши на чверть століття офіційною мовою програмування у Військово-морських силах США. SHARE і IBM почали створення власної реалізації ALGOL, але припинили, врахувавши витрати на створення і просування Фортрану.
Впродовж 1959 року ALGOL 58 широко обговорювався, була запропонована нотація для опису синтаксису мов програмування — форма Бекуса-Наура. У 1960 проведено чергову зустріч і опубліковано ALGOL 60 Report. ALGOL вплинув на багато мов програмування і став стандарною мовою для публікації алгоритмів, але через ряд причин не одержав широкого поширення — він був заскладним, і не було реалізацій, які підтримували його повністю, відсутність стандартного введення-виведення привела до появи різних несумісних реалізацій, деякі неоднозначності опису мови так і не були розв'язані. Також широкого вжитку уже набув Фортран, і IBM не підтримала ALGOL.
У 1959 році була проведена зустріч у Пентагоні для створення мови CBL (Common Business Language), засновано комітет з його створення, і у 1960 опубліковано початкову специфікацію COBOL 60, який невдовзі став першою мовою прийнятою у Міністерстві оборони США. У 1968 році COBOL було стандартизовано ANSI.
У 1964 році було створено спрощену мову BASIC (Beginners All-purpose Symbolic Instruction Code) для навчання програмуванню студентів, які переважно спеціалізувалися у вільних мистецтвах, а не технічних науках.
Тоді як науковці переважно використовували Фортран, а бізнес — COBOL, у 1963 році в IBM вирішили створити універсальні платформу IBM/360 і мову програмування. У стислі терміни до 1965 року було розроблено мову PL/I, яка поєднувала можливості Фортран, ALGOL і COBOL, і виявилась заскладною, хоча і була у широкому вжитку у 1970-их у наукових і бізнес задачах, також її підмножини (PL/C, PL/CS) використовувалися для навчання програмуванню.
На початку 1960-их було створено перші мови із динамічною типізацією — APL і SNOBOL.
SIMULA 67 була першою об'єктно-орієнтованою мовою програмування. [ред.] Елементи
[ред.] Синтаксис

Синтаксис мови програмування визначає те, як буде виглядати програма на цій мові, зокрема, як пишуться оператори, оголошення і інші мовні конструкції[2]. Наприклад, оголошення масиву V з десяти цілочислових елементів в на мові С буде виглядати наступним чином: int V[10];


На мові Pascal: V: array [0...9] of integer

[ред.] Типи даних

Область зберігання даних в апаратній частині комп'ютера (пам'ять, регістри і зовнішні запам'ятовуючі пристрої) зазвичай мають доволі просту структуру в вигляді послідовності бітів, згрупованих в байти або слова. Проте в віртуальному комп'ютері, як правило, організовано більш складним чином — в різні моменти виконання програми використовуються такі форми зберігання даних, як стеки, масиви, числа, символьні рядки та інші. Один або декілька однотипних елементів даних, об'єднаних в одне ціле в віртуальному комп'ютері в певний момент виконання програми, прийнято називати об'єктом даних. При виконанні програми існує багато об'єктів даних різних типів. Тип даних — це деякий клас об'єктів даних разом з набором операцій для створення і роботи з ним[3]. В кожній мові програмування є певний набір вбудованих примітивних типів даних. Додатково в мові можуть бути передбачені засоби, що дозволяють програмісту визначати нові типи даних. [ред.] Класифікація мов програмування

Мови класифікують за такими критеріями[Джерело?]: Рівень абстракції Мови програмування високого рівня оперують сутностями ближчими людині, такими як об'єкти, змінні, функції. Мови програмування нижчого рівня оперують сутностями ближчими машині: байти, адреси, інструкції. Текст програми на мові високого рівня зазвичай набагато коротший ніж текст такої самої програми на мові низького рівня, проте програма має більший розмір. Область застосування Універсальні та спеціалізовані. Спеціалізовані мови теж бувають Тьюрінг-повні, та все ж їх область застосування обмежена, як наприклад у мови shell. Підтримувані парадигми програмування Об'єктно-орієнтовані, логічні, функціональні, структурні... [ред.] Мови програмування низького рівня

Перші комп'ютери доводилось програмувати двійковими машинними кодами. Проте програмувати таким чином - доволі трудомістка і важка задача[4]. Для спрощення цієї задачі почали з'являтися мови програмування низького рівня, які дозволяли задавати машинні команди в більш зрозумілому для людини вигляді. Для перетворення їх у двійковий код були створені спеціальні програми - транслятори.[5]
Приклад машинного коду і представлення його на асемблері[6]



Транслятори поділяються на: компілятори - перетворюють текст програми в машинний код, який можна зберегти і після цього використовувати уже без компілятора (прикладом є виконувальні файли з розширенням *.exe). інтерпретатори — перетворюють частину програми в машинний код, виконують і після цього переходять до наступної частини. При цьому щоразу при виконанні програми використовується інтерпретатор.
Прикладом мови низького рівня є асемблер. Мови низького рівня орієнтовані на конкретний тип процесора і враховують його особливості, тому для перенесення програми на асемблері на іншу апаратну платформу її потрібно майже цілком переписати. Певні відмінності є і в синтаксисі програм під різні компілятори. Щоправда, центральні процесори для комп'ютерів фірм AMD та Intel практично сумісні і відрізняються лише деякими специфічними командами. А ось спеціалізовані процесори для інших пристроїв, наприклад, відеокарт, телефонів містять суттєві відмінності. [ред.] Переваги

За допомогою мов низького рівня створюються ефективні і компактні програми, оскільки розробник отримує доступ до всіх можливостей процесора. [ред.] Недоліки
Програміст, що працює з мовами низького рівня, має бути високої кваліфікації, добре розуміти будову мікропроцесорної системи, для якої створюється програма. Так, якщо програма створюється для комп'ютера, потрібно знати будову комп'ютера і, особливо, влаштування і особливості роботи його процесора. результуюча програма не може бути перенесена на комп’ютер або пристрій з іншим типом процесора. значний час розробки великих і складних програм.
Мови низького рівня, як правило, використовують для написання невеликих системних програм, драйверів пристроїв, модулів стиків з нестандартним обладнанням, програмування спеціалізованих мікропроцесорів, коли найважливішими вимогами є компактність, швидкодія і можливість прямого доступу до апаратних ресурсів. Асемблер - мова низького рівня, що широко застосовується до сих пір. [ред.] Мови програмування високого рівня

можна сказати є більш зрозумілими людині, ніж комп’ютеру. Особливості конкретних комп’ютерних архітектур в них не враховуються, тому створені програми легко переносяться з комп’ютера на комп’ютер. Достатньо просто перекомпілювати програму. Розробляти програми на таких мовах значно простіше і помилок допускається менше. Значно скорочується час розробки програми, що особливо важливо при роботі над великими програмними проектами. Адресна мова програмування Фортран Кобол Алгол Pascal Java C C++ C# Objective C Smalltalk Delphi
Недоліком мов високого рівня є більший розмір програм порівняно з програмами на мові низького рівня. Тому в основному мови високого рівня використовуються для розробок програмного забезпечення комп'ютерів, і пристроїв, які мають великий обсяг пам'яті. А різні підвиди асемблеру застосовуються для програмування інших пристроїв, де критичним є розмір програми. [ред.] П’ять поколінь мов програмування

Розрізняють п'ять поколінь мов програмування[7] [8] [9]: [ред.] Перше покоління

Початок 1950-х років — мови перших комп’ютерів. Перша мова асемблера, створена за принципом «одна інструкція — один рядок».
Основна відмінна риса: орієнтування на конкретний комп’ютер. [ред.] Друге покоління

Кінець 1950-х — початок 1960-х р.р. Розроблено символьний асемблер, в якому з’явилося поняття змінної. Це перша повноцінна мова програмування.
Основна відмінна риса: орієнтування на абстрактний комп’ютер з такою ж системою команд. [ред.] Третє покоління

1960-ті р.р. — мови програмування високого рівня. Їхні характеристики: відносна простота; незалежність від конкретного комп’ютера; можливість використання потужних синтаксичних конструкцій.
Простота мов дає змогу писати невеликі програми і людям, які не є професійними програмістами.
Основна відмінна риса мови третього покоління: орієнтування на алгоритм (алгоритмічні мови).
Приклади: Сі, Паскаль, Джава, Бейзік, та багато інших.
Всього у світі існує близько 200 популярних мов програмування третього рівня. [ред.] Четверте покоління

Початок 1970-х р.р. до сьогоднішнього часу. Створюються мови, призначені для реалізації великих проектів. Проблемно-орієнтовані мови, що оперують конкретними поняттями вузької галузі. Як правило, в такі мови вбудовують потужні оператори, що дозволяють одним рядком описувати функції, для опису яких мовами молодших поколінь потрібно було б сотні чи навіть тисячі рядків початкового коду.
Приклади: SQL, SGML (HTML, XML), Prolog, та багато інших вузькоспеціалізованих декларативних мов.
Основна відмінна риса мови четвертого покоління: наближення до людської мови (декларативні мови).
Деякі мови мають риси одночасно і третього і четвертого поколінь. [ред.] П'яте покоління

П’ятого покоління мов програмування поки що не існує.
Виробники пропроієтарних програмних продуктів часто намагаються приписати своїм продуктам якісь маркетингові особливості, і деколи вказують що їхній продукт — це "мова п’ятого покоління". Насправді, всі ці продукти — це просто середовища для прискореного створення продуктів (Rapid Application Development - RAD), і використовують мови третього та четвертого поколінь.
Мова п’ятого покоління витіснить чи суттєво потіснить мови третього (напр. Java) і четвертого покоління (напр. SQL) за рахунок значно збільшеної продуктивності праці програміста — в 10-1000 раз. За прогнозами, 5GL буде оперувати мета-мета-даними.
Наразі існує єдина мова, яка працює з мета-мета-даними, — це мова команд менеджерів пакетів чи менеджерів залежностей, таких як apt, yum, smart, maven, cpan та інші. Вони оперують над метаданими про метадані про дані у пакетах. Використання apt-get, yum та smart дійсно надзвичайно підвищило продуктивність системних адміністраторів — приблизно в 1000-у раз. Використання менеджерів залежностей, таких як maven, cpan, rakudo, pim, easy_install, дійсно значно підвищило продуктивність програмістів, приблизно в 10-ть раз. Нажаль, ці мови є мовами командного рядка і не є мовами програмування.

[ред.] Див. також
Список мов програмування Система типізації [ред.] Виноски
↑ «Список мов програмування». http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm. (англ.) ↑ Пратт Т., Зелкович М.- C. 42 ↑ Пратт Т., Зелкович М. 2002- С.186 ↑ Пам'ять ЕОМ і представлення інформації ↑ Трансляция кода ↑ Підготовка і відладка програм ↑ Сергей Бобровский. Пятое поколение - языки программирования или прикладные системы?//PC Week Live ↑ Язык программирования ↑ Соколов В.В. ЭВОЛЮЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
[ред.] Джерела
Pratt T.W., Zelkovitz M.V. Programming languages, design and implementation (4th ed.). Prentice Hall, 2000 (англ.) (Пратт Т., Зелкович М., Языки программирования: разработка и реализация.- Спб.: Питер, 2002.-688 с.)(рос.) [ред.] Посилання
The Computer Language Benchmarks порівняння мов за швидкодією і використаними ресурсами Coding Український форум програмістів
 
Что такое оператор

Запись действий, которые должен выполнить компьютер, состоит из операторов. При выполнении программы операторы выполняются один за другим, если только оператор не является оператором управления, который может изменить последовательное выполнение программы.
Различают операторы объявления имен, операторы управления и операторы-выражения. Операторы-выражения

Выражения мы рассматривали в предыдущей лекции. Выражение, после которого стоит точка с запятой, – это оператор-выражение. Его смысл состоит в том, что компьютер должен выполнить все действия, записанные в данном выражении, иначе говоря, вычислить выражение. Чаще всего в операторе-выражении стоит операция присваивания или вызов функции. Операторы выполняются последовательно, и все изменения значений переменных, сделанные в предыдущем операторе, используются в последующих. a = 1;
b = 3;
m = max(a, b);

Переменной a присваивается значение 1, переменной b – значение 3. Затем вызывается функция max с параметрами 1 и 3, и ее результат присваивается переменной m.
Как мы уже отмечали, присваивание – необязательная операция в операторе-выражении. Следующие операторы тоже вполне корректны: x + y – 12;
func(d, 12, x);
// сложить значения x и y и затем вычесть 12
// вызвать функцию func с заданными
// параметрами

Объявления имен

Эти операторы объявляют имена, т.е. делают их известными программе. Все идентификаторы или имена, используемые в программе на языке Си++, должны быть объявлены.
Оператор объявления состоит из названия типа и объявляемого имени: int x;
double f;
const float pi = 3.1415;
// объявить целую переменную x
// объявить переменную f типа double
// объявить константу pi типа float
// со значением 3.1415


Оператор объявления заканчивается точкой с запятой.
Операторы управления

Операторы управления определяют, в какой последовательности выполняется программа. Если бы их не было, операторы программы всегда выполнялись бы последовательно, в том порядке, в котором они записаны.
Условные операторы
Условные операторы позволяют выбрать один из вариантов выполнения действий в зависимости от каких-либо условий. Условие – это логическое выражение, т.е. выражение, результатом которого является логическое значение true (истина) или false (ложь).
Оператор if выбирает один из двух вариантов последовательности вычислений. if (условие)
оператор1
else
оператор2

Если условие истинно, выполняется оператор1, если ложно, то выполняется оператор2. if (x > y)
a = x;
else
a = y;

В данном примере переменной a присваивается значение максимума из двух величин x и y.
Конструкция else необязательна. Можно записать: if (x < 0)
x = -x;
abs = x;

В данном примере оператор x = -x; выполняется только в том случае, если значение переменной x было отрицательным. Присваивание переменной abs выполняется в любом случае. Таким образом, приведенный фрагмент программы изменит значение переменной x на его абсолютное значение и присвоит переменной abs новое значение x.
Если в случае истинности условия необходимо выполнить несколько операторов, их можно заключить в фигурные скобки: if (x < 0) {
x = -x;
cout << "Изменить значение x на противоположное по знаку";
}
abs = x;

Теперь если x отрицательно, то не только его значение изменится на противоположное, но и будет выведено соответствующее сообщение. Фактически, заключая несколько операторов в фигурные скобки, мы сделали из них один сложный оператор или блок. Прием заключения нескольких операторов в блок работает везде, где нужно поместить несколько операторов вместо одного.
Условный оператор можно расширить для проверки нескольких условий: if (x < 0)
cout << "Отрицательная величина";
else if (x > 0)
cout << "Положительная величина";
else
cout << "Ноль";

Конструкций else if может быть несколько.
Хотя любые комбинации условий можно выразить с помощью оператора if, довольно часто запись становится неудобной и запутанной. Оператор выбора switch используется, когда для каждого из нескольких возможных значений выражения нужно выполнить определенные действия. Например, предположим, что в переменной code хранится целое число от 0 до 2, и нам нужно выполнить различные действия в зависимости от ее значения: switch (code) {
case 0:
cout << "код ноль";
x = x + 1;
break;
case 1 :
cout << "код один";
y = y + 1;
break;
case 2:
cout << "код два";
z = z + 1;
break;
default:
cout << "Необрабатываемое значение";
}

В зависимости от значения code управление передается на одну из меток case. Выполнение оператора заканчивается по достижении либо оператора break, либо конца оператора switch. Таким образом, если code равно 1, выводится "код один", а затем переменная y увеличивается на единицу. Если бы после этого не стоял оператор break, то управление "провалилось" бы дальше, была бы выведена фраза "код два", и переменная z тоже увеличилась бы на единицу.
Если значение переключателя не совпадает ни с одним из значений меток case, то выполняются операторы, записанные после метки default. Метка default может быть опущена, что эквивалентно записи: default:
; // пустой оператор, не выполняющий никаких действий

Очевидно, что приведенный пример можно переписать с помощью оператора if: if (code == 0) {
cout << "код ноль";
x = x + 1;
} else if (code == 1) {
cout << "код один";
y = y + 1;
} else if (code == 2) {
cout << "код два";
z = z + 1;
} else {
cout << "Необрабатываемое значение";
}

Пожалуй, запись с помощью оператора переключения switch более наглядна. Особенно часто переключатель используется, когда значение выражения имеет тип набора.

Операторы цикла
Предположим, нам нужно вычислить сумму всех целых чисел от 0 до 100. Для этого воспользуемся оператором цикла for: int sum = 0;
int i;
for (i = 1; i <= 100; i = i + 1)
sum = sum + i;


// заголовок цикла
// тело цикла


Оператор цикла состоит из заголовка цикла и тела цикла. Тело цикла – это оператор, который будет повторно выполняться (в данном случае – увеличение значения переменной sum на величину переменной i). Заголовок – это ключевое слово for, после которого в круглых скобках записаны три выражения, разделенные точкой с запятой. Первое выражение вычисляется один раз до начала выполнения цикла. Второе – это условие цикла. Тело цикла будет повторяться до тех пор, пока условие цикла истинно. Третье выражение вычисляется после каждого повторения тела цикла.
Оператор for реализует фундаментальный принцип вычислений в программировании – итерацию. Тело цикла повторяется для разных, в данном случае последовательных, значений переменной i. Повторение иногда называется итерацией. Мы как бы проходим по последовательности значений переменной i, выполняя с текущим значением одно и то же действие, тем самым постепенно вычисляя нужное значение. С каждой итерацией мы подходим к нему все ближе и ближе. С другим принципом вычислений в программировании – рекурсией – мы познакомимся в разделе, описывающем функции.
Любое из трех выражений в заголовке цикла может быть опущено (в том числе и все три). То же самое можно записать следующим образом: int sum = 0;
int i = 1;
for (; i <= 100; ) {
sum = sum + i;
i = i + 1;
}

Заметим, что вместо одного оператора цикла мы записали несколько операторов, заключенных в фигурные скобки – блок. Другой вариант: int sum = 0;
int i = 1;
for (; ;) {
if (i > 100)
break;
sum = sum + i;
i = i + 1;
}

В последнем примере мы опять встречаем оператор break. Оператор break завершает выполнение цикла. Еще одним вспомогательным оператором при выполнении циклов служит оператор продолжения continue. Оператор continue заставляет пропустить остаток тела цикла и перейти к следующей итерации (повторению). Например, если мы хотим найти сумму всех целых чисел от 0 до 100, которые не делятся на 7, можно записать это так: int sum = 0;
for (int i = 1; i <= 100; i = i+1) {
if ( i % 7 == 0)
continue;
sum = sum + 1;
}

Еще одно полезное свойство цикла for: в первом выражении заголовка цикла можно объявить переменную. Эта переменная будет действительна только в пределах цикла.
Другой формой оператора цикла является оператор while. Его форма следующая: while (условие)
оператор

Условие – как и в условном операторе if – это выражение, которое принимает логическое значение "истина" или "ложь". Выполнение оператора повторяется до тех пор, пока значением условия является true (истина). Условие вычисляется заново перед каждой итерацией. Подсчитать, сколько десятичных цифр нужно для записи целого положительного числа N, можно с помощью следующего фрагмента: int digits = 0;
while (N > 0) {
digits = digits + 1;
N = N / 10;
}

Если число N меньше либо равно нулю, тело цикла не будет выполнено.
Третьей формой оператора цикла является цикл do while. Он имеет форму: do { операторы } while ( условие);

Отличие от предыдущей формы цикла while заключается в том, что условие проверяется после выполнения тела цикла. Предположим, требуется прочитать символы с терминала до тех пор, пока не будет введен символ "звездочка". char ch;
do {
ch = getch();

} while (ch != '*');


// функция getch возвращает
// символ, введёный с клавиатуры



В операторах while и do также можно использовать операторы break и continue.
Как легко заметить, операторы цикла взаимозаменяемы. Оператор while соответствует оператору for: for ( ; условие ; )
оператор

Пример чтения символов с терминала можно переписать в виде: char ch;
ch = getch();
while (ch != '*') {
ch = getch();
}

Разные формы нужны для удобства и наглядности записи.
Оператор возврата
Оператор return завершает выполнение функции и возвращает управление в ту точку, откуда она была вызвана. Его форма: return выражение;

Где выражение – это результат функции. Если функция не возвращает никакого значения, то оператор возврата имеет форму return;

Оператор перехода
Последовательность выполнения операторов в программе можно изменить с помощью оператора перехода goto. Он имеет вид: goto метка;

Метка ставится в программе, записывая ее имя и затем двоеточие. Например, вычислить абсолютную величину значения переменной x можно следующим способом: if ( x >= 0)
goto positiv;
x = -x;
positiv:
abs = x;



// переменить знак x
// объявление метки
// присвоить переменной abs
// положительное значение


При выполнении goto вместо следующего оператора выполняется оператор, стоящий после метки positiv. Если значение x положительное, оператор x = - x выполняться не будет.
В настоящее время считается, что оператор goto очень легко запутывает программу.Без него, вообще говоря, можно обойтись, поэтому лучше его не использовать, ну разве что лишь в самом крайнем случае.
Пример: int fact(int n)
{
int k;
if (n == 1) {
k = 1;
} else {
k = n * fact(n – 1);
}
return k;
}

Это функция вычисления факториала. Первый оператор в ней – это объявление переменной k, в которой будет храниться результат вычисления. Затем выполняется условный оператор if. Если n равно единице, то вычисления факториала закончены, и выполняется оператор-выражение, который присваивает переменной значение 1. В противном случае выполняется другой оператор-выражение.
Последний оператор – это оператор возврата из функции.
Просмотров: 6474 | Добавил: Pashka2012 | Рейтинг: 5.0/1
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Календарь
«  Февраль 2011  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz