Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
госы / programmirovanie_vysokogo_urovnya.docx
Скачиваний:
67
Добавлен:
10.04.2015
Размер:
431.53 Кб
Скачать
  1. ОСНОВНЫЕ ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ. СИСТЕМЫ ПРОГРАММИРОВАНИЯ.

Этапы решения задачи на эвм

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

1. Постановка задачи:

•   сбор информации о задаче;

•   формулировка условия задачи;

•   определение конечных целей решения задачи;

•   определение формы выдачи результатов;

•   описание данных (их типов, диапазонов величин, структуры и т. п.).

2. Анализ и исследование задачи, модели:

•   анализ существующих аналогов;

•   анализ технических и программных средств;

•   разработка математической модели;

•   разработка структур данных.

3. Разработка алгоритма:

•   выбор метода проектирования алгоритма;

•    выбор формы записи алгоритма (блок-схемы, псевдокод и др.);

•    выбор тестов и метода тестирования;

•    проектирование алгоритма.

4. Программирование:

•   выбор языка программирования;

•   уточнение способов организации данных;

•   запись алгоритма на выбранном языке

программирования.

5. Тестирование и отладка:

•   синтаксическая отладка;

•   отладка семантики и логической структуры;

•    тестовые расчеты и анализ результатов тестирования;

•   совершенствование программы.

6. Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2-5.

7. Сопровождение программы:

•   доработка программы для решения конкретных задач;

•   составление документации к решенной задаче, к математической модели, к алгоритму, к программе, к набору тестов, к использованию.

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

Система программирования — это система для разработки новых программ на конкретном языке программирования.

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

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

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

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

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

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

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

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

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

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

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

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

 Системы программирования, ориентированные на создание Windows-приложений:

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

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

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

Транслятор — это программа-переводчик, преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.

Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

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

Интерпретатор — переводит и выполняет программу строка за строкой.

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

Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию — в зависимости от того, для каких целей он создавался.

  1. АЛГОРИТМ И ЕГО СВОЙСТВА. ПРЕДСТАВЛЕНИЕ ОСНОВНЫХ УПРАВЛЯЮЩИХ АЛГОРИТМИЧЕСКИХ СТРУКТУР.

Алгоритм– это точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий.

Свойства алгоритмов:

  • Дискретность- алгоритм должен состоять из конкретных действий, следующих в определенном порядке;

  • Детерминированность- любое действие должно быть строго и недвусмысленно определено в каждом случае;

  • Конечность- каждое действие и алгоритм в целом должны иметь возможность завершения;

  • Массовость- один и тот же алгоритм можно использовать с разными исходными данными;

  • Результативность- отсутствие ошибок, алгоритм должен приводить к правильному результату для всех допустимых входных значениях.

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

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

  • Словесный– описание алгоритма словами, возможна любая степень детализации описания.

  • Формульно-словесный– более компактный, словесные описания сочетаются с формулами.

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

  • Операторный(псевдокод) – в виде последовательности операторов на специальном алгоритмическом языке.

  • Табличный– представление алгоритма в виде таблицы решений, носит вспомогательный характер.

  • С помощью структурограммы– реализует в себе требования структурного программирования в схемах алгоритмов.

  1. СТАНДАРТНЫЕ ТИПЫ ДАННЫХ В ЯЗЫКЕ С++, ИХ ОБЪЯВЛЕНИЕ И ОБРАБОТКА.

В языках C/C++ данные представляются одним из восьми базовых типов:

char (текстовые данные). Представляет собой последовательность символов (a, Z, ?, З), которые могут быть разделены пробелами. Обычно каждый символ занимает 8 бит, или один байт, с диапазоном значений от 0 до 255.Пример: char a='A', char x='2';

int (целые числа).Находятся в диапазоне от -32768 до 32767 и занимают 16 бит, т.е. два байта, или одно слово.Пример: int x=20;int y=-256;

float (числа с плавающей запятой одинарной точности).Представляются как в фиксированном формате, например числоpi(3,14159), так и в экспоненциальном (7,56310). Диапазон значений +/-3,4Е-38-3,4Е+38, размерность — 32 бита, т.е. 4 байта, или 2 слова.Пример: float x=2.403;int y=-25.6E-10;

double (числа с плавающей запятой двойной точности). Числа с плавающей запятой двойной точности (тип данных double) имеют диапазон значений от +/-1,7Е-308 до +/-1,7Е+308 и размерность 64 бита, т.е. 8 байтов, или 4 слова. Пример: double x=20E+100;double y=-256E-100;

void (пустые значения). Он используется для определения функций, которые не возвращают значения (такие функции в языке Паскаль называют процедурами, но в языке Си процедур нет), для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения.Пример: void show(){};

bool(логические значения). Переменные могут содержать только true или false.

Пример: bool fl=false;

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

Пример: перечисление: type COLOR=(red,blue,green); COLOR mycolor=red;

указатель: int *p_x;

  1. СТРУКТУРА ПРОГРАММЫ НА ЯЗЫКЕ C++.

Программа на языке C++ состоит из функций, описаний и директив препроцессора. Одна из функций должна иметь имя main, программа начинает выполняться с первого оператора этой функции. Тело функции является блоком. В отличие от Паскаля функции не могут быть вложенными.

Простейшее определение функции выглядит так:

<тип> <имя функции> (<спецификация формальных параметров>)

{

<операторы>

}

Функция может не возвращать никакого значения, в этом случае в качестве ее типа указывается void (например, функция main).

Возврат вычисленного значения функции осуществляется оператором

return <выражение>;

Если функция имеет тип void, оператор return может отсутствовать.

При вызове функции вместо списка формальных параметров помещается список фактических параметров:

<имя функции> (<список фактических параметров>);

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

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

Замечание: в прототипе могут отсутствовать имена формальных параметров, достаточно лишь указать их типы.

Пример 1: Вычислить сумму последовательности отличных от нуля целых чисел, после которой следует число нуль (признак конца последовательности).

#include <iostream.h>

void main()

{

int a, S=0;

cout << “\nВведите a: ”; cin >> a;

while (a!=0)

{

S+=a;

cout << “\nВведите a: ”; cin >> a;

}

cout << “Сумма=” <<S <<’\n’;

}

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

Директива #include включает в программу содержимое указанного файла. Имя файла может быть указано двумя способами:

#include <some_file.h>

#include "my_file.h"

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

  1. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ В ЯЗЫКЕ С++, ИХ ОБЪЯВЛЕНИЕ И ОБРАБОТКА.

Составные (структурированные) типы:

  • массивы,

  • символьные строки,

  • структуры.

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

<базовый тип> <имя массива> [<целая константа>];

Пример:

long int a, b[5], c;

const int n=10;

double s[n];

При определении массив может быть инициализирован:

int a[5]={2, -3, 5, 4, 38};

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

Двумерные массивы определяются так:

int a [5][3];

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

Символьная строка - это массив символов, но при этом дополняется нуль-символом ‘\0’, что позволяет определять текущую длину строки:

char str[10]=”alfa”; // str[0]=’a’ str[1]=’l’ str[2]=’f’ str[3]=’a’ str[4]=’\0’

При инициализации можно было бы опустить длину строки:

char str[]=”alfa”;

но при этом под нее было бы выделено не 10 байт, а только 5.

Поскольку строка является массивом, для нее не определены операции присваивания и сравнения. Эти операции могут выполняться поэлементно или с помощью функций стандартной библиотеки string.h, которая должна быть подключена инструкцией #include <string.h>:

strcpy(str1, str2) // копирование строки str2 в строку str1,

strlen(str) // длина строки без ноль-символа,

strcmp(str1, str2) // сравнение строк: совпадают – false(0), иначе – true(1),

strcat(str1, str2) // конкатенация строк (str1+str2).

Структура (struct) позволяет группировать данные разных типов. Определение типа struct выглядит так:

struct <имя типа> {

<тип поля> <имя поля>;

<тип поля> <имя поля>;

……………..

<тип поля> <имя поля>;

}

Пример:

struct anketa {

char name[20];

enum {man, woman} pol;

Соседние файлы в папке госы