- •1 Введение в теорию алгоритмизации 6
- •Введение
- •1 Введение в теорию алгоритмизации
- •1.1 Понятие алгоритма
- •1.2 Свойства алгоритмов
- •1.3 Формы представления алгоритма
- •1.4 Основные алгоритмические структуры
- •1.5 Алгоритмический язык
- •2.3 Инструменты программирования Microsoft Visual Studio
- •2.5 Консольные и оконные приложения
- •2.6 Компилирование программы
- •3.2 Простые типы данных
- •3.3 Операции над числовыми данными
- •3.4 Объявление переменных
- •3.7 Директива #define
- •3.9 Библиотека математических функций
- •4 Условный оператор
- •4.1 Условный оператор if
- •4.2 Составной оператор
- •4.3 Вложенный оператор
- •4.4 Оператор выбора switch
- •5 Операторы циклов
- •5.1 Определение цикла
- •5.2 Оператор цикла for
- •5.3 Оператор цикла while
- •5.4 Оператор цикла do while
- •5.5 Табулирование функций
- •5.6 Вычисление конечных сумм и произведений
- •5.7 Управляющие конструкции break, continue, return, goto
- •6 Массивы
- •6.1 Понятие и описание массивов
- •6.2 Одномерные массивы
- •6.3 Двумерные массивы (матрицы)
- •7 Символьные массивы
- •7.1 Описание символьного массива
- •7.2 Стандартные библиотечные функции над строками
- •8 Указатели и операции над указателями
- •8.1 Описание указателей
- •8.2 Операции над указателями
- •8.3 Сравнение указателей
- •8.4 Связь между массивом и указателем
- •9 Функции
- •9.1 Модульное программирование
- •9.2 Объявление функции
- •9.3 Формальные и фактические параметры функции
- •9.4 Локальные и глобальные переменные
- •10 Элементы объектно-ориентированного программирования
- •10.1 Инструментальное программное обеспечение
- •10.2 Технологии программирования
- •10.3 Создание класса
- •11 Полиморфизм
- •12 Этапы разработки программного обеспечения
- •12.1 Идея и цель объектно-ориентированного программирования
- •12.2 Основные понятия объектно-ориентированного программирования
- •12.3 Методы тестирования программных продуктов
- •Список литературы
9.3 Формальные и фактические параметры функции
Для удобства передачи данных в функцию и получения результата используются формальные и фактические аргументы.
Формальные параметры – условные обозначения в описании функции.
В примере 9.1 переменная n является формальным параметром.
Фактические параметры – аргументы, с которыми требуется выполнить функцию. Фактические параметры перечисляются при вызове функции.
Пример 9.2. Создание функции.
int fact(int n)
{
int i,p;
p=1;
for (i=1;i<=n;i++)
p=p*i;
return p;
}
Возвращение значения функции (факториала числа n) выполняется с помощью оператора return.
Задание 9.2.
Проанализируйте код функции примера 9.2.
9.4 Локальные и глобальные переменные
В примере 9.2 вспомогательные переменные i,p будут являться локальными переменными.
Локальные переменные – переменные, которые описываются только внутри подпрограммы (функции) и являющиеся промежуточными при ее выполнении.
Глобальные переменные – переменные, описанные в главной программе.
Пример 9.3. Вызов функции.
На основе функции fact, (см. пример 2) вычислим число сочетаний:
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
// Объявление функции
int fact(int n)
{
int i,p;
p=1;
for (i=1;i<=n;i++)
p=p*i;
return p;
}
//Главная программа
int main(array<System::String ^> ^args)
{
int N,M;
cout<<"Введите значение N ";
cin >> N;
cout<<"Введите значение M, M>N ";
cin >> M;
cout<<"Число сочетаний "<< N << " из " << M << " равно " << fact(N)/fact(N-M)/fact(M);
getch();
return 0;
}
В примере 9.3 в главной программе функция fact(N) вызывается три раза:
fact(N)/fact(N-M)/fact(M)
соответственно с аргументами N, N-M и M. Переменные N и M являются глобальными.
Задание 9.3
Выполните программу примера 9.3. Создайте функцию ch_s(), возвращающую число сочетаний сmn. Сколько аргументов будет иметь данная функция?
Вопросы для самоконтроля:
Что такое подпрограмма и для чего она используется?
Что такое модульное программирование?
Как определить функцию?
Как передавать функции информацию?
Каково различие между формальным и фактическим аргументами?
Где необходимо описывать аргументы?
Где необходимо описывать локальные переменные?
Когда и как использовать оператор return?
10 Элементы объектно-ориентированного программирования
Цель работы: приобрести навыки создания собственных классов и познакомиться с основными идеями объектно-ориентированного программирования.
10.1 Инструментальное программное обеспечение
Инструментальное программное обеспечение обеспечивает создание новых программных продуктов для ПК. Инструментальное программное обеспечение представлено языками и системами программирования.
Язык программирования – формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера).
Составными частями языка программирования являются:
алфавит – конечный набор элементарных символов, разрешенных для использования;
синтаксис – набор правил образования языковых конструкций и символов алфавита;
семантика – набор правил однозначного толкования языковых конструкций.
Система программирования – это система разработки программного обеспечения на каком-либо языке программирования, включающая в себя следующие компоненты:
интегрированную среду программирования;
транслятор;
редактор текстов программ,
библиотеки функций,
программную документацию,
отладчик и др.
Интегрированная среда программирования (от англ. Integrated Development Environment, IDE) – это программа, имеющая встроенный редактор текстов, подсистему работы с файлами, транслятор, встроенный отладчик, справочную систему, некоторые библиотеки функций. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке программного обеспечения.
Транслятор – программа, которая преобразует команды программ, написанных на языках высокого уровня, в команды, записанные в машинных кодах, использующих двоичный алфавит (в последовательность чисел понятную ПК). Трансляторы бывают двух видов: интерпретаторы и компиляторы. Оба вида трансляторов выполняют одну и туже операцию, но делают это по-разному.
Интерпретаторы, преобразуя команду на машинный язык, сразу же дают указания на ее выполнение, не записывая перевод. Так происходят с каждой командой программы. Программа будет выполнена машиной только при наличие интерпретатора, который от строки к строке переводит команды и сразу же их выполняет. При повторном выполнении программы снова выполняется перевод.
Компилятор же не выполняет команды, а просто переводит всю программу на машинный язык и записывает свой перевод в специальную, так называемую, исполнимую программу, программу, записанную в двоичном коде.
В простейшем случае интерпретатор читает исходный текст программы по одной строке за раз, выполняет эту строку и только после этого переходит к следующей. Компилятор читает сразу всю программу и конвертирует ее в объектный код (машинный двоичный код). Когда программа скомпилирована, в ее коде уже нет отдельных строк исходного кода.
Сравнение интерпретаторов и компиляторов
1 Программа на интерпретируемом языке обычно может быть запущена на разных типах машин и операционных систем без дополнительных усилий.
2 Для выполнения программы на интерпретируемом языке необходимо наличие дополнительной программы-интерпретатора.
3 Интерпретируемая программа выполняется медленнее, чем скомпилированная. Потеря времени на компиляцию происходит лишь единожды, а в случае интерпретации – при каждом запуске. Откомпилировав программу один раз, ее можно выполнять многократно, с различными исходными данными.
Интерпретатор удобно использовать на этапе написания и отладки программы, так как интерпретатор позволяет отслеживать ошибки, допущенные программистом при написании программы, а компилятор используется для преобразования уже готовой, отлаженной программы.
Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация. Поэтому Java рассчитан, в основном, на интерпретацию программы. Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.
