Програмна среда С


Категория на документа: Информатика


По тази програма могат да бъдат направени няколко забележки. Описани са три имена на функции преди да бъде дефинирана функцията main(). Първоначалният списък се нарича предварителна декларация, съобщаваща на програмата, че тези функции съществуват и описанията им могат да бъдат намерени някъде в текста на програмата, представена от този файл или в отделен файл. Всяка функция трябва да бъде деклакирана преди да може да бъде викана. Предварителната декларация е един от начините да се направи това. val1 и val2 се наричат променливи. Операторът
int val1, val2;
дефинира тези променливи за програмата. И променливите трябва да бъдат обявени преди да могат да бъдат използувани. Продробен преглед на променливите е направен в глава 1.
v1 и v2, наричани формални параметри, изграждат списъка от аргументи на функциите read2() и max(). val е единствения формален параметър на writeMax(). Същността на дефиницията им е разгледана в дял 3.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 ще бъдат отбелязани от компилатора като грешки. Включването на предварителните декларации показва първичната употреба на заглавния файл. ( Част 4.5 разглежда заглавните файлове в подробности).
Съществува и един трети вх/изх. поток, cerr (произнася се “see-err”), наречен стандартна грешка, който също се свързва с потребителския терминал. cerr се използува за да уведомява потребителя относно някои особени състояния на програмата по време на изпълнение. Например, следната част от програма предпазва програмиста от деление на нула:
if (v2 == 0 )
{ cerr << “nerror: attempt to divide by zero”;
return;}
v3 = v1/v2;
Следващата програма чете по един символ от стандартния вход докато не срещне end-of-file. Тя брои прочетените редове и символи. Изходът й има следния вид:
lineCount characterCount
Описанието й има вида:
#include
main()
{ char ch;
int lineCnt=0, charCnt=0;
while ( cin.get(ch) )
{ switch ( ch )
{ case ‘t’:
case ‘ ‘ : break;
case ‘n’: ++lineCnt;
break;
default : ++charCnt; break;

}

}
cout << lineCnt << “ “ << “n”;
return 0;

}
get() е функция, принадлежаща на вх/изх. поток, която чете символи го записва като свой аргумент - в този случай, ch. Последователността от два символа n представя символа tab.
Операторът switch сигурява условен преход според стойносттана селектора си. Ако стойността му съвпада с някой от описаните след думата case стойности, се изпълнява оператора, съответствуващ на тази стойност. Ако съответствие не може да бъде намерено, се изпълняват операторите, записани след default. За всеки прочетен символ за нов ред се увелчава стойността на lineCnt с 1. charCnt се увеличава с 1 всеки път, когато е прочетен символ, който не е табулатор, интервал или нов ред.
Операторът while, наричан оператор за цикъл, осигурява многократно изпълнение на група от оператори докато някакво условие има стойност истина. В този случай, операторът switch се изпълнява докато get() чете символ от стандартния вход. (Операторите while и switch са описани в глава 5).
Упражнение 0-1. Въведете програмата във файл prog2.c и я компилирайте в изпълним файл, наречен prog2.
Упражнение 0-2. Изпълнете програмата с текста на предишното упражнение. Изпълнете я отново с текст, съдържащ само празни интервали. Изпълнете я за текст, съдържащ само знака end-of-file.
Упражнение 0-3. Преработете програмата така, че да брои табулаторите (tabCnt) и интервалите (blankCnt). Нека изходът да изглежда така.
Total Characters: xx
Lines: x
Chars: x
Tabs: x
Blanks: x




Сподели линка с приятел:





Яндекс.Метрика
Програмна среда С 9 out of 10 based on 2 ratings. 2 user reviews.