Побудова та аналіз алгоритмів: переклад чисел у різних системах числення

 















КУРСОВА РОБОТА

Побудова та аналіз алгоритмів: Переклад чисел у різних системах числення»



Зміст


Вступ

. Пояснювальна записка

.1 Завдання

.2 Теоретична частина

.3 Обґрунтування і вибір алгоритму

.4 Опис процедур та обробників

.5 Структура програми

.6 Результати роботи програми та контрольні приклади

Висновок

Список використаної літератури

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



Вступ


Життя у цивілізованих країнах без компютера уявити дуже складно. Адже компютери використовуються повсякденно, як для роботи, так і для відпочинку. Завдяки компютерам ми здатні швидко і точно обробляти інформацію. Жодна успішна компанія не обходиться без допомоги систем. Він полегшує життя, робить його цікавішим і легшим, дає змогу розмовляти на відстані, допомагає у роботі, та багато іншого без чого ми не можемо уявити наше повсякденне життя, він наповнює яскравими барвами наш світ своїм розмаїттям можливостей.

Зараз, багато людей використовують компютер для роботи. Але поступово деякі обовязки стали переходити на мобільні смартфони. Наприклад відправити електрону пошту зручніше відправити через телефон, зробити пошуковий запит на ваш улюблений ресторан, також зручніше. Ми живемо вже у той період коли телефонів більше ніж компютерів. По факту телефони і є компютерами. Тому я і вирішив розробити свою програму для мобільного приладу



1.Пояснювальна записка


.1 Завдання


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


1.2 Теоретична частина


Я прихильник компанії Apple, тому саме я і вирішив розробити свою програму для iPhone. Операційна система, яку використовує iPhone називається IOS.

Всього є 12 варіантів переводу чисел:

·Bin to Dec

·Bin to Oct

·Bin to Hex

·Oct to Bin

·Oct to Dec

·Oct to Hex

·Dec to Bin

·Dec to Oct

·Dec to Hex

·Hex to Bin

·Hex to Oct

·Hex to Dec



1.3 Обґрунтування і вибір алгоритму


Тобто можна вважати що потрібно 12 алгоритмів, але при оптимізації зрозуміло що знадобиться тільки 6, але як казав Дональд Кнут: Преждевременная оптимизация - корень всех зол.

Розглянемо найпростіший варіант:

·Перевод числа с бінарної системи в десятичну. То для цього нам потрібно знати довжину бінарного числа. Після визначення довжини, ми почергово, починаючи з кінця нашого бінарного числа, беремо елемент, нуль чи одиницю і множимо на двійку, яка знаходиться у степені довжини від кінця числа до елементу. Тоді додаємо всі отримані числа і отримуємо результат.




1.4 Опис процедур та обробників


У цій Програмі ми використовували мову Objective-C. За Основу інтерфейсу ми взяли мобільний пристрій iPhone. Середа розробки Xcode, ця середа надається тільки для користувачів компютерів Macintoch. Xcode має так вбудовані можливості як додавання кнопок на екран, підключення їх до коду, Вивід тексту на екран, строка для вводу даних.

Язик Objective-C відрізняється від С++, але функціонал схожий, наведемо приклад:

·С++ - Objective-C

·std::string str - NSString *str;

·sub.str(1,2) - [str substringWithRange: NSMakeRange]

·std::stoi(str[k]) - [str intValue]

·str.length() - [str length]

·toupper(str) - [str uppercaseString]

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

= [NSString stringWithFormat: @%@%@, str, strYouWant2add];


Також для коректної роботи програми нам знадобиться перевірити вхідні дані правильність вводу, тобто визначити чи присутні у вхідних даних елементи окрім цифр та великих літер A-F. В моєму випадку алгоритм ігнорує усі зайві елементи, і обирає з них вказані вище елементи. Після обробки вхідної строки, вихідна строка буде позбавлена зайвих елементів. У випадку якщо користувач ввів помилкове значення для і натиснув на кнопку, то він побачить повідомлення з помилкою.



1.5 Структура програми

графічний інтерфейс мобільний програмування

Програма розбита на логічні частини.

.Interface ( Інтерфейс)

.1.Label ( Єтикетка, місце де відображується результат)

.2.TextField (Поле куди вводяться дані)

.3.Buttons (Кнопки)

.3.1.All Action Buttons (усі діючі кнопки )

.Implimentation (Пояснення)

.1.All Buttons (Усі кнопки)

.1.1.Bin to Dec

.1.2.Bin to Oct

.1.3.Bin to Hex

.1.4.Oct to Bin

.1.5.Oct to Dec

.1.6.Oct to Hex

