Точки останова программы

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

Добавление точки останова

Для того чтобы поставить в программу точку останова (breakpoint), нужно выбрать из меню команду Run / Add Breakpoint / Source Breakpoint. В результате открывается диалоговое окно Add Source Breakpoint (рисунок 5), в котором выводится информация о добавляемой точке останова.

Рисунок 5 – Диалоговое окно Add Source Breakpoint

Поле Filename содержит имя файла программы, куда добавляется точка останова, поле Line number – номер строки программы, в которую добавляется точка останова.

После щелчка на кнопке ОК точка останова добавляется в программу, и строка, в которой находится точка останова, помечается красной точкой и выделяется цветом.

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

Для точки останова можно задать условие, при выполнении которого программа приостановит свою работу в данной точке (например, если значение переменной равно определенной величине). Условие (логическое выражение) вводится в поле Condition (Условие) диалогового окна Add Source Breakpoint.

НЕ нашли? Не то? Что вы ищете?

Если для точки останова задано условие, то программа приостанавливает свою работу только в том случае, если выражение, находящееся в поле Condition, истинно (его значение равно TRUE).

Кроме условия для точки останова, можно задать количество пропусков данной точки. Если во время добавления в программу точки останова в поле Pass count (Число пропусков) диалогового окна Add Source Breakpoint записать отличное от нуля число, то программа приостановит свою работу в этой точке только после того, как инструкция, находящаяся в строке, помеченной точкой останова, будет выполнена указанное число раз.

Изменение характеристик точки останова

Программист может изменить характеристики точки останова. Для этого надо выбрать из меню команду View / Debug Windows / Breakpoints. В открывшемся диалоговом окне Breakpoint List (рисунок 6) нужно щелкнуть правой кнопкой мыши в строке, содержащей информацию о нужной точке останова, и в появившемся контекстном меню выбрать команду Properties. В результате открывается диалоговое окно Source Breakpoint Properties, в котором можно изменить характеристики точки останова, например, изменить условие (содержимое поля Condition) остановки программы в данной точке. Используя это же контекстное меню, можно быстро перейти к инструкции, в которой находится точка останова; для этого надо выбрать команду Edit Source.

Рисунок 6 – Окно Breakpoint List

Удаление точки останова

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

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

Наблюдение значений переменных

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

Для того чтобы во время выполнения программы по шагам иметь возможность контролировать значение переменной, нужно добавить имя этой переменной в список наблюдаемых элементов (Watch List). Для этого надо выбрать из меню команду Run / Add Watch (Добавить наблюдаемый элемент) и в поле Expression появившегося диалогового окна Watch Properties (рисунок 7) ввести имя переменной.

Рисунок 7 – Добавление имени переменной в список Watch List

В результате в список Watch List, содержимое которого отражается в диалоговом окне Watch List, будет добавлен новый элемент. Так как переменные программы существуют (и, следовательно, доступны) только во время выполнения программы, то после имени переменной выводится сообщение: process not accessible (процесс недоступен).

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

Чтобы завершить процесс пошагового выполнения программы, нужно выбрать из меню команду Run / Program Reset.

Вопросы для самоконтроля [1,2]:

1.  В чем заключается метод нисходящего проектирования?

2.  Опишите последовательность действий при разработке ФСА приложения.

3.  В чем заключается модульное программирование?

4.  Что такое модуль? Перечислите его характеристики. Опишите структуру модуля.

5.  В чем заключается структурное программирование?

6.  Дайте определение тестированию и отладке.

7.  Как классифицируются ошибки? Что такое отладчик?

8.  Что такое трассировка? Опишите режимы трассировки.

9.  Что такое точка останова? Как добавить, изменить и удалить точку останова в программе?

РАЗДЕЛ 6. Развитые средства Delphi.

Организация файлов с различными типами доступа. Открытие и закрытие файлов. Запись в файл. Считывание из файла. Операции с файлами: копирование, удаление, переименование. Понятия о базах данных и СУБД. Технологии BDE для доступа к данным. Компоненты доступа к данным TTable и TQuery.

Студент должен знать:

ü  принципы хранения информации;

ü  принципы организации файлов с различными типами доступа;

ü  основные операции с файлами: копирование, удаление, переименование;

ü  понятия базы данных и СУБД;

ü  организацию доступа к данным в Delphi;

ü  компоненты доступа к данным.

Студент должен уметь:

ü  организовывать запись и чтение информации в файлы с различными типами доступа;

ü  применять основные операции с файлами: копирование, удаление, переименование;

ü  организовывать доступ к данным в Delphi;

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

Теоретическое обоснование

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

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

В зависимости от типа элементов различают три вида файла:

1.  типизированный файл – файл, состоящий из элементов фиксированного размера; элементами такого файла чаще всего являются записи;

2.  нетипизированный файл – файл, состоящий из элементов переменного размера; такой файл рассматривается просто как последовательность байтов;

3.  текстовый файл; элементами такого файла являются текстовые строки.

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

Для работы с типизированным файлом переменная объявляется с помощью словосочетания file of, после которого записывается тип элемента:

Объявление переменной для работы с нетипизированным файлом выполняется с помощью отдельного слова file:

Для работы с текстовым файлом переменная описывается с типом TextFile:

Работа с текстовыми файлами

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

В результате этого действия поля файловой переменной F инициализируются начальными значениями. При этом в поле имени файла заносится строка 'MyFile. txt'.

Так как файла еще нет на диске, его нужно создать:

Теперь запишем в файл несколько строк текста. Это делается с помощью процедур Write и Writeln:

При работе с файлами первый параметр этих процедур показывает, куда происходит вывод данных.

После работы файл должен быть закрыт:

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

Для чтения элементов используются процедуры Read и Readln, в которых первый параметр показывает, откуда происходит ввод данных. После работы файл закрывается. В качестве примера приведем программу, распечатывающую в своем окне содержимое текстового файла 'MyFile. txt':

Так как обычно размер файла заранее не известен, перед каждой операцией чтения вызывается функция Eof, которая возвращает True, если достигнут конец файла.

Операции с файлами

Основные понятия о базах данных и СУБД

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

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

База данных (БД) – совокупность данных различного характера, организованных по определенным правилам. БД обеспечивает хранение информации, а также удобный и быстрый доступ к данным.

Система управления базой данных (СУБД) – это совокупность языковых программных средств, предназначенных для создания, ведения и использования БД. По характеру применения СУБД разделяют на персональные и многопользовательские.

Персональная СУБД обеспечивает возможность создания локальных БД, работающих на одном компьютере. К персональным БД относятся Paradox, dBase, FoxPro, Access и др.

Многопользовательские СУБД позволяют создавать информационные системы, функционирующие в архитектуре «клиент-сервер». Наиболее известными многопользовательскими СУБД являются Oracle, Informix, SyBase, Microsoft SQL Server, InterBase.

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

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

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

Технология BDE для доступа к данным

При создании программ, работающих с базами данных, в системе Delphi используется механизм Borland Database Engine (BDE) – процессор баз данных, который представляет собой совокупность динамических библиотек и драйверов, обеспечивающих доступ к данным из Delphi-приложений.

BDE должен устанавливаться на всех компьютерах, на которых выполняются Delphi-приложения, осуществляющие работу с БД. Приложение через BDE передает запрос к базе данных, а обратно получает требуемые данные. БД располагаются на том же компьютере, что и работающие с ними приложения.

Для доступа к БД процессор баз данных BDE использует драйверы, которые позволяют работать с базами данных в стандарте таких СУБД, как Paradox, dBase, FoxPro, а также с текстовыми файлами.

Компоненты доступа к данным

Компоненты, используемые для создания приложений БД можно разделить на два основных класса:

Ø  невизуальные компоненты, предназначенные для организации доступа к базе данных. Эта группа компонентов располагается на странице Data Access палитры компонентов.

Ø  визуальные компоненты, предназначенные для отображения содержимого базы данных. Эта группа компонентов располагается на странице Data Controls палитры компонентов.

В Delphi для работы с наборами данных с использованием BDE служат компоненты TTable и TQuery. Эти компоненты располагаются на странице BDE палитры компонентов.

На рисунке 8 представлен механизм взаимодействия вышеуказанных компонентов приложения и таблицы БД.

Рисунок 8 – Организация работы с БД посредством BDE

В приложении с BDE взаимодействуют компоненты доступа к данным, которые представляют собой "образ" таблицы базы данных в приложении.

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

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

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

Рассмотрим этапы создания простейшего приложения баз данных:

