Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Базовые алгоритмы на массивах.




Вывод массива на экран;

intmas[10];

for(i=0;i<10;i++)

{

                   printf(“%d”, mas[i]);

}

Вычисление суммы (произведения, среднего значения, ...) элементов массива.

int mas[10];

for(i=0;i<10;i++)

                   sum += mas[i];

Поиск минимума, максимума (в неупорядоченном массиве).

int max = 0, i;

int mas[10];

for(i=1;i<10;i++)

{

       If (mas[max]<mas[i])

                   max = i

}

Поиск заданного значения (в неупорядоченном массиве).

int par, i;

int mas[10];

scanf (“%d”, &par);

for(i=1;i<10;i++)

{

       If (mas[par]=mas[i])

                   printf(“Найдено”);

}

Реверсирование (обращение) массива.

#include<stdio.h>
#defineN 9
main()

{
int a[N], i, b;
for (i=0; i<N; i++) scanf("%d",&a[i]);
for (i=0; i<N/2; i++)

{
            b = a[i];
            a[i] = a[N-i-1];
            a[N-i-1] = b;
     }
for (i=0; i<N; i++) printf("%d ",a[i]);
printf("\n");

}

16.Организация хранения и работы с двумерными массивами Двумерные массивы.Примеры задач.

Ответ:

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

Массив представляет собой компьютерный эквивалент таблицы или матрицы.

Массив – это упорядоченная совокупность переменных, которые имеют общее имя и одинаковый тип.

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

Имя массива – это общее имя переменных, входящих в массив.

Тип массива – тип переменных, входящих в массив.

Длина массива – общее количество элементов в массиве.

Размер массива в памяти (в байтах) определяется как Длина массива х Размер типа массива (в байтах).

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

Каждый индекс изменяется в некотором диапазоне [a,b]. Где a - нижняя граница, b - верхняя граница индекса.

В языке C нижняя граница значения каждого индекса равна "0" (т.е. элементы массивы нумеруются с "0").

Размерность массива – это количество индексов у каждого элемента массива (у двумерного массива – два индекса).












Описание массива.

Тип_массива Идентификатор_массива[n][m]

Где:

· n, m – количество элементов массива по соответствующей размерности (т.е. общее количество элементов массива равно n).

Примеры описания массивов:

inta[10][5];

double b[20][76];

floatc[12][5];

chardsd[4][5];

Примеры доступа к элементам массива:

a[4] = a[i][4] + a[1];

Хранение массива в памяти:

Двумерный массив (массив массивов) хранится в памяти последовательно, по строкам:

· Сначала хранятся все элементы первой строки (первый индекс = 0),

· Затем элементы второй строки (первый индекс = 1) и т.д.

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

Реальный адрес элемента двумерного массива в памяти:

РеалАдрес(D[j][i]) = БазАдрес(D) + (j*КолСтолбцов+i)*РазмерЭлемента

Инициализация элементов массива:

При определении массива возможна его инициализация, т.е. присваивание начальных значений его элементам

Вариант инициализации массива № 1 (при описании):

· Перечисление начальных значений элементов массива без указания размера массива (вычисляется автоматически):

double d[][] = {[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]}

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

double A[3][2] = { {10, 20}, {30, 40}, {50, 60} }

double A[3][2] = { 10, 20, 30, 40, 50, 60 }

Вариант инициализации массива № 2 (при вводе значений в цикле, например, с клавиатуры):

int i;

int a[CONST][const];

for (i=0; i<CONST; i++)

{

       for (j=0; j<const; j++)

       {

scanf("%d", &a[i][j]);

}

}

Базовые алгоритмы на массивах.

Вывод массива на экран;

intmas[10][10];

for(i=0;i<10;i++)

{     

       for(j=0;j<10+i;j++)

                              printf(“%d”, mas[i][j]);

}

Вычисление суммы (произведения, среднего значения, ...) элементов массива.

int mas[10][10];

for(i=0;i<10;i++)

       for(j=0;j<10;j++)

                              sum += mas[i][j];

Поиск минимума, максимума (в неупорядоченном массиве).

int max = 0, i;

int mas[10][10];

for(i=1;i<10;i++)

{

       for(j=0;j<10;j++)

              If (mas[max]<mas[i])

                          max = i

}

Поиск заданного значения (в неупорядоченном массиве).

int par, i;

int mas[10][10];

scanf (“%d”, &par);

for(i=1;i<10;i++)

{

       for(j=0;j<10;j++)

              If (par=mas[i][j])

                          printf(“Найдено”);

}

Принципы структурного программирования. Блочный (модульный) подход к построению алгоритмов решения задач на языке Си. Примеры.

Ответ:

Теорема о структурном программировании (теорема Бёма-Якопини, 1965):

Любая программа, заданная в виде блок-схемы, может быть представлена с помощью трех управляющих структур:

o Последовательность: f THEN g.

o Ветвление: IF p THEN f ELSE g.

o Цикл: WHILE p DO f.

Где:

f, g — блок-схемы с одним входом и одним выходом,

р — условие,

THEN, IF, ELSE, WHILE, DO — ключевыеслова.

Пояснение. Формула f THEN g означает: сначала выполняется f, затем g.

Принципы структурного программирования (кратко):

· Базовые конструкции могут быть вложены друг в друга произвольным образом.

· Повторяющиеся конструкции оформляются виде подпрограмм.

· Проектирование "сверху-вниз".

· 3 (4) базовых алгоритмических конструкции, имеющих 1 вход и 1 выход.

· Блок – логически законченная группа команд.

Принципы структурного программирования (объёмно):

1. Принцип 1.

Следует отказаться от использования оператора безусловного перехода goto.

2. Принцип 2.

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

Последовательность — однократное выполнение операций в том порядке, в котором они записаны в тексте программы.

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

Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).

3. Принцип 3.

В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом.

Никаких других средств управления последовательностью выполнения операций не предусматривается.

4. Принцип 4.

Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций).

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

В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция «Вызов подпрограммы». При выполнении такой инструкции работает вызванная подпрограмма. После этого продолжается исполнение основной программы, начиная с инструкции, следующей за командой «Вызов подпрограммы».

Бертран Мейер поясняет: «Преобразуйте элемент, возможно, с внутренними элементами, в подпрограмму, характеризуемую одним входом и одним выходом в потоке управления».

 

 

5. Принцип 5.

Каждую логически законченную группу инструкций следует оформить как блок (block).

Блоки являются основой структурного программирования.

Блок — это логически сгруппированная часть исходного кода, например, набор инструкций, записанных подряд в исходном коде программы. Понятие блок означает, что к блоку инструкций следует обращаться как к единой инструкции. Блоки служат для ограничения области видимости переменных и функций. Блоки могут быть пустыми или вложенными один в другой. Границы блока строго определены.

6. Принцип 6.

Все перечисленные конструкции должны иметь один вход и один выход.

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

7. Принцип 7.

Разработка программы ведётся пошагово, методом «сверху вниз» (top–down method).










Последнее изменение этой страницы: 2018-04-12; просмотров: 454.

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