Уроци

Едномерни масиви

Съставен тип данни. Едномерни масиви

 

 

1.          Структура от данни

Под структура от данни се разбира организирана информация, която може да бъде описана, създадена и обработена с помощта на програма.

Когато елементите на една структура се състоят от една компонента, те се наричат прости, или скаларни.

Структури от данни, компонентите на които са редици от елементи, се наричат съставни.

Структури от данни, за които операциите включване и изключване на елемент не са допустими, се наричат статични, в противен случай - динамични.

 

2.    Масив a. Логическо описание

 

Масивът е крайна редица от фиксиран брой елементи от един и същ тип. Към всеки елемент от редицата е възможен пряк достъп, който се осъществява чрез индекс. Операциите включване и изключване на елемент в/от масива са недопустими, т.е. масивът е статична структура от данни.

b.     Физическо представяне

Елементите на масива се записват последователно в паметта на компютъра, като за всеки елемент на редицата се отделя определено количество памет.

В езика C++ структурата масив се реализира чрез типа масив. Разглежда се като крайна редица от елементи от един и същ тип с пряк достъп до всеки елемент, осъществяващ се чрез индекс с цели стойности, започващи от 0 и нарастващи с 1 до указана горна граница. Дефинира се от програмиста.

3. Дефиниране на едномерен масив

тип_на_елементите променлива_масив [брой_на_елементите];

Типът на елементите може да бъде всеки стандартен или предварително дефиниран тип.Нарича се базов тип.

 Променливата_масив се задава с идентификатор.

 Броят на елементите на масива се задава с константен израз от целочислен тип с положителна стойност. Той се загражда в квадратни скоби. Броят на елементите на масива не може да се променя след дефинирането.

Примери:

int x[10];

char name[20];

тип_на_елементите променлива_масив [брой на елементите] = { стойност1, стойност2,...};

Tип  <променлива>[size] = {<редица_от_константни_изрази>}

се нарича дефиниция на масив с инициализация, а фрагмента {<редица_от_константни_изрази>} - инициализация. При нея е възможно size да се пропусне. Тогава за стойност на size се подразбира броят на константните изрази, изброени в инициализацията. Ако size е указано и изброените константни изрази в инициализацията са по-малко от size, останалите се приемат за 0.

Пример:

int q[5]={8, 2, 3, 15, 6};

 

След тази дефиниция елементите на масива q приемат следните начални стойности:

 

q[0] приема стойност 8, q[1] - a 2, q[2] – a3, q[3] – a15, q[4] – a6.

 

1.          Дефиницията

 

int q[5] =  {1, 2, 3};

 

е еквивалентна на

 

int q[] =  {1, 2, 3, 0, 0};

 

т.е. ако инициализаторът предостави по-малко елементи, за останалите се предполага стойност 0.

 

2.          Дефиницията  int r[] = {0, 1, 2, 3};

 

e еквивалентна на    int  r[4] = {0, 1, 2, 3};

 

Забележка: Не са възможни конструкции от вида:

 

int q[5];      q = {0, 1, 2, 3, 4};

 

т.е. не съществува присвояване на масив, подобно на инициализирането!



Ще отбележим, че Фрагментите

 

<променлива>[size] и

 

<променлива>[size] = {<редица_от_константни_изрази>}

 

могат да се повтарят. За разделител се използва знакът запетая.

 

Пример: Дефиницията

 

        int m1[20], m2[35], proben[30];

 

е еквивалентна на дефинициите:

       int m1[20];

       int m2[35];

       int proben[30];

 

4.          Достъп до елементите на масива

 

Елементите на масива се наричат още променливи с индекс или индексирани

 

променливи. Индексът може да бъде израз с положителна стойност, по-малка от броя на

 

елементите на масива. До всеки елемент на масива има пряк достъп. Достъпът се осъществява

 

посредством индекса, който се загражда в квадратни скоби. В езика С/C++ винаги първият

 

елемент на масива има индекс нула.

 

Пример: int  m[20];

 

m[0]=5; //първият елемент на масива приема стойност 5

       

5.          Операции и вградени функции

        Не са възможни операции над масиви като цяло, но всички операции и вградени функции, които базовият тип допуска, са възможни за индексираните променливи, свързани с масива.

        Пример: Нека

        int a[5], b[5];

