Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМУВАННЯ_FULL.docx
Скачиваний:
6
Добавлен:
18.09.2019
Размер:
112.09 Кб
Скачать

36. Оператор переходу goto на мові Сі.

Оператор goto (перехід на задану мітку) в мові С++ є поганим засобом. Його використання призводить до значних ускладнень логіки програми .

Існує лише один випадок, коли програмісти-професіонали допускають використання goto, — це вихід з вкладеного набору циклів при виявленні помилок (break дає можливість виходу лише з одного циклу).

Його можна представити в такій формі: goto мітка;

Мітка - це будь-який ідентифікатор.

Наприклад: goto a2;

Оператор goto вказує, що виконання програми необхідно продовжити, починаючи з інструкції, перед якою записана мітка. У програмі обов'язково повинна бути рядок, де вказана мітка, поставлено двокрапка і записана інструкція, до якої повинен виконуватись перехід.

Наприклад: a2: k = 5;

Мітки у програмі описувати не потрібно. Застосування оператора безумовного переходу в мові СІ є небажаним, оскільки він порушує структурну наочність програми.

Приклад

Програма для підрахунку середньої оцінки учня.

#include <iostream.h>

int main()

{

int total=0,

gradeCounter,

grade,

average;

gradeCounter=1;

while (gradeCounter <= 10)

{

cout << “Введіть оцінку:”;

cin >> grade;

total=total+grade;

gradeCounter=gradeCounter+1;

}

average=total/10;

cout << “Середня оцінка дорівнює” << average << endl;

return 0;}

37. Поняття функції на мові Сі, її опис та структура

У мові СІ будь-яка програма складається з однієї або більше функцій, що задають дії, які потрібно виконати. Виконання будь-якої програми починається з функції main. Далі йде текстпрограми, укладений у фігурні дужки. Таким чином, структура програми має вигляд:

main ()

{

Тіло програми

}

У самому простому випадку функція main не має аргументів, тому в дужках нічого не міститься. Для роботи програми, що забезпечує введення і виведення інформації, передфункцією main необхідно помістити рядок:

# Include <stdio.h>

Програма складається з сукупності фунцій, одна з яких повина називатися main(). Опис функції складається з заголовка і тіла функції. Заголовок містить оператори(директиви) препроцесора, наприклад, #include і ім'я функції. Тіло функції розташоване у фігурних дужках і складається з ряду операторів, кожен з яких закінчується крапкою з комою. Приклад програми, що буде наведений нижче, містить ще і оператор оголошення, який оголошує ім'я і тип змінної, що буде використовуватися. Крім того в ньому був присутній оператор присвоєння, що присвоює значення змінній.

Коротко кажучи, проста програма, що написана з врахуванням вимог стандарту ISO/ANSI C, повинна мати наступний формат:

Загловок:

#include<stdio.h> //- Інструкції препроцесора

int main(void) //- ім'я ф-ї з аргументами

Тіло:

{

int q; // - Оператор оголошення

q=1; //Оператор присвоєння

printf(“%d is neat. \n”,q); // Оператор виклику ф-ції

return 0;

}

Функція – це самостійний фрагмент тексту програми, що призначений для виконання конкретної задачі.

Зміст визначення функції очевидний. Це повна характеристика її типу і її параметрів разом із повним текстом її команд, що служать реалізацією функції, наприклад,

int gcd (int m, int n)

{

while (m != n)

if m>n m=m-n; else n=n-m;

//m == n

return m;

}

Кожна функція визначається один раз, а використовується багато разів у різних файлах. Для компіляції викликів компілятору досить мати лише інформацію про кількість і типи параметрів, а також тип результату. Сам код тепер непотрібен. Він буде потрібен лише компонувальнику. Тому користуються оголошенням функції , яке ще називають її сигнатурою .Функція може не повертати значення. В цьому випадку її сигнатура починається словом void.Усі параметри, за винятком параметрів типу покажчик та масивів, передаються за значенням. Це означає, що при виклику функції їй передаються тільки значення змінних. Сама функція не в змозі змінити цих значень у викликаючій функції. Наступний приклад це демонструє:

#include<stdio.h>

void test(int a)

{

    a=15;

    printf(" in test : a==%d\n",a);

}

void main()

{

    int a=10;

    printf("before test : a==%d\n",a);

    test(a);

    printf("after test : a==%d\n",a);

}