Иди на текст

Прва вежба

Упознавање са радом у развојном окружењу

Нерешен задатак

Задатак: Креирати пројекат у Microsoft Visual Studio 2010 окружењу и приложени кôд уврстити у пројекат. Превести и покренути на извршење дати програм. Уколико се програм не може превести због синтаксних грешака, грешке уочити и исправити тако да се не мења предвиђена намена програма. Унети захтеване вредности улазних параметара и забележити вредности добијених излаза.

Напишите извештај који треба да садржи:

  1. грешке које сте уочили у коду,
  2. улазне податке које сте унеки након покретања програма и излазе које Вам је програм приказао и
  3. вредности променљивих у осамнаестој линији ко̑да (добијене дебагирањем програма).
#include "stdio.h"
void main()
{
    int N,F=1, i, J;
    long int S=0;
    N = 0;
    while (N <= 0)
    {
        printf("Unesi ceo broj: ");
        scanf("%d",&N);
    }
    for (i = 1 ; i<= N; i++)
        F = F * i
    printf("\nF=%d\n", F);
    for (j = F; j <= F + i; j++)
        S = S + j;
    printf("\nDobijen rezultat je S=%7d,",S);
    if ( S % 2 == 0 )
        printf(" sto jeste paran broj.\n");
    else
        printf(" sto nije paran broj.\n");
}

Интегрисано развојно окружење

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

Microsoft Visual Studio је пример интегрисаног развојног окружења (енг. IDE, Integrated Development Environment) који осим едитора кода пружа широк појас алатки који омогућава превођење и извршавање програмског кода многих програмских језика (C/C++, C#, F#, JavaScript, Python, ...) и додатних могућности откланања грешака (дебагирања, енг. debugging) и профајлирања тока извршавања програма. С обзиром на то да је реч о интегрисаном развојном окружењу, могуће је веома лако у клику једног дугмета покренути целокупан процес превођења и извршења програма.

Осим Microsoft Visual Studio интегрисаног развојног окружења, постоје и многи други с којима ћете се сусретати у наредним годинама студија.

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

C је типизован и компајлерски програмски језик. Извршење програма почиње у main функцији и није могуће превести и покренути програм уколико она не постоји.

Код је организован по блоковима, почетак блока обележен је са {, а завршетак са }; док некада блок који се састоји из само једне линије може и да није обележен са { ... } (препорука је увек обележавати великим заградама блок кода). Ради читкости често се блок увлачи за по један табулар (TAB тастер) или са по 2, 4 или 8 бланко знака (SPACE тастер) - код едитори и интегрисана развојна окружења често аутоматизују процес увлачења линија кода како програмер отвара и затвара блок кода са { ... } карактерима. Функције, наредбе гранања, петље, ... поседују блокове кода, тј. скупина кода на тај начин написана која ће се извршити на процесору уколико се позове дата функција на извршење, услов гранања је испуњен или све док услов петље важи и сл.

Крај израза се дефинише карактером ;.

Извештај

1. Грешке уочене у коду

Постоји више грешака у приложеном изворном коду:

  • синтаксне грешке (заборављена ; на крају линије),
  • грешке у куцању (декларисана променљива J великим словом, a коришћење j малим словом),
  • логичке грешке (погрешно тумачење типа променљиве S при штампању - употребљена је %d конверзија која се користи за податке int типа, уместо %ld за long int тип).

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

    int N,F=1, i, j; // J -> j
    long int S=0;
    N = 0;
    while (N <= 0)
    {
        printf("Unesi ceo broj: ");
        scanf("%d",&N);
    }
    for (i = 1 ; i<= N; i++)
        F = F * i; // заборављена ; на крају линије

2. Улазни и излази подаци програма

Пример 1: Улазни подаци:

4

Излази програма:

1
2
3
F=24

Dobijen rezultat je S=    159, sto nije paran broj.

Пример 2: Улазни подаци:

30

Излаз:

1
2
3
F=1409286144

Dobijen rezultat je S=-2147483152, sto jeste paran broj.

3. Вредности променљивих дебагирањем

Као што се може видети, на 18. линији је употребљена променљива \(S\), а њена вредност је \(45097157104\) (добијена дебагирањем). Ова вредност је другачија од излаза програма, \(-2147483152\). Ово се дешава управо због логичке грешке у изворном коду програма - променљиву \(S\) исписујемо употребом %d што се користи за променљиве типа int, па зато вредност постаје негативна (дошло је до overflow-а типа података int). Како би добили испарвну вредност променљиве \(S\) на излазу програма, потребно је да испис коригујемо на %ld што се користи за испис променљивих типа long int.