Недопустими са:

cin >> a >> b;

        a = b;

а също a == b или a != b.

        Операторът

        cout << a;

е допустим и извежда адреса на a[0].



Задача.Да се напише програма, която въвежда елементите на едномерен масив от цели числа и след това ги извежда в обратен ред.

#include <iostream>

using namespace std;

int main()

{

   cout << "Vavedete broa na elementite:  "; int n; cin >> n;

   int a[20];

 

    for (int i = 0; i < n; i++)

 

    {cout << "a[" << i << "]= ";  cin >> a[i]; }

 

    for (int i =n-1; i >= 0; i--)

 

    cout << "arr[" << i << "]= " << arr[i] << ‘\n’;

 

  return 0;

}

Типове данни.Целочислен тип

Типове данни в езика C/С++

1. Типове данни.

  •  Типът на дадена величина се определя от множеството от стойности, които тя може да приема, както и от операциите и функциите над това множество
  •  видове данни (според типа):

числови

низове–текстови величини

логически

  •  В зависимост от това дали една величина може да променя или не своята стойност, величините се делят съответно на променливи и константи.

2. Числови типове данни

Тип

Диапазон на стойностите

int

-2147483648  до 2147483647

short int

-32768  до  32767

long long int

-9223372036854775808  до 9223372036854775807

unsigned long long int

0   до   18446744073709551615

3. Деклариране на величини

 

а)     Понятие за променлива

• Величина от определен тип, на която е присвоено ИМЕ и чиято СТОЙНОСТ се променя при изпълнение на програмата.

• Под понятието променлива се крие клетка от паметта, в която се съхранява текущата стойност на променливата

• Всяка клетка има адрес, използването на името е обръщение към адреса

• Всички променливи предварително трябва да се декларират и с това се определя размерът или броят байтове памет, които трябва да се резервират за нея.

• Имената на променливите позволяват да се отличават една от друга. Те се задават с идентификаториИдентификатор е комбинация от букви (латински) и цифри, като винаги започват с буква. (suma; br; k1). Идентификаторът трябва да е различен от ключовите думи. С/С++ прави разлика между големи и малки букви и затова идентификатор с име Suma е различен от suma.

б)    Деклариране на променливи и константи

 


Дефиниране на променливи

тип     име_на_променлива ;

Пример:

int a,b,c;

int  hour=5;

Дефиниране на константи

const   тип  име_на_константа = стойност ;

 

Пример:

const   int AGE=12;

Предназначение: Дефинира нова константа от определен тип и ú присвоява стойност.

в) инициализация на променливи.

тип име_на_променлива=стойност ;

Пример:

int suma=0;

4. Аритметични операции

 

+

събиране

3+2=5

-

изваждане

3-2=1

*

умножение

3*2=6

/

деление

5/3=1

%

остатък при деление

5%3=2

 

 

5. Операции за присвояване

а) стандартна операция за присвояване;

променлива = израз ;

Пример:

a=5;

b=3*a+7/2;

a=a*4-6;

Предназначение: Изчислява се стойността на израза и тя става текуща стойност на променливата.

Изисквания:

  •  Израза и променлива трябва да са от един и същи тип.
  • Всички променливи участващи в израза отдясно трябва да имат предварително зададени стойности.

 

б) съкратени операции за присвояване:

          Примери:

a + = b; задава a = a + b;

a - = b; задава a = a - b;

a * = b; задава a = a * b;

a / = b; задава a = a / b;

a % = b; задава a = a % b;

k+=12; задава k=k+12;

a+=b+c; задава a=a+(b+c);

a*=k+3; задава a=a*(k+3);

в) операции за увеличаване и намаляване с 1:

Примери:

а++; задава a = a + 1;

а--; задава a = a - 1;

6.Оператор за въвеждане

cin>>променлива1>>променлива2>>променлива3>>>>променливаK;

или

cin>>променлива1;

cin>>променлива2;

cin>>променливаk;

Стойностите на променливите се въвеждат на един или няколко реда от клавиатурата, като между тях трябва да има поне един интервал. След въвеждане стойността на последната променлива трябва да се натисне клавиша Enter.

Пример за програма, която въвежда стойности на две променливи, след което ги извежда на екрана:

#include <iostream>

using namespace std;

int main()

{

    cout<<"Vavedete parvoto chislo:";    int a;    cin>>a;

    cout<<"Vavedete vtoroto chislo:";    int b;    cin>>b;

    cout<<"a="<<a<<endl;

    cout<<"b="<<b<<endl;

    return 0;

}

Въпроси и задачи за самоподготовка, контрол и самоконтрол:

Зад. 1. Какъв е резултатът от изпълнението на аритметичните операции?

а)

15/4=

д)

15/4=

б)

16%4=

е)

–16+4=

в)

17%3=

ж)

7*3=

г)

–29%4=

з)

35/(–6)=

Зад. 2. Нека х=6, а у=8. Какви са окончателните стойности на променливите x и y след изпълнение на операторите:

a)

x=1+2*7;

x=x-2;

y=x+y;

б)

x=x+y;

y=x-y;

x=x-y;

в)

z=x;

x=y;

y=z;

г)

x=1+2*7;

y=3+x--;

д)

x=4+2*6;

y=2*--x ;

е)

x=6*2;

у=24/х++;

Оператор за цикъл do-while

Оператор за цикъл do-while

 

а) Синтаксис (правила за запис):

do  оператор while (израз);

 

оператор – произволен оператор, който е прието да се нарича тяло на цикъла;

израз – условие, което определя до кога се повтаря тялото на цикъла. Тук могат да участват както аритметични, така и логически операции и логически отношения, описани по правилата за логически и аритметични изрази.

Забележка:Тялото на цикъла описва действието, което трябва да се повтаря. Ако се налага да се повтаря повече от едно действие, т. е. се използва повече от един оператор, повтарящите се оператори се обединяват в съставен оператор чрез заграждането им в {}.

 

б) Семантика (правила за изпълнение):

 

Операторът  do оператор while (израз),  се изпълнява по следния начин:

- изпълнява се оператора ;

- изчислява се стойността на израза;

- ако стойността на израза е различна от нула, т. е. истина, се преминава към изпълнение на оператора ;

- ако стойността на израза е нула, се изпълнява следващия оператор в програмата.

 

 

Типове данни

1. Типове данни.

  •  Типът на дадена величина се определя от множеството от стойности, които тя може да приема, както и от операциите и функциите над това множество
  •  видове данни (според типа):

числови

низове–текстови величини

логически

  •  В зависимост от това дали една величина може да променя или не своята стойност, величините се делят съответно на променливи и константи.

2. Числови типове данни

Тип

Диапазон на стойностите

int

-2147483648  до 2147483647

short int

-32768  до  32767

long long int

-9223372036854775808  до 9223372036854775807

unsigned long long int

0   до   18446744073709551615

3. Деклариране на величини

 

а)     Понятие за променлива

• Величина от определен тип, на която е присвоено ИМЕ и чиято СТОЙНОСТ се променя при изпълнение на програмата.

• Под понятието променлива се крие клетка от паметта, в която се съхранява текущата стойност на променливата

• Всяка клетка има адрес, използването на името е обръщение към адреса

• Всички променливи предварително трябва да се декларират и с това се определя размерът или броят байтове памет, които трябва да се резервират за нея.

• Имената на променливите позволяват да се отличават една от друга. Те се задават с идентификаториИдентификатор е комбинация от букви (латински) и цифри, като винаги започват с буква. (suma; br; k1). Идентификаторът трябва да е различен от ключовите думи. С/С++ прави разлика между големи и малки букви и затова идентификатор с име Suma е различен от suma.

б)    Деклариране на променливи и константи

 


Дефиниране на променливи

тип     име_на_променлива ;

Пример:

int a,b,c;

int  hour=5;

Дефиниране на константи

const   тип  име_на_константа = стойност ;

 

Пример:

const   int AGE=12;

Предназначение: Дефинира нова константа от определен тип и ú присвоява стойност.

в) инициализация на променливи.

тип име_на_променлива=стойност ;

Пример:

int suma=0;

4. Аритметични операции

 

+

събиране

3+2=5

-

изваждане

3-2=1

*

умножение

3*2=6

/

деление

5/3=1

%

остатък при деление

5%3=2

 

 

5. Операции за присвояване

а) стандартна операция за присвояване;

променлива = израз ;

Пример:

a=5;

b=3*a+7/2;

