Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003




НазваниеКонспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003
страница5/9
Дата публикации18.11.2013
Размер1.55 Mb.
ТипКонспект
zadocs.ru > Информатика > Конспект
1   2   3   4   5   6   7   8   9
Основные понятия программирования.
Транслятор (англ. translator — переводчик) — это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд. Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

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

Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.

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

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

С другой стороны, Бейсик создавался как язык для начинающих программистов, для которых построчное выполнение программы имеет неоспоримые преимущества.

Иногда для одного языка имеется и компилятор, и интерпретатор. В этом случае для разработки и тестирования программы можно воспользоваться интерпретатором, а затем откомпилировать отлаженную программу, чтобы повысить скорость ее выполнения.

Система программирования — это система для разработки новых программ на конкретном языке программирования.Современные системы программирования обычно предоставляют пользователям мощные и удобные средства разработки программ. В них входят:

  • компилятор или интерпретатор;

  • интегрированная среда разработки;

  • средства создания и редактирования текстов программ;

  • обширные библиотеки стандартных программ и функций;

  • отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе;

  • "дружественная" к пользователю диалоговая среда;

  • многооконный режим работы;

  • мощные графические библиотеки; утилиты для работы с библиотеками

  • встроенный ассемблер;

  • встроенная справочная служба;

  • другие специфические особенности.

Популярные системы программирования — Turbo Basic, Quick Basic, Turbo Pascal, Turbo C. В последнее время получили распространение системы программирования, ориентированные на создание Windows-приложений:

  • пакет Borland Delphi (Дельфи) — блестящий наследник семейства компиляторов Borland Pascal, предоставляющий качественные и очень удобные средства визуальной разработки. Его исключительно быстрый компилятор позволяет эффективно и быстро решать практически любые задачи прикладного программирования.

  • пакет Microsoft Visual Basic — удобный и популярный инструмент для создания Windows-программ с использованием визуальных средств. Содержит инструментарий для создания диаграмм и презентаций.

  • пакет Borland C++ — одно из самых распространённых средств для разработки DOS и Windows приложений.

На практике наиболее распространены следующие формы представления алгоритмов:

  • словесная (запись на естественном языке);

  • графическая (изображения из графических символов);

  • псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);

  • программная (тексты на языках программирования).

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным.

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

Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий (табл.1).

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

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

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

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


  Таблица.1

Графическое представление алгоритмов.

Название символа

  Обозначение и пример заполнения  

Пояснение

Процесс



Вычислительное действие или
последовательность действий

Решение



Проверка условий

Модификация



Начало цикла

  Предопределенный процесс  



  Вычисления по подпрограмме,  
стандартной подпрограмме

Ввод-вывод



Ввод-вывод в общем виде

Пуск-останов



Начало, конец алгоритма,
вход и выход в подпрограмму

Документ



Вывод результатов на печать



Тема 10. Введение в Паскаль.

В настоящее время для разработки современных программ и построения вычислительных процессов широко применяются различные языки программирования. Особенно бурно развивается направление по визуальной разработке программ, в основе которой может быть любой алгоритмический язык. Основное условие визуального программирования - простота и доступность средств языка, составляющего основу для разработки программ. Алгоритмический язык Турбо Паскаль был создан Никлаусом Виртом как учебный вариант языка программирования и входит сейчас в систему визуального программирования Delphi, разработанной фирмой Borland (подразделение Inprise).

Целью разработки языка программирования Турбо Паскаль было создание таких элементов программирования, которые:

-строились бы на небольшом количестве понятий,

-имели бы простой синтаксис,

-допускали бы перевод программ в машинный код простым компилятором.

В системе программирования Турбо Паскаль лежат следующие принципы по построению программ:

Структурное программирование. Суть его заключается в оформлении последовательности команд как замкнутых функций или процедур. Типичным примером может выступать связка операторов begin-end, применяемых в цикловых и условных операторах. Благодаря этому улучшается отладка и повышается наглядность текста программы.

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

Интегрированная среда разработки языка Турбо Паскаль.

Среда для создания программ на алгоритмическом языке Турбо Паскаль версии 7.01 представлена на рис. 3. Данная программа работает под управлением операционной системой MS-DOS, а также может быть настроена для работы в других операционных системах (Microsoft Windows 9x, Me, Windows NT 4.0, Windows XP Professional & Home Edition).



Рис. 3. Интегрированная среда разработки Турбо Паскаль.

Основной экран интегрированной оболочки Турбо Паскаль состоит из трех частей: строки меню, рабочей зоны и строки состояния.

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

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

Edit: позволяет выполнять все основные операции редактирования текста (копировать, вставлять, удалять фрагменты текста, а также восстанавливать первоначальный вариант редактируемого текста).

Search: позволяет осуществлять поиск фрагментов текста и при необходимости производить замену найденного фрагмента новым;

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

Compile: позволяет осуществить компиляцию программы, которая находится в рабочей зоне;

Debug: содержит команды, облегчающие процесс поиска ошибок в программе (например, окно отладки Watch).

Tools: позволяет выполнять некоторые программы, не выходя из интегрированной оболочки.

Options: позволяет выполнить и установить необходимые для работы параметры компилятора интегрированной среды.

Windows: позволяет выполнять все основные операции с окнами (открыть, закрыть, переместить и изменить размер).

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

Язык программирования включает в себя все символы, входящие в основную таблицу кодов, определенных американским стандартом ASCII специально для обмена информацией. Каждому символу присваивается числовое, буквенное или специальное значение. Диапазон значений располагается от 0 до 255.

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

Любая программа, составленная на языке Паскаль, состоит из трех элементов-блоков:

  • заголовок программы;

  • блок описания данных;

  • блок основной программы.



Такая структура позволяет четко отслеживать все этапы построения программы. Например, для ввода используется некоторая переменная A в блоке основной программы. Даная конструкция будет иметь вид Readln (A). В блоке описания данных должна присутствовать ссылка на указание значения переменной A: var A:integer, иначе при выполнении программы будет возникать ошибка. Заголовок используется для обозначения имени программы и может содержать до восьми латинских символов. Также в качестве заголовка применимы и цифры, но первым символом должна быть буква.

Программно-расчетная часть заключена между операторами Begin-End. Другое применение такой конструкции связано с цикловыми и условными операторами.

В качестве примера приведем программу для получения произведения двух чисел, одно из которых имеет значение 3,5, а второе определяется пользователем.

program AxB;

var A, B, S :real;

begin

A:=3.5;

Readln(B);

S:=B*A;

writeln(‘S=’,S);

end.

В результате работы данной программы будет напечатано число S=35, если пользователь введет значение числа B=10. В программе используется оператор (:=), позволяющий присвоить переменной определенное значение. Все строки программы заканчиваются точкой с запятой. Это стандартная операция по написанию программы. Такие элементы (;) обязательно должны присутствовать, иначе при работе с программой возникнет сообщение об ошибке. Исключение составляет ряд операторов в программе, после которых точки с запятой (;) не требуется. В конце программы после оператора end ставится точка. Оператор var в программе определяет, какие данные будут использоваться при расчетах. Вообще, при написании программ с любым количеством переменных, оператор var должен всегда присутствовать. Команда Readln(B) позволяет пользователю в своей программе ввести любое значение (в данном примере вводится переменная B), а команда writeln(‘S=’,S) печатает на экране значение переменной. Понятие ‘переменная’ означает, что числовое значение может изменятся в определенном диапазоне в зависимости от типа данных. В Паскале предусмотрены типы данных, отличных от числовых (н-р, символьные). Подробную информацию о типах можно получить из таблицы 2, представленной ниже.

Для того чтобы выполнить программу, необходимо выбрать команду выполнения.

Когда используется команда "Выполнение" (Run), Тур­бо-Паскаль (по умолчанию) сохраняет сгенерированный машинный код в оперативной памяти (ОЗУ). Это имеет несколько преиму­ществ. Во-первых, компилятор работает намного быстрее, пос­кольку для записи машинного кода в ОЗУ требуется меньше вре­мени, чем для записи его на гибкий или жесткий диск. Во-вто­рых, поскольку программа уже загружена в ОЗУ, для ее выпол­нения нужно только дать указание компьютеру. В-третьих, пос­ле завершения работы Вашей программы более легко передать управление Турбо-Паскалю, поскольку он также остается в ОЗУ в течение всего времени.

