Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
___звіт___1.doc
Скачиваний:
33
Добавлен:
08.02.2016
Размер:
985.6 Кб
Скачать
  1. Формування навичок програмування з використанням алгоритмічної мови С++

    1. Програмна реалізація алгоритмів лінійної структури

Основною елементарною дією в обчислювальних алгоритмах є надання значення змінної величини. Якщо значення константи визначено видом її запису, то змінна величина отримує конкретне значення тільки в результаті присвоювання. Призначення може здійснюватися двома способами: за допомогою команди присвоювання і за допомогою команди введення. Розглянемо приклад. У шкільному підручнику математики правила поділу звичайних дробів описані так:

1. Чисельник першого дробу помножити на знаменник другого дробу. 2. Знаменник першого дробу помножити на чисельник другого дробу. 3. Записати дріб, чисельник якого є результат виконання пункту 1, а знаменник - результат виконання пункту 2. У алгебраїчній формі це виглядає так : (b)/(c/d)=(a*d)/(b*c)=m/n Побудуємо алгоритм розподілу дробів для ЕОМ. У цьому алгоритмі збережемо ті ж позначення для змінних, які використані в записаній вище формулі. Вихідними даними є цілочисельні змінні а, b, с, d. Блок-схему і текст алгоритму на навчальный алгоритмичній мовы наведені нижче (надалі для стислості позначатимемо навчальну алгоритмічну мову літерами АМ).

Рис.1 алгоритм розподілу дробів для ЕОМ

алг Ділення дробів

поч

цілі a,b,c,d,m,n

введення a , b , c ,d

m: = a*d

n:=b*c

виведення m,n

кін

Формат команди присвоювання наступний: змінна: = вираз. Знак «: =» потрібно читати як «привласнити». Команда присвоювання позначає наступні дії, що виконуються комп'ютером: 1. Обчислюється вираз. 2. Отримане значення привласнюється змінный. У наведеному вище алгоритмі присутні дві команди присвоювання. У блок-схемах команда присвоювання записується в прямокутнику. Такий блок називається обчислювальним блоком. В описах алгоритмів необов'язково дотримуватися строгих правила в запису виразів. Їх можна писати в звичайній математичній формі. Це ще не мова програмування з суворим синтаксисом. У наведеному алгоритмі присутня команда введення: введення a, b, c, d.

У блок-схемі команда введення записується в паралелограмі - блоці введення-виведення. При виконанні цієї команди процесор перериває роботу і чекає дій користувача. Користувач повинен набрати на пристрої введення (клавіатурі) значення змінних і натиснути на клавішу вводу Enter. Значення слід вводити в тому ж порядку, в якому відповідні змінні розташовані в списку введення. Звичайно за допомогою команди введення присвоюються значення вихідних даних, а команда присвоювання використовується для отримання проміжних і кінцевих величин. Отримані комп'ютером результати рішення задачі повинні бути повідомлені користувачеві. Для цих цілей призначена команда виводу: висновок m, n За допомогою цієї команди результати виводяться на екран або на пристрій друку на папір.

Розглянемо один дуже корисний алгоритм, який доводиться часто використовувати при програмуванні. Дано дві величини: Х, Y. Потрібно провести між ними обмін значеннями. Наприклад, якщо спочатку було Х = 1, Y = 2, то після обміну має стати: Х = 2, У = 1.

Гарною моделлю для вирішення цього завдання є наступна ситуація: є дві склянки - одна з молоком, інша з водою. Потрібно зробити обмін їх вмістом. Кожному ясно, що в цьому випадку потрібен додатковий третій порожній стакан. Послідовність дій буде наступною: 1) перелити з першої склянки в третю; 2) перелити з другої в першу; 3) перелити з третьої до другу. Мета досягнута! За аналогією для обміну значеннями двох змінних потрібна третя додаткова змінна. Аналогія зі склянками не зовсім точна у тому сенсі, що при переливанні з однієї склянки в іншу перша стає порожньою. У результаті ж присвоювання (Х: = Y) змінна, що стоїть праворуч (У), зберігає своє значення. Алгоритм для поділу дробів має лінійну структуру. У ньому всі команди виконуються в строго однозначної послідовності, кожна по одному разу.

Лінійний алгоритм складається з команд присвоювання, вводу, виводу та звернення до допоміжних алгоритмів. При описі алгоритмів в блок-схемах типи, як правило, не вказуються (але маються на увазі). В алгоритмах на АМ для всіх змінних типи вказуються явно. Опис типів змінних виконується відразу після заголовка алгоритму. У них використовуються такі позначення типів: цілий - цілий тип, дійсний - дійсний тип, літерний - символьний (літерний) тип, логічний - логічний тип. В алгоритмі для поділу дробів для всіх змінних вказаний цілий тип.

Задача 3.1.1

  1. Постановка задачі.

Дано тризначне число. В ньому закреслили першу зліва цифру і приписали її в кінці. Знайти отримане число.

Вхідні дані :

тризначне число - змінна цілого типу - int n;

Вихідні дані :

кінцевий результат у вигляді зміненої змінної цілого типу - int n;

  1. Схема алгоритму рішення задачі.

Овал 11Прямая соединительная линия 12Параллелограмм 13Параллелограмм 15Овал 17

Рис. 2 Схема алгоритму задачі 3.1.1.

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int n;

cout<<"Введите трехзначное число : ";

cin>>n;

cout<<"Изменённое число : "<<(n-n/100*100)*10+n/100<<endl;

system("pause");

}

  1. Тестування програми.

Рис. 3 Результат тестування задачі 3.1.1.

Задача 3.1.2

  1. Постановка задачі.

У тризначному числі х закреслили його другу цифру. Коли до утвореного при цьому двозначного числа справа приписали другу цифру числа х, то вийшло число n. По заданому n знайти число х( значення n вводиться з клавіатури,( 100<=n<=999).

Вхідні дані :

тризначне число - змінна цілого типу - int n;

Вихідні дані :

кінцевий результат у вигляді зміненої змінної цілого типу - int х;

  1. Схема алгоритму рішення задачи.

Овал 32Параллелограмм 34Параллелограмм 36Овал 38Прямая соединительная линия 12Параллелограмм 15

Рис. 4 Схема алгоритму задачі 3.1.2.

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int n,x;

cout<<"Введите трехзначное число : ";

cin>>n;

cout<<"Вывести найденное число x : "<<n/100*100+n%10*10+n/10%10<<endl;

system("pause");

}

  1. Тестування програми.

Рис. 5 Результат тестування задачі 3.1.2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]