1.  Подключение набора данных.

Компоненты доступа к данным (невизуальные компоненты) являются основой приложения БД. В процессе работы такие компоненты тесно взаимодействуют с BDE.

Для размещения компонентов доступа к данным в приложении БД можно использовать как основную форму, так и специальную форму – модуль данных. В отличие от основной формы пользователь не увидит модуль данных во время выполнения программы. Для создания модуля данных можно воспользоваться командой меню File / New / Data Module.

На рисунке 9 представлено окно формы Data Module c расположенными на ней компонентами TDataSource и TTable.

Рисунок 9 – Окно формы Data Module

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

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

Либо воспользовавшись командой File / Use Unit.

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

2.  Настройка компонентов доступа к данным.

Компонент TTable обеспечивает взаимодействие с таблицей БД. Для связи с требуемой таблицей нужно установить соответствующее значение свойствам DataBaseName, указывающему путь к БД, и TableName, указывающему имя таблицы. После задания таблицы для открытия набора данных свойству Active должно быть установлено значение True.

Как уже говорилось, компонент TDataSourсe обеспечивает взаимодействие набора данных с компонентами отображения данных. Одному компоненту набора данных (компоненту TTable) соответствует обычно один TDataSourсe, но в принципе их может быть больше.

Для настройки свойств компонента TDataSourсe необходимо следующее: во-первых, связать TTable и TDataSourсe, используя свойство DataSet, доступное через Инспектор объектов; во-вторых, переименовать компонент (необязательно).

3.  Отображение данных.

Важное значение для работы с базой данных имеет компонент TDBGrid, который представляет данные в виде двумерной таблицы, в которой столбцы соответствуют полям, а строки – записям таблицы. Связать TDBGrid с компонентом TDataSource можно используя свойство DataSource компонента TDBGrid (из списка выбирается необходимый TDataSource).

По умолчанию будут выводиться все поля таблицы данных. Для задания списка необходимых полей можно воспользоваться свойством Columns Инспектора объектов. После того, как вы вызовете это свойство, появится окно редактора столбцов. Щелкните правой кнопкой мыши на поверхности окна Columns и выберите пункт Add All Fields, после чего все поля набора данных будут включены для отображения. Если некоторые поля Вы не хотите выводить в TDBGrid, удалите их, выделив и нажав клавишу Delete.

Еще одним удобным средством для работы с базой данных является компонент TDBNavigator, который служит для навигации по таблице данных (переход между записями, добавление, удаление, обновление и т. д.). Для связи данного компонента с набором данных, также используется TDataSource, для этого установите соответствующее значение в свойство DataSource компонента TDBNavigator.

Организация запросов к БД. Компонент TQuery

Главную роль в подготовке и диспетчеризации запросов SQL играет BDE. Непосредственную обработку запросов выполняет СУБД, точнее компонент СУБД - менеджер запросов.

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

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

Для организации запроса к БД с помощью компонента TQuery необходимо расположить этот компонент на модуле данных и установить свойства с помощью инспектора объектов.

DatabaseName – псевдоним базы данных, настроенный в BDE.

С помощью свойства SQL можно вызвать окно редактора запросов, в которое вводится содержание запроса.

Для активизации TQuery нужно установить свойство Active равным значению True. Если предстоит работать с большим запросом, то его проще предварительно отладить (например, с помощью программы SQL Explorer), а затем скопировать в редактор запросов.

Для того, чтобы связать TQuery с компонентами отображения данных, нужно расположить на модуле данных еще один компонент TDataSource(2), у которого в свойстве DataSet выбрать необходимый TQuery.

Для вывода данных на форму можно также воспользоваться компонентом TDBGrid, у которого в свойстве DataSource установить значение DataSource(2).

Компонент TDataBase

Для любого компонента доступа к данным необходимо устанавливать свойство DatabaseName, для указания той базы данных, с которой будет происходить работа. В случае, если псевдоним базы данных поменяется, то придется изменять значение данного свойства на новое. В случае небольшого приложения сделать это можно достаточно быстро, но если ваше приложение содержит достаточно много компонентов доступа к данным, возникает ряд затруднений. Чтобы избежать этой проблемы среда Delphi содержит специальный компонент TDataBase, который предназначен для настройки параметров подключения базы данных из приложения.