Если компиляция с сохранением результата в ОЗУ так эф­фективна, почему бы не использовать ее всегда? На это есть две причины. Во-первых, при такой компиляции сгенерированный машинный код никогда не сохраняется на диске и свои програм­мы вы можете запускать только из Турбо-Паскаля. Здесь нет возможности ни выполнить программу из МС-ДОСа, ни скопиро­вать ее.

Таблица 2

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

Название


Обозначение

Объем памяти

Диапазон


Пример

байт

короткое целое

целое

слово

длинное целое


byte

shortint

integer

word

longint

1

1

2

2

4

0..255

-128..127

-32761..32767

0..65535

-2*109..2*109

13,45,0

-14,89

32000

40000

560000

вещественный

real

6

±10-38.. ±1039

-45,56

символьный

логический

char

boolean

1

1

#0..#255

false..true

A=#65

l:=true;

строковый

string[12]

12+1

Любой набор символов

S:=’строка’


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

Файл с расширением ЕХЕ (прикладную программу), который можно запустить на выполнение вне Турбо-Паскаля, создать нетрудно. Для этого нужно выбрать опцию "Назначение" (Destination) из меню Compile. Эта опция позволяет переклю­чать назначение между Disk (диском) и Memory (памятью). Если вы установите значение Disk, а затем заново оттранслируете свою программу, то Турбо-Паскаль создаст файл с кодом, кото­рый можно будет запустить на выполнение из операционной сис­темы ДОС, напечатав его имя в ответ на подсказку.

При этом создаваемый файл имеет точно такое же имя, как и исходный файл, но другое расширение - .ЕХЕ; например, сге­нерированный файл с кодом для программы МYFIRST.PAS будет иметь имя МYFIRST.ЕХЕ.

Независимо от того, компилируете вы на диск или в память, по команде "Выполнение" (Run) сгенерированная програм­ма выполняется сразу после компиляции.

Команды Compile, Make и Build

Меню Compile имеет множество возможностей, три из кото­рых представляют собой команды компиляции: Compile, Make и Build. Все три команды из исходного файла создают файл типа ЕХЕ (в случае, если значением Destination (Назначение) явля­ется Disk) или файл с расширением .ТРU. Рассмотрим различия между этими командами.

Команда Compile (Компилировать) транслирует файл, нахо­дящийся в редакторе.

Команда Make (Создать) проверяет, не был ли указан ос­новной файл. Определив это, команда просматривает время и дату создания файлов с расширением .РАS и .ТРU (предвари­тельно оттранслированные файлы модулей), содержащих модули, на которые имеются ссылки в операторе uses (если он есть) в компилируемой программе. (Модуль представляет собой совокуп­ность констант, типов данных, переменных, процедур и функ­ций; более подробно об этом см. Главу 4 "Модули и связанные с ними тонкости"). Если в файл с расширением .РАS вносились изменения со времени создания соответствующего файла с рас­ширением .ТРU, то Турбо-Паскаль автоматически оттранслирует этот файл РАS с модулем и создаст новый файл с расширением .ТРU. Турбо-Паскаль также заново оттранслирует модуль, ис­пользующий другой модуль, у которого изменился интерфейс, и модуль, имеющий ссылку на файл с расширением расширением ТРU. Короче говоря, Турбо-Паскаль обеспечивает, чтобы все модули, от которых зависит ваша программа, были обновлены. Выполнив это, Турбо-Паскаль осуществляет компиляцию и компо­новку вашей программы, создавая файл с расширением .ЕХЕ.

Команда Build (Построить) выполняется точно так же, как команда Make, за тем важным исключением, что здесь заново компилируются все модули, используемые вашей программой (как и все модули, используемые этими модулями и так далее), не­зависимо от того, были они изменены или нет.

Ниже приводятся замечание относительно использования Make и Build:

Если Make или Build не могут найти файл с расширением правильным. Таким образом, если ваша программа использует некоторые стандартные модули, то Турбо-Паскаль не пытается оттранслировать их заново.

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

program all_types;

uses crt;

var

a_primer:byte;

b_primer:shortint;

c_primer:integer;

d_primer:word;

e_primer:longint;

f_primer:real;

g:char;

k:string[10];

begin

clrscr;

a_primer:=250;

writeln('Значение укладывается в диапазон',a_primer);

k:='Pascal';

writeln('Turbo ',k);

readln;

end.

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

Далее рассматриваются примеры по работе с математическими функциями в Турбо Паскале при расчете гипотенузы треугольника, используя теорему Пифагора.
program gip_1;

