- •Лабораторні роботи з курсу "Інформатика"
- •Лабораторна робота № 1. Тема роботи: Базові типи даних. Консольне введення/виведення
- •Типи даних. Базовими (фундаментальними, вбудованими) типами даних мови с є такі:
- •1.2 Індивідуальні завдання
- •1.3 Контрольні запитання
- •Лабораторна робота № 2. Тема роботи: Програмування структур, що розгалужуються
- •2.1 Теоретичні відомості
- •If (вираз) оператор1;
- •If (вираз) оператор;
- •2.2 Індивідуальні завдання
- •Лабораторна робота № 3. Тема роботи: Програмування циклічних структур
- •3.1 Теоретичні відомості
- •3.2 Індивідуальні завдання
- •Варіанти завдань
- •Завдання 2
- •Варіанти завдань
- •3.3 Контрольні запитання
- •Лабораторна робота № 4. Тема роботи: Обробка одномірних масивів
- •4.1 Теоретичні відомості
- •4.2 Індивідуальні завдання
- •4.3 Контрольні запитання
- •Лабораторна робота № 5. Тема роботи: Робота з матрицями
- •5.1 Теоретичні відомості
- •5.2 Індивідуальні завдання
- •5.3 Контрольні запитання
- •Лабораторна робота № 6. Тема роботи: Функції
- •6.1 Теоретичні відомості
- •Double // тип результату
- •Індивідуальні завдання
- •2) Задано n масивів цілих чисел довжини n. У кожному масиві знайти суми від’ємних та додатних чисел.
- •1) Задані дійсні числа a,b. Одержати , де
- •6.2 Контрольні запитання
- •Лабораторна робота № 7. Тема роботи: Операції з рядковими змінними
- •7.1 Теоретичні відомості
- •Індивідуальні завдання
- •7.3 Контрольні запитання
- •Лабораторна робота № 8. Тема роботи: Робота з текстовими файлами
- •8.1 Теоретичні відомості
- •8.2 Індивідуальні завдання
- •8.3 Контрольні запитання
- •Лабораторна робота № 9. Тема роботи: Структури. Робота з бінарними файлами
- •9.1 Теоретичні відомості
- •Struct dinner best_one; // одна структурна змінна
- •9.2 Індивідуальні завдання
- •9.3 Контрольні запитання
- •Література
5.3 Контрольні запитання
Як об’являється двовимірний масив?
Як масив розміщується у пам’яті?
Що ви розумієте під ініціалізацією масиву?
Чи може масив містити значення різних типів?
Відповідність масиву і покажчика на масив.
Операції, які використовуються для змінних типу покажчик.
Лабораторна робота № 6. Тема роботи: Функції
Мета роботи: одержання практичних навичок програмування і розв’язання задач з використанням функцій
6.1 Теоретичні відомості
Функція формально задається описом типу результату, формальних параметрів и блоку, який задає виконувані дії функції.
Приклад:
Double // тип результату
linfunc (double x, double y, double z) // ім’я функції, список параметрів
{ // блок тіла функції
return (x*y+z); // значення, що повертається // функцією
}
Оператор return може не повертати ніякого значення або повертає значення відповідного виразу. Функція, що не повертає ніякого значення має тип void.
Є два способи виклику функції:
ім’я_функції (е1, е2, ..., еN);
(*покажчик_на_функцію)(е1, е2, ..., еN);
покажчик_на_функцію – це змінна, значенням якої є адреса функції. Адреса функції може бути присвоєна покажчику оператором
покажчик_на_функцію = ім’я_функції;
Аргументи (фактичні параметри) передаються по значенню, тобто кожний вираз е1, е2, …, еN обчислюється і його значення передається функції. Якщо вхідне значення необхідне функції для деяких обчислень або дій, то фактичним аргументом повинно бути ім’я змінної, а якщо функція буде змінювати значення змінних в програмі, що її визвала, то необхідно використовувати адреси змінних.
Приклад 1. Задано дійсні числа a,b. Одержати Z=F(a,b)min(a2,b)+F(ab,b-a)min(a-b,ab), де F(a,b)=ex+sin|x|.
#include <stdio.h>
#include <math.h>
float F(float x, float y)
{
return exp(x)+sin(fabs(y));
}
float min(float x, float y)
{ if (x<y)return x;
else return y;
}
void main ()
{ float a,b,Z; scanf("%f %f",&a,&b);
Z=F(a,b)*min(a*a,b)+F(a*b,b-a)*min(a-b,a*b)
printf("Z=%8.3f",Z);
}
Приклад 2. Розробити функцію по знаходженню добутку двох матриць
#include <stdio.h>
#include <math.h>
#define n 3
#define m 5
#define k 4
//прототипи функцій введення матриці, знаходження добутку та виведення матриці
void input( float *,int, int);
void multiplication(float *, float *, float *,int, int, int);
void print(float *,int,int);
void main ()
{float A[n][m], B[m][k], C[n][k];
float * pA=&A[0][0];
float * pB=&B[0][0];
float * pC=&C[0][0];
printf("Matrix A\n");
inputM(pA,n,m);
printf("Matrix B\n");
inputM(pB,m,k);
multiplication(pA,pB,pC,n,m,k);
printf("multiplication of matricxes A and B\n");
print(pC,n,k);
}
void input(float *w,int n,int m)
{ int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{ printf("Input a[%d,%d]=",i+1,j+1);
scanf("%f",&(*(w+i*(n-1)+j)));
}
printf("\n");
}
}
void print(float *w,int n,int m)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
printf("%6.2f\t",*(w+i*(n-1)+j));
printf("\n");
}
}
void multiplication(float *A,float *B, float *C ,int n,int m,int k)
{ float *C;
int i,j,l;
float s;
for (i=0;i<n;i++)
{ for (j=0;j<m;j++)
{ s=0;
for (l=0;l<k;l++)
s=s+*(A+i*(n-1)+l)*(*(B+l*(m-1)+j));
*(C+i*n+j)=s;
}
}
}