Для установки параметров компонента TDataBase необходимо разместить его на модуле данных, и щелкнув правой кнопкой мыши на ярлыке компонента, выбрать пункт Database Editor, после чего появится окно установки параметров (рисунок 10).

Рисунок 10 – Окно установки параметров компонента TDataBase

Среди списка параметров нужно установить основные:

SERVER NAME - путь к базе данных;

USER NAME - имя пользователя, который создавал БД;

PASSWORD - пароль для подключения к БД.

Для подключения к БД необходимо активизировать свойство Connecting компонента TDataBase.

Вопросы для самоконтроля [1,2]:

1.  Что такое файл? Какие типы файлов вы знаете?

2.  Что такое файловая переменная? Как выполняется объявление переменной у разных типов файлов?

3.  Перечислите основные процедуры для работы с текстовыми файлами.

4.  Дайте определение базе данных, СУБД, приложению БД. Как разделяются СУБД по характеру применения?

5.  Что такое реляционная база данных. Опишите структуру таблиц БД.

6.  Опишите технологию BDE для доступа к данным.

7.  Какие компоненты доступа к данным вы знаете? Как организуется взаимосвязь этих компонентов с таблицами БД?

8.  Перечислите этапы создания приложения БД.

Практическая работа №5. «Работа с текстовыми файлами».

КОНТРОЛЬНАЯ РАБОТА №1

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

1)  Перед выполнением контрольной работы изучите разделы:

Ø  Программное обеспечение ПЭВМ.

Ø  Основы алгоритмизации.

Ø  Основы программирования в среде разработки Delphi.

Ø  Язык Delphi (Object Pascal).

Ø  Введение в современную технологию программирования.

Ø  Развитые средства Delphi.

2)  Ответьте на все вопросы для самопроверки и проанализируйте решение типовой задачи.

ТИПОВАЯ ЗАДАЧА

Задача. Расчет корней квадратного уравнения.

Решение:

1.  Общий вид: ax2 + bx + c = 0.

2.  Исходные данные: a, b, c.

3.  Найти: корни x1 и х2.

4.  Алгоритм:

4.1.  Вводим a, b, c.

4.2.  Вычисляем дискриминант: D = b2 – 4ac.

4.3.  Проверяем условие: D < 0, если «да», то выводим на экран сообщение «Действительных корней нет» и завершаем выполнение программы.

4.4.  В противном случае, вычисляем корни уравнения x1 и x2.

4.5.  Выводим на экран x1 и x2.

5.  Блок-схема:

6.  Интерфейс приложения:

7.  Код программы:

8.  Результат выполнения:

8.1.  Исходные данные: A = -10, B = 8, C = -15

Результат выполнения:

D = -5,36 // D < 0

«Действительных корней нет»

8.2.  Исходные данные: A = 2, B = 4, C = 2

Результат выполнения:

D = 0 // D = 0

X = -1

ЗАДАНИЯ К КОНТРОЛЬНОЙ РАБОТЕ № 1.

Контрольная работа включает в себя 6 заданий. Номер Вашего варианта совпадает с номером в учебном журнале. Номера заданий для своего варианта возьмите из таблицы 1.

Таблица 1. Задания к контрольной работе №1.

варианта

№№ заданий контрольной работы

Зад.№1

Зад.№2

Зад.№3

Зад.№4

Зад.№5

Зад.№6

01

1

14

27

40

53

66

02

2

15

28

41

54

67

03

3

16

29

42

55

68

04

4

17

30

43

56

69

05

5

18

31

44

57

70

06

6

19

32

45

58

71

07

7

20

33

46

59

72

08

8

21

34

47

60

73

09

9

22

35

48

61

74

10

10

23

36

49

62

75

11

11

24

37

50

63

76

12

12

25

38

51

64

77

13

13

26

39

52

65

78

14

1

14

27

40

53

66

15

2

15

28

41

54

67

16

3

16

29

42

55

68

17

4

17

30

43

56

69

18

5

18

31

44

57

70

19

6

19

32

45

58

71

20

7

20

33

46

59

72

21

8

21

34

47

60

73

22

9

22

35

48

61

74

23

10

23

36

49

62

75

24

11

24

37

50

63

76

25

12

25

38

51

64

77

26

13

26

39

52

65

78

Пример. Вариант 12 включает в себя задачи:

·  Задание № 1 – задача № 12

·  Задание № 2 – задача № 25

·  Задание № 3 – задача № 38

·  Задание № 4 – задача № 51

·  Задание № 5 – задача № 64

·  Задание № 6 – задача № 77

Задачи:

1)  В динамическом массиве найти максимальный элемент и определить его индекс.

2)  В динамическом массиве переставить первый и последний элементы.

3)  В динамическом массиве переставить максимальный и минимальный элементы.

4)  Найти среднее значение элементов динамического массива.

5)  Вычислить сумму элементов динамического массива, расположенных до первого отрицательного элемента.

6)  Упорядочить динамический массив по возрастанию.

7)  Упорядочить динамический массив по убыванию.

8)  В динамическом массиве минимальный элемент среди положительных поменять местами с максимальным элементом среди отрицательных.

9)  Все положительные элементы динамического массива увеличить в два раза.

10)  В матрице размером (n*m) элементы главной диагонали обнулить. Значения n и m задает пользователь.

11)  В матрице размером (n*m) элементы, расположенные выше главной диагонали обнулить. Значения n и m задает пользователь.

12)  Просуммировать элементы матрицы, у которых четные индексы. Значения n и m задает пользователь.

13)  В целочисленной матрице размером (n*m) четные элементы заменить нулями. Значения n и m задает пользователь.

14)  Просуммировать модули элементов матрицы размером (n*m), у которых первый индекс четный, а второй нечетный.

15)  Найти произведение элементов матрицы размером (n*m), у которых сумма индексов четная. Значения n и m задает пользователь.

16)  Заменить нулями элементы матрицы размером (n*m), у которых сумма индексов нечетная и не превосходит заданного числа k. Значения n и m задает пользователь.

17)  Подсчитать, сколько положительных элементов в матрице размером (n*m). Значения n и m задает пользователь.

18)  Переставить первую и последнюю строку матрицы размером (n*m). Значения n и m задает пользователь.

19)  Найти максимальный элемент матрицы размером (n*m) в заданной k строке. Значения n и m задает пользователь.

20)  Переставить в одномерном динамическом массиве соседние элементы в каждой паре, начиная с первого.

21)  Удалить из матрицы размером (n*m) элемент k-й строки и s-го столбца. Значения n и m задает пользователь.

22)  Определить количество элементов динамического массива, больших среднего.

23)  Определить индексы элементов динамического массива, больших среднего.

24)  Упорядочить по убыванию положительные элементы динамического массива, сохраняя остальные элементы на прежних местах.

25)  Таблицу оценок студентов группы (матрица размером n*m) преобразовать в рейтинговую таблицу мест.

26)  Найти наибольший элемент главной диагонали матрицы размером (n*m). Значения n и m задает пользователь.

27)  Подсчитать количество положительных и отрицательных чисел и количество нулей в динамическом массиве. Вывести результат.

28)  Найти сумму и количество всех положительных четных элементов.

29)  Найти номер последнего отрицательного элемента в одномерном динамическом массиве.

30)  Напечатать только те числа из одномерного динамического массива, которые больше предыдущего числа.

31)  В каждой паре чисел динамического одномерного массива поменять четный и нечетный элементы местами.

32)  Напечатать в обратном порядке все положительные элементы двумерного динамического массива.

33)  Найти произведение элементов, кратных трем.

34)  Определить произведение элементов в динамическом двумерном массиве, расположенных за главной диагональю.

35)  Определить сумму элементов динамического двумерного массива, следующих после минимального элемента.

36)  Вывести индексы тех элементов динамического двумерного массива, значения которых кратны двум.

37)  Найти индекс максимального четного элемента в матрице размером n*m. Значения n и m задает пользователь.

38)  Найти сумму элементов динамического двумерного массива, предшествующих максимальному числу.

39)  Найти максимальное и минимальное нечетные числа в динамическом массиве и их среднее арифметическое.

40)  Найти произведение нечетных элементов, значения которых лежат в диапазоне от (–1) до 4.

41)  Найти максимальный четный элемент в динамическом двумерном массиве.

42)  Выяснить, есть ли одинаковые элементы в массиве. Определить их значение и индексы.

43)  Найти индексы первых двух стоящих одинаковых элементов в матрице.

