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

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

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

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 14.3.2025

абораторна робота № 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. 12 сызы~ымен сызыл~ан калибрдін донгелек жа~ында білік диаметрі ауыспалы болады Калибрдін б~л айма~ын
2. Свойства МБТОсобенности лабораторной диагностики
3. Алгоритм решения задач
4. Анализ сильных и слабых сторон ресторана Dolce People
5. Ирбис Открытое первенство МАОУ
6. варианта Порций- 8 Что нужно- яйца ~ 4 шт
7. Тема тип урока Цели и задачи урока образовательная воспитательная развивающая Оборудование
8. Привлечение в качестве обвиняемого
9. Глобальные проблемы современности- экологическая проблема, сырьевой кризи
10. Тема урока- Старый немецкий город