Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практикум ИНФОРМАТИКА 2 семестр.pdf
Скачиваний:
23
Добавлен:
02.06.2015
Размер:
986.78 Кб
Скачать

17

ЗАДАНИЕ 4 Решение уравнений и неравенств

Цель задания

1.Получение навыков использования условного оператора и оператора цикла с параметром.

2.Знакомство с методами оптимизации программ

Постановка задачи

Составить программу решения уравнения (системы уравнений, неравенства, системы неравенств) численным методом перебора. Напечатать исходные данные в принятом в математике виде.

Содержание отчета

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

2.Текст программы и результаты ее выполнения.

3. Результаты тестирования.

Методические указания

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

Пример программы, решения неравенства

ax 3 + bx 2 + cx + d > 0

при

значениях

шага

решенияh = 0.1

и

постоянных

в

неравенс

a = 5.;

b = -3.;

c = -14.5 ;

d = 9.:

 

 

 

 

program Resh_nerav; uses Crt;

const Min=-100.; Max=100.;

H=0.1; A=5.; B=-3.; C=-14.5; D=9.; var

I:integer;

X,Y,Y1:real;

Ak: array [1..3] of real;{корни уравнения, полученного из неравенства}

begin ClrScr;

Writeln(' Идет перебор значений X'); X:=Min;

for I:=1 to 3 do Ak[I]:=Max; I:=0;

repeat

18

Y:=A*X*X*X+B*X*X+C*X+D;

X:=X+H;

Y1:=A*X*X*X+B*X*X+C*X+D; if (Y*Y1<0) then

begin I:=I+1;

Ak[I]:=X-H/2.;

Writeln('При X ',Ak[I]:8:2,' Y=0 ') end

until X>Max;

if (Ak[1]=Ak[2]) and (Ak[2]=Ak[3]) and (Ak[3]=Max) then begin

if Y>0 then

Writeln( 'Неравенство выполняется во всем диапозоне') else

Writeln(' Неравенство не имеет решения ');

end;

X:=(Min+Ak[1])/2;

Y:=A*X*X*X+B*X*X+C*X+D;

if Y>0 then Writeln(' На отрезке [',Min:8:2,'...',Ak[1]:8:2, '] неравенство верно')

else Writeln(' На отрезке [',Min:8:2,'...',Ak[1]:8:2, '] неравенство неверно');

X:=(Ak[1]+Ak[2])/2;

Y:=A*X*X*X+B*X*X+C*X+D;

if Y>0 then Writeln(' На отрезке [',Ak[1]:8:2,'...',Ak[2]:8:2, '] неравенство верно')

else Writeln(' На отрезке [',Ak[1]:8:2,'...',Ak[2]:8:2, '] неравенство неверно');

X:=(Ak[2]+Ak[3])/2;

Y:=A*X*X*X+B*X*X+C*X+D;

if Y>0 then Writeln(' На отрезке [',Ak[2]:8:2,'...',Ak[3]:8:2, '] неравенство верно')

else Writeln(' На отрезке [',Ak[2]:8:2,'...',Ak[3]:8:2, '] неравенство неверно');

X:=(Ak[3]+Max)/2;

Y:=A*X*X*X+B*X*X+C*X+D;

if Y>0 then Writeln(' На отрезке [',Ak[3]:8:2,'...',Max:8:2, '] неравенство верно')

else Writeln(' На отрезке [',Ak[3]:8:2,'...',Max:8:2, '] неравенство неверно');

end.

19

Результат выполнения программы:

Идет перебор значений X

При X

-1.75 Y=0

При X

0.65

Y=0

При X

1.65

Y=0

На отрезке [ -100.00... -1.75] неравенство неверно

На отрезке [

-1.75...

0.65] неравенство верно

На отрезке [

0.65...

1.65] неравенство неверно

На отрезке [

1.65...

100.00] неравенство верно

Варианты задания

Таблица 4.1

№ варианта

Неравенства

Уравнения

 

 

 

 

 

 

 

 

 

 

 

 

1

ax 2 + b > 0

e x - e- x - 2 = 0

 

 

 

 

 

 

2

ax 2

+ bx + c > 0

x - 2 + sin

 

1

= 0

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

ax 2 + c < 0

3 x - 4 ln x - 5 = 0

 

 

 

 

4

ax 2

+ bx + c £ 0

x 2 - ln( x + 1 ) - 3 = 0

 

 

5

ìa1 x + b1

< 0

3 sin

 

 

 

 

+ 0.35 x - 3.8 = 0

 

 

x

 

í

 

 

< 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îa2 x + b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

ìa1 x + b1

> 0

0.25 x 3 + x - 1.25 = 0

 

 

 

í

 

 

< 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îa2 x + b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

ìa1 x + b1

< 0

x +

 

 

 

+ 3

 

 

 

 

 

- 2.5 = 0

 

 

 

