- •Тема 2.5. Основные конструкции языков программирования
- •2.5.1.2. Средства программирования алгоритмов линейной структуры
- •Input [;] [подсказка { ; | , }] список_переменных
- •Input “Введите коэффициенты уравнения a, b, c “, a#, b#, c#
- •Input ;“Радиус круга”; r!
- •2.5.1.3. Средства программирования разветвляющихся структур
- •If выражение then оператор(ы) [else оператор(ы)]
- •2.5.1.4. Средства программирования регулярных циклических структур
- •2.5.1.5. Средства программирования итеративных циклических структур
- •2.5.1.6. Средства описания и работы с одномерными массивами данных
- •Dim v1([imin to] imax) as type [, . . . Vn([imin to] imax) [as type]
- •2.5.1.7. Средства описания и работы с двумерными массивами данных
- •2.5.1.8. Строковые данные и операции над строками
- •Val(строка)
- •2.5.1.9. Средства процедурного программирования в среде qb
- •Dim shared переменная [as тип][, переменная [as тип]]...
- •Intx,y;
- •Void main(void)
- •Int test_score;
- •Void main(void)
- •Void main (void)
- •Void main(void)
- •Void main(void)
- •2.5.2.2. Средства программирования алгоритмов линейной структуры и функций
- •Int main ()
- •Int main ()
- •Void main(void)
- •Voidmain(void)
- •Void main(void)
- •Void main(void) {
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main (void)
- •Int rus (unsigned char r)
- •Int rus (unsignedcharr); или rus (unsignedchar);
- •2.5.2.3. Средства программирования разветвляющихся структур
- •If (выражение) оператор_1; [ else оператор_2;]
- •2.5.2.4. Средства программирования регулярных циклических структур
- •Int main ( )
- •If (br2) break;
- •2.5.2.5. Средства программирования итеративных циклических структур
- •2.5.2.6. Средства описания и работы с одномерными массивами данных
- •Int array[4]; /* array - массив из 4 элементов типа int */
- •Int minmaxel (float*mas, int n, int&min)
- •2.5.2.7. Средства описания и работы с двумерными массивами данных
- •Int w[2][3]; /* двумерный массив из двух строк и трех столбцов
- •Int minimum(int [][exams], int, int);
- •Int maximum(int [][exams], int, int);
- •Void printArray(int [][exams], int, int);
- •Int main()
- •Int minimum(int grades[][exams], int pupils, int tests)
- •Int maximum(int grades [][exams], int pupils, int tests)
- •Void printArray(int grades [][exams], int pupils, int tests)
- •2.5.2.8. Строковые данные и операции над строками
- •Int strlen(char s[])
- •Void testirovanie ()
- •Void testirovanie();
- •Void reshenie();
- •Void main (void)
- •2.5.3. Контрольные вопросы по теме «Основные конструкции языка программирования qb» (вставить из лаб.Работ!)
- •2.5.4. Тестовые задания по теме «Основные конструкции языка программирования qb»
- •End select
- •Тема 2.5. Основные конструкции языков программирования Страница 274
Int minmaxel (float*mas, int n, int&min)
{
float max=*mas; min=mas[0];
int imax; imax=imin=0;
for (int i=1; i<n; i++)
{
if (min>mas[i])
{
imin=i; min=*(mas+i);
}
if (max<mas[i])
{
max=mas[i]; imax=i;
}
}
return imax;
}
void main ()
{
float mas [] {1, -3, 7, 8, 15, 16, 17, 1, 5};
int imin;
int imax=minmaxel(mas, 9, imin);
cout <<”максимальный элемент “<< mas [ imax ]<<” минимальный
элемент “<<mas[imin];
}
//Динамическое распределение памяти массива
#include < iostream . h >
int minmaxel (float*mas, int n, int&min)
{
float max=*mas;
min=mas[0];
int imax;
imax=imin=0;
for (int i=1; i<n; i++)
{
if (min>mas[i])
{
imin=i;
min=*(mas+i);
}
if (max<mas[i])
{
max=mas[i];
imax=i;
}
}
return imax;
}
float * vvod (int n)
{
float* mas= new float [n];
cout<<” Введите ”<<n<<” чисел ”;
for (int i=0; i<n ; i++)
cin>>mas [i];
return mas;
}
void main ()
{
int n=4;
float*mas=vvod(n); // 16, -2, 4, 2
int imin;
int imax=minmaxel(mas, 9, imin);
cout <<”максимальный элемент “<< mas [ imax ]<<” минимальный
элемент “<<mas[imin];
delete [] mas; }
С++ автоматически передает массивы функциям, используя моделируемый вызов по ссылке— вызываемые функции могут изменять значения элементов в исходных массивах источника вызова.
Значение имени массива является адресом первого элемента массива. Поскольку в функцию передается начальный адрес массива, вызываемая функция знает, где хранится массив. Поэтому, когда вызываемая функция модифицирует элементы массива в теле функции, она модифицирует реальные элементы массива в их истинных ячейках памяти.
Передача массивов с помощью моделируемого вызова по ссылкеощутимо влияет на производительность. Если бы массивы передавались по значению, передавалась бы копия каждого элемента. Для больших, часто передаваемых массивов это привело бы к значительному потреблению времени и памяти для хранения копий массивов .
Для предотвращения модификации исходного массива внутри тела функции можно в определении функции применять к параметру массив спецификатор типа const. Это еще один пример принципа наименьших привилегий. Функциям не должно быть позволено модифицировать массивы без крайней необходимости .
Следует отметить, что независимо от конкретной задачи, алгоритмы формирования и обработки массивов обычно строятся с использованием регулярных циклических структур, а при работе с многомерными массивами с использованием вложенных циклов (цикл в цикле).
2.5.2.7. Средства описания и работы с двумерными массивами данных
Как известно, массив- последовательность переменных одинакового типа, объединенных общимименем. Например: двумерный массивb(3, 2):
b(0,0) b(0,1) b(0,2)
b(1,0) b(1,1) b(1,2)
b(2,0) b(2,1) b(2,2)
b(3,0) b(3,1) b(3,2)
Количество индексов указывает на размерностьмассива. Так, в приведенном выше примере размерность массиваb(3,2)-2 (двумерный). А размер массиваb(3,2) равен12-ти.
В языке С++ определены только одномерные массивы, но поскольку элементом массива может быть массив, можно определить и многомерные массивы. Они формализуются списком константных_выражений следующих за идентификатором массива, причем каждое константное_выражение заключается в свои квадратные скобки.
Каждое константное_выражение в квадратных скобках определяет число элементов по данному измерению массива, так что объявление двухмерного массива содержит два константных_выражения, трехмерного три и т.д. Например: