Читать реферат по информатике, вычислительной технике, телекоммуникациям: "О пользе циклов" Страница 1

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

О пользе циклов.

Расскажу немного о циклах. Ведь почти не одна, даже очень простенькая программа, не обходится без циклов. Циклы позволяют выполнить одну или несколько строк кода несколько раз. Visual Vasic поддерживает следующие конструкции:

Do...Loop

For...Next

For Each...Next

Конструкция Do...Loop.

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

1. Создайте на диске с: какой-нибудь текстовый файл (желательно несколько строк), допустим text.txt.

2. Впишите в модуль:

Sub Main()

объявляем переменную, которая принимает строки

Dim Linia As String

объявляем переменную, которая будет содержать весь текст

Dim AllText As String

Open "c:\text.txt" For Input As #1 открываем файл text.txt для чтения

!!! запускаем цикл, который длится до тех пор, пока

не будет достигнут конец файла EOF ( End Of File) !!!

Do Until EOF(1)

Line Input #1, Linia вводим линию за линией в переменную Linia

записываем каждую новою линию + переход на новую строку

AllText = AllText + Linia + Chr(13) + Chr(10)

Loop

Close #1 закрываем файл

MsgBox AllText выводим на экран сообщение

End Sub

Это пример показал, что программист не знает КОГДА наступит конец файла, но задал условие прекратится как только конец файла будет достигнут. Теперь о том, как можно работать с этим циклом.

Во-первых, можно создавать конструкции со словами Until и While:

Do [Until | While] условие

Если установленно ключевое слово While, то цикл будет запускаться до тех пор, пока условие истинно, а Until "крутит" цикл пока условие ложно. Сейчас объясню. В нашем примере стоит

Do Until EOF(1)

т.е. пока EOF(1) = False цикл работает. Другими словами строки считываются пока НЕ достигнут конец файла. Можно поставить вместо этого это:

Do While Not EOF(1)

Теперь работа цикла ничуть не изменится. Ведь мы хоть и поменяли условие, но цель оставили прежней! Not EOF(1) значит что EOF(1) ложно, конец файла не достигнут. А так как While работает только тогда, когда условие ложно, то цикл продолжает работать!

Во-вторых, эти ключевые слова можно менять местами и ставить можно как в начало цикла:

Do [Until | While] условие

так и в конец цикла

Loop [Until | While] условие

Разница состоит в том, что цикл может исполниться хотя бы один раз или не исполнится вообще. В нашем случае слово Until стоит в начале, значит если файл окажется пустым, то тут же будет достигнут конец файла, условие сразу станет ложным и цикл тут же перестаёт работать! Попробуйте теперь взять и перенести слова Until EOF(1) на один пробел от Loop. Запустите проект. Ага!!! Ошибка! Знаете почему? Потому что оператор Line Input# пытается считать строку в то время как конец файла уже достигнут. Цикл упустил этот момент, т.к. засечь он его может в конце, а до конца он не дойдёт. Приведу так же пример из моего примера в "Практике":

Do

с помощью InStr получаем местоположение искомого символа

если оно равно нулю, покидаем цикл

ReturnNumber = InStr(1, Stroka, Symbol): If _

ReturnNumber = 0 Then Exit Do

строке присваем все символы слева до искомого символа и справа

Stroka = Left(Stroka, ReturnNumber - 1) + _

Right(Stroka, Len(Stroka) - ReturnNumber)

Loop

Здесь невозможно воспользоваться ни Until, ни While, и вот почему: если ReturnNumber будет равно нулю, то, допустим, здесь

Left(Stroka, ReturnNumber - 1)


Интересная статья: Быстрое написание курсовой работы