x

 

x

 

 

 

í

 

 

> 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îa2 x + b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

ìa

 

x + b

> 0

x -

 

 

 

 

 

 

1

 

 

 

 

 

 

 

= 0

 

 

 

í

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

> 0

 

 

+ sin 3.6 x

 

 

 

îa2 x + b2

3

 

 

 

 

 

 

 

9

ìx < 0

 

0.1x 2

 

- x ln x = 0

 

 

 

 

 

í

 

 

< 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îa2 x + b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

ìa

 

x + b < 0

tgx -

1

tg

3

x +

1

 

tg

5

x -

1

= 0

 

í

1

1

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

5

 

 

3

 

îx + b2 ³ 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

ìx + b1 ³ 0

e x + ln x - 10 x = 0

 

 

 

 

í

 

 

< 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îa2 x + b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

ìa

 

x + b < 0

 

 

 

 

 

 

-

x 2

+ x - 1 = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

í

1

1

 

cos x - e

2

 

 

 

 

 

îx > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

ЗАДАНИЕ 5 Символьная обработка

Краткие сведения о системах счисления

1.Что такое система счисления?

Система счисления – это совокупность приемов и правил, по которым числа записываются и читаются.

Существуют позиционные и непозиционные системы счисления. В непозиционных системах счисления все цифры(т. е. тот вклад, который они вносят в значение числа) не зависит от ее позиции в записи числа. Так в римской системе счисления в числе XXXII (32) вес цифры Х в любой позиции равен 10.

В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения(позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает семь сотен, вторая семь единиц, третья – 7 десятых долей единицы.

Сама же запись числа 757,7 означает сокращенную запись выражения

700 + 50 +7 + 0 ,7 = 7 × 10 2 + 5 × 101 +7 × 100 +7 × 10-1 = 757 ,7 .

Любая позиционная система счисления характеризуется своим основанием.

Основание позиционной системы счисления– количество различных цифр, используемых для изображения чисел в данной системе счисления.

За основание системы можно принять любое число– два, три, четыре и т.д. Следовательно, возможно бесчисленное множество позиционных систем: двоичная, троичная, четверичная… Запись чисел в каждой из систем счисления с основанием q означает сокращенную запись выражения

an-1 qn-1 + an- 2 qn- 2 +K+ a1q1 + a0 q0 + a-1q -1 +K+ a-m q-m ;

где ai – цифры системы счисления; n и m – число целых и дробных разрядов соответственно.

Например:

 

 

 

 

 

 

Разряды 3

2

1

0 - 1

 

Число

1

0

1

1,

12

= 1× 23 + 0 × 22 + 1× 21 + 1× 20 + 1× 2-1 ;

Разряды 2

1

0

- 1 - 2

 

Число

2

7

6

, 5

28

= 2 × 82 + 7 × 81 + 6 × 80 + 5 × 8-1 + 2 × 8-2 .

2. Как порождаются числа в позиционных системах счисления?

В каждой системе счисления цифры упорядочены в соответствии с их значениями: 1 больше 0; 2 больше 1 и т.д.

Продвижением цифры называют замену ее следующей по величине.

Продвинуть цифру 1 значит заменить ее на2, продвинуть цифру 2 значит заменить ее на 3. Продвижение старшей цифры (например, цифры 9 в десятич-

ной системе) означает замену ее на 0.

21

Целые числа в любой системе счисления порождаются с помощьюправила сче-

та:

Для образования целого числа, следующего за любым данным целым числом нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё.

Применяя это правило запишем первые десять целых чисел:

§в двоичной системе: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001;

§в троичной системе: 0, 1, 2, 10, 11, 12, 20, 21, 22, 100;

§в пятеричной системе: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14;

§в восьмеричной системе: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11.

3.Какие системы счисления используют специалисты для общения с компьютером?

Кроме десятичной широко используются системы с основанием, являющимся целой степенью числа 2, а именно:

§двоичная (используются цифры 0,1);

§восьмеричная ( используются цифры 0,1…7);

§шестнадцатеричная (для первых целых чисел от нуля до девяти ис-

пользуются цифры 0,1…9, а от девяти до пятнадцати в качестве цифр используются символы A, B, C, D, E, F).

Из всех систем счисления особенно проста и поэтому интересна для техни-

ческой реализации в компьютерах двоичная система счисления.

4. Почему люди пользуются десятичной системой, а компьютер – двоичной?

Люди предпочитают десятичную систему, потому что с древних времен считали по пальцам. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.

А компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:

§для ее реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток – нет тока, намагничен – не намагничен), а не с десятью – как в десятичной;

§представление информации посредством только двух состояний надежно и помехоустойчиво;

§возможность применения аппарата булевской алгебры для выполнения логических преобразований информации;

§двоичная арифметика намного проще десятичной.

Недостаток двоичной системы – быстрый рост числа разрядов.

