Шпаргалка по "Алгоритмические языки"

Автор: Пользователь скрыл имя, 22 Января 2011 в 20:59, шпаргалка

Описание работы

Язык программирования. Алгоритмические языки.
Понятие алгоритма, виды алгоритмов.
Основные свойства алгоритмов.
Операторы языка программирования Pascal.
Оператор присваивания.
Оператор ветвления (условный оператор).
Операторы цикла.
Типы данных языка Pascal, операторы преобразования типов.
Арифметические операции и выражения в языке Pascal. Правила записи арифметических выражений.
Функции для работы со строками.
Массивы в языке Pascal. Статические и динамические массивы.
Функции работы с датой и временем.
Логические выражения в языке Pascal.
Локальные и глобальные переменные.
Понятие подпрограммы. Виды подпрограмм.
Понятие процедуры, формальные, фактические параметры.
Понятие функции, формальные, фактические параметры.
Рекурсия.
Работа с файлами.
Компоненты среды программирования Delphi.
Отладка, пошаговая троссировка программ в среде Delphi.

Работа содержит 1 файл

ответы.doc

— 278.50 Кб (Скачать)

    Assignment = Designator ":=" Expression.  
 
 
 
 
 

    Рекурсия

    В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия), например, функция A вызывает функцию B, а функция — функцию A. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.

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

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

    Впрочем, имеется специальный тип рекурсии, называемый «хвостовой рекурсией». Интерпретаторы и компиляторы функциональных языков программирования, поддерживающие оптимизацию кода (исходного и/или исполняемого), автоматически преобразуют хвостовую рекурсию к итерации, благодаря чему обеспечивается выполнение алгоритмов с хвостовой рекурсией в ограниченном объёме памяти. Такие рекурсивные вычисления, даже если они формально бесконечны (например, когда с помощью рекурсии организуется работа командного интерпретатора, принимающего команды пользователя), никогда не приводят к исчерпанию памяти. Однако, далеко не всегда стандарты языков программирования чётко определяют, каким именно условиям должна удовлетворять рекурсивная функция, чтобы транслятор гарантированно преобразовал её в итерацию. Одно из редких исключений — язык Scheme (диалект языка Lisp), описание которого содержит все необходимые сведения.

    рекурсия - это подпрограмма (процедура), вызывающая сама себя. 
 
 
 
 
 
 
 
 
 

    Работа с файлами

    Работа с файлами важная вещь в любом языке программирования. Работа с файлами в Delphi позволяет считывать, сохранять информацию, и выполнять другие действия с файлами. В Delphi поддерживаются все операции с файлами - создание, поиск, чтение и запись, переименование как файлов, так и к директорий. В Delphi существует несколько способов работы с файлами
   ния нужно упомянуть компоненты Delphi, которые умеют работать с файлами. Они читают и сохраняют своё содержимое, строки типа String, в файл текстового формата. Это компоненты ListBox, ComboBox и
Memo, расположенные на первой же вкладке палитры компонентов. 
   Каждая строка компонентов ListBox и ComboBox является объектом Items[i], а Memo - Lines[i], где i - номер строки, который отсчитывается от нуля. Добавление строк в компоненты выполняется методами Add и Insert
  begin 
   Memo1.Lines.Add('Первая строка'); 
   ComboBox1.Items.Add('Первая строка'); 
   ComboBox1.Items.Add('Вторая строка'); 
   ListBox1.Items.Add('Первая строка'); 
   ListBox1.Items.Add('Вторая строка'); 
  end ; 
Метод Add добавляет новую строку в конец. Метод Insert имеет дополнительный параметр, указывающий, после какой строки разместить новую строку. Доступ к строкам осуществляется так: 
 
   ComboBox1.Items[0] := 'Первая строка изменилась' ; 
   ListBox1.Items[1] := 'Вторая строка изменилась' ; 
Items.Count - количество содержащихся в компоненте строк. Так как отсчёт строк идёт от нуля, мы отнимаем единицу. После очередного удаления количество строк меняется, таким образом, Items.Count-1 всегда указывает на последнюю строку. Последовательно нажимая Escape, мы можем удалить все строки. Командой 
   ComboBox1.Items.Delete(0); 
можно добиться того же эффекта, только удаляться будут первые строки. Впрочем, чтобы стереть всё сразу, есть метод Clear
Ну а теперь собственно о сохранении содержимого в файл. Для этого выполните команду 
  ListBox1.Items.SaveToFile(' Имя_файла.txt ') ; 
Впрочем, расширение можно поставить любое по желанию, не обязательно .txt, как и вообще без него обойтись. Но расширение .txt позволит легко открыть файл стандартным виндовским Блокнотом, что бывает очень удобно на этапе написания программы! 
Для загрузки служит метод LoadFromFile: 
   ListBox1.Items.LoadFromFile(' Имя_файла.txt ') ; 
сохранять информацию нужно? Берём один из компонентов и делаем его невидимым, для этого в Инспекторе Объектов ставим в свойство Visible значение False. Функциональность его от этого не изменится! 
Последний штрих - создадим программу, сохраняющую своё положение на экране в момент закрытия и там же открывающуюся. Нам нужно сохранить два параметра - значения свойств Формы Left и Top, это расстояние от левого и верхнего краёв экрана соответственно. Значения эти выражаются в пикселах и имеют тип Integer. Необходимо перевести эти числа в строку (тип String) с помощью оператора IntToStr. Итак, разместите на Форме невидимый ListBox, щёлкните по пустому месту Формы, чтобы её свйства появились в Инспекторе объектов, и перейдите на вкладку Events. Щёлкните по обработчику OnClose и в созданной заготовке напишите: 
 
  begin 
   ListBox1.Items.Clear; 
   ListBox1.Items.Add(IntToStr(Form1.Left)); 
   ListBox1.Items.Add(IntToStr(Form1.Top)); 
   ListBox1.Items.SaveToFile('MyFormPos.txt'); 
  end ; 
 
Этот обработчик сохраняет положение Формы на экране. Теперь напишем обработчик, помещающий Форму на прежнее место при старте программы. Создайте заготовку обработчика события OnCreate. Это событие происходит в момент "создания" Формы операционной системой. В этот момент и нужно присваивать ей необходимые свойства. Пишите: 
 
  begin 
   if FileExists('MyFormPos.txt') then 
    begin 
     ListBox1.Items.LoadFromFile('MyFormPos.txt'); 
     Form1.Left:=StrToInt(ListBox1.Items[0]); 
     Form1.Top:=StrToInt(ListBox1.Items[1]); 
    end ; 
  end ; 
 
   В первой строке происходит проверка на существование файла, ведь если его не будет, произойдёт ошибка. Впрочем, программа после выдачи предупреждения откроется в том месте, где была на этапе проектирования, а при закрытии нужный файл будет воссоздан! 
   Затем в логических скобках begin / end содержится сам код, который будет выполнен только приналичии файла MyFormPos.txt в папке с программой, так как используется относительный путь. Можно указать конкретное местоположение, например, C:\Program Files\MyProg\MyFormPos.txt. 
 
   Копирование файлов

    Для копирования файлов применяется  функция CopyFile. Формат ее такой:

    CopyFile(Исходный_файл,Записуемый_файл,Флаг_перезаписи);

    где: Исходный_файл – полный путь и название файла, который копируется;

    Записуемый_файл – полный путь и название файла, куда копируется исходный файл;

    Флаг_перезаписи – будет или нет перезаписан файл, если таковой уже существует (true - не будет, false - будет перезаписан).

    CopyFile является функцией, которая возвращает  флаг успешной или нет операции  копирования.

    Например, следующая строка:

    if not CopyFile('c:\command.com','c:\1.com',true) then ShowMessage('Ошибка копирования');

    скопирует файл command.com в файл 1.com только в том  случае, если последнего нет, в противном  случае будет выдаваться сообщение  об ошибке копирования.

    Перемещение файлов

    Для перемещения файлов применяется функция MoveFile. Она имеет следующий формат:

    MoveFile(Исходный_файл,Записуемый_файл);

    Ее  параметры аналогичны вышерассмотренной  команде за исключением отсутствия флага перезаписи.

    Пример:

    if not MoveFile('c:\1.com','c:\2.com') then ShowMessage('Ошибка перемещения');

    Переименование файлов

    Функция RenameFile

    if not RenameFile('c:\2.com','c:\3.com') then ShowMessage('Ошибка переименования');

    Удаление  файлов

    Функция DeleteFile

    if not DeleteFile('c:\3.com') then ShowMessage('Ошибка удаления');

    Команда AssignFile осуществляет привязку строки пути файла к файловой переменной. Все дальнейшие операции с файловой переменной автоматически осуществляются с указанным файлом.

    IOResult – переменная, которая хранит  в себе код ошибки последней  операции ввода-вывода. Если она  равна нулю, то последняя операция была успешно выполнена.

    EOF(Файл) – функция, возвращающая признак  конца файла. Т.е. она показывает, достигнут или нет конец открытого  файла.

    ReadLn(Файл,Переменная) – процедура считывания переменной  из файла. В отличие от команды  Read производит считывание строки с завершающимся символом перевода строки под кодами 13 и 10 (клавиша Enter).

    CloseFile(Файл) – процедура закрытия ранее  открытого файла.

