Задание 1. Цель контрольной работы

Иркутск, 2015г

 
 


Цель контрольной работы:

Проверка знаний по разделам:

· целочисленная арифметика;

· переводы целых чисел из одной системы счисления в другую;

· операторы IF, Case, Whilе, Repeat;

· алгоритмизация циклических процессов.

Порядок выполнения

1. Номер варианта: 7.

2. Номера задач: 7, 1, 9, 12, 21, 24а.

Задание 7

Нарисовать блок-схемы и определить значение переменной s после выполнения следующих операторов. Расписать изменение переменных s и i по шагам выполнения цикла.

7.а.

s = 0; i:= 0;

while i < 5 do begin i:= i + 1; s: = s + 1/i; end;

шаг i s
     
     
    1.5
    1.83
    2.08
    2.28

7.б.

s: =0; i: = 10;

while i >1 do begin s:= s +1/i; i:= i -1 end;

шаг i s
     
    0.10
    0.21
    0.34
    0.48
    0.65
    0.85
    1.10
    1.43
    1.93

7.в.

s: = 0; i: = 1;

repeat s: = s + 1/i; i: = i - 1 until i< = 1;

шаг i s
     
    1.0

7.г.

s:=1; i:=10;

repeat s:=s*(10+i); i:=i-2 until i<1;

шаг i s
     
     
     
     
     
     

Задание 1.

1. Условие:

Вычислить, не используя стандартные функции LN(x) и EXP(x) 2n, n - натуральное число

2. Математическая модель:

Натуральные числа больше 0.

Ln - возвращает натуральный логарифм аргумента.

EXP - возвращает экспоненту параметра.

3. Таблица внешних спецификаций:

Таблица 1.

No Имя Назначение Тип Ед. изм. ОДЗ
  i действительное число Целое - любое
  n натуральное число Целое - Больше 0
  st Результат выполнения Вещ. - любое
  SOOB1 Сообщение Текст - 1 вид
  SOOB2 Сообщение Текст - 1 вид

Сообщения:

c1: ‘Введите степень->: ’

c2: ‘2 в степени =: ’

4. Таблица тестов:

Таблица 2.

№ теста Исходные данные Результат Примечания
  i n st
         
         
         

5. Алгоритмизация:

Блок-схема алгоритма (рис. 1):

Рис. 1. Блок-схема алгоритма

6. Кодирование алгоритма:

program kontr1;

Var

i,n:integer;

st:real;

Begin

Repeat

write('Введите степень->');

readln(n);

until n>=0;

st:=1;

for i:=1 to n do

st:=st*2;

write('2 в ',n,' степени = ',st:0:0);

end.

Задание 9.

1. Условие:

Логической переменной T присвоить значение true или false в зависимости от того, является натуральное число R, не большего 100000, степенью 3 или нет

2. Математическая модель:

frac - возвращающает дробную часть числа, то есть если frac(x)=0, значит число Х целое

frac(ln(R)/ln(3)) = 0 - логарифм по основанию 3, и проверять его на "целое/не целое"

3. Таблица внешних спецификаций:

Таблица 1.

No Имя Назначение Тип Ед. изм. ОДЗ
  r Натуральное число целое - положительное
  SOOB1 Сообщение текст - 1 вид
  SOOB2 Сообщение текст - 2 вид

Сообщения:

c1: ‘Введите R (R <= 100000):’

c2: ‘True’

c3: ‘False’

4. Таблица тестов:

Таблица 2.

№ теста Исходные данные Результат Примечания
  r сообщение
    False  
    True  
    True  
    False  
    True  

5. Алгоритмизация:

Блок-схема алгоритма (рис. 1):

Рис. 1. Блок-схема алгоритма

6. Кодирование алгоритма:

program kontr9;

Var

R:integer;

Begin

Repeat

write('Введите R (R <= 100000): ');

readln(r);

until (r>=0) and (r<=100000);

writeln(frac(ln(R)/ln(3)) = 0);

readln;

end.

Задание 12.

1. Условие:

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

2. Математическая модель:

Число должно быть больше 9 и не превышать число 65535.

3. Таблица внешних спецификаций:

Таблица 1.

No Имя Назначение Тип Ед. изм. ОДЗ
  n Целое число Целое - любое
  m Вспомогательная переменная Целое - любое
  p Вспомогательная переменная Целое - любое
  k Вспомогательная переменная Целое - любое
  zn Вспомогательная переменная Целое - любое
  i Вспомогательная переменная Целое - любое
  SOOB1 Сообщение текст - 1 вид
  SOOB2 Сообщение текст - 1 вид

Сообщения:

c1: ‘Введите число >10:’

c2: ‘Полученное число =’

4. Таблица тестов:

Таблица 2.

№ теста Исходные данные Результат Примечания
  n m*zn
       
       

5. Алгоритмизация:

Блок-схема алгоритма (рис. 1):

Рис. 1. Блок-схема алгоритма

6. Кодирование алгоритма:

program kontr12;

var n,m,p,k,zn,i:integer;

Begin

Repeat

write('Введите число >10: ');readln(n);

until (n>=10) and (n<=63556);

if then zn:=-1

else zn:=1;

n:=abs(n);m:=n;

while m>0 do

Begin

inc(k);

m:=m div 10;

end;

p:=1;

for i:=1 to k-1 do

p:=p*10;

m:=0;

while n>0 do

Begin

m:=m+p*(n mod 10);

n:=n div 10;

p:=p div 10;

end;

writeln('Полученное число = ',m*zn);

readln;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: