3572

Алгоритми роботи з цілими числами

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2012-11-03

54 KB

3 чел.

Алгоритми роботи з цілими числами

Тип ціле число є основним для будь-якої алгоритмічної мови. Зв'язано це з тим, що вміст комірки пам'яті або регістра процесора можна розглядати як ціле число. Адреси елементів пам'яті також являють собою цілі числа, з їхньою допомогою записуються машинні команди й т.д. Символи представляються в комп'ютері цілими числами - їхніми кодами в деякому кодуванні. Зображення також задаються масивами цілих чисел: для кожної крапки кольорового зображення зберігаються інтенсивності її червоної, зеленої й синьої складової (у більшості випадків - у діапазоні від 0 до 255). Як говорять математики, цілі числа дані, а все інше сконструювала з них людина.

Загальноприйнятий у програмуванні термін ціле число або ціла змінна, строго говорячи, не цілком коректний. Цілих чисел нескінченно багато, десятковий або двійковий запис цілого числа може бути як завгодно довгий й не міститися в області пам'яті, відведеної під одну змінну. Ціла змінна в комп'ютері може зберігати лише обмежену безліч цілих чисел у деякому інтервалі. У сучасних комп'ютерах під цілу змінну виділяється 8 байт, тобто 64 двійкового розряду. Вона може зберігати числа від нуля до 2 в 64-й ступені мінус 1. Таким чином, максимальне ціле число, що може зберігатися в цілій змінній, дорівнює

264 - 1 = 18,446,744,073,709,551,615

Арифметичні цілочисельні типи

Ім'я типу

Системний тип

Діапазон

Розмір

Sbyte

System.SByte

- 128... …127

Знакове, 8 Біт

Byte

System.Byte

0... …255

Беззнакове, 8 Біт

Short

System.Short

- 32768 …32767

Знакове, 16 Біт

Ushort

System.UShort

0... …65535

Беззнакове, 16 Біт

Int

System.Int32

- 2,147,483,648…2,147,483,647

Знакове, 32 Біт

Uint

System.UInt32

0...4…4,294,967,295)

Беззнакове, 32 Біт

Long

System.Int64

- 9,223,372,036,854,775,808 …

9,223,372,036,854,775,807

Знакове, 64 Біт

Ulong

System.UInt64

0...18…18,446,744,073,709,551,615

Беззнакове, 64 Біт

Додавання й множення значень цілих змінних виконується в такий спосіб: спочатку виконується арифметична операція, потім старші розряди результату, що вийшли за кордон шестидесяти двох двійкових розрядів (тобто вісьми байтів), відкидаються. Певні в такий спосіб операції задовольняють традиційним законам комутативності, асоціативності і дистрибутивності:

a+b = b+a, ab = ba

(a+b) + c = a+(b+c), (ab)c = a(bc)

a(b+c) = ab+ac

В елементарній шкільній математиці результат операції залишку від ділення традиційно вважається невід’ємним. Операція знаходження залишку буде позначатися знаком відсотка %, як у мові С#. Тоді, приміром,

3%5 = 3,

17%5 = 2,

(-3)%5 = 2,

(-17)%5 = 3.

Звідси видно, що в шкільній математиці не виконується рівність

(-a)%b = -(a%b),

Операції зміни знака й знаходження залишку не перестановочні ( математичною мовою, не комутирують один з одним). У комп'ютері операція знаходження залишку від ділення для від’ємних чисел визначається інакше, її результат може бути від’ємним. У наведених прикладах результати будуть наступними:

3%5 = 3,

17%5 = 2,

(-3)%5 = -3,

(-17)%5 = -2.

При діленні на позитивне число знак залишку збігається зі знаком діленого. При такому визначенні тотожність

(-a)%b = a%(-b) = -(a%b) справедлива.

Це дозволяє в багатьох алгоритмах не стежити за знаками (так само, як у тригонометрії формули, виведені для кутів, менших 90 градусів, автоматично виявляються справедливими для будь-яких кутів).

У двійковому поданні старший розряд у від’ємних цілих чисел дорівнює одиниці, у додатних - нулю. Двійкові розряди подання цілого числа в програмуванні нумерують від 0 до 31 справа наліво. Старший розряд має номер 31 і часто називається знаковим розрядом. Таким чином, знаковий розряд дорівнює одиниці у всіх від’ємних чисел і нулю в додатних. Двійкове подання максимального по абсолютній величині від’ємних чисел k складається з одиниці й тридцяти одного нуля:

-214748364810 = 100000000000000000000000000000002

Двійкове подання числа -1 складається із тридцяти двох одиниць:

-110 = 111111111111111111111111111111112

Двійкове подання максимального додатного числа складається з нуля в знаковому розряді й тридцяти однієї одиниці:

214748364710 = 011111111111111111111111111111112

Слід зазначити, що в програмуванні часто використовують також короткі цілі числа, двійковий запис яких займає вісім розрядів, тобто один байт, або шістнадцять розрядів, тобто два байти. Робота з такими короткими цілими числами підтримується на апаратному рівні. У мові Сі однобайтовим цілим числам відповідає тип Sbyte, двухбайтовим - тип short. Однобайтові цілі числа - це елементи кільця відрахувань Zm, де m = 28 = 256.

У випадку двухбайтових цілих чисел (тип short) m = 216 = 65536.

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

Лістинг 9.1. Дано ціле число , знайти суму і кількість чисел

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введите число: ");

int s = int.Parse(Console.ReadLine());

int i = 0, sum = 0; ;

while (s > 0)

{

int d = s % 10;

sum = sum + d;

s = s / 10;

i++;

 

}