.1.7.Dec to Bin

.1.8.Dec to Oct

.1.9.Dec to Hex

.1.10.Hex to Bin

.1.11.Hex to Oct

.1.12.Hex to Dec

.2.All Buttons Defenition (Функції у яких перетворюються числа з однієї систему в інші

Усі дії які виконує програма будуть детально описані в лістингу.



1.6 Результати роботи програми та контрольні приклади




Висновок


В даній курсовій роботі було розроблено програму яка переводить числа з різних систем числення. Програма поділена на логічні частини, які зручно використовувати. Мовою програмування в даній роботі був Objective-C.



Список використаної літератури


1. Bjorn Straustrup The C++ Programming Language, 2010, Addison Visley, p.51,p.633,p.798.

2. <#"justify">Лістинг програми


//

// HelloWorldViewController.m

// HelloWorld

//

// Created by Osadchy Dima on 5/7/13.

// Copyright (c) 2013 Osadchy Dima. All rights reserved.

//

#include <math.h>

#import "HelloWorldViewController.h"

@interface HelloWorldViewController ()

@property (weak, nonatomic) IBOutlet UILabel *label; //підключення лейблу

@property (weak, nonatomic) IBOutlet UITextField *textField; //підключення строки вводу

@property (weak, nonatomic) IBOutlet UIPickerView *ChoseField; //вибір кольору дисплея

(IBAction)changeGreeting:(id)sender; //підключення кнопок переводу чисел

(IBAction)BintoOct:(id)sender;

(IBAction)BintoHex:(id)sender;

(IBAction)OcttoBin:(id)sender;

(IBAction)OcttoDec:(id)sender;

(IBAction)OcttoHex:(id)sender;

(IBAction)DectoBin:(id)sender;

(IBAction)DectoOct:(id)sender;

(IBAction)DectoHex:(id)sender;

(IBAction)HextoBin:(id)sender;

(IBAction)HextoOct:(id)sender;

(IBAction)HextoDec:(id)sender;

@end

@implementation HelloWorldViewController

(void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

//уникає помилок перевантаження памяті

(void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

(IBAction)changeGreeting:(id)sender {*str = self.textField.text;(test_to_bin(return_only_number(str))) {.label.text = [[NSString alloc] initWithFormat:@"%@", binary_to_decimal(str)];

}.label.text = [[NSString alloc] initWithFormat:@"Input only: 0,1 "];

}

(IBAction)BintoOct:(id)sender {*str = self.textField.text;(test_to_bin(return_only_number(str))) {.label.text = [[NSString alloc] initWithFormat:@"%@", binary_to_octal(str)];

}.label.text = [[NSString alloc] initWithFormat:@"Input only: 0,1 "];

}

(IBAction)BintoHex:(id)sender {*str = self.textField.text;(test_to_bin(return_only_number(str))) {.label.text = [[NSString alloc] initWithFormat:@"%@", binary_to_hex(str)];

}.label.text = [[NSString alloc] initWithFormat:@"Input only: 0,1 "];

}

(IBAction)OcttoBin:(id)sender {*str = self.textField.text;(test_to_octal(return_only_number(str))) {.label.text = [[NSString alloc] initWithFormat:@"%@", octal_to_binary(str)];

}.label.text = [[NSString alloc] initWithFormat:@"Input only: 0,1,2,3,4,5,6,7"];

}

(IBAction)OcttoDec:(id)sender {*str = self.textField.text;(test_to_octal(return_only_number(str))) {.label.text = [[NSString alloc] initWithFormat:@"%@",binary_to_decimal (octal_to_binary(str))];

}.label.text = [[NSString alloc] initWithFormat:@"Input only: 0,1,2,3,4,5,6,7"];

}

(IBAction)OcttoHex:(id)sender {*str = self.textField.text;(test_to_octal(return_only_number(str))) {.label.text = [[NSString alloc] initWithFormat:@"%@",binary_to_hex(octal_to_binary(str))];

}.label.text = [[NSString alloc] initWithFormat:@"Input only: 0,1,2,3,4,5,6,7"];

}

(IBAction)DectoBin:(id)sender {.label.text = [[NSString alloc] initWithFormat:@"%@", decimal_to_binary(return_only_number(self.textField.text)) ];

}

(IBAction)DectoOct:(id)sender {.label.text = [[NSString alloc] initWithFormat:@"%@", decimal_to_octal(return_only_number(self.textField.text)) ];

}

(IBAction)DectoHex:(id)sender {.label.text = [[NSString alloc] initWithFormat:@"%@", decimal_to_hex(return_only_number(self.textField.text))];

}

(IBAction)HextoBin:(id)sender {.label.text = [[NSString alloc] initWithFormat:@"%@", hex_to_bin(return_hex( self.textField.text))];

}

(IBAction)HextoOct:(id)sender {.label.text = [[NSString alloc] initWithFormat:@"%@", binary_to_octal(hex_to_bin(return_hex( self.textField.text)))];

}

(IBAction)HextoDec:(id)sender {.label.text = [[NSString alloc] initWithFormat:@"%@", binary_to_decimal(hex_to_bin(return_hex( self.textField.text)))];

}

(BOOL)textFieldShouldReturn:(UITextField *)theTextField {(theTextField == self.textField) {

[theTextField resignFirstResponder];

}YES;

}*binary_to_decimal(NSString *str) {num = 0;k = 0;*str_number;(k = 0; (k+1)<=[str length]; k++) {+=[[str substringWithRange:NSMakeRange(k,1)] intValue]*pow(2, [str length]-(k+1));

}str_number = [NSString stringWithFormat:@"%d", num];;

}*binary_to_octal(NSString *str){= [NSString stringWithFormat:@"%o", [binary_to_decimal(str) integerValue] ];str;

}*binary_to_hex(NSString *str){= [NSString stringWithFormat:@"0x%X", [binary_to_decimal(str) integerValue]];str;

}*octal_to_binary(NSString *str){*outputstring;=@"";(int k =0; k<[str length]; k++) {([[str substringWithRange:NSMakeRange(k, 1)] intValue]) {0:= [NSString stringWithFormat:@"%@000", outputstring];;1:= [NSString stringWithFormat:@"%@001", outputstring];;2:= [NSString stringWithFormat:@"%@010", outputstring];;3:= [NSString stringWithFormat:@"%@011", outputstring];;4:= [NSString stringWithFormat:@"%@100", outputstring];;5:= [NSString stringWithFormat:@"%@101", outputstring];;6:= [NSString stringWithFormat:@"%@110", outputstring];;7:= [NSString stringWithFormat:@"%@111", outputstring];;:;

}

}outputstring;

}*decimal_to_binary(NSString *str){inNumber;*outputString;=@"";temp;=[str integerValue];(inNumber != 0) {=inNumber%2;=(inNumber-temp)/2;=[NSString stringWithFormat:@"%i%@", temp, outputString];

}outputString;

}*decimal_to_octal(NSString *str){= [NSString stringWithFormat:@"%o", [str intValue]];str;

}*decimal_to_hex(NSString *str){= [NSString stringWithFormat:@"0x%X", [str integerValue]];str;

}

*hex_to_bin(NSString *str){= [str uppercaseString];*hexMap = [NSDictionary dictionaryWithObjectsAndKeys:

@"0000", @"0",

@"0001", @"1",

@"0010", @"2",

@"0011", @"3",

@"0100", @"4",

@"0101", @"5",

@"0110", @"6",

@"0111", @"7",

@"1000", @"8",

@"1001", @"9",

@"1010", @"A",

@"1011", @"B",

@"1100", @"C",

@"1101", @"D",

@"1110", @"E",

@"1111", @"F",];*result=[NSMutableString string];(NSUInteger i=0; i != [str length]; i++){*hexDigit = [str substringWithRange:NSMakeRange(i, 1)];

[result appendString:[hexMap objectForKey: hexDigit]];

}result;

}*return_only_number(NSString *str) {*number_str = @"";(int k = 0; k!=[str length]; k++) {(isdigit([str characterAtIndex:k])) {_str = [NSString stringWithFormat:@"%@%@", number_str,[str substringWithRange:NSMakeRange(k,1)]]; //add symbol to a new number string

}

}number_str;

}test_to_bin(NSString *str){(int k = 0; k!=[str length]; k++) {([[str substringWithRange:NSMakeRange(k,1)] intValue] >=2) {false;

}

}true;

}test_to_octal(NSString *str) {(int k = 0; k!=[str length]; k++) {([[str substringWithRange:NSMakeRange(k, 1)] intValue] >=8) {false;true;*return_hex(NSString *str) {= [str uppercaseString];*hex_str = @"";number_charachter = 0;(int k =0; k!=[str length]; k++) {_charachter = [str characterAtIndex:k];(isdigit([str characterAtIndex:k]) || (number_charachter >=65 && number_charachter <= 70)) {_str = [NSString stringWithFormat:@"%@%@", hex_str,[str substringWithRange:NSMakeRange(k,1)]];hex_str;

}

@end


КУРСОВА РОБОТА Побудова та аналіз алгоритмів: Переклад чисел у різних системах числення»

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