uses crt;

var a,b:integer;

c:real;

begin

clrscr;

writeln('Введите катеты треугольника');

readln(a,b);

c:=sqrt(a*a+b*b);

write('Гипотенуза равна ',c:2:2);

readln;

end.
program gip_2;

uses crt;

var a,b:integer;

c:real;

begin

clrscr;

writeln('Введите катеты треугольника');

readln(a,b);

c:=sqrt(sqr(a)+sqr(b));

write('Гипотенуза равна ',c:2:2);

readln;

end.

program gip_3;

uses crt;

var a,b:integer;

c:real;

begin

clrscr;

writeln('Введите катеты треугольника');

readln(a,b);

c:=sqrt(exp(2*ln(a))+exp(2*ln(b)));

write('Гипотенуза равна ',c:2:2);

readln;

end.
Пример, демонстрирующий работу с целочисленным делением и делением с остатком.
program mod_div;

uses crt;

var

a:integer;

b,d,e:integer;

begin

clrscr;

b:=13;

a:=b mod 4;

d:=b div 4;

b:=3;

e:=b shl 2;

writeln(a,' ', d,' ',e);

readln;

end.

Условные операторы.

В качестве условных операторов могут применятся символы <,>,=, условные операторы If..Else..Then, Case. Как пример, рассмотрим программу для сравнения двух чисел.

Условные операторы позволяют выбрать для выполнения один из составных операторов (или не выбрать ни одного).

Синтаксис оператора if можно представить следующим образом:

Если условие выполнимо, выполнить команду, удовлетворяющую выражению, иначе –нет.

В выражении должен получаться результат, имеющий стандартный булевский тип. Если результатом выражения является истинное значение (True), то выполняется оператор, следующий за ключевым словом then.

Если результатом выражения является значение False и присутствует ключевое слово else, то выполнятся оператор, следующий за ключевым словом else. Если ключевое слово else отсутствует, то никакой оператор не выполняется.

Синтаксическая неоднозначность, возникающая в конструкции:

if e1 then e2 else e3

разрешается путем следующей интерпретации этой конструкции:

if e1 then

begin

if e2 then

s1

else

s2

end
В общем случае ключевое слово else связывается с ближайшим ключевым словом if, которое еще не связано с ключевым словом else.

program if_else;

uses crt;

var

a,b: integer;

begin

clrscr;

readln (a,b);

{Сравниваются 2 числа }

if a = b then writeln ('числа совпадают') else

writeln('нет');

readln;

end.

В данном примере используется условная операция с двунаправленным ветвлением. Если два числа совпадают, то программа информирует об этом пользователя, если нет - предусмотрен отрицательный результат ответа. Конструкция Case позволяет организовать многочисленное ветвление программе, например когда имеется структура по обработке однотипных данных. Обратите внимание на программу – она имеет ступенчатый принцип записи текста. Это сделано для удобства восприятия структуры программы. Фигурные скобки позволяют добавлять комментарии и вносить пояснения к программе.
Оператор варианта (case)
Оператор варианта (casе) состоит из выражения (переключателя) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Переключатель (селектор) должен иметь перечислимый тип (размером в байт или слово), и перечислимые значения верхней и нижней границы этого типа должны лежать в диапазоне от -32768 до 32767. Таким образом, строковый тип и длинный целый тип являются недопустимыми типами переключателя. Все константы выбора дожны быть уникальными и иметь перечислимый тип, совместимый с типом переключателя.

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

Приведем некоторые примеры оператора варианта:

case Operator of

plus: X := X+Y;

minus: X := X-Y;

times: X := X*Y;

end;
case I of

0, 2, 4, 6, 8: Writeln('Четная цифра');

1, 3, 5, 7, 9: Writeln('Нечетная цифра');

10..100: Writeln('Между 10 и 100');

end;

Работа с циклами.

Обработка данных, связанных с периодическими одноименными действиями, называется циклом. В качестве примера приведем программу для вычисления среднего значения ряда чисел от 1..10 и от 10..1. Средние значения, естественно, совпадут, но при записи такой структуры стиль оформления программы изменится.
Операторы цикла с параметром (for)
Операторы цикла с параметром (которые начинаются со слова for) вызывает повторяющееся выполнение оператора (который может быть составным оператором) пока управляющей переменной присваивается возрастающая последовательность значений.

