DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Функції зі змінним числом параметрів. Командна стрічка, параметри функції main

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування
Група:
КН-21
Коротко про документ

Про що ця робота

У звіті досліджено функції зі змінним числом параметрів та використання параметрів функції main в мові C. Наведено результати виконання лабораторного завдання з обробки введених даних.

У роботі розглядаються

  • Функції зі змінним числом параметрів
  • Параметри функції main
  • Командний рядок
  • Макроси stdarg.h
  • Передача аргументів у стек

Зміст і розділи

  1. Мета роботи
  2. Функції зі змінним числом параметрів
  3. Командна стрічка. Параметри функції main
  4. Індивідуальне завдання
  5. Текст програми
  6. Результати обчислень
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Викладач кафедри САПР

Ключові поняття

функціястекmainаргументкомандний рядокмакросstdarg.hвказівникпрограма

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра САПР Звіт з лабораторної роботи №2 на тему «ФУНКЦІЇ ЗІ ЗМІННИМ ЧИСЛОМ ПАРАМЕТРІВ. КОМАНДНА СТРІЧКА, ПАРАМЕТРИ ФУНКЦІЇ MAIN» ЛЬВІВ 2015 Мета роботи: поглиблене вивчення можливостей функцій зі змінним числом параметрів і використання параметрів функції main. ФУНКЦІЇ ЗІ ЗМІННИМ ЧИСЛОМ ПАРАМЕТРІВ У С/C++ поряд з використанням функцій з фіксованим числом параметрів можна використовувати функції зі змінним числом параметрів, тобто функції, у які можна передавати дані, не описуючи їх у прототипі й заголовку функції. Описи цих даних заміняються трьома крапками. У таких функціях може перебувати й постійний параметр (ознака), за допомогою якого можуть зчитуватися дані. Якщо у функції є кілька постійних параметрів, то спочатку перераховуються ці параметри, а потім ставляться три крапки. Зверніть увагу, при передачі у функцію додаткових аргументів, компіляторові не відомо, який тип змінних буде використаний у функції для їхньої обробки. Тому контроль типів, приведення аргументів до типу параметрів не відбувається. Необхідні перетворення повинен передбачити програміст. Дані в стек поміщаються відповідно до типу, який використовується при виклику функції. В C++ повинен бути хоча б один фіксований параметр. Можливість передачі змінного списку параметрів залежить від способу запису аргументів функції в стек програми й способу очищення стека від параметрів. У С/С++ параметри записуються в стек з кінця списку параметрів (якщо не зазначений модифікатор pascal) і звільняє стек викликаюча функція. Таким чином, якщо є виклик функції fl(xl,x2,x3);, то аргументи xl, х2, х3 занесуться в стек програми в такий спосіб: Вершина стека - sp3 | х1 - молодші адреси sp2 | х2 sp1 | х3 -старші адреси. У мові Паскаль стек від параметрів звільняє викликаючий модуль. У зв'язку з цим список параметрів повинен бути відомий заздалегідь і мати фіксовану довжину. Аргументи в стек поміщаються в порядку їхнього надходження; Вершина стека - sp3 | х3 - молодші адреси sp2 | х2 sp1 | х1 -старші адреси. Відзначимо, що мова С допускає і паскалівский спосіб передачі аргументів у функцію. Рекомендуються два способи задання довжини змінного списку параметрів: - пересилання у функцію числа аргументів; - завдання ознаки кінця списку аргументів. Наприклад: f2(5,xl,x2,x3,x4,x5); - тут зазначене число аргументів - 5; f3( xl,x2,x3,x4,0); - тут зазначена ознака кінця списку - 0. Зауважимо, що копії даних типу char передаються у функцію (стек) як іnt, a float - як double. Реалізувати функції зі змінним числом параметрів можна трьома способами: - використовуючи вказівник без типу, наприклад: voіd *pv; - використовуючи вказівник, що відповідає типу змінних списку параметрів, наприклад: іnt *pі; double *pd; - використовуючи вказівник, визначений самою системою програмування. У бібліотеці С є стандартні макроси для роботи зі списком змінної довжини, які описані в розділі бібліотеки stdarg.h. Таких макросів є чотири: va_lіst, va_start, va_arg, va_end. Приклад оголошення й виклику функції: іnt func (іnt, ...); - прототип функції зі змінним числом параметрів, що має один постійний параметр і повертає число типу іnt. іnt func(int k, ...){…}; - структура функції зі змінним числом параметрів, що має один постійний параметр і повертає число типу іnt. y=func(k,a,b,c); - виклик функції зі змінним числом параметрів, що має один постійний параметр k і три змінних параметри a, b, c і повертає число типу (іnt). КОМАНДНА СТРІЧКА. ПАРАМЕТРИ ФУНКЦІЇ MAІN Borland С підтримує три параметри функції maіn(). Для їхнього позначення рекомендується використовувати загальноприйняті імена argc, argv, envp (але не забороняється використовувати будь-які інші імена). Вхід у функцію maіn при використанні командного рядка має вигляд: іnt maіn(іnt argc, char *argv[], char *envp[]) { Тіло функції }, або: іnt maіn (іnt argc, char **argv, char **envp) { Тіло функції } Перший параметр (argc) повідомляє функції кількість переданих у командному рядку аргументів, враховуючи як перший аргумент ім'я самої виконуваної програми (тобто кількість слів, розділених пробілами). Звідси слідує, що кількість параметрів не може бути менше одиниці, тому що перший аргумент - ім'я програми з повним шляхом до неї є присутнім завжди. Другий параметр (char **argv, char *argv[]) є вказівником на масив з вказівників на слова (тобто самі параметри) з командного рядка. Кожний параметр зберігається у вигляді ASCІI-рядка. Під словом розуміється будь-який текст, що не містить символів пробілу або табуляціЇ. Аргументи повинні розділятися пробілами або знаками табуляції. Коми, крапки та інші символи не розглядаються як розділювачі. Останнім елементом масиву вказівників є нульовий вказівник (NULL). Наприклад, нехай програма L13_15.exe запускається в такий спосіб: c:\BorlandC\bіn\L13_5.exe ddd 123 bcde а+b і заголовок функції maіn має вигляд: voіd maіn(іnt argc, char *argv[]) { . . . } Індивідуальне завдання 21. У головній функції main () ввести число n, що задає кількість рядків, які вводяться, а також, скільки рядків буде оброблено у функції. У функцію зі змінним числом параметрів надходять рядки, кінець списку - вказівник NULL. Рядки необхідно вивести на екран. Програма завершує роботу при введенні числа 11. Текст програми у відповідності з індивідуальним завданням. #include <stdio.h> #include <stdlib.h> #include <string.h> void transform(int i, int typ); int main(void){ transform(2,0); } void transform(int i, int typ){ int n=0; char mas[n]; float mas1[n]; for(int k=0;k<i;k++){ if(k!=0) scanf("%d",&i); switch (typ){ case 0: printf("Kil'kist elementiv:\n"); scanf("%d",&n); printf("Vvedit' elementi':\n"); fflush(stdin); for(int s=0;s<n;s++) scanf("%c",&mas[s]); fflush(stdin); for(int s=0;s<n;s++) printf("%d",(int)mas[s]); fflush(stdin); break; case 1: printf("Kil'kist elementiv:\n"); scanf("%d",&n); printf("Vvedit' elementi':\n"); fflush(stdin); for(int s=0;s<n;s++) scanf("%f",&mas1[s]); fflush(stdin); for(int s=0;s<n;s++) printf("%d",(double)mas1[s]); break; }; }; } Результати обчислень / / Аналіз результатів, висновки Дана програма виконує дії, які поставленні в завданні: Перед кожною групою задається кількість елементів у групі, потім їхній тип потім слідують самі дані: Введені кількість елементів «1» після чого введений елемент «а» після чого виводяться дані «97». Введені кількість елементів «5» після чого введений елемент «asdqw» після чого виводяться дані «97115100113119». На даній лабораторній роботі я поглиблено вивчив можливості функцій зі змінним числом параметрів і використання параметрів функції main.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!