- •1)Понятие информатики, информации, кодирования информации.
- •4)Понятие алгоритма, рекурсивные функции.
- •5)Понятия алгоритма, системы текстовых замен.
- •6)Способы описания языков программирования: бнф-нотации, синтаксические диаграммы.
- •8)Объект и его атрибуты. Специализация и реализация типа данных.
- •9)Сигнатура операции, факторы, затрудняющие реализацию операций.
- •Факторы, затрудняющие реализацию операций:
- •(36)Понятие подпрограммы(пп),назначение подпрограмм, использование подпрограмм.
- •(38)Передача параметров в подпрограмму,параметры входные и выходные,параметры,передаваемые по значению и адресу.
- •(39)Использование подпрограмм,параметры,формальные,локальные,глобальные,обращения к подпрограммам,фактические параметры.
- •(40)Передача параметров массивов в подпрограмму,примеры.
- •(44)Параметры шаблона функции,использование функции,пример.
(39)Использование подпрограмм,параметры,формальные,локальные,глобальные,обращения к подпрограммам,фактические параметры.
Участок программы, к которому можно обращаться из различных мест программы для выполнения некоторых действий называется подпрограммой. Для того, чтобы получить возможность возвращаться на команду, следующую за командой вызова подпрограммы, требуется запомнить адрес этой команды. Подпрограмма с параметрами используется для записи многократно повторяющихся действий при разных исходных данных. При составлении подпрограмм с параметрами надо соблюдать следующие правила: 1) каждая подпрограмма имеет свое имя и список формальных параметров; 2) процедура из основной программы вызывается командой вызова, которая по форме ничем не отличается от вызова команды исполнителя. Формальные параметры подпрограммы указывают, с какими аргументами следует обращаться к этой подпрограмме (количество аргументов, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка, разбитого на группы. Если переменная или константа описана в основной программе, она считается глобальной, и ее могут использовать любые процедуры и функции данной программы. Переменные, описанные внутри подпрограммы, называются локальными и могут быть использованы только внутри данной подпрограммы. Локальные переменные могут быть описаны как в заголовке подпрограммы, так и в разделе описания переменных. При совпадении имен глобальных и локальных переменных, локальные определения в пределах своего действия отменяют действия глобальных, и эти переменные никак не связаны между собой.
Подпрограммы вызываются именами. В случае запроса подпрограммой входных параметров, они указанны в скобках и разделены запятыми. Так как вызов программы считается отдельной командой, то в конце нужен символ “;”.
Фактические параметры – данные, передаваемые в ПП и возвращаемые из нее. Фактический параметр - переменная или ее значение, подставленные при использовании подпрограмм вместо формального параметра.
(40)Передача параметров массивов в подпрограмму,примеры.
Если массив передается в подрограммы в качестве параметра, то передается указатель в начало массива. Но при этом теряется размерность массива, размерность нужно передавать дополнительным параметром. Если мы не хотим, чтобы величины внутри функции изменялись, рекомендуется записывать с (const).
#include<iostream>
const int n=5;
int sum(const int *mas, const int n);
int main()
{int marks[n]={1,2,3,4,5,};
cout<<”сумма элементов массива”<<sum(marks,n)<<’\n’;
return 0;}
int sum(const int *mas, const int n)
{int s=0;
for(int i=0i<n;i++) s+=mas[i];
return s;}
Если размерность массива известна и меняться не будет, то можно передать следующим образом:
#include <iostream>
const int n=2;
int sum(int mas[n][n],const int n)
{int s=0;
for (int i=0;i<n;i++)
for (int j=0;j<n;j++) s+=mas[i][j];
return s;}
int main()
{int x[n][n]={1,2,3,4};int y[n][n];
cout<<”введите массив\n”;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++) cin>>y[i][j];
cout<<”сумма элементов массива х:”<<sum(x,n)<<’\n’;
cout<<”сумма элементов массива y:”<<sum(y,n)<<’\n’;
return 0;}
(41)Передача параметров-функций в подпрограмму.
Идентификатор функции или процедуры может использоваться в качестве параметра другой функции. Если такая необходимость появилась, то требуется соответствующим образом специфицировать каждый такой формальный параметр. Спецификацией в этом случае являются: заголовок передаваемой функции, включающей имя функции, список формальных параметров и тип результата. Спецификация функции описывается в разделе TYPE следующим образом: TYPE <имя спецификации> = FUNCTION(<список параметров>): <тип результата>;
(42)Рекурсивне функции,примеры.
Рекурсия-возвращение. Подпрограмма, обращающаяся сама к себе называется рекурсивной, такая рекурсия называется прямой. При реализации рекурсивных алгоритмов должны быть рекурсивные ветви, и хотя бы одна не рекурсивная ветвь, которая дает решение, ответ.
Возможна более сложная схема: функция А вызывает функцию В, а та в свою очередь вызывает А.Это называется сложной или косвенной рекурсией. При этом оказывается, что описываемая первой подпрограмма должна вызывать еще не описанную подпрограмму. Чтобы это было возможно, требуется использовать опережающее описание, в С++ это прототипы функций. В общем случае подпрограмма может содержать вызов других подпрограмм, в том числе она может вызывать саму себя void Rec(int a){if(a>0)then Rec(a-1);cout<<a;} Не всегда полезна рекурсия, если рекурсию моно заменить одним циклом, то лучше это сделать.
#include<iostream>
using namespace std;
void r(int x) { }
void f(int x)
{
cout << "!"; ((void(*)(int))(int*)(-!x&int((int*)&r)|int((int*)&f)&-!!x))(x-1);
}
int main()
{
f(8);
return 0;
}
(43)Шаблоны функций,структура и назначение, Шаблоны- средство языка С++, предназначенное для создания обобщающих алгоритмов, без привязки к некоторым параметрам, типам данных. Цель введения – автоматизация создания функций, которые могут обрабатывать с разными типами данных. Они используют параметры(тип возвращаемого значения, типы параметров функций, типы любых локальных величин, определённых внутри функций. Список формальных величин параметров шаблона вносится в < >, элементы разделяются запятой, каждый формальный параметр должен начинаться с ключевого слова class/type name, затем идентификация определяет имя формального параметра. Шаблон семейства функций состоит из 2ух частей: заголовок шаблона и определение функции, внутри который используются формальные параметры Tempale <список параметров шаблона> Механизм шаблонов позволяет автоматизировать переопределение перезагруженных функций.
