Ознакомление с понятием циклов в школьном курсе информатики на примере языка F#

NovaInfo 54, с.276-281, скачать PDF
Опубликовано
Раздел: Педагогические науки
Просмотров за месяц: 12
CC BY-NC

Аннотация

Статья рассматривает инвариантные возможности изучения циклических конструкций в школьном курсе информатики на примере языка F# сочетающего в себе множество технологий программирования.

Ключевые слова

АЛГОРИТМИЧЕСКОЕ МЫШЛЕНИЕ, ПРОГРАММИРОВАНИЕ, ИНВАРИАНТНОСТЬ, ИНФОРМАТИКА, ЦИКЛ

Текст научной работы

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

Для составления циклических алгоритмов, следует сначала теоретически подготовить школьников. Необходимо подробно разобрать циклические алгоритмы при помощи блок схем и алгоритмического языка. После полного понимания смысла циклических конструкций, можно переходить к их программированию. Язык F# сочетает в себе как несколько парадигм программирования, так и множество структурных конструкций, может помочь взглянуть на проблемную ситуацию с разных сторон.

В языке F#, циклы представлены тремя конструкциями:

1. Выражение for...to

Несмотря на то, что технически for...to является выражением, оно больше похоже на традиционный оператор в императивном языке программирования. Эта конструкция используется для перебора данных в строго определенном диапазоне.

2. Выражение for...in

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

3. выражение while...do (F#)

Выражение while...do используется для выполнения итерации (в цикле), пока заданное проверяемое условие истинно.

Продемонстрируем примеры использование циклов при решении следующих задач:

1. Все числа от 5 до 17 необходимо возведите в квадрат, от полученных значений отнимите единицу.

Вариант 1.

let seq1 = seq { for i in 5 .. 17-> (i, i*i-1) }
for (a, asqr) in seq1 do
  printfn "%d squared is %d" a asqr

Вариант 2.

let funn () =
   for i=5 to 17 do
       let d1 = i * i - 1
       printf "%d " d1
   printfn ""

Вариант 3.

let mutable i = 5
while i < 17 do
    i <- i + 1
    let d1=i*i-1
    printfn "i = %d" d1

2. Числа от 100 до 80 увеличить на 5 и найти квадрат.

Вариант 1.

let function2() =
  for i in 100 .. -1 .. 80 do
     let d1 = (i+5)*(i+5)
     printf "%d " d1
  printfn ""
function2()

Вариант 2.

let mutable i = 101
while i > 80 do
    i <- i - 1
    let d1 = int ((float i+5.)**2.)
    printfn "i = %d" d1;;

Вариант 3.

let List1 = [ 100 .. -1 .. 80]
for a in List1 do
  let d = (a+5)*(a+5)
  printfn "%d " d

Вариант4.

for i=100 downto 80 do
    let d1 = (i+5)*(i+5)
    printfn "%d" d1

3. Отобранные числа от 1 до 50 через каждые 4 , умножить на 8.

Вариант 1.

let mutable r = 0
for i=1 to 50 do
    if  r%4= 0 then let d = i * 8
                    printfn "%d" d
    r<-r+1

Вариант 2.

for i=1 to 50 do
    if  i%4= 1 then let d = i * 8
                    printfn "%d" d

4. Выведите все нечетные числа от 15 до 29, предварительно возведя их в куб и отняв единицу.

Вариант 1.

let function2() =
  for i in 15 .. 2 .. 29 do
     printf "%d " (i*i*i-1)
  printfn ""
function2()

Вариант 2.

let seq1 = seq { for i in 15 .. 2 .. 29-> i }
for i in seq1 do
  printfn "%d" (i*i*i-1)

5. Создайте программу, которая выводила бы произвольные числа от 1 до 100 до тех пор, пока она не выдаст число введенное пользователем.

open System
let lookForValue value  =
  let mutable continueLooping = true
  let randomNumberGenerator = new Random()
  while continueLooping do
    let rand = randomNumberGenerator.Next(100)
    printf "%d " rand
    if rand = value then
       printfn "\nFound a %d!" value
       continueLooping <- false

6. Выведите все заглавные буквы русского алфавита.

Вариант 1.

let function3() =
  for c in 'А' .. 'Я' do
    printf "%c " c
  printfn ""
function3()

Вариант 2.

let list1 = ['А' .. 'Я']
for i in list1 do
   printfn "%A" i

7. Подсчитайте количество элементов в списке чисел от 100 до 1 (шаг -3).

let list1=[100..-7..1]
let mutable count = 0
for _ in list1 do
   count <- count + 1
printfn "Number of elements in list1: %d" count

8. Подсчитайте количество элементов в списке чисел от 1 до 100 (шаг 3).

let list1=[1..3..100]
let mutable count = 0
for _ in list1 do
   count <- count + 1
printfn "Number of elements in list1: %d" count

Решение задач несколькими способами, помогает развивать и инвариантность в поиске решения проблемных ситуаций, нахождения оптимальных подходов. Язык F# объединяя в себе императивную, объектно-ориентированную и функциональную технологии программирования позволяют предоставить инвариантные возможности решения одной и той же задачи. Предложенные алгоритмы являются простыми, но, тем не менее, позволяют школьнику продемонстрировать широту знаний и глубину мышления.

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

Читайте также

Список литературы

  1. Александрова Н. Организация самостоятельной деятельности студентов с применением ДО / С. Галаев, Н. Александрова, А. Букушева // Высшее образование в России. 2007. № 10. С. 141-143.
  2. Александрова Н.А. Об использовании технологических средств и информационно-коммуникационных технологий в инклюзивном обучении студентов / Н.А. Александрова, Е.А. Гаврилова // В сборнике: Информационные технологии в образовании Материалы VI Всероссийской научно-практической конференции. Саратовский государственный университет имени Н.Г. Чернышевского. 2014. С. 61-63.
  3. Векслер В.А. Принципы регулирования рынка образовательных услуг // Л.Б. Рейдель, В.А. Векслер // Правовая политика и правовая жизнь. 2013. № 2. С. 36-41.
  4. Векслер В.А. Содержание и организация обучения взрослых основам информационных технологий в системе дополнительного образования: региональный аспект // диссертация на соискание ученой степени кандидата педагогических наук / Амур. гуманитар.-пед. гос. ун-т. Комсомольск-на-Амуре, 2009.

Цитировать

Векслер, В.А. Ознакомление с понятием циклов в школьном курсе информатики на примере языка F# / В.А. Векслер. — Текст : электронный // NovaInfo, 2016. — № 54. — С. 276-281. — URL: https://novainfo.ru/article/8434 (дата обращения: 07.10.2022).

Поделиться