Skip to content Skip to navigation

OpenStax_CNX

You are here: Home » Content » Вовед во програмскиот јазик C

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

Вовед во програмскиот јазик C

Module by: Liljana Stefanovska. E-mail the author

Summary: Introduction to programming in C Вовед во програмскиот јазик C

Општ развој на програмските јазици

Со појавата на првите компјутери се појавува потребата од пишување на програми преку кои ќе функционираат деловите од компјутерот. Во тоа време програмерите програмираа на многу неприроден начин, комбинирајќи низи од 0 и 1, користејќи го т.н. машински јазик.

Подоцна програмерите согледуваат дека од секој блок на 0 и 1 може да се искомбинираат наредби-зборови кои ќе се многу поразбирливи и полесно ќе се применуваат во текот на пишувањето на програмите. Ваквиот програмски јазик е познат како assembler.

Figure 1
Figure 1 (graphics1.png)

Со тек на времето се појавуваат т.н. програмски јазици на високо-ниво, кои му нудат на програмерот множество на инструкции кои се лесно разбирливи, а исто така се доволно прецизни и едноставни за компјутерот да може да ги разбере (овде спаѓаат FORTRAN, COBOL, PASCAL…).

Создаден во 1970 година од програмерот Денис Ричи (Dennis Ritchie) и Брајан Керниган (Brian Kernighan) од лабораториите Бел (AT&T Bell Labs) 1972. Негов предок е јазикот B, развиен од Кен Томсон (Ken Thompson) во 1970 година.

ALGOL 60 -> CPL -> BCPL -> B -> C.

Figure 2
Figure 2 (graphics2.jpg)
Figure 3
Figure 3 (graphics3.jpg)
Figure 4
Figure 4 (graphics4.jpg)

C бил почетно дизајниран за пишување на оперативни системи. Јазикот бил екстремно едноставен и флексибилен, така што тој подоцна се користи за пишување на најразлични програми. Поради овие причини јазикот станува најпопуларен програмски јазик во светот.

Идејата за креирањето на програмскиот јазик C е давањето на слобода на програмерот при организацијата и пишувањето на програмата, односно да го напише кодот (програмот) на начин кој е разбирлив за него, а и за останатите програмери. По пишувањето на програмата се користи компајлер кој ја преведува програмата во машински код кој е лесно разбирлив за компјутерот.

Figure 5
Figure 5 (graphics5.png)

Основни елементи на програмскиот јазик C

  • Азбука на јазикот: големи и мали англиски букви, арапски цифри и интерпункциски знаци
  • Секое име содржи само букви, цифри и _.
  • Името секогаш започнува со буква.
  • Името не смее да содржи празни места и интерпункциски знаци.
  • Името не смее да биде еднакво со клучен збор.
  • Има разлика помеѓу големи и мали букви.

Секој програмски јазик на високо ниво се состои од множество на резервирани зборови, а комбинацијата од еден или неколку клучни зборови дава наредба од програмскиот јазик.

Множеството на клучни зборови од програмскиот јазик C е следното (32 според ASCII стандардот, 28 според Richie).

Table 1
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

Програмскиот јазик C е функционален јазик, односно кодот напишан во овој програмски јазик е базиран на функции. Основниот облик на програма напишана во програмскиот јазик C е следниот:

void main()
{
    deklaracija_na_promenlivi;
    programski_naredbi;
}

main е функција која означува главна програма. Во овој специјален тип на функција може да се декларираат променливи, нови под-функции, и да се пишува кодот на програмата. Секоја програма содржи една или повеќе функции, но точно една што се нарекува main. Оваа функција се повикува прва при извршување на C програма

Функциите може да примаат влезни параметри. Ова се обезбедува преку () делот по името на функцијата. Во овој случај празните загради означуваат дека оваа функција не прима влезни параметри.

Типот на резултатот кој го враќа функцијата стои пред името на функцијата. Во овој случај резервираниот збор void означува дека функцијата не треба да врати резултат.

Телото на секоја функција започнува со {, a завршува со }. Наредбите кои се употребуваат меѓусебно се одвојуваат со ; - точка и запирка.

За дополнително појаснување на некој програмски сегмент многу често се користат коментарите. Во програмскиот јазик С коментарите се задаваат преку користење на /* … */ конструктот или преку //… конструктот.

Exercise 1

Програма Dobredojdovte na TMF!

Solution

#include <stdio.h>

void main()

{

printf(“Dobredojdovte na TMF!\n”);

/* na ekran ke se ispecati gornata poraka */

}

Опис на кратката програма:

#include

  • #include <stdio.h> e претпроцесорска директива – му кажува на компјутерот да ја вметне содржината на определена датотека и понатаму содржините во таа датотека се употребливи во програмата
  • <stdio.h> во датотеката се сместени програмските кодови на влезно-излезните операции
  • директивата треба да се појави сама и да биде напишана во една линија
  • директивите не завршуваат со ;

printf( “Zdravo na site!\n" );

  • дава инструкции компјутерот да изврши акција, да ја прикаже на комјутерскиот екран реченицата ограничена со наводниците
  • целата линија се нарекува израз
  • сите изрази во C мора да завршат со ;
  • \ - специјален знак (escape character)
  • означува дека printf( )треба да направи нешто различно од вообичаеното однесување
  • \n е ознака за знакот нов ред

return 0;

  • по конвенција return 0, означува дека програмата завршува успешно со својата работа

Променливи

Променливите претставуваат места во меморијата каде што ќе се чува некоја вредност. Во С ова место во меморијата се идентификува преку името на променливата. Сите променливи кои ќе се користат во програмата треба претходно да бидат декларирани, а потоа да се користат. Начинот на декларација на променливите е следниот:

Figure 6
Figure 6 (graphics6.png)

Типовите на променливите може да бидат:

Table 2
Цели броеви Знаковни Децимални броеви
int char float
short   double
long    
unsigned    

При дефинирањето на имињата на променливите треба да се запазат следниве правила, односно имињата на променливите треба да содржат:

  • мали букви од a до z;
  • големи букви од A до Z;
  • цифри од 0 до 9;
  • знак за подвлекување _ кој се третира како буква;
  • најчесто должината на имињата на променливите е 32 знаци;
  • С ги разликува малите и големите букви!

Exercise 2

Да се напише програма во С која ќе ја пресмета сумата на два броја.

Solution

void main()

{

int a, b, c;

a = 5;

b = 10;

c = a + b; // c=15

}

Како што се гледа од примерот освен делот за декларирање на променливите, останатиот дел од програмата ги содржи наредбите кои ја извршуваат бараната задача. Бидејќи се работи за математичка операција, користени се оператори за работа со декларираните променливи.

Оператори

Операторите се користат за градење на изрази, при што операциите се изведуваат од лево надесно со што се применува правилото на приоритет на операторите во нивното изведување.

Аритметички оператори:

Се применуваат над бројни променливи (цели броеви или децимални броеви).

Table 3
+ собирање на два броја
- одземање на два броја
* множење на два броја
/ делење на два броја
% остаток при делење на два цели броеви
Table 4
оператор израз еквивалентен израз
+= x+=2; x=x+2;
-= x-=2; x=x-2;
*= x*=2;x*=a+b; x=x*2;x=x*(a+b);
/= x/=2; x/=j+2; x=x/2; x=x/(j+2);
%= x%=2; x=x%2;

Релациони оператори:

Се применуваат над било кои споредливи типови на податоци, а резултатот е цел број 0 или 1. 0 – неточно, 1 – точно.

Table 5
< Помало
<= помало еднакво
> Поголемо
>= поголемо еднакво
== Еднакво
!= Различно

Логички оператори:

Се користат најчесто во комбинација со релационите оператори за формирање на сложени логички изрази, кои повторно враќаат резултат 0 или 1.

Table 6
&& И
|| ИЛИ
! НЕ

Редослед на извршување на оператори (операции):

  • Изразот во загради се пресметува на почеток (има највисок приоритет). Ако заградите се вгнездени, изразот во највнатрешните загради се пресметува прв. Ако постојат повеќе загради на исто ниво во изразот, тие се пресметуваат одлево надесно.
  • Операторите *. /, или % ( што се однесуваат на операциите множење, делење, модул) се пресметуваат како втори по ред (имаат среден приоритет). Ако во изразот има повеќе операции од овој вид, тие се пресметуваат одлево надесно.
  • Операторите + или – (собирање или одземање) се пресметуваат последни. Ако во изразот има повеќе операции од овој вид, тие се пресметуваат одлево надесно.

Самата операција на доделување исто така враќа вредност и може да се вметне во друг израз. Операторот за доделување е пофлексибилен отколку што тоа на прв поглед се чини, така да истиот може да се употреби и на следниот начин:

int i, j, k, l, m, n;
i = j = k = l = m = n = 22; 

n=22 е првата операција што се извршува, и тоа прави вредноста 22 да биде расположива за следната операција додели ја вредноста 22 на променливата m, итн.

Приоритет

  • Во принцип сите унарни оператори имаат повисок приоритет од бинарните
  • Употребата на загради го менува приоритетот
  • Во С се дефинирани 15 нивои

Асоцијативност

  1. За два оператора со ист приоритет, операцијата што треба да се изврши се избира на основа на правилата за асоцијативност на операторите
  2. Дефинирани се “одлево надесно” и “оддесно налево”

Печатење на податоци (излезни функции)

Како што беше покажано на првиот пример “Dobredojdovte na TMF!”, се користи функција за испраќање на некој текст кон стандардниот уред за испис на податоци – мониторот.

Бидејќи С не вклучува наредби за влез и излез на податоци, се користи библиотека со функции која претходно мора да се пријави во програмата. Тоа се прави со користење на:

#include<stdio.h>

stdio – standard input output

На овој начин пред да се искомпајлира програмата, предпроцесорот на С знае дека треба да ги вклучи функциите од библиотеката stdio.h со цел да не се јави грешка при компајлирањето. За печатење се користи функцијата printf:

printf(kontrolna_niza,lista_na_promenlivi);

Контролната низа содржи било каков текст за испис и контролни знаци предводени од % или \. Контролните знаци зависат од видот на променливата чија вредноста треба да се испише или од саканата акција што треба да биде превземена.

Во следната табела се прикажани сите контролни низи:

Table 7
контролна низа објаснување
%d За цели броеви
%i За цели броеви
%c За знаци
%s За низа од знаци
%e реален број во технички формат (е)
%E реален број во технички формат (Е)
%f реален број во децимален формат
%g реален број во пократкиот од форматите %е и %f
%G реален број во пократкиот од форматите %Е и %f
%u цел број без предзнак
%o октален цел број без предзнак
%x хексадецимален цел број без предзнак (мали букви)
%X хексадецимален цел број без предзнак (големи букви)
%p Прикажува покажувач
%n бројот на испишани знаци се доделува на аргументот
%% испишување на знакот %

Во низата на променливи покрај променливи може да има и константи и аритметички изрази.

Example 1

Примена на printf функцијата.

#include<stdio.h>
void main()
{
    printf(“, brojot na znaci e %d”,printf(“abcd”));
}

Оваа програма на екранот ќе испечати

abcd, brojot na znaci e 4

Задачи

Exercise 3

Да се напише програма која ќе ја пресметува вредноста на математичкиот израз: x = 3/2 + (5 – 46*5/12)

Solution

#include <stdio.h>

void main()

{

float x;

x = 3/2 + (5-46*5/12);

printf(“Vrednosta na x e %f\n”, x);

}

Exercise 4

Да се напише програма која за вредноста 25 на х ќе го пресмета и испечати неговиот квадрат.

Solution

#include <stdio.h>

void main()

{

int x, kvadrat;

x = 25;

kvadrat = x*x;

printf(“%d na kvadrat e %d.\n”, x, kvadrat);

}

Exercise 5

Да се напише програма која за дадени страни на еден триаголник и ќе ги испечати периметарот и квадратот од плоштината (нека се работи со a=7, b=7.5, c=13.2).

Solution

#include <stdio.h>

void main()

{

float a=7.0, b=7.5, c=13.2;

float L, P, s;

L = a + b + c;

s = L/2;

P = s*(s-a)*(s-b)*(s-c);

printf(“Plostinata na kvadrat e: %f\n”, P);

printf(“Perimetarot e: %f\n”, L);

}

Exercise 6

Да се напише програма која за дадени страни на еден правоаголник ќе ги испечати неговите плоштина и периметар (пр. a=7, b=10).

Solution

#include <stdio.h>

void main()

{

int a, b;

int L, P;

printf(“Vnesete gi stranite na pravoagolnikot:”)

scanf(“%d %d”, &a, &b);

L = 2*a + 2*b;

P = a * b;

printf(“Plostinata e: %f\n”, P);

printf(“Perimetarot e: %f\n”, L);

}

Exercise 7

Да се напише програма за пресметување на аритметичката средина на броевите 3, 5 и 12.

Solution

#include <stdio.h>

void main()

{

int a=3;

int b=5;

int c=12;

float as;

as = (a + b + c)/3;

printf(“Aritmetickata sredina e: %f\n”, as);

}

Exercise 8

Да се напише програма која ќе ги испечати на екран остатоците при делењето на бројот 19 со 2, 3, 5 и 8.

Solution

#include <stdio.h>

void main()

{

int a=19;

printf(“Ostatokot pri delenjeto so 2 e: %d\n”, a%2);

printf(“Ostatokot pri delenjeto so 3 e: %d\n”, a%3);

printf(“Ostatokot pri delenjeto so 5 e: %d\n”, a%5);

printf(“Ostatokot pri delenjeto so 8 e: %d\n”, a%8);

}

Exercise 9

Пример со податочни видови

Solution

#include <stdio.h>

int main()

{

int suma;

float pari;

char bukva;

double pi;

suma = 10; /* pridruzi celobrojna integer vrednost */

pari = 2.21; /* pridruzi realna float vrednost */

bukva= 'A'; /* pridruzi znak */

pi = 2.01E6; /* pridruzi realna double vrednost*/

printf(“Vrednost na suma = %d\n", suma );

printf(“Vrednost na pari = %f\n", pari );

printf(“Vrednost na bukva = %c\n", bukva );

printf(“Vrednost na pi = %e\n", pi );

}

Излез:

Vrednost na suma = 10

Vrednost na pari = 2.210000

Vrednost na bukva = A

Vrednost na pi = 2.010000e+06

Content actions

Download module as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks