Файл: Основы алгоритмизации и программирования (Особенности описания операторов управления в различных языках программирования:достоинства и недостатки).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.04.2023

Просмотров: 1960

Скачиваний: 30

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

Тема 1. Основные структуры алгоритмов: сравнительный анализ и примеры их использования.

1.1. Понятие алгоритма

1.2. Цели и задачи теории алгоритмов

1.3. Различные подходы к понятию "Алгоритм"

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

2.1. Язык программирования

2.2. Язык программирования QBASIC

Тема 3. Основные правила работы с функциями: примеры и ограничения использования функций в различных языках программирования.

3.1. Структура программы на языке С++

3.2. Описание функции

3.3. Правила работы с функциями

Тема 4. Особенности и примеры использования массивов при разработке программ.

4.1. Массивы

4.2. Описание массива в Паскале

4.3. Ввод массива

4.4. Вывод массива

Тема 5. Классификация языков программирования. Критерии выбора среды и языка разработки программ.

5.1. Классификация языков программирования

5.2. Процедурные языки

5.3. Интерпретация и компиляция.

Тема 6. История и развитие методологии объектно-ориентированного программирования. Сферы применения.

6.1. Объектно-ориентированный язык

6.2. Серверные языки

6.3. Языки программирования.

6.4. Методологии программирования

Тема 7. Отладка и тестирование программ: основные подходы и ограничения.

7.1. Отладка

7.2. Тестирование программ

Тема 8. Методы сортировки данных: эволюция и сравнительный анализ. Примеры использования.

8.1. Алгоритм сортировки.

8.2. сортировки данных в массивах

Тема 9. Методы поиска данных: эволюция и сравнительный анализ. Примеры использования.

9.1. Поиск

Тема 10. Функциональное тестирование программного обеспечения на примере мобильных приложений.

10.1. Функциональное тестирование

10.2. Тестирование производительности;

10.3. Тестирование безопасности;

10.4. Тестирование удобства пользования (юзабилити-тестирование);

10.5. Тестирование совместимости;

10.6. Тестирование на восстановление.

Тема 11. Особенности алгоритмизации при разработке WEB-приложений.

11.1. Web-приложений в C#

11.2 . Задачи Web-приложений

Тема 12. Критерии выбора средств разработки WEB-приложений.

12.1. Критерии выбора

Тема 13. Критерии выбора средств разработки мобильных приложений.

13.1. Критерии выбора

Тема 14. Этапы разработки, тестирования и ввода в эксплуатацию мобильных приложений

14.1. Тестирование

14.2. Тестирование внешних сервисов

Тема 15. Тестирование производительности программ: подходы в зависимости от категорий приложений.

15.1.  Тестирование производительности в инженерии программного обеспечения

15.2. Требования к производительности

Тема 16. Варианты построения интерфейса программ: особенности и эволюция.

16.1. Эволюция дизайна интерфейсов операционных систем Windows

Тема 17. Способы организации данных: пользовательский тип данных – структура.

17.1. Тип данных

17.2. Логический тип данных

Тема 18. Рекурсивные и итерационные алгоритмы: особенности и примеры использования

18.1. Рекурсивные алгоритмы

18.2. Рекурсия и итерация

Тема 19. Классификация языков программирования высокого уровня.

19.1. Примеры языков высокого уровня

Тема 20. Сравнительный анализ операторов для различных языков программирования.

20.1. Сравнение языков программирования

Тема 21. Сравнительный анализ процедур для различных языков программирования.

21.1. Процедурные языки

Тема 22. Сравнительный анализ описания данных для различных языков программирования.

22.1. Анализ

Список литературы для написания курсовой работы по дисциплине

  • Высокая совместимость с языком Си : код на Си может быть с минимальными переделками скомпилирован компилятором C++.
  • Внешнеязыковой интерфейс является прозрачным, так что библиотеки на Си могут вызываться из C++ без дополнительных затрат, и более того — при определённых ограничениях код на C++ может экспортироваться внешне не отличимо от кода на Си (конструкция extern "C").
  • Как следствие предыдущего пункта — вычислительная производительность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Один из базовых принципов C++ — «не платишь за то, что не используешь» (см. Философия C++) — то есть ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования. Имеется возможность работы с памятью на низком уровне.
  • Шаблоны C++ дают возможность построения обобщённых контейнеров и алгоритмов для разных типов данных. Попутно шаблоны дают возможность производить вычисления на этапе компиляции.
  • Доступность. Для C++ существует огромное количество учебной литературы, переведённой на всевозможные языки. Язык имеет высокий порог вхождения, но среди всех языков такого рода обладает наиболее широкими возможностями.

К числу недостатков можно отнести:

  • Отсутствие системы модулей. C++ использует заголовочные файлы, которые полны недостатков:
  • Вынуждает дважды писать одну и ту же функцию (определение в файле с исходным кодом и объявление в заголовочном файле).
  • Увеличивает время компиляции. Можно оптимизировать, используя Предкомпилированные заголовки.
  • Сложный синтаксис и сложная спецификация языка.

Тема 3. Основные правила работы с функциями: примеры и ограничения использования функций в различных языках программирования.

3.1. Структура программы на языке С++

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


// Моя первая программа

# include < iostream .h >

main ( )

{

cout << “ Это моя первая программа на языке С++”;

return 0;

}

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

Препроцессор − это специальная программа, которая обрабатывает строки программы, начинающиеся со знака #. Данная строка дает указание препроцессору перед компиляцией программы включить в нее информацию, содержащуюся в файле iostream.h. Следом идет обязательная функция main (), а круглые скобки прямо указывают на то, что main – имя функции. Открывающая фигурная скобка отмечает начало последовательности операторов, образующих тело функции. Строка cout << “……… ”; – оператор вывода, с помощью которого выводится на экран дисплея фраза, заключенная в кавычки. Функция может возвращать значение в программу с помощью оператора возврата (return). Этот оператор также означает выход из функции. Если же указанный оператор отсутствует, то функция автоматически возвращает значение типа void (пустой). Закрывающая фигурная скобка отмечает конец последовательности операторов, образующих тело функции. На этой скобке выполнение функции и программы завершается . Программа на С++ состоит из одной или более функций, причем ровно одна из них обязательно должна называться main().

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


Заголовок функции состоит из имени функции, а тело функции заключено в фигурные скобки и представляет собой набор операторов, каждый из которых оканчивается символом;. Оператор описания int num определяет num как переменную целого типа (integer). Любая переменная в языке С++ должна быть описана раньше, чем она будет использована. В С++ используются правила, регулирующие употребление прописных и строчных букв [2]. Команды и стандартные имена функций (т.е. имена функций языка С++) всегда пишутся строчными буквами. Заглавные буквы в языке С++ обычно используются для задания имен констант. В именах своих функций и переменных Вы можете использовать как заглавные, так и строчные буквы. Однако следует помнить, что язык С++ различает использование прописных и строчных букв. Например, если Вы определите в своей программе переменные name, Name, NAME, то для компилятора это три различные переменные. В работе [3] даются следующие рекомендации относительно использования прописных и строчных букв в идентификаторах. Так, в именах переменных целесообразно использовать строчные буквы (нижний регистр), а прописные буквы (верхний регистр) использовать для обозначения констант, макросов и т.д. После того как компьютер заканчивает выполнение инструкций, заданных в вашей программе, программа завершается, и компьютер возвращается в исходное состояние (в то состояние, которое было перед запуском программы). Возврат в исходную среду в случаях, когда функция не возвращает значения, как правило, осуществляется автоматически. Исключение составляют отдельные компиляторы языка С++, которые требуют, чтобы Вы явно указали возврат.

Для таких компиляторов вводится инструкция return 0;, которую помещают непосредственно перед фигурной скобкой, завершающей тело функции main(). Если функция возвращает значение, то тело функции должно содержать как минимум один оператор return следующего формата: return выражение ; , где выражение определяет значение, возвращаемое данной функцией.

3.2. Описание функции

Самый распространенный способ задания в С++ каких-то действий –это вызов функции, которая выполняет такие действия. Функция – это именованная часть программы (блок кода, не входящий в основную программу), к которой можно обращаться из других частей программы столько раз, сколько потребуется. Основная форма описания функции имеет вид [4] Тип < Имя функции> (Список параметров) { Операторы тела функции } Tип определяет тип значения, которое возвращает функция с помощью оператора return. Если тип не указан, то по умолчанию предполагается, что функция возвращает целое значение (типа int). Список параметров состоит из перечня типов и имен параметров, разделенных запятыми. Функция может не иметь параметров, но круглые скобки необходимы в любом случае. Первая строка описания функции, содержащая тип возвращаемого значения, имя функции и список параметров, называется заголовком функции. Параметры, перечисленные в заголовке описания функции, называются формальными, а записанные в операторе вызова функции – фактическими. Тип возвращаемого значения может быть любым, кроме массива и функции. В приведенном ниже фрагменте программы функция перемножает два числа и возвращает результат в основную программу с помощью оператора return через переменную z. int multiply(int x, int y) // заголовок функции { int z = (x * y ); // тело функции return z ; } До использования функции ее необходимо объявить. Объявление функции осуществляется с помощью прототипа, который сообщает компилятору, сколько аргументов принимает функция, тип каждого аргумента и тип возвращаемого значения


// Вычисление произведения двух чисел

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

int multiply(int x, int y); // объявление прототипа функции

main( )

{

clrscr();

int x, y, result;

cout <<”\nВведите первое число:”;

cin >> x;

cout <<”\nВведите второе число:”;

cin>>y

result = multiply(x, y); // вызов функции

cout << “\nРезультат =” << result;

cout<<"\nНажмите любую клавишу ...";

getch();

return 0 ;

}

int multiply(int x, int y) //заголовок функции

{

return x * y ; // тело функции

Введите первое число: 3

Введите второе число: 2

Результат = 6

3.3. Правила работы с функциями

- Функция может принимать любое количество аргументов или не иметь их вообще.

- Функция может возвращать значение, но это не является обяза- тельным.

– Если для возвращаемого значения указан тип void, функция не возвращает никакого значения. При этом функция не должна содержать оператора return, однако при желании его можно оставить.

- Если в объявлении функции указано, что она возвращает значение, в теле функции должен содержаться оператор return, возвращающий это значение. В противном случае компилятор выдаст предупреж- дение.

- Функции могут иметь любое количество аргументов, но возвращаемое значение всегда одно.

- Аргументы могут передаваться функции по значению, через указатели или по ссылке.

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

- Программирование с использованием функций делает разработку программ более управляемой.

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

- Возможность избежать в программе повторения каких-либо фраг- ментов.

Тема 4. Особенности и примеры использования массивов при разработке программ.

4.1. Массивы

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


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

Размещение элементов массива в памяти выполняется последовательно.

Количество элементов в массиве определяет размер массива и является константным выражением.

Имя массива определяет адрес первого элемента массива.

Все элементы массива имеют один и тот же тип. Элементы массива обычно нумеруются индексами от 0 до n-1, где n - число элементов массива. В некоторых языках можно задавать границы изменения индексов, в других нижняя граница значения индекса равна единице, а не нулю. Мы, тем не менее, будем придерживаться языка Си (а также C++, Java, C#), в котором нижней границей индекса всегда является ноль. Это очень удобно, т.к. индекс элемента массива в этом случае равен его смещению относительно начала массива. Длина массива задается при его описании и не может быть изменена в процессе работы программы.

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

целый a[100];  описан массив целых чисел размера 100 (индекс меняется от 0 до 99)

вещественный r[1000]; описан вещ-й массив из 1000 элементов.

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

int a[100];

double r[1000];

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

a[3] = 0;            элементу массива a с индексом 3 присваивается значение 0;

a[10] = a[10]*2;     элемент массива a с индексом 10 удваивается.

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

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