Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Цикл do while

Цикл for

Оператор циклу for має наступний синтаксис:

for (int i=0; i<20; i++) {дію}

Причому значення, змінні та умови можуть бути різними. Ми могли б написати так:

for (int i=-5; i!= 20; i++) {дію}

Цикл while

Оператор циклу while має наступний синтаксис:

while(i){дії}

Поки умова вірна, цикл буде працювати. Цей вид циклу найбільше піддається входу в безкінечний цикл. Ми могли б цей вид циклу записати так як і for:

int i = 0;
while(i<20){
дії
i++ }

Оператор циклу do while має наступний синтаксис:

do{
дія
}while(i)

Цей цикл відрізняється від попередніх тим, що виконується хоча б один раз.

Приклад: Напишемо програму, яка використовує всі три види операторів циклу.

#include<iostream>
#include<conio.h>

using std::cout;
using std::endl;
using std::cin;

const int n = 5;

void main()
{
int mas[n];

cout<<"Vvedite masiv: \n";
for (int i = 0; i<n; i++)
{
cin>>mas[i];
}

i = 0;

cout<<"mi vveli takoy masiv: \n";
while(i<5){
cout<<mas[i]<<"\t";
i++;
}

i=0;
do{
mas[i] = mas[i]+5;
i++;
}while(i<5);

cout<<"\nMasiv posle dobavleniya + 5:\n";
for (i = 0; i<n; i++)
{
cout<<mas[i]<<"\t";
}

_getch();
}

Функція - це модуль в с++. Опції в мові С++ дозволяють створювати модульні програми, тобто програми складаються з модулів. Для написання програм, краще використовувати готові стандартні функції бібліотеки С++. Якщо ж ви хочете в програмі використовувати свою функцію, то необхідно оголосити прототип функції, після цього, в кінці програми написати реалізацію функції.

Функція може приймати значення або не приймати взагалі. Якщо функція не приймає параметри, то пишеться ім'я функції і порожні дужки, якщо функція приймає параметри, то в дужках через кому пишуться параметри.

Приклад: Написати функцію get(), set(). Set - функція встановлення значення в массив. Get - функція отримання значень, або друк.

#include<iostream>
#include<conio.h>

using std::cout;
using std::endl;
using std::cin;

const int n = 5;
void set(int []); //прототип функції встановлення значення
void get(int []); //прототип функції печатки значення

void main()
{
int mas[n];
set(mas); //виклик функції встановлення значення в програмі
get(mas); //виклик функції друку в програмі
_getch();
}

void set(int s[n]) //реалізація функції встановлення
{
cout<<"SET massiva:\n";
cout<<"Vvedite "<<n<<"elementov massiva: ";
for (int i = 0; i<n; i++)
cin>>s[i];
}

void get(int s[n]) //реалізація функції друку
{
cout<<"GET massiv:\n";
for (int i = 0; i<n; i++)
cout<<s[i]<<"\t";
cout<<endl;
} [11]

Переваги мови C++:

Швидкість роботи програм на С++ практично не поступається програмам на С, хоча програмісти отримали в свої руки нові можливості і нові засоби.

Масштабованість. На мові C++ розробляють програми для найрізноманітніших платформ і систем.

Можливість роботи на низькому рівні з пам'яттю, адресами, портами. (Що, при необережному використанні, може легко перетворитися на недолік.)

Можливість створення узагальнених алгоритмів для різних типів даних, їхня спеціалізація, і обчислення на етапі компіляції, з використанням шаблонів.

Підтримуються різні стилі та технології програмування, включаючи традиційне директивне програмування, ООП, узагальнене програмування, метапрограмування (шаблони, макроси).

Недоліки мови C++:

