Использование формул геометрической прогрессии для решения задач по информатике

Предпросмотр материала:

8. Геометрическая прогрессия

1. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var k, s: integer;

begin

    s:=0;

    k:=0;

    while s < 80 do begin

        s:=s+2*k;

        k:=k+4;

    end;

    write(s);

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 80, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Ак­ку­рат­но вы­пи­шем все s и k:

 

s 0 0 8 24 48 80

k 0 4 8 12 16 20

 

(Пом­ни­те, что усло­вие s < 80 про­ве­ря­ет­ся толь­ко после k:=k+4, по­это­му дей­ствие s:=s+2*k по­след­ний раз вы­пол­нит­ся для k=16)

 

Сле­до­ва­тель­но ответ 80.

 

2. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var k, s: integer;

begin

    s:=0;

    k:=0;

    while k < 12 do begin

        s:=s+2*k;

        k:=k+3;

    end;

    write(s);

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 12, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Так как числа не­боль­шие, можно ак­ку­рат­но вы­пи­сать все s и k:

 

s 0 0 6 18 36

k 0 3 6 9 12

(Пом­ни­те, что усло­вие k < 12 про­ве­ря­ет­ся сразу после k:=k+3, сле­до­ва­тель­но дей­ствие s:=s+2*k для k=12 вы­пол­нять­ся не будет)

 

Сле­до­ва­тель­но, ответ — 36.

 

3. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния).

 

Бей­сик

Пас­каль

DIM N, S AS INTEGER

N = 1

S = 6

WHILE S <= 365

S = S + 36

N = N * 2

WEND

PRINT N

var n, s: integer;

begin

n : = 1;

s : = 6;

while s <= 365 do

begin

s : = s + 36;

n : = n * 2

end;

write(n)

end.

Си

Ал­го­рит­ми­че­ский

#include

void main()

{

int n, s;

n = 1;

s = 6;

while (s <= 365)

{

s = s + 36;

n = n * 2;

}

printf("%d", n);

}

алг

нач

цел n, s

n : = 1

s : = 6

нц пока s <= 365

s : = s + 36

n : = n * 2

кц

вывод n

кон

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s <= 365, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл. Цикл вы­пол­нит­ся http://reshuege.ru/formula/c9/c9a3ebe6db0737a1b46b219fa417b791.png раз. Учи­ты­вая, что из­на­чаль­но s=6 и что дей­ствие "n : = n * 2" вы­пол­ня­ет­ся после "s : = s + 36", при­хо­дим к вы­во­ду, что дей­ствие "n : = n * 2" вы­пол­нит­ся 10 раз. Сле­до­ва­тель­но, зна­че­ние n будет равно 210 = 1024.

 

Ответ: 1024.

 

4. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния).

 

Бей­сик

Пас­каль

DIM N, S AS INTEGER

N = 1

S = 0

WHILE S <= 1024

S = S + 128

N = N * 2

WEND

PRINT N

program B05;

var n, s: integer;

begin

n := 1;

s := 0;

while s <= 1024 do

begin

s := s + 128;

n := n * 2;

end;

write(n)

end.

Си

Ал­го­рит­ми­че­ский язык

#include

void main()

{

int n, s;

n = 1;

s = 0;

while (s <= 1024)

{

s = s + 128;

n = n * 2;

}

printf("%d", n);

}

алг

нач

цел n, s

n := 1

s := 0

нц пока s <= 1024

s := s + 128

n := n * 2

кц

вывод n

кон

 

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s ≤ 1024, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

За­ме­тим, что http://reshuege.ru/formula/92/922d74677e9d4669795e4fd9f551b0f4.png После 9 шага s ста­нет рав­ной 1152 и усло­вие s ≤ 1024 ока­жет­ся не­вы­пол­нен­ным, цикл пре­рвет­ся. Сле­до­ва­тель­но, зна­че­ние n будет равно 29 = 512.

 

Ответ: 512.

 

5. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния).

 

Бей­сик

Пас­каль

DIM N, S AS INTEGER

 N = 0

 S = 1

 WHILE S <= 1000

 S = S * 3

 N = N + 3

 WEND

 PRINT N

program B05;

var n, s: integer;

begin

n := 0;

s := 1;

while s <= 1000 do

begin

s := s * 3;

n := n + 3;

end;

write(n)

end.

Си

Ал­го­рит­ми­че­ский язык

#include

void main()

{

int n, s;

n = 0;

s = 1;

while (s <= 1000)

{

s = s * 3;

n = n + 3;

}

printf("%d", n);

}

алг

нач

цел n, s

n := 0

s := 1

нц пока s <= 1000

s := s * 3

n := n + 3

кц

вывод n

кон

 

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s ≤ 1000, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

По­сколь­ку 36 < 1000 < 37 = 2187 , сле­до­ва­тель­но, цикл вы­пол­нит­ся 7 раз. На 7-м шаге s ста­нет рав­ной 2187 и усло­вие s ≤ 1000 ока­жет­ся не вы­пол­нен­ным, цикл пре­рвет­ся. Сле­до­ва­тель­но, зна­че­ние n будет равно 7·3 = 21.

 

Ответ: 21.

 

Краткое описание материала

Использование формул геометрической прогрессии для решения задач по информатике

    DOCX

Файл будет скачан в формате:

    DOCX

Краткое описание материала

Автор материала

Хакимзянова Нурания Идерисовна

учитель математики и информатики

  • На сайте: 10 лет и 10 месяцев
  • Всего просмотров: 142583
  • Подписчики: 4
  • Всего материалов: 22
  • 142583
    просмотров
  • 22
    материалов
  • 4
    подписчиков

Настоящий материал опубликован пользователем Хакимзянова Нурания Идерисовна.
Инфоурок является информационным посредником. Всю ответственность за опубликованные материалы несут пользователи, загрузившие материал на сайт. Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете на материал.

Попробуйте новый ИИ-ассистент для учителей

Создавайте рабочие листы, тесты, презентации и картинки за секунды!

Другие материалы

Вам будут интересны эти курсы: