Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_СРСП_Программирование РЭС.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
2.86 Mб
Скачать

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. Сколько аргументов будет иметь данная функция?

Вопросы для самоконтроля:

  1. Что такое подпрограмма и для чего она используется?

  2. Что такое модульное программирование?

  3. Как определить функцию?

  4. Как передавать функции информацию?

  5. Каково различие между формальным и фактическим аргументами?

  6. Где необходимо описывать аргументы?

  7. Где необходимо описывать локальные переменные?

  8. Когда и как использовать оператор return?

10 Элементы объектно-ориентированного программирования

Цель работы: приобрести навыки создания собственных классов и познакомиться с основными идеями объектно-ориентированного программирования.

10.1 Инструментальное программное обеспечение

Инструментальное программное обеспечение обеспечивает создание новых программных продуктов для ПК. Инструментальное программное обеспечение представлено языками и системами программирования.

Язык программирования – формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера).

Составными частями языка программирования являются:

  • алфавит – конечный набор элементарных символов, разрешенных для использования;

  • синтаксис – набор правил образования языковых конструкций и символов алфавита;

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

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

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

  • транслятор;

  • редактор текстов программ,

  • библиотеки функций,

  • программную документацию,

  • отладчик и др.

Интегрированная среда программирования (от англ. Integrated Development Environment, IDE) – это программа, имеющая встроенный редактор текстов, подсистему работы с файлами, транслятор, встроенный отладчик, справочную систему, некоторые библиотеки функций. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке программного обеспечения.

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

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

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

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

Сравнение интерпретаторов и компиляторов

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

2 Для выполнения программы на интерпретируемом языке необходимо наличие дополнительной программы-интерпретатора.

3 Интерпретируемая программа выполняется медленнее, чем скомпилированная. Потеря времени на компиляцию происходит лишь единожды, а в случае интерпретации – при каждом запуске. Откомпилировав программу один раз, ее можно выполнять многократно, с различными исходными данными.

Интерпретатор удобно использовать на этапе написания и отладки программы, так как интерпретатор позволяет отслеживать ошибки, допущенные программистом при написании программы, а компилятор используется для преобразования уже готовой, отлаженной программы.

Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация. Поэтому Java рассчитан, в основном, на интерпретацию программы. Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.