Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_OT-1.doc
Скачиваний:
14
Добавлен:
17.03.2016
Размер:
1.15 Mб
Скачать

3. Контрольні запитання

    1. Які функції слугують для форматованого введення-виведення даних у файл.

    2. Яка функція застосовується для відкривання файлу.

    3. Чим відрізняється режим редагування від інших режимів відкривання файлів.

    4. Які функції слугують для редагування бінарних файлів.

    5. Яким чином можна визначити позицію вказівника у файлі.

    6. Які функції слугують для посимвольного введення-виведення.

Комп’ютерний практикум № 16

Робота з функціями на мові “сі”

Мета практикуму - вивчення способів декларування функцій та та передачі в програму аргументів командного рядка на мові “СІ”.

  1. ТЕОРЕТИЧНІ ВІДОМОСТІ

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

Оголошення функції здійснюється наступним чином

Тип_функції назва_функції(тип1 параметр1, ..., тип_n параметр_n);

Наприклад, оголошення функції f, яка повертає ціле значення, та має два цілі аргументи a та b, має вигляд:

int f(int a, int b);

Тіло функції знаходиться відразу після оголошення, та виділяється фігурними дужками {}. Тіло функції може містити ключове слово return, яке служить для повернення результату роботи функції в основну програму після її виконання, наприклад

return <вираз>;

Приклад 1. Зчитати з клавіатури рядок символів та вивести його на екран в зворотному напрямку. Виділити у рядку цифри та вивести їх окремим рядком.

#include <stdio.h>

#include <string.h>

/*Включення файлу з функцією strlen - визначення довжини рядка символів*/

int revers(char s[50]);

/*Оголошення функції revers - розвороту рядка*/

{int i,j,c;

for(i=0, j=strlen(s)-1; i<j; i++, j--)

{c=s[i]; s[i]=s[j]; s[j]=c;}

return(0);}

int cc(char s[], char sn[]);

/*Оголошення функції сс - пошуку цифр у рядку*/

{int i,k=0;

for(i=0;i<strlen(s);i++)

{if (s[i]>='0'&&s[i]<='9')

sn[k++]=s[i];}

sn[k]='\0';

return(0);

}

main()

{char s[50],sn[50];

puts("\n\nInput string");

/*Введіть рядок*/

do {scanf("%s",s);

revers(s);

printf("\n%s\n",s);}

while(s[0]=='0');

/* Цикл виконується до того часу поки не введено 0 */

cc(s,sn);

printf("\nNumerical symbols in the string are- %s",sn);

}

Приклад 2. Вивести масив цілих чисел на екран. При цьому продемонструвати передачу масиву до функції друку через функцію.

#include <stdio.h>

void display(int num[10]);

{

int i;

for(i=0;i<10;i++) printf("%d",num[i]);

}

int main(void)

{int t[10], i;

for(i=0;i<10;i++) t[i]=i;

display(t);

return 0;

}

Необхідно пам’ятати, що при виклику функції в якості її аргументів передаються копії змінних. Тому якщо всередині функції необхідно змінити змінні, які оголошені у основній програмі, їй необхідно передавати вказівники на відповідні змінні.

Приклад 3. Створити функцію, яка міняє місцями значення двох цілих чисел.

#include <stdio.h>

void swap(int *a, int *b)

{

int temp;

temp=*a;

*a=*b;

*b=temp;

};

void main(void)

{

int num1, num2;

printf("\n\nEnter two integers ");

scanf("%d %d",&num1,&num2);

swap(&num1,&num2);

printf("Swapped integers are %d %d",num1,num2);

getch();

}

Продемонструємо роботу із числовим масивом як із вказівником:

void display(int num[])

{int i;

for(i=0;i<10;i++) printf("%d",num[i]);

}

Тут аргумент num оголошений як цілочисельний масив невідомого розміру. Оскільки С не перевіряє межі масиву, дійсний розмір масиву не має ніякого відношення до параметру.

При оголошенні аргумента як вказівника функція має вигляд:

void display(int *num)

{int i;

for(i=0;i<10;i++) printf("%d",num[i]);

}

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

1.2. Використання рекурсивних функцій. Функція є рекурсивною, якщо вона викликає сама себе. Розглянемо приклад.

Приклад 4. Обчислити значення факторіала n!, використовуючи рекурсивну функцію.

#include <stdio.h>

int factr(int n)

/*Опис функції обчислення факторіала з рекурсією*/

{int answer;

if (n==1) return 1;

answer=factr(n-1)*n;

return answer;

}

main()

{

int k=5;

printf("\nn!=%d",factr(k));

}

1.3. У мові “CI” передбачене передавання програмі аргументів із командного рядка:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]