МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра САПР
Звіт
до лабораторної роботи №3
на тему «ОПЕРАТОРИ ЦИКЛУ, ДИРЕКТИВИ ПРЕПРОЦЕСОРА,
ФОРМАТОВАНИЙ ВВІД-ВИВІД І ФУНКЦІЇ ПЕРЕМИКАННЯ ВВОДУ-ВИВОДУ
У АЛГОРИТМІЧНІЙ МОВІ С»
з курсу «Проблемно-орієнтовані мови програмування»
Мета роботи
Ознайомлення з директивами препроцесора мови C, з операторами циклу і функціями вводу-виводу.
Теоретичні відомості
Препроцесор мови C використовується для обробки тексту програми до її компіляції. Препроцесор виконує макропідстановку, умовну компіляцію, під’єднання іменованих файлів. Директиви препроцесора починаються з символу “#”.
З однією директивою препроцесора #include Ви познайомились в лабораторній роботі №1. За допомогою цієї команди в програму на мові C можна включити текст будь-якого файлу.
Директива #include має дві форми:
#include<ім’я файлу> - під’єднання стандартного файлу.
#include<stdio.h>
#include<main.h>
2)#include “ім’я файлу”- під’єднання зовнішнього, Вашого файлу
#include “myfile.h”.
Суфіка h використовуються для файлів, які під’єднуються в заголовку Вашої програми.
У мові C існує три типи операторів циклу. Вони подібні до операторів циклу у мові Паскаль.
1) Оператор циклу з передумовою
while (вираз) оператор;
2) Оператор циклу з постумовою
do
оператор;
while (вираз);
3) Оператор з параметрами
for (вираз 1; вираз 2; вираз 3)
оператор;
Оператори циклу while виконуються до того часу поки виконується умова, тобто n<=5. Якщо умова не виконується, наприклад n=8, то оператори циклу while не виконуються ні разу.
Оператори циклу do-while також виконуються до того часу поки виконується умова. Але перевірка умови проводиться після першого виконання циклу, тобто якщо умова одразу не виконується, наприклад n=8, то оператори циклу do-while один раз будуть виконані.
Оператор циклу for можна подати в такому вигляді:
for(ініціалізація початкових значень; перевірка умови; зміна параметра)
оператор;
Оператор break здійснює негайний вихід з операторів циклу або оператора swich. Управління передається наступному оператору після оператора з якого здійснювався вихід. Якщо оператор break стоїть всередині вкладеного циклу, то вихід здійснюється тільки із внутрішньої структури, тобто тільки з того циклу в якому є оператор break.
Оператор continue - передає управління на кінець тіла циклу, всередині якого він знаходиться. Тобто пропускає частину ітерації, яку виконує і переходить до наступної ітерації.
Наприклад, треба знайти суму додатніх елементів кожного рядку масиву а(n,m). Фрагмент програми, що буде шукати суму має вигляд:
for(i=0; i<n; i++)
{
s=0;
for(j=0; j<m; j++)
{
if(a[i,j]<0)
continue;
s=s+a[i,j];
}
b[i]=s;
}
Оператор goto
Синтаксис оператора
goto мітка
де: “мітка” - це мітка оператора на який здійснюється перехід. Міткою може бути будь-який ідентифікатор, після якого стоїть символ двокрапка “:”.
Мова С володіє такими засобами, що використовувати оператор goto немає потреби. Єдиний випадок коли можна використовувати оператор goto це вихід із внутрішнього, вбудованого циклу у випадку знаходження помилки:
for(i=0; i<n; i++)
for(j=0; j<m; j++)
if(a[i]==b[j])
goto err;
.
.
err: printf (“співпадання елементів масивів”);
Функції prіntf () і scanf () виконують форматований ввід-вивід на консоль, інакше кажучи, вони можуть зчитувати й записувати дані в заданому форматі, Функція prіntf () виводить дані на консоль. Функція scanf (), навпаки, зчитує дані з клавіатури. Обидві функції можуть оперувати будь-якими вбудованими типами даних, включаючи символи, рядки й числа.
Індивідуальне завдання
Скласти програму для обчислення масиву значень функції для різних значень аргументу , використовуючи три оператори циклу. Значення аргументу розглянути в точках. Вивести на друк значення аргументу і функції в стовпчик, використовуючи можливості оператора printf.
6. , .
Текст програми
1) Цикл while:
#include <stdio.h>
#include <math.h>
int main()
{
double x=0.0,h,y;
h=1.0/31.0;
printf("x y\n");
while(x<=1)
{
y=exp(-x)+sin(2*x)-1.5*x*x;
printf("%.4f %2.2f",x ,y);
printf("\n");
x+=h;
}
}
2) Цикл do while:
#include <stdio.h>
#include <math.h>
int main()
{
double x=0.0,h,y;
h=1.0/31.0;
printf("x y\n");
do
{
y=exp(-x)+sin(2*x)-1.5*x*x;
printf("%.4f %2.2f",x ,y);
printf("\n");
x+=h;
} while(x<=1);
}
3) Цикл for:
#include <stdio.h>
#include <math.h>
int main()
{
double x,h,y;
h=1.0/31.0;
printf("x y\n");
for(x=0.0;x<=1;x=x+h)
{
y=exp(-x)+sin(2*x)-1.5*x*x;
printf("%.4f %2.2f",x ,y);
printf("\n");
}
}
Блок-схема програми
Результати обчислень
Висновок: Я ознайомився з директивами препроцесора мови C, з операторами циклу і функціями вводу-виводу.