a=a*4-6;

Предназначение: Изчислява се стойността на израза и тя става текуща стойност на променливата.

Изисквания:

  •  Израза и променлива трябва да са от един и същи тип.
  • Всички променливи участващи в израза отдясно трябва да имат предварително зададени стойности.

 

б) съкратени операции за присвояване:

          Примери:

a + = b; задава a = a + b;

a - = b; задава a = a - b;

a * = b; задава a = a * b;

a / = b; задава a = a / b;

a % = b; задава a = a % b;

k+=12; задава k=k+12;

a+=b+c; задава a=a+(b+c);

a*=k+3; задава a=a*(k+3);

в) операции за увеличаване и намаляване с 1:

Примери:

а++; задава a = a + 1;

а--; задава a = a - 1;

6.Оператор за въвеждане

cin>>променлива1>>променлива2>>променлива3>>>>променливаK;

или

cin>>променлива1;

cin>>променлива2;

cin>>променливаk;

Стойностите на променливите се въвеждат на един или няколко реда от клавиатурата, като между тях трябва да има поне един интервал. След въвеждане стойността на последната променлива трябва да се натисне клавиша Enter.

Пример за програма, която въвежда стойности на две променливи, след което ги извежда на екрана:

#include <iostream>

using namespace std;

int main()

{

    cout<<"Vavedete parvoto chislo:";    int a;    cin>>a;

    cout<<"Vavedete vtoroto chislo:";    int b;    cin>>b;

    cout<<"a="<<a<<endl;

    cout<<"b="<<b<<endl;

    return 0;

}

Въпроси и задачи за самоподготовка, контрол и самоконтрол:

Зад. 1. Какъв е резултатът от изпълнението на аритметичните операции?

а)

15/4=

д)

15/4=

б)

16%4=

е)

–16+4=

в)

17%3=

ж)

7*3=

г)

–29%4=

з)

35/(–6)=

Зад. 2. Нека х=6, а у=8. Какви са окончателните стойности на променливите x и y след изпълнение на операторите:

a)

x=1+2*7;

x=x-2;

y=x+y;

б)

x=x+y;

y=x-y;

x=x-y;

в)

z=x;

x=y;

y=z;

г)

x=1+2*7;

y=3+x--;

д)

x=4+2*6;

y=2*--x ;

е)

x=6*2;

у=24/х++;

 

Оператор за избор на вариант switch

 

Оператор за избор на вариант switch

 

1. Синтаксис

switch (израз)

{

case израз_1 : оператори_1 [ break;]

case израз_2 : оператори _2  [ break;]

case израз_ п : оператори _n [ break;]

[default : default- оператори [break;]]

}

където:

оператори_ 1. оператори_ 2  оператори_ п и default- оператори

са произволни редици от оператори, допустими в езика:

израз е произволен допустим в езика израз, резултатът от който
задължително е от цял (включително и знаков) тип
управляващ израз:

израз_ 1, израз_2  и израз_п са константни изрази, т.е. стой-
ностите им не могат да зависят от входните данни. Наричаме ги

етикети.

Стойностите на различните етикети задължително са раз­лични.

Забележка: 1. Операторът break, описан в синтаксиса, не е задъл­жителен,
но пропускането му води до промяна на смисъла на програ­мата.
Ще разгледаме това в описанието на семантнката и в следващите примери.

 

2.Семантика

Изчислява се стойността на израза.

Получената стойност се сравнява последователно със стойнос­тите на етикетите.
израз _ 1,израз_2. .... израз_n (както споменахме по-горе. етикетите трябва да са
константни изрази, т.е. в тях не може да участват променливи):

При съвпадение на стойността на израза със стойността на ня­кой от етикетите,
се изпълняват операторите, записани в
case-частта на съответния етикет,
до срещане на оператор
breakили до дости­гане на затварящата скоба на оператора;
при несъвпадение на стойността на израза със стойността на някой от етикетите,
се изпълняват операторите, съответстващи на етикета
default, до достигане
на оператор
break или до затварящата скоба на оператора.
Ако стойнстта на израза не съвпада
С никоя от сгойностите на етикети
и липсва етикет
default, операторът switch не изпълнява никакви действия.

Login Form


IV ОУ "Св.Св.Козма и Дамян" -гр Сандански

Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
More information Ok