Console.WriteLine("Сумма чисел = " + sum+ " kol"+i);

}

}

}

Лістинг 9.2. Знайти цифру , яка находиться на третьому місці введеного числа.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication2

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введите число: ");

int s = int.Parse(Console.ReadLine());

int i = 0, s1 = s;

while (s > 0)

{

s = s / 10;

i++;

}

s = s1; int l = 0;

while (s > 0)

{

int d = s % 10;

s = s / 10;

l++;

if (l==i-2) Console.WriteLine("число = " + d);

}

}

}

}

Спробуйте проаналізувати представлені алгоритми з представленням цілого числа типом string.

Лістинг 9.3.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _25

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введите число: ");

string s = Console.ReadLine();

int i = 0, sum = 0; ;

string d;

for (i = 0; i < s.Length; i++)

{

d = null;

d += s[i];

sum += Int32.Parse(d);

}

Console.WriteLine("Сумма чисел = "+sum);

}

}

}

Лістинг 9.4.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _26

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введіть число: ");

string s = Console.ReadLine();

Console.WriteLine("На третьому місці цифра " + s[2]);

}

}

}

Проаналізуйте наведені задачі, перевірте їх працездатність в середовищі програмування.


 

А также другие работы, которые могут Вас заинтересовать

32082. Мотивация просоциального поведения и социальной самореализации (по Хекхаузену) 61 KB
  С незнакомым: чем сильнее ожидание успеха тем выше положительная привлекательность и наоборот все наоборот в мотиве достижения: чем выше вероятность успеха и следовательно легкость задания тем меньше привлекательность успеха и наоборот. Ответственность как устойчивая черта характера напрямую связана с такими личностными параметрами как интернальностьэкстернальность и мотивация достижения. Феномены власти чрезвычайно сложны основываются на повсеместно встречающейся ситуации социального конфликта возникающего изза несовместимости...
32083. Мотивация асоциального поведения 42 KB
  Понятие агрессии. Для понимания причин агрессии необходимо учитывать то каким путем агрессивная модель поведения была усвоена факторы которые спровоцировали ее проявление и условия способствующие закреплению данной модели поведения. Предполагается что агрессивные реакции могут быть усвоены путем наблюдения проявлений агрессии. фрустрации агрессии сформулирован Доллардом и др.
32084. Социальная психология административной и управленческой деятельности 96 KB
  Основная цель: разработка универсальных принципов управления пригодных ко всем типам организации. Было выявлено существование формальных и неформальных групп в организации и их влияние на поведение работников. потребности отказ от необходимости жесткой иерархии власти жесткие рамки не совместимы с природой человека; ответственность за решение проблем в организации лежит на менеджере; роль неформальных отношений. Главное квалификация уровень ее мотивации формы организации труда.
32085. Профессиональный стресс 55.5 KB
  Профессиональный стресс Литра: Пряжников Николай Сергеевич 1. Социально экономическая значимость изучения стресса Сама проблема профессионального стресса остро заявила о себе именно в ХХ столетии.дистреса: 1 человек встречаясь с какойто сложностью не может полноценно реализовать накопившуюся энергию вызванную физиологическим механизмом стресса и тогда эта энергия начинает разрушать самого человека.Классическая теория стресса Ганса Селье современное применение теории 1936г.
32086. Основные этапы в развитии социальной психологии 71.5 KB
  История формирования социальнопсихологических идей Основные этапы в развитии социальной психологии. Выделяют 3 этапа в истории зарубежной социальной психологии: 1 философский античность сер. Накопление социальнопсихологических знаний в сфере философии и зарождающейся в ее недрах психологии. История социальной психологии как научной дисциплины относительно молодая отрасль знания.
32087. Теоретические направления западной социальной психологии: социальный бихевиоризм и социальный психоанализ 43.5 KB
  Суть теорий: все действия человек совершает под воздействием внешнего стимула. Факторы влияющие на исходы взаимодействия: экзогенные внешние сходство дополняемость и внутренние эндогенные на основе прошлого опыта взаимодействия влияет величины исходов в прошлом чел решает взаимодействовать ли дальше. необихевиаристская ориентация сводит всю активность челка в основном к пассивному приспособлению к сущим усл. Психоанализ: Основу психической жизни человека составляют бессознательные влечения потребности и образы формирующиеся...
32088. Теоретические направления западной социальной психологии: когнитивизм и интеракционизм 52.5 KB
  Теоретические направления западной социальной психологии: когнитивизм и интеракционизм. соц. эксперименты о соц. Большое развитие соц.
32089. Основные методологические проблемы и специфика СП исследования 67 KB
  Виды: стандартизированное нестандартизированное включенное участвующее взаимодействие наблюдателя и группы и невключенное простое со стороны наблюдение. Проблема определения единиц наблюдения: Объектом наблюдения являются отдельные люди малые группы и большие социальные общности например толпа и социальные процессы происходящие в них например паника. Предметом наблюдения обычно служат вербальные и невербальные акты повеления индивида или группы в целом в определенной социальной ситуации. Референтометрия методический...
32090. Общение как обмен информацией 43 KB
  Андреева рассматривая проблему общения выделяет в ней 3 стороны перцептивную восприятие партнёров коммуникативную обмен информацией и интерактивную взаимодействие. Но передача инфо только формальная сторона общения всегда информация не только передается но и формируется уточняется развивается. Поэтому рассмотрения общения только с этой стороны недостаточно. У общающихся должно быть не только одинаковые лексические и синтаксические системы но и понимание ситуации общения это возможно лишь в случае включения коммуникации в...