44)  Найти максимальный и минимальный элементы в матрице и вывести те элементы, которые в матрице находятся между ними. Вывод элементов разработать как функцию.

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

46)  Определить сумму цифр каждого числа матрицы. Сумму цифр одного числа разработать как функцию.

47)  Определить, есть ли в динамическом одномерном числовом массиве элементы, сумма кубов цифр которых равнялась бы квадрату самого числа.

48)  Даны значения сторон треугольника. Проверить, является ли он прямоугольным.

49)  Определить номера строк матрицы, в которых хотя бы один элемент равен С, и элементы этих строк удвоить.

50)  Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером N.

51)  Обнулить отрицательные элементы, расположенные ниже главной диагонали квадратной матрицы.

52)  Отсортировать динамический массив следующим образом: все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования.

53)  Подсчитать, сколько слов во введенном предложении, заканчивающемся точкой.

54)  Дана строка, содержащая текст. Найти длину самого короткого и длинного слов. Вывести эти слова.

55)  Проверить, будет ли читаться введенное предложение одинаково справа налево и слева направо (т. е. является ли оно палиндромом).

56)  В записке слова зашифрованы – каждое слово записано наоборот. Расшифровать сообщение.

57)  Дано предложение. Узнать те слова, которые содержат хотя бы одну заданную букву.

58)  Проверить, одинаково ли в математическом выражении число открывающихся и закрывающихся скобок.

59)  Отредактировать предложение, удаляя из него те слова, которые введены подряд многократно.

60)  Заданы два предложения. Определить те слова, которые встречаются в обоих предложениях.

61)  Дан текст. Напишите программу, определяющую процентное отношение строчных и прописных букв к общему числу символов в нем.

62)  Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он стоит в начале строки, стоит в конце строки, следует за пробелом.

63)  В одно текстовое поле Т1 вводится фамилия и имя пользователя через пробел. Необходимо в текстовое поле Т2 вывести его имя, а в текстовое поле Т3 –фамилию.

64)  Посчитать, сколько раз в веденном произвольном слове встречается заданный слог.

65)  Во введенном произвольном слове заменить все заданные слоги на противоположные (например, слово – «мама», слог «ма», результат «амам»).

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

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

68)  Упорядочить данный массив русских слов по алфавиту.

69)  Строка содержит произвольный русский текст. Проверить, каких букв в нем больше: гласных или согласных.

70)  Дана строка. Найти в ней те слова, которые заканчиваются и начинаются одной и той же буквой.

71)  Дана строка. В ней есть одна открывающаяся скобка и одна закрывающаяся скобка. Вывести на экран все символы, расположенные между ними.

72)  Дана строка. Подсчитать, сколько различных символов встречается в ней.

73)  Даны две строки А и В. Проверить, можно ли из букв, входящих в А, составить В (буквы можно использовать не более одного раза и можно переставлять).

74)  Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

75)  Дана строка. Определить количество слов, начинающихся на заданную букву. Вывести эти слова.

76)  Дана строка. Определить количество слов, заканчивающихся на заданную букву. Вывести эти слова.

77)  Дано несколько строк. Определить в какой из них встречается заданная подстрока. Вывести эту строку.

78)  Дана строка. Подсчитать количество заданных букв в последнем слове. Вывести это слово.

ПЕРЕЧЕНЬ РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

Основная:

1.  "Delphi 7. Учебный курс" - СПб.: Питер, 2005.

2.  , "Delphi 6". - СПб.: БХВ-Петербург, 2001.

3.  , "Основы алгоритмизации и программирования": учеб. пособие. - М.: ФОРУМ: ИНФРА-М, 2002.

4.  , "Основы программирования": Учебник.-М.: Мастерство; НМЦ СПО; Высшая школа, 2001.

5.  Под редакцией профессора «Информатика», Москва «Финансы и статистика», 1997.

Дополнительная:

1.  П. Дарахвелидзе, Е. Марков "Программирование в Delphi 7":Мастер программ. - СПб.: BHV, 2003.

2.  Стив Тейксейра, Ксавье Пачеко "Delphi 5. Руководство разработчика": Вильямс, 2000.

3.  "Изучаем Delphi" - Спб.: Питер, 2005.

4.  СУБД для Windows - 1997.

5.  Access 97

6.  Access 2000. Учебный курс

7.  Основы современных баз данных. Сайт Интернета

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5