22

5. Почему в компьютерах используются также восьмеричные и шестнадцатеричные системы счисления?

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

Перевод чисел из десятичной системы в двоичную систему и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.

Числа в этих системах читаются почти также легко, как десятичные требуют соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раз меньше разрядов чем в двоичной системе.

Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему очень прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр).

Например:

537,18 = 101

011

111,

0012

;

¯

¯

¯

¯

 

5

3

7

1

 

1A3,F16 = 1

1010

0011,

11112 ;

¯

 

¯

¯

¯

1

 

A

3

F

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

Например,

 

 

 

 

 

10101001,101112

= 10

101

001,

101

1102 = 251,568

 

¯

¯

¯

¯

¯

 

2

5

1

5

6

10101001,101112

= 1010 1001,

1011

10002 = A9, B816

 

 

¯

¯

¯

¯

 

 

A

9

B

8

6. Как перевести целое число из десятичной системы в любую другую позиционную систему счисления?

Для перевода целого десятичного числаN в систему счисления с основаниемq необходимо N разделить с остатком ("нацело") на q, в той же десятичной системе. Затем неполное частное, полученное от такого деления, нужно разделить

23

с остатком на q и т. д., пока последнее полученное неполное частное не станет равным нулю. Представлением числа N в новой системе счисления будет последовательность остатков деления, изображенных одной q-ичной цифрой и записанных в порядке, обратном порядку их получения.

Пример: Переведем число 75 из десятичной системы в двоичную:

75 2

137 2

1 18 2

0

9

 

2

 

 

 

 

 

 

1

 

 

 

2

 

 

 

 

 

4

 

 

 

 

 

 

0

2

 

 

 

2

 

 

 

 

 

0

 

 

1

2

 

 

 

 

 

 

 

 

1

0

 

 

 

 

 

 

 

Ответ: 7510 = 10010112

7. Как перевести число из двоичной (восьмеричной, шестнадцатеричной) системы в десятичную?

Перевод в десятичную систему числаx ,записанного в q-ичной системе счисления в виде x = ( an an-1 Ka0 ,a-1a- 2 Ka-m )q сводится к вычислению значения мно-

гочлена

x10 = an q n + an-1q n-1 +K+ a0q0 + a-1q -1 + a-2 q-2 +Ka-m q -m

средствами десятичной арифметики. Пример:

Разряды: 2 1 0

Число: 1 F 316 = 1 ×162 + 15 ×161 + 3 ×160 = 49910

Цель задания

1.Закрепление навыков в использовании операторов цикла.

2.Получение навыков в работе с символьной информацией.

3.Освоения алгоритма перевода чисел из одной системы счисления в другую.

Постановка задачи

1. Ввести последовательность символов, представляющую собой запись числа в системе отсчета с основанием P. Количество вводимых символов - N. Требу-

ется перевести число в десятичную систему счисления и определить кратно ли оно L.

24

2.Ввести число в десятичной системе счисления и перевести его в систему счисления с основанием Q.

3.Составить программу обработки текста в соответствии с вариантом зада-

ния Таблица 5.1.

Содержание отчета

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

2.Описание алгоритма перевода в десятичную систему счисления и обратно.

3.Тексты программ и результаты их выполнения.

Пример программыперевода числа из 12-ричной системы в десятичную: program Sus_sch;

uses Crt; var

St:string[15];

S:char;

K,Code,J,I,M:integer; begin

ClrScr;

Write(' Введите число в системе счисления с основанием 12: '); Read(st);

K:=Length(St); {Функция вычисления длины строки} Writeln(K);

M:=0;

for I:=1 to K do begin

S:=St[I];

if (S>='0') and (S<='9') then M:=M*12+ord(S)-ord('0') else M:=M*12+ord(S)-ord('A')+10;

end;

Writeln;

Writeln(' Число в десятичной системе равно ',M);

end.

Пример программыперевода числа из 10-ричной системы в 8-ричную: program Sus_ch1;

uses Crt; var S,St:string; J,M:integer;

begin ClrScr;

25

Write(' Введите число в системе счисления с основанием 10: '); Read(J);

While J<>0 do begin

M:=J mod 8; J:=J div 8;

Str(M,S); {Процедура преобразования числа в строку} St:=Concat(S,St); {Функция сцепления строк}

end;

Writeln;

Writeln(' Число в восмеричной системе равно ',St);

end.

Пример программы, которая во вводимом тексте заменяет сочетание букв "во" на "го":

program Obr_text; var

I: integer; St: string; C1,C2:char;

begin

Writeln('Введите предложение:'); Readln(St);

I:=1; repeat C1:=St[I];

C2:=St[I+1];

if (C1='в') and (C2='о') then St[I]:='г';

I:=I+1;

until (I=125) or (C2='.');

Writeln ('Исправленный текст:'); Writeln (St);

end.