Помогни ни да направим Uroci.net по - богат! Добави урок
Категории Други уроци Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS и HTML Corel Draw Image Ready PHP SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic JavaScript Ajax 3ds Max Maya 3D C++
C++
Sound Forge Gimp SWiSH

С++ част.1 (Въведение)

C++ » C++
fix3d   трудност:    видян: 16293



1. Синтактични грешки. Програмистът е направил “граматическа грешка” според езика С++. Например:

int main(
{ // error: missing ‘)’
readIn: // error: illegal character ‘:’
sort();
compact();
print();
return 0 // error: missihg ‘;’
}

2. Грешки за типове. Данните в С++ се свързват с типове. Стойността 10, например, е цяла. Думата “hello”, заградена от двойни кавички е символен низ. Ако на дадена функция очакваща аргумент от цял тип се подаде аргумент тип низ, компилаторът ще сигнализира за грешка при типовете.

Всяко съобщение за грешка съдържа номер на ред и кратко описание на причината, поради която се счита, че вие сте сгрешили. Препоръчва се грешките да се коригират в последователността, в която се появяват. Често единична грешка може да предизвика лавинообразен ефект и компилаторът да съобщи за повече грешки, отколкото фактически съществуват. След като коригирате текста на програмата си, можете да я компилирате отново.

За операционната система MS-DOS, обаче, разширението “.c” не е допустимо - MS-DOS не прави разлика между малки и големи букви.

Реализацията на С++ под управлението на MS-DOS поддържа следните разширения на файлове:

cxx (x е + завъртян на 90 градуса).
cpp (p съответствува на “плюс”-а).
Втората част от работата на компилатора е да преведе формално коректния програмен текст. Този превод, наречен генерация на код, фактически генерира обектов или асемблерен текст, разбираем за компютъра на който програмата ще бъде изпълнявана.

Резултатът от успешна компилация е изпълним файл. По подразбиране, при системата на автора този файл се нарича a.out. Той може да бъде изпълнен както следва:

$ a.out

Изходът на програмата изглежда така:

readIn()
sort()
compact()
print()

Командната опция “-о име” позволява на програмиста да даде име на програмния файл, различно от a.out. Например, командният ред

$ CC prog1 prog1.C

ще създаде изпълним файл prog1. За да се изпълни тази програма трябва да се напише:

$ prog1

Освен езиковия компилатор реализацията на С++ предлага и набор от стандартни библиотеки. Библиотеките са съвкупност от предварително дефинирани функции. В С++, например, входът и изходът се поддържат от стандартна С++ библиотека. Програмистите могат да използуват библиотечните функции в програмите си по същия начин, по който използуват функциите, които са написали.

Най-голямото предимство на програмните библиотеки е това, че позволяват на добри програмисти да окомплектоват своите знания за използуване от множество други програмисти. Малко от нас, например, знаят как работи електричеството, но повечето знаят как да включат осветлението. Добрата библиотека може да бъде използувана така лесно, както и ключа за осветление. В следващата част се прави един кратък преглед на входно-изходната библиотека.

1.3. Първоначален поглед върху вход-изхода.

Входът и изходът не са част от езика С++, но се поддържат от библиотека, написана на С++ и позната като iostream (вх/изх. поток). Приложение А разглежда подробно тази библиотека(ў). В този дял е дадена достатъчна информация за начинаещия читател.

Входът, постъпващ от потребителският терминал, наречен стандартен вход, е свързан с предварително дефинирания във вх/изх. поток вход cin (произнася се “see-in”). Изходът, насочен към потребителския терминал, се нарича стандартен изход и се свързва с предварително дефинирания във вх/изх. поток изход cout (произнася се “see-out”).

Операторът за изход (“<<”) се използува за изпращане на стойност към стандартния изход. Например:

cout << "The sum of 7 + 3 = ";
cout << 7 + 3;
cout << "n";

Последователността от символи n представя символа нов ред. При писане той предизвиква насочване на печата на следващия ред. Последователност от входно-изходни оператори може да бъде обединена в един оператор. Например,

cout << "The sum of 7 + 3 = " << 7 + 3 << "n";

Всеки следващ изходен оператор може да бъде добавен на свой ред към cout. За четимост обеднените изходни оператори могат да се разположат на няколко реда. На следващите три реда е записан един изходен оператор.

Читателят, разполагащ с реализация на С++, която не се основава на версия 2.0, има по-ранната версия на библиотеката, наречена stream. Примерите в тази книга използуват подмножество, общо за двете версии.

cout << "The sum of ";
<< v1 << " + ";
<< v2 << " = " << v1 + v2 << "n";

Съответно операторът за вход (“ >> “) се използува за четене на стойност от стандартния вход. Например, следната програма реализира прост алгоритъм за четене на две стойности, определяне на по-голямата от тях и отпечатването й.

#include <stram.h>

void read2 ( int1&, int2& );
int max( int, int );
void writeMax( int );

main() {
int val1, val2;
read2( val1, val2 );
int maxVal = max( val1, val2 );
writeMax( maxVal );
return 0;
}

void read2(int& v1, int& v2); {
cout << "nPlease enter two numeric values: ";
cin >> v1 >> v2;
}

int max( int v1, int v2); {
if ( v1 > v2 )
return v1;
else
return v2;
}

viod writeMax( int val ) {
cout << val << " is the largest value.n";
}

По тази програма могат да бъдат направени няколко забележки. Описани са три имена на функции преди да бъде дефинирана функцията main(). Първоначалният списък се нарича предварителна декларация, съобщаваща на програмата, че тези функции съществуват и описанията им могат да бъдат намерени някъде в текста на програмата, представена от този файл или в отделен файл. Всяка функция трябва да бъде декларирана преди да може да бъде викана. Предварителната декларация е един от начините да се направи това. val1 и val2 се наричат променливи. Операторът

int val1, val2;

дефинира тези променливи за програмата. И променливите трябва да бъдат обявени преди да могат да бъдат използувани. Подробен преглед на променливите е направен в глава 1.

v1 и v2, наричани формални параметри, изграждат списъка от аргументи на функциите read2() и max(). val е единствения формален параметър на writeMax(). Същността на дефиницията им е разгледана в дял 4.6, където се обсъжда как се описват параметрите на функции.

Читателят сигурно е забелязал, че main() e описана малко по- различно този път. Не е описан явно типа на връщания резултат. Това е разрешено в С++: функция, за която не е зададен тип за връщане, връща тип цяло число по подразбиране. Когато програмата бъде компилирана и изпълнена се получава следния изход (потребителят е въвел стойностите 17 и 124):

Please enter two numeric values: 17 124
124 is the largest value.

Двете стойности, 17 и 124, са разделени с интервал. Интервалите, табулациите и новите редове са празно пространство (white space) за С++. Операторът

cin >> v1 >> v2;

правилно чете двете стойности, защото операторът за изход (“>>”) пропуска цялото празно пространство, което е въведено.

Предварителната дефиниция на cin и cout се съдържа в stream.h. Ако програмистът забрави да включи този файл, всички обръщения към cin и cout ще бъдат отбелязани от компилатора като грешки. Включването на предварителните декларации показва първичната употреба на заглавния файл. ( Част 5.5 разглежда заглавните файлове в подробности).

Съществува и един трети вх/изх. поток, cerr (произнася се “see-err”), наречен стандартна грешка, който също се свързва с потребителския терминал. cerr се използува за да уведомява потребителя относно някои особени състояния на програмата по време на изпълнение. Например, следната част от програма предпазва програмиста от деление на нула:

if (v2 == 0 ) {
cerr << "nerror: attempt to divide by zero";
return;
}

v3 = v1/v2;


Страници: «1 2 3 4 5 6 »

Коментари (3)

black_joker на 27.01 2007 в 20:45ч.
В този код има някъде грешка:

#include

void read() { cout pact() { cout n"; }
void write() { cout n() {
read();
sort();
compact();
write();
return 0;
}

При мен С ми извежда грешка още в първия ред, демек при #include
NeronVylka на 20.03 2008 в 15:54ч.
ами къде ти е библиотеката при #include? #include
NeronVylka на 20.03 2008 в 16:01ч.
И int main () няма и си слагал {} на поразия

Регистрирайте се, за да добавите коментар

реклама

© Всички права запазени. 2006-2008. Created by: Site.bg
Препоръчваме: IT Новини | Кино и игри | Диплома.бг | Paparak.bg | Тунинг Портал | uchenik.com | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | AnimeS-bg.com | Фото Форум | Запознанства | Мрежа от приятели | IT Light | Spodeli.net | Фото-Култ | IDG.BG | Teenproblem.net | Блог - Образование | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | Казанлък.Com | News24 | Setcom.bg | Atol.bg | Elmaz.com | MobileBulgaria.com