Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторна робота 1

Работа добавлена на сайт samzan.net:


абораторна робота № 1

Лабораторна робота № 1.

Складання програм мовою Сі з використанням операторів циклу

  Мета лабораторної роботи – навчитися вирішувати, тестувати і розв‘язувати на ЕОМ найпростіші типові задачі. Як правило в самій умові задачі вже визначений алгоритм її рішення. Необхідно записати цей алгоритм, з використанням основних конструкцій мови Сі. Для перевірки вірності роботи програми  повинні бути представлені необхідні тестові данні.

Хід роботи :

  1.  Скласти алгоритм програми за індивідуальним варіантом, номер якого визначає викладач.
  2.  Скласти програму вiдповiдно до розробленого алгоритму.
  3.  Скласти програму мовою Сі та отримати вірний результат.
  4.  Написати і захистити звіт.

ВМIСТ ЗВIТУ

  1.  Умова задачі з вказанням номеру варіанта.
  2.  Навести текст розробленої програми з обов‘язковими коментарями.
  3.  Навести результати тестування на комп‘ютері.
  4.  Навести блок-схему розробленої програми.
  5.  Відповісти на контрольні запитання.

Приклад рішення типової задачф .

Дано дійсне число х  і натуральне  N.   Обчислити

Тут приведені три фрагменти для обчислення зазначеної суми. Перший демонструє поганий (неефективний) спосіб запису алгоритму, коли задача вирішується  " в лоб":

  int n, i, k;

  unsigned long fact;

  float  s, х;

  printf("Введіть кількість доданків : ") ;

  scanf (“%d", &n) ;

  printf ("Введіть дійсне число х : ");

  scanf (“%f”, &х) ;

  for ( k=1, s=0;  k<=n; k++)

  {   

      for(i=l, fact=l; i<=2*k+l; i++)  fact*=i;

      s+=pow(-1.0,  (float)k) * pow(x, (float)k / fact;

  }

Недолік цієї програми полягає в тому, що в ній не враховуються рекурентні залежності, які можна використовувати при обчисленні факторіала і ступеня. Крім того, зовсім не обов'язково для обчислення (-l)k використовувати функцію pow().

Програму можна істотно поліпшити, якщо використовувати такі співвідношення:

                                       xk= xk-1*x

                              (2k+1)! =  (2(k-l)+l)! *2k*(2k+l)

                                                 \____/  обчислено на попередньому   кроці

З врахуванням цього запишемо другий варіант програми:

       int n, k,  ed=l ;

       unsigned   long fact =l, stepX=l;

       float  s,  х;

       printf ("Введіть кількість доданків : ");

       scanf ("%d" , &n) ;

       printf ("Введіть дійсне число х : ");

       scanf ("%f”,  &х) ;

       for ( k=l, s=0; k<=n; k++ )

           {    ed=-ed; step*=x; fact*=4*k*k+2*k; s+=ed*step/fact; }

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

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

    int n, k, еd=1;

    float slag=l,  х,  s=0;

    printf("Введіть кількість доданків : ");  scanf (“%d", &n) ;

    printf("Введіть дійсне число х : ") ;     scanf (“%f", &x) ;

     for( k=l; k<n;  k++)

            { ed=-ed; slag*= x / (2*k*(2*k+l ) ) ;  s+=ed* slag; }

Завдання для виконання  лабораторної роботи.

Задача 1. Обчислити значення функції

 для значень аргументу х від -0.4 до 1.3 із кроком 0.1.

Задача 2 Визначити k-ю цифру послідовності   182764125216343... , 

        у який виписані підряд куби натуральних чисел.

Задача 3. Уведіть місяць і день свого народження. З'ясуйте, який найближчий рік буде для вас щасливим. Рік називається щасливим, якщо залишок від розподілу суми його цифр на 10 збігається з аналогічним залишком суми цифр чи місяця дня народження.

Задача 4. Обчислити, не використовуючи функцію pow( ), значення функції

z(x, m) = xm sinm ( xm)  для значень аргументів:

х від -1.1 до 0.3 із кроком 0.2; т від 1 до 5 із кроком 1.

Задача 5. Обчислити значення функції

для значень аргументу      х   від -0,5 до 1,2      із кроком 0,1.

Задача 6. Обчислити значення функції

 для значень аргументів  х від 0,2 до 0,6 із кроком 0,1;

                                          у від 0,0 до 0,4 із кроком 0,05.

Задача 7. Три друзі були свідками ДТП. Перший помітив, що номер порушника ділиться на 2, 7 і 11. Другий запам'ятав, що в записі номера беруть участь всего дві різні цифри, а третій – що сума цифр дорівнює 30. Визначити чотиризначний номер порушника.

Задача 8. За заданим дійсним х (х<3) обчислити значенняÖx за формулою подвійної ітерації:

Yi+1 = Yi –0.5YiZi,      Zi+1 = 0.25zi2(zi - 3),

        Ітерації припинити при |уi+1 -- yi| <  10-6  .

Задача 9. Обчислити значення функції  

        для значень аргументу       х від -0.8 до 0.6 із кроком 0.1.

Задача 10. Уведіть свій рік, місяць і день народження. Ваш день народження дуже щасливий, просто щасливий чи звичайний?  Дуже щасливий – якщо всі залишки від розподілу на 7 сум цифр року, місяця і дня збігаються. Просто щасливий – якщо збігаються два будь-яких залишки. Звичайний – якщо збігів немає.

Питання для самоконтроля

  1.  Поясніть дію операцій інкремента і декремента.
  2.  Правила використання коментарів в мові Сі.
  3.  Які знаки логічних і порозрядних операцій в мові Сі ви знаєте?
  4.  Яка функція дозволяє ввести тільки один символ?
  5.  Скільки типів різних операцій в мові Сі?
  6.  Запишіть вираз мовою Сі: “Збільшити на одиницю вміст комірки памяті з адресою Z ”.
  7.  Запишіть вираз мовою Сі: “Збільшити значення по адресу х в 5 разів”
  8.  Які ви знаєте правила перетворення типів?
  9.  Поясніть пріоритет виконання операцій мовою Сі.
  10.  Поясніть роботу оператора розгалуження.
  11.  Коли величина в умовному операторі може дорівнювати нулю?
  12.  Які дві форми використання має оператор розгалуження?
  13.  Наведіть приклади використання простих і складених операторів в умовному виразі.
  14.  Що таке скорочена форма операторів if ?
  15.  Як працює умовна тернарна операція?
  16.  Запишіть мінімальне значення a i b за допомогою умовної операції.
  17.  Поясніть загальну структуру оператора варіанту?
  18.  Які команди застосовуються для переривання роботи оператора switch.
  19.  Перелічіть правила використання операторів в switch.
  20.  Знайти максимальне значення з трьох цілих величин?
  21.  Які цикли є в мові Сі, їх відмінності.
  22.  Наведіть основні типи алгоритмів для циклічних обчислень.
  23.  Яку форму має оператор циклу for?
  24.  Яким чином можна припинити використання циклу?
  25.  Що таке безкінечний цикл, як його організувати?
  26.  Які основні правила використання циклу for?
  27.  Що таке операція кома?
  28.  Поясніть правила використання циклу while.

PAGE  2

EMBED Equation.3  




1. Тема 4. ОБМЕН АМИНОКИСЛОТ И БЕЛКОВ I
2. по теме- Гражданское право
3. тема права Источник- В
4. Эмотивная компетенция автора и способы ее объективации в художественном тексте
5. Профилактика БППП
6. 1992. Ананьев Б. Г
7. Статья 1.Определения 2.html
8. РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТУРИЗМА И СЕРВИСА ФГОУВПО РГУТиС
9. Юридическая безопасность рекламодателя
10. реферат дисертації на здобуття наукового ступеня кандидата мистецтвознавства
11. . Синтаксис як розділ граматики
12. реферат дисертації на здобуття наукового ступеня кандидата наук з фізичного виховання і спорту.html
13. з курсу Автоматизація обробки технічної інформації Основи статистичних розрахунків
14. оздоровление экономики А2 Сторонником монетаризма являлся 1 М
15. Полномочия органов Федеральной службы безопасности в обеспечение режима защиты государственной тайны
16. доклад Исполнительного комитета касающийся этических критериев продвижения лекарственных средств на рыно
17. Химия Земли
18. Закрепление техники низкого старта
19.  организация работы по проведению инвентаризации и переоценке основных средств 5
20. Она должна отвечать интересам своих читателей побуждать их к духовной независимости и свободе развивать п.html