В качестве управляющей переменной должен использоваться идентификатор переменой (без какого-либо квалификатора), который обозначает переменную, объявленную локальной в блоке, в котором содержится оператор for. Управляющая переменная должна иметь перечислимый тип. Начальное и конечное значения должны иметь тип, совместимый по присваиванию с перечислимым типом.

Когда начинает выполняться оператор for, начальное и конечное значения определяются один раз, и эти значения сохраняются на протяжении всего выполнения оператора for.

Оператор, который содержится в теле оператора for, выполняется один раз для каждого значения в диапазоне между начальным и конечным значением. Управляющая переменная всегда инициализируется начальным значением. Когда работает оператор for, значение управляющей переменной (счетчика циклов) увеличивается при каждом повторении на единицу. Если начальное значение превышает конечное значение, то содержащийся в теле оператора for оператор не выполнятся. Когда в операторе цикла используется ключевое слово downto, значение управляющей переменной уменьшается при каждом повторении на единицу. Если начальное значение в таком операторе меньше, чем конечное значение, то содержащийся в теле оператора цикла оператор не выполняется.

Если оператор, содержащийся в теле оператора for, изменяет значение управляющей переменной, то это является ошибкой. После выполнения оператора for значение управляющей переменной становится неопределенным, если только выполнение оператора for не было прервано с помощью оператора перехода.

Если принять во внимание эти ограничения, то оператор:
for V := Expr1 to Expr2 do Body;

эквивалентен оператору:

begin

Temp1 := Expr1;

Temp2 := Expr2;

if Temp1 <= Temp2 then

begin

V := Temp1;

Body;

while V <> Temp2 do

begin

V := Succ(V);

Body;

end;

end;

end;

и оператор цикла:

for V := Expr1 downto Exp2 do Body;

эквивалентен операторам:

begin

Temp1 := Expr1;

Temp2 := Expr2;

if Temp1 >= Temp2 then

begin

V := Temp1;

Body;

while V <> Temp2 o

begin

V := Pred(V);

Body;

end;

end;

end;

где Temp1 и Temp2 - вспомогательные переменные, тип которых совпадает с основным типом переменной V и которые не встречаются в другом месте программы.

Приведем примеры оператора цикла с параметром:
for I := 2 to 63 do

if Data[I] > Max then Max := Data[I]
for I := 1 to 10 do

for J := 1 to 10 do

begin

X := 0;

for K := 1 to 10 do

X := X + Mat1[I,K]*Mat2[K,J];

Mat[I,J] := X;

end;
for C := red to blue do Check(C);

Для примера приведем расчет среднего значения суммы десяти чисел от 1 до 10.
program for_begin_end;

uses crt;

var

I,J:integer;

sred:real;

begin

clrscr;

sred:=0;

for I := 1 to 10 do begin

sred:=sred+I;

write('I=',I,',');

end;

writeln('Sred=',(sred/10):3:1);

readln;

sred:=0;

for J := 10 downto 1 do begin

sred:=sred+J;

write('J=',J,',');

end;

writeln('Sred=',(sred/10):3:1);

readln;

end.

Другой разновидностью циклов является конструкция repeat-until. Цикл представлен в виде с условием в конце.

Оператор цикла с постусловием (repeat)

В операторе цикла с постусловием (начинающимся со слова repeat) выражение, которое управляет повторным выполнением последовательности операторов содержится внутри оператора repeat.

Результатом выражения должен быть результат булевского типа. Операторы, заключенные между ключевыми словами repeat и until, выполняются последовательно до тех пор, пока результат выражения не примет значение True. Последовательность операторов выполнится по крайней мере один раз, поскольку вычисление выражения производится после каждого выполнения последовательности операторов.

Приведем примеры оператора цикла с постусловием:
repeat

K := I mod J;

I := J;

J := K;

until J = 0;
repeat

Write('Введите значение (0..9):');

Readln(I);

until (I >= 0) and (I <= 9);

Пример для использования в программах.

program repeat_until;

uses crt;

var

I:integer;

begin

clrscr;

repeat

Write('Enter value: ');

ReadLn(I);

until (I >= 1) and (I <= 5);

writeln(I);

readln;

end.
Операторы цикла с предусловием (while)
Оператор цикла с предусловием (начинающийся с ключевого слова while) содержит в себе выражение, которое управляет повторным выполнением оператора (который может быть составным оператором).
Выражение, с помощью которого осуществляется управление повторением оператора, должно иметь булевский тип. Вычисление его производится до того, как внутренний оператор будет выполнен. Внутренний оператор выполнятся повторно до тех пор, пока выражение принимает значение Тruе. Если выражение с самого начала принимает значение False, то оператор, содержащийся внутри оператора цикла с предусловием, не выполняется.

Примерами операторов цикла с предусловием могут служить следующие операторы:

while Data[I] <> X do I := I + 1;
While I > 0 do

begin

if Odd(I) then Z := Z * X;

I := I div 2;

X := Sqr(X);

end;
while not Eof(InFile) do

begin

Readln(InFile,Line);

Process(Line);

end;

В следующем примере рассматривается вариант конструкции цикла с условием в начале.

program while_begin_end;

uses crt;

var

Ch:char;

begin

clrscr;

while Ch <>'a' do begin

readln(Ch);

end;

end.

Работа с массивами.

Массив- это последовательная совокупность элементов некоторого типа, которые определяются с помощью индексации этих элементов. В качестве примера рассмотрим программу по суммированию элементов массива.

program array_1;

uses crt;

const n=10;

var

i,sum:integer;

matrix:array[1..n] of integer;

begin

clrscr;

for i:=1 to n do begin

write ('Введите ',i,'-й элемент массива ');

read(matrix[i]);

end;

sum:=0;

for i:=1 to n do sum:=sum+matrix[i];

writeln('Сумма 10 элементов массива Matrix равна',sum);

readln;

end.
program array_2;

uses crt;

const n=5;

var

i,s,r:integer;

matrix:array[1..n] of integer;

begin

clrscr;

for i:=1 to n do begin

write ('Введите ',i,'-й элемент массива ');

read(matrix[i]);

end;

write('Введите число для поиска в массиве');

read(s);

r:=0;

for i:=1 to n do begin

if matrix[i]=s then

begin

r:=r+1;

writeln('Обнаружено',r,'-е число',s,'входящее в массив');

end;

end;

if r<>0 then writeln('Число встречается в массиве',r,'раз')

else writeln('Не встречается');
readln;

end.
program array_3;

uses crt;

const n=3;

var

sum_2_x,sum_3_y:integer;

i:integer;

matrix:array[1..n,1..n] of integer;

begin

clrscr;
matrix[1,1]:=3; matrix[1,2]:=6;matrix[1,3]:=1;

matrix[2,1]:=4; matrix[2,2]:=15;matrix[2,3]:=2;

matrix[3,1]:=2; matrix[3,2]:=16;matrix[3,3]:=3;
sum_2_x:=0;sum_3_y:=0;

for i:=1 to n do begin

sum_2_x:= sum_2_x+matrix[2,i];

sum_3_y:= sum_3_y+matrix[i,3];

end;

writeln(sum_2_x);

writeln(sum_3_y);

readln;

end.
Отладочные процедуры и поиск ошибок. Создание новых подпрограмм и функций.

Процедура- это отдельный элемент программы, представляющей собой готовый расчетный модуль с произвольным количеством вводимых элементов и позволяющий связывать результат вычислений с основной программой. Функции – процедуры особого характера, результатом работы которых является некоторое значение, подобное переменной. Функция, как и процедура, может иметь список параметров, следующих за именем функции в круглых скобках. Но если имя процедуры используется только для вызова, то с именем функции связывается её значение. В качестве примера рассмотрим две программы по расчету гипотенуза прямоугольного треугольника. Вычисления проведем в процедуре, а затем в функции.

program proc;

uses crt;

var

a,b:integer;

c:real;
procedure hipotenuse(a,b:integer;var c:real);

begin

c:=sqrt(sqr(a)+sqr(b));

end;
begin

clrscr;

writeln('Введите значения катетов a,b');

readln(a,b);

hipotenuse(a,b,c);

writeln('c=',c:2:2);

readln;

end.
program funct;

uses crt;

var

a,b:integer;

c:real;
function hupotenuse(a,b:integer):real;

begin

hupotenuse:=sqrt(sqr(a)+sqr(b));

end;

begin

clrscr;

writeln('‚'Введите значения катетов a,b ');

readln(a,b);

c:=hupotenuse(a,b);

writeln('c=',c:2:2);

readln;

end.

Работа со строками и преобразование типов данных.

В Паскале реализованы специальные функции по работе со строками. Ниже рассматриваются некоторые из них.

  1. Функция Length

Возвращает динамически изменяющуюся длину строки.

Function Length (S:String):Integer;
Пример:

k:=Length (S);


  1. Функция Pos

Производит поиск подстроки в строке.

Function Pos (Substr:String; S:String):Integer;
Пример:

S:=’строка’;

k:=Pos (‘OK’,S);


  1. Процедура Delete

Удаляет m символов, начиная с позиции n.

Procedure Delete (var S:String;Index:byte)

Delete (var S:string;n,m:byte)
Пример:

S:= ’строка’;

Delete (S,4,2);
4. Процедура Insert

procedure Insert (Source:String;var S:String;Index:Integer);

Вставляет символы в строку, начиная с позиции Index.

Пример:

Var

S:String;

Begin

S=’строка’;

Insert (‘++’,S,4);

5 Процедура ConCat

procedure ConCat (var S:string; S1..Sn:string);

Складывает все подстроки в строке.

Пример:

S:=Concat (‘ABC’,’DEF’);

В следующей программе демонстрируется работа со строками путем вызова стандартных библиотечных функций алгоритмического языка Турбо Паскаль.

program string_types;

uses crt;

var
s:string;

k:integer;

begin

clrscr;

s:='‹Лекция';

k:=length(s);

writeln(k);

S := Concat('ABC', 'DEF'); { 'ABCDE' }

writeln(s);

S := '’ Татьяна Петрова ';

Insert(' Ивановна ', S, 8);

writeln(s);

readln;

end.
Введение в файловый ввод-вывод
В Паскале имеются три вида файлов: файл, связанный с определенным типом данных, текстовый файл и файл, связанный с неопределенным типом данных.

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

Когда связь с внешним файлом установлена, для подготовки ее к операции ввода или вывода файловая переменная должна быть "открыта". Существующий файл можно открыть с помощью процедуры Reset, а новый файл можно создать и открыть с помощью процедуры Rewrite. Текстовые файлы, открытые с помощью процедуры Reset доступны только по чтению, а текстовые файлы, открытые с помощью процедуры Rewrite, доступны только по записи. Файлы, связанные с определенными и неопределенными типами данных, всегда допускают как чтение, так и запись, независимо от того были они открыты с помощью процедуры Reset или с помощью процедуры Rewrite.

Любой файл, представляет собой линейную последовательность элементов, каждый из которых имеет тип элемента (или тип записи) файла. Каждый элемент файла имеет номер. Первый элемент файла считается нулевым элементом.

Обычно доступ к файлам организуется последовательно, то есть, когда элемент считывается с помощью стандартной процедуры Read или записывается с помощью стандартной процедуры Write, текущая позиция файла перемещается к следующему по порядку элементу файла. Однако к типизованным и нетипизованным файлам можно организовать прямой доступ с помощью стандартной процедуры Sееk, которая перемещает текущую позицию файла к заданному элементу. Для определения текущей позиции в файле и текущего размера файла можно использовать стандартные функции FileРоs и Filesize.

Когда программа завершает обработку файла, он должен закрываться с помощью стандартной процедуры Close. После полного закрытия файла связанный с ним внешний файл обновляется. Затем файловая переменная может быть связана с другим внешним файлом.
Функции ввода-вывода

Функция Описание

Eоf Возвращает для файла состояние end-of-file

(конец файла).

FilePos Возвращает текущую позицию в файле. Для текстовых файлов не используется.

FileSize Возвращает текущий размер файла. Для текстовых файлов не используется.

Процедуры ввода-вывода

Процедура Описание

Assign Присваивает имя внешнего файла файловой переменной.

ChDir Выполняет смену текущего каталога.

Close Закрывает открытый файл.

Erase Стирает внешний файл.

Getdir Возвращает текущий каталог на заданном диске.

MkDir Создает подкаталог.

Rеnаме Переименовывает внешний файл.

Rеset Открывает существующий файл.

Rewritе Создает и открывает новый файл.

RмDir Удаляет пустой подкаталог.

Seek Перемещает текущую позицию в файле на заданный элемент. Для текстовых файлов не используется.

Truncate Усекает размер файла до текущей позиции.

Для текстовых файлов не используется.
Программа для записи в файл десяти чисел в обратном порядке.
program file_1;

uses crt;

var

F:text;

i:integer;

begin

Assign(F, 'string.txt');

Rewrite(F);

for i:=1 to 10 do begin

Writeln(F, 10-i);

end;

Close(F);

readln;

end.
Программа для записи в файл текстовых сток.
program file_2;

uses crt;
var F: Text;

begin

Assign(F, 'TEST.TXT');

Rewrite(F); { Создание нового файла }

Writeln(F, 'Лекция');

Close(F); { Закрытие файла и запись его на диск}

Append(F); { Добавить текст к файлу}

Writeln(F, ' по информатике');

Close(F); { Закрытие файла }

end.
Программа по записи в файл кубов элементов массива от большего числа к меньшему.
program file_3;

uses crt;

const n=5;

var

a: array [1..n] of integer;

b:integer;

i,j,k:integer;

f:text;

begin

clrscr;

for i:=1 to n do begin

writeln('Введите ',i,'-й элемент массива');

readln(a[i]);

end;

b:=-32768;

for i:=1 to n do begin

for j:=i to n do begin

if (b
end;

if (k<>i) then begin a[k]:=a[i];a[i]:=b*b*b;end

else a[i]:=b*b*b;

if (i
writeln (a[i]);

end;

assign(f,'file.txt');

rewrite(F);

for i:=1 to n do begin

writeln(f, a[i]);

end;

close(f);

readln;

end.
Программа по использованию команд для чтения и записи в файл.
program file_4;

uses crt;

var

f: file of Integer;

i,j: Integer;

begin

Assign(f,'TEST.INT');

Rewrite(f);

for i := 1 to 6 do

Write(f,i);

Writeln(Файл до преобразования:');

Reset(f);

while not Eof(f) do

begin

Read(f,i);

Writeln(i);

end;

Reset(f);

for i := 1 to 3 do

Read(f,j); { Прочитать 3 символа }

Truncate(f); { Далее очистить }

Writeln;

Writeln('Файл после преобразования:');

Reset(f);

while not Eof(f) do

begin

Read(f,i);

Writeln(i);

end;

Close(f);

Erase(f);

end.

Тема 11.
1   2   3   4   5   6   7   8   9

Похожие:

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconУчебное пособие Воронеж 2011 фгбоу впо ”Воронежский государственный технический университет ”
Утверждено Редакционно-издательским советом университета в качестве учебного пособия

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconКраткий курс лекций по грамматике английского языка Утверждено Редакционно-издательским советом
Краткий курс лекций по грамматике английского языка: Учеб. Пособие. Магнитогорск: мгту им. Г. И. Носова, 2001. — 71 с

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconИнженерная графика учебное пособие
Утверждено редакционно-издательским советом спбгиэу в качестве учебного пособия для спец. 220501, 080502(1), 080502(7)

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconРеспублики Беларусь Учреждение образования «Витебская ордена «Знак...
Утверждено редакционно-издательским советом академии в качестве учебно-методического пособия

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconЧетверикова Ю. И. История экономических учений утверждено Редакционно-издательским...
Рекомендуется для студентов вузов, а также для самостоятельно изучающих историю экономических учений

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconКонтрольная работа №1 по дисциплине
Допущено редакционно-издательским советом спбгиэу в качестве методических указаний

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconЭтика курс лекций (на основе книги: Этика (конспект лекций)
Этика (конспект лекций). – М.: «Приор-издат», 2002. Автор-составитель Аристотель. Никомахова этика. Сочинения: в 4-х т. Т. М.: Мысль,...

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconУчебно-методическое пособие подготовлено в соответствии с программой...
Утверждено редакционно-издательским советом академии в качестве учебного пособия для студентов 3-го курса факультета заочного обучения...

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconД. А. Белухин педагогическая этика: желаемое и действительное
...

Конспект лекций Утверждено Редакционно-издательским советом в качестве конспекта лекций Воронеж 2003 iconКонспект лекций Донецк 2003 министерство образования и науки украины
Аветисова А. А. Основы предпринимательства. Опорный конспект. Донецк, Дон гуэт, 2003. – 195 с

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
zadocs.ru
Главная страница

Разработка сайта — Веб студия Адаманов