logo search
FINAL (Verdana, 16)

1. Рассмотрите процесс конструирования программ в императивных языках программирования

Этапы решения задачи:

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

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

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

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

5. Отладка программы: компиляция и проверка правильности выполнения на контрольных тестах. Компиляция предполагает выполнение трансляции программы (перевод текста программы с языка программирования на машинный язык и формирование объектного кода программы), и редактирование связей (формирование на основе полученного объектного кода программы и на основе библиотеки объектных кодов исполняемого кода программы). Трансляция начинается с выполнения синтаксического анализа исходного текста программы. В случае выявления синтаксических ошибок выдаются соответствующие сообщения, и дальнейшая трансляция приостанавливается. Когда все синтаксические ошибки будут исправлены, то проводится редактирование связей и формируется готовый к выполнению на компьютере код программы в виде отдельного файла. В программе кроме синтаксических ошибок могут присутствовать ошибки: 1. Времени выполнения программы (Runtime-ошибки) – связаны с возможным наличием в выполняемой программе запрещенных действий, например, деление на ноль, чтение данных из несуществующего файла и т.п.

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

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

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

8. Сопровождение программы может предусматривать доработку программы для решения конкретных задач. Составляются документации к: 1) решенной задаче; 2) математической модели; 3) алгоритму; 4) пpогpамме; 5) набору тестов; 6) использованию.

Пример программы на языке C++. Написать программу вычисления значения функции f(x)=x3+2.5x2-1.2 при условии, что значение аргумента x вводится с клавиатуры, а получаемый результат выводится на экран.

Алгоритм решения задачи:

Шаг 1: Ввести значение аргумента x с клавиатуры;

Шаг 2: Вычислить значение функции f(x) по формуле f(x)=x3+2.5x2-1.2;

Шаг 3: Вывести полученное на предыдущем шаге значение функции;

Программа на языке С++ состоит из разнообразных элементов, к которым, в частности, относятся константы, переменные, функции, объекты и т. п.

Вариант программы, реализующий рассмотренный выше алгоритм:

1. # include <iostream>

2. using namespace std;

3. int main () // заголовок функции main

4. { // начало “тела” программы

5. double x, f; // объявление вещественных переменных x и f

6. cout << “Введите значение аргумента x:”; cin >> x; // Шаг 1

7. f=x*x*x+2.5*x*x-1.2; // Шаг 2

8. cout << “f (“ << x << ”)=” << f << endl; // Шаг 3

9. return 0; // успешное завершение программы

10. } // окончание “тела” программы

Программа начинается с команды препроцессору на подключение к программе заголовочного файла iostream. Угловые скобки в данном случае указывают на то, что файл iostream необходимо искать во всех папках предусмотренных компилятором для такого типа файлов. В строках с 3 по 10 размещается особая функция main() – главная, которая обязательна должна быть в каждой программе на языке С++. Эта функция вызывается операционной системой. В данном примере функция main() возвращает целочисленное значение, поскольку в ее заголовке в 3 строке стоит служебное int. Причем в нашей программе будет возвращаться 0 (см. строку 9). Отметим, что все функции в С++ начинаются с фигурной открывающей скобки и заканчиваются фигурной закрывающей скобкой , а между ними размещается тело функции.

В строке 5 с помощью инструкции double x, f; объявляются две переменные для размещения вещественных значений соответственно аргумента и функции. В строках 6 и 8 используются объекты cout и cin для организации соответственно вывода и ввода данных. В объекте cout символ << является оператором перенаправления выходного потока. Оператор endl выводит на экран символ разрыва строки.

2. Рассмотрите концепцию типов данных в языке С++

Данные – обобщенное понятие, используемое в программировании для обозначения разнообразных информационных единиц, с которыми оперирует компьютер. На физическом уровне данные в памяти компьютера представляют собой последовательности двоичных цифр 0 и 1. Использование языков программирования высокого уровня позволило абстрагироваться от деталей и особенностей представления информации главным образом за счет введения концепции типов данных. Любой тип данных определяет: 1) множество допустимых значений; 2) набор допустимых операций; 3) формат представления данных в памяти компьютера.

В языке С++ каждой переменной, должен быть определен только один тип. Программист имеет возможность воспользоваться предописанными (заранее определенными в языке) типами, собственными (пользовательскими) типами.

Типы данных: 1. Простые, 2. Составные, 3. Ссылочные.

Простые типы данных в языке С++

Ординальный (порядковый) тип данных описывает конечное и упорядоченное множество значений. Эти значения соответственно сопоставляются с последовательностью порядковых номеров от 0 до 255. Исключение сделано для целых чисел, которые отображаются сами на себя.

В языке С++ к простым собственным типам относятся: bool, double, float, int, char. Каждый из этих типов имеет определенный набор значений и внутреннее представление, привязанное к низкоуровневой архитектуре машины, на которой работает компилятор. Простые типы могут модифицироваться с помощью ключевых слов short, long, signed и unsigned, и таким образом могут формироваться дополнительные простые типы.

bool (1 байт)

char (1 байт)

signed char (1)

unsigned char (1)

short (2)

int (4)

long (4)

unsigned short (2)

unsigned (4) unsigned int

unsigned long (4)

float (4)

double (8)

long double (8)

Составные типы данных: 1. Массивы, 2. Структуры.

1. Массив – тип данных, который применяется для представления однородных (однотипных) значений. Для обращения к элементам массива используются индексы, нумерация которых начинается с 0. При объявлении массива указывается его размер в квадратных скобках после имени массива. Массивы и обычные переменные разрешается объявлять вместе, например:

double x1, mas[5], p1; При объявлении массива можно инициализировать его элементы. В этом случае инициализирующие значения заключаются в фигурные скобки и разделяются запятыми. Например,

double m[3]={12.6,-14.1,7.05}; // m[0]=12.6 m[1]=-14.1…

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

struct avto { // информация по автомобилям

char marka [15];