Наявність безлічі можливостей, приводить до того, що в С++ програми може легко закрастися важковловима помилка. Замість контролю з боку компілятора розробники вимушені дотримуватися вельми нетривіальних правил кодування. По суті, ці правила обмежують С++ рамками якоїсь безпечнішої підмови. Більшість проблем типобезпеки С++ успадкована від С, але важливу роль в цьому питанні грає і відмова автора мови від ідеї використовувати автоматичне управління пам'яттю (наприклад, збірку сміття). Так візитною карткою С++ стали вразливості типу «переповнювання буфера».

Погана підтримка модульності. Підключення інтерфейсу зовнішнього модуля через препроцесорну вставку заголовного файлу (#include) серйозно уповільнює компіляцію, при підключенні великої кількості модулів. Для усунення цього недоліку, багато компіляторів реалізують механізм прекомпіляції заголовних файлів.

Недостача інформації про типи даних під час компіляції.

Мова C++ є складною для вивчення і для компіляції.

Деякі перетворення типів неінтуїтивні. Зокрема, операція над беззнаковим і знаковим числами видає беззнаковий результат.

Препроцесор С++ (успадкований від C) дуже примітивний. Це приводить з одного боку до того, що з його допомогою не можна (або важко) здійснювати деякі завдання метапрограмування, а з іншою, в наслідку своєї примітивності, він часто приводить до помилок і вимагає багато дій з обходу потенційних проблем. Деякі мови програмування (наприклад, Scheme і Nemerle) мають набагато могутніші і безпечніші системи метапрограмування (також звані макросами, але макроси С/С++ вони мало нагадують).

З кінця 1990-х в співтоваристві С++ набуло поширення так зване метапрограмування на базі шаблонів. По суті, воно використовує особливості шаблонів C++ в цілях реалізації на їхній базі інтерпретатора примітивної функціональної мови програмування, що виконується під час компіляції. Сама по собі ця можливість вельми приваблива, але, внаслідкок вище згаданого, такий код вельми важко сприймати і зневаджувати. Мови Lisp/Scheme, Nemerle і деякі інші мають могутніші і водночас простіші для сприйняття підсистеми метапрограмування. Крім того, в мові D реалізована порівнянна за потужністю, але значно простіша в застосуванні підсистема шаблонного метапрограмування.

Майбутній розвиток:

С++ продовжує розвиватися, щоб відповідати сучасним вимогам. Одна з груп, що займаються мовою С++ в її сучасному вигляді і що направляють комітету зі стандартизації С++ поради з її поліпшення, — це Boost. Наприклад, один з напрямів діяльності цієї групи — вдосконалення можливостей мови шляхом додавання в неї особливостей метапрограмування.

Стандарт С++ не описує способи іменування об'єктів, деякі деталі обробки винятків і інші можливості, пов'язані з деталями реалізації, що робить несумісним об'єктний код, створений різними компіляторами. Проте для цього третіми особами створено безліч стандартів для конкретної архітектури і операційних систем.

Проте (за станом на час написання цієї статті) серед компіляторів С++ все ще продовжується битва за повну реалізацію стандарту С++, особливо в області шаблонів — частини мови, зовсім недавно повністю розробленій комітетом стандартизації.

Одним із каменів спотикання у цьому питанні є ключове слово export, що використовується також і для розділення оголошення і визначення шаблонів.

Першим компілятором, що підтримав export в шаблонах, став Comeau C++ на початку 2003 року (п'ять років після виходу стандарту). У 2004 році бета-версія компілятора Borland C++ Builder X також почала його підтримку.

Обидва цих компілятора засновані на зовнішньому інтерфейсі EDG. Інші компілятори, такі як Microsoft Visual C++ або GCC, взагалі цього не підтримують. Ерб Саттер (Herb Sutter), секретар комітету із стандартизації С++, рекомендував прибрати export з майбутніх версій стандарту унаслідок серйозних складнощів в повноцінній реалізації, проте згодом остаточним рішенням було вирішено його залишити. [12]

<== предыдущая лекция | следующая лекция ==>
 | 
Поделиться с друзьями:


Дата добавления: 2015-08-31; Просмотров: 437; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.