Компоненты  среды программирования

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

Компоненты среды  программирования:

1. Редактор – это средство для создания и изменения исходных файлов, которые содержат написанную на языке программирования программу.

Условно редакторы делятся на два типа.

Первый тип  работает с последовательностью  символов в текстовых файлах и  обеспечивают расширенную функциональность – подсветку синтаксиса, сортировку строк, конвертацию кодировок, показ  кодов символов и т.п. Часто такие  редакторы называют редакторами кода, поскольку основное их назначение – это написание исходных кодов компьютерных программ. Примеры таких редакторов: Emacs (один из самых мощных по возможностям многоцелевой, свободный редактор); jEdit (свободный редактор на Java); Kate (мощный расширяемый свободный текстовый редактор с подсветкой синтаксиса для массы языков программирования и разметки); Notepad (входит в состав Microsoft Windows); Vim (один из самых мощных по возможностям редактор для программистов); EditPlus (текстовый редактор для Windows, предназначенный для программирования и веб-разработки) и др.

Второй тип  редакторов имеет расширенные функции  форматирования текста, внедрения в  него графики и формул, таблиц и  объектов. Такие редакторы часто  называют текстовыми процессорами и предназначены они для создания текстовых документов. К таким текстовым процессорам можно отнести Microsoft Word, WordPad и др.

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

3. Компоновщик или редактор связей – собирает объектные файлы отдельных компонентов программы и разрешает внешние ссылки от одного компонента к другому, формируя исполняемый файл.

4. Загрузчик – копирует исполняемый файл с диска в память и инициализирует компьютер перед выполнением программы.

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

6. Средства тестирования – автоматизирует процесс тестирования программ, создавая и выполняя тесты и анализируя результаты тестирования.7. Интерпретатор – выполняет исходный код программы в отличие от компилятора, переводящего исходный файл в объектный.

 
Отладка, пошаговая троссировка программ в среде Delphi.

В Delphi имеется  мощный встроенный отладчик, значительно  упрощающий отладку программ. Основными  инструментами отладки являются точки контрольного останова и окно наблюдения за переменными.  
 
Точки контрольного останова  
Точка контрольного останова определяет оператор в программе, перед выполнением которого программа прервет свою работу и управление будет передано среде Delphi. Точка останова задается с помощью опции view | Debug windows | Breakponts.  
 
 
Окно точек останова содержит список всех установленных в проекте точек, перед выполнением которых происходит прекращение работы программы и управление получает среда Delphi.  

 

Принудительное  прерывание работы программы  
 
Если программа запущена из среды Delphi, ее работу можно прервать в любой момент G помощью клавиш Ctrl+F2, кнопки, опцией Run | program pause или, наконец, установив точку контрольного останова в той части программы, которая выполняется в данный момент или будет выполнена.  
 
Трассировка программы  
 
Перед исполнением оператора, в котором установлена точка контрольного останова, работа программы будет прервана, управление получит среда Delphi, a в окне наблюдения отразится текущее значение наблюдаемых переменных и/или выражений. Теперь программист может прослеживать работу программы по шагам с помощью клавиш F7 и F8 или инструментальных кнопок. При нажатии F8 будут выполнены запрограммированные в текущей строке действия, и работа программы прервется перед выполнением следующей строки текста программы. Замечу, что контрольная точка останова выделяется по умолчанию красным цветом, а текущая прослеживаемая строка - синим. Если программа остановлена в контрольной точке, т.е. когда текущая строка совпадает со строкой останова, строка выделяется красным цветом, Признаком текущей строки является особое выделение строки в служебной зоне слева в окне редактора (см. рис. П1.18).

Кстати, чтобы  установить/снять точку контрольного останова, достаточно щелкнуть мышью  по служебной зоне слева от нужной строки или установить в эту строку текстовый курсор и нажать F5.  
 
При нажатии F7 среда выполняет те же действия, что и при нажатии F8, однако, если в текущей строке содержится вызов подпрограммы пользователя, программа прервет свою работу перед выполнением первого исполняемого оператора этой подпрограммы, т.е. клавиша F7 позволяет прослеживать работу вызываемых подпрограмм.  
 
 
После трассировки нужного фрагмента программы можно продолжить нормальную ее работу, нажав клавишу F9.

Информация о работе Шпаргалка по "Алгоритмические языки"