Типовой алгоритм обработки двумерного массива Программная реализация на Бейсике отдельно по строкамПрограммная реализация на Бейсике отдельно по столбцамПрограммная реализация на Бейсике Типовой алгоритм обработки одномерного массива Программная реализация на Бейсике Сумма ….s= 0for i= 1 to n for j= 1 to m s= s+ a(i , j)next j next i print ”s=”; s… ….for i= 1 to ns(i)=0next i for i= 1 to nfor j= 1 to m s(i)= s(i)+ a(i , j)next j next i for i= 1 to n print s(i); ” ”;next i … ….for j= 1 to m s(j)= 0next jfor j= 1 to m for i= 1 to ns(j)= s(j)+ a(i , j)next i next j for j= 1 to mprint s(j); ” ”;next j … Сумма ….s= 0For i= 1 to n s = s+ a ( i )next i print ”s=”; s… Произведение ….p= 1for i= 1 to n for j= 1 to m p= p* a(i , j)next j next i print ”p=”; p… …for i= 1 to n p(i)= 1next i for i= 1 to n for j= 1 to mp(i)= p(i) * a(i,j)next j next i for i= 1 to n print p(i); ” ”;next i … …for j= 1 to m p(j)= 1 next jfor j= 1 to m for i= 1 to np(j)= p(j) * a(i,j)next i next j for j= 1 to mprint p(j); ” ”;next j … Произведение … p= 1For i= 1 to n p= p* a( i )next i print p… Выбор по условию …for i= 1 to n for j= 1 to m if thenRez= …next j next i print Rez… …For i= 1 to nRez(i)=0next i for i= 1 to n for j= 1 to m if thenRez(i)= … next j next i for i= 1 to n print Rez(i); ” ”;next i … …for j= 1 to m Rez(j)=0next j for j= 1 to m for i= 1 to n if thenRez(j)= … next i next j for j= 1 to m print Rez(j); ” ”;next j … Выбор по условию …k=0s= 0p= 1For i = 1 to n if thenk=k+1 : s= s+ a( i ) : p=p* a( i )next i print k : print s : print p… Максимальный (минимальный) элемент …max=a(1,1)min=a(1,1)for i= 1 to n for j= 1 to m if a(i,j) > max then max=a(i,j)if a(i,j) next j next i print ”max=”; maxprint ”min=”; min… …For i= 1 to nmax(i)=a(i,1)min(i)=a(i,1)next i for i= 1 to n for j= 1 to m if a(i,j) > max(i) then max(i)=a(i,j)if a(i,j) min(i)=a(i,j)next j next i for i= 1 to n print max (i); ” ”;printprint min (i); ” ”;next i … …For j= 1 to mmax(j)=a(1,j)min(j)=a(1,j)next j for j= 1 to m for i= 1 to n if a(i,j) > max(j) then max(j)=a(i,j)if a(i,j) min(j)=a(i,j)next inext jfor j= 1 to m print max (j); ” ”;printprint min (j); ” ”;next j … Максимальный (минимальный) элемент …max=a(1)min=a(1)For i = 2 to n doif a(i) > max then max=a( i )if a(i) next i print ”max=”; maxprint ”min=”; min… Заполнение массива input n: input mdim a(n,m)for i=1 to nfor j= 1 to minput a(i,j)next j next i … Заполнение массива …input ndim a(n)for i=1 to ninput a(i)next i … Вывод (таблицей) ….for i= 1 to n for j= 1 to m print a(i,j);” ”;next j print next i … на Бейсике:сортировки одномерных массивов: Вывод в строку …for i=1 to nprint a(i);” ”;next i … Вывод в столбец …for i=1 to nprint a(i)next i … 1 методом «Пузырька»…for j = n to 2 step -1for i = 1 to j-1 if a(i)>a(i+1) then swap a(i), a(i+1)next inext j... 2 методом «Пузырька»…for i = 1 to nfor j = 1 to n-1 if a(j)>a(j+1) then swap a(j), a(j+1)next jnext i... «Выбором»for i = 1 to n-1for j = i+1 to n if a(i)>a(j) then swap a(i), a(j)next jnext i... Вставка dim a (n+1)…for i=n to k step -1a( i + 1 )= a(i)next i a( k )= x… Удаление …for i =k to n-1a(i) = a( i + 1 )next i … Типовой алгоритм обработки двумерного массива Программная реализация на Паскале отдельно по строкамПрограммная реализация на Паскале отдельно по столбцамПрограммная реализация на Паскале Типовой алгоритм обработки одномерного массива Программная реализация на Паскале Сумма ….s:= 0;For i:= 1 to n do For j:= 1 to m do s:= s+ a[i,j];writeln( ’s=’, s);… ….For i:= 1 to n dos[i]:= 0;For i:= 1 to n do For j:= 1 to m do s[i]:= s[i]+ a[i,j];For i:= 1 to n dowrite(s[i], ’ ’);… ….For j:= 1 to m dos[j]:= 0;For j:= 1 to m do For i:= 1 to n do s[j]:= s[j]+ a[i,j];For j:= 1 to m dowrite(s[j], ’ ’);… Сумма ….s:= 0;For i:= 1 to n do s:= s+ a[ i ];writeln( ’s=’, s);… Произведение ….p:= 1;For i:= 1 to n doFor j:= 1 to m dop:= p* a[i,j];writeln( ’p=’, p);… …For i:= 1 to n dop[i]:= 1;For i:= 1 to n do For j:= 1 to m do p[i]:= p[i] * a[i,j];For i:= 1 to n dowrite(p[i], ’ ’);… …For j:= 1 to m dop[j]:= 1;For j:= 1 to m do For i:= 1 to n do p[j]:= p[j] * a[i,j];For j:= 1 to m dowrite(p[j], ’ ’);… Произведение … p:= 1;For i:= 1 to n do p:= p* a[ i ];writeln( ’p=’, p);… Выбор по условию …For i:= 1 to n doFor j:= 1 to m doif thenRez:= …;For i:= 1 to n dowriteln(’Rez=’, Rez);… …For i:= 1 to n dobeginRez[i]:=0;end;For i:= 1 to n do For j:= 1 to m do if then Rez[i]:= … ;For i:= 1 to n dowrite(Rez[i], ’ ’);… …For j:= 1 to m dobeginRez[j]:=0;end;For j:= 1 to m do For i:= 1 to n do if then Rez[j]:= … ;For j:= 1 to m dowrite(Rez[j], ’ ’);… Выбор по условию …k:=0;s:= 0;p:= 1;For i:= 1 to n do if then begink:=k+1; s:= s+ a[ i ];p:= p* a[ i ]; end;… Максимальный (минимальный) элемент …max:=a[1,1];min:=a[1,1];For i:= 1 to n do For j:= 1 to m do begin if a[i,j] > max then max:=a[i,j]; if a[i,j] min:=a[i,j]; end;writeln(’max=’, max);writeln (’min=’, min);… …For i:= 1 to n dobeginmax[i]:=a[i,1];min[i]:=a[i,1];end;For i:= 1 to n do For j:= 1 to m do begin if a[i,j] > max[i] then max[i]:=a[i,j]; if a[i,j] min[i]:=a[i,j]; end;For i:= 1 to n dowrite(max[i], ’ ’);writeln;For i:= 1 to n dowrite(min[i], ’ ’);… …For j:= 1 to m dobeginmax[j]:=a[i,1];min[j]:=a[i,1];end;For j:= 1 to m do For i:= 1 to n do begin if a[i,j] > max[j] then max[j]:=a[i,j]; if a[i,j] min[j]:=a[i,j]; end;For j:= 1 to m dowrite(max[j], ’ ’);writeln;For j:= 1 to m dowrite(min[j], ’ ’);… Максимальный (минимальный) элемент …max:=a[1];min:=a[1];For i:= 2 to n do begin if a[i] > max then max:=a[ i ]; if a[i] min:=a[ i ]; end;writeln( ’max=’, max);writeln( ’min=’. min);… Заполнение массива …For i:= 1 to n doFor j:= 1 to m do readln(a[ i, j]);… Заполнение массива const n=10;var a: array [1..n] of … ;I : integer;Beginfor i:=1 to n do readln (a[i]);… Вывод (таблицей) ….For i:= 1 to n dobegin For j:= 1 to m do begin write(a[ i, j ]),’ ’ ); end;writeln;end;… на Паскале:сортировки одномерных массивов: Вывод в строку …for i:=1 to n dowrite(a[i],’ ’ );… Вывод в столбец …for i:=1 to n dowriteln(a[i]);… 1 методом «Пузырька»…for j:= n downto 2 dofor i:= 1 to j-1 do if a[i]>a[i+1] then begin x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x; end;... методом прямых вставок с барьером …for i:= 2 to n do if a[i-1]>a[i] then begin a[0]:= a[i]; j:= i-1; while a[j]>a[0] do begin a[j+1]:= a[j]; j:= j-1; end; a[j+1]:= a[0]; end;… 2 методом «Пузырька»:…for j:=1 to n-1 do for i:=1 to n-j do if а[i] > а[i+l] then begin b:=а[i]; а[i]:=а[i +1]; а[i+1]:=b; end;… «Выбором»…k:=0;for i:=1 to n-1 do for j:=i+1 to n do beginK:=K+1;if y[i]>[j] thenbeginb:=y[i];y[i]:=y[j];y[j]:=b;end;end;… простыми вставками:…for i:= 2 to n do if a[i-1]>a[i] then begin x:= a[i]; j:= i-1; while (j>0) and (a[j]>x) do begin a[j+1]:= a[j]; j:= j-1; end; a[j+1]:= x; end;… Вставка …for i:=n downto k doa[ i + 1 ]:= a[i];a[ k ]:= x;… Удаление …for i:=k to (n-1) doa[i]:= a[ i + 1 ];… Паскаль. Часть 3. Задание C1.Исправление ошибок в простой программе с условными операторами.Что нужно знать:правила построения программы на Паскале, Бэйсике.правила работы с переменными (объявление, ввод, вывод, оператор присваивания)ветвление – это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое условие;на блок-схеме алгоритма ветвление изображается в виде блока-ромба с одним входом и двумя выходами:условный оператор if–else служит для организации ветвления в программе на языке Паскальусловный оператор может иметь полную или неполную форму; вот фрагменты программы, реализующие ветвления, показанные на рисунках 1 и 2: полная форма: неполная форма: if a = b then begin{ блок-1 } endelse begin{ блок-2 } end; if a = b then begin{ блок-1 } end; обычно при записи программы операторы, находящиеся внутри обоих блоков, сдвигают вправо на 2-3 символа (запись «лесенкой»), это позволяет сразу видеть начало и конец блока (конечно, если «лесенка» сделана правильно)после else не надо (нельзя!) ставить какое-то условие, эта часть выполняется тогда, когда условие после if невернов Паскале перед else не ставится точка с запятой, поскольку это ключевое слово обозначает не начало нового оператора, а вторую часть условного оператора if–elseслова begin и end (их называют также «операторные скобки») ограничивают блок-1 и блок-2; если внутри блока всего один оператор, эти «скобки» можно не писать, например, допустимы такие операторы а вот такие операторы недопустимы: if a = b then c:=1else c:=0; if a = b then beginc:=1;endelse c:=0; if a = b then c:=1; if a = b then beginc:=1else c:=0; if a = b thenc:=1;endelse c:=0; if a = b then c:=1;d:=1;else x:=1; в ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой» или с неправильными отступами, например, так: if a = b then beginif a = c thenc:=1;endelse c:=0; if a = b then if a = c thenc:=1else c:=0; первом случае есть begin, но забыли про соответствующий ему end; во втором фрагменте наоборот, есть end, а begin отсутствует; if a = b then beginc:=1;d:=1;endelse x:=1; третий случай более сложный: судя по записи «лесенкой», здесь внутри блока-1 находятся 2 оператора, а операторных скобок begin-end нет; в результате получилось, что оператор c:=1 находится внутри блока-1, он выполняется только при условии a=b; оператор d:=1 выполняется всегда, после того, как условный оператор закончил работу; а else вообще «висит» непонятно как, тут транслятор выдаст ошибку; исправить эту программу можно так, как показано справа (добавив пару begin-end): чтобы разобраться с работой этих программ, нужно определить, к какому из условных операторов if относится часть else; для этого используют такое правило: «любой else относится к ближайшему if»в условных операторах можно использовать сложные условия, которые строятся из простых отношений (, >=, =, ) с помощью логических операций not («НЕ», отрицание), and («И», одновременное выполнение двух условий) и or («ИЛИ», выполнение хотя бы одного из двух условий)в сложном условии сначала выполняются действия в скобках, потом – not, затем – and, затем – or и, наконец, отношения; операции равного уровня (приоритета) выполняются последовательно слева направо if (a = b) or (b d) then begin...end; поскольку отношения в Паскале имеют низший приоритет, в сложном условии их приходится брать в скобки: в приведенном выше примере сначала определяются результаты сравнения (выражения в скобках), затем выполняется операция and («И»), а затем – or («ИЛИ»)Возможные проблемы:как правило, в этой задаче требуется использовать знания из курса математики (решение уравнений, графики функций, составление уравнений прямой по приведенному графику)как показывает анализ опубликованных задач этого типа, нужно уметь, прежде всего, разбираться в серии вложенных условных операторов в полной и неполной форменеправильная «лесенка» в записи сбивает с толку и подталкивает к неверному решению; чтобы разобраться в программе, лучше на черновике построить блок-схему алгоритма и правильную «лесенку»чтобы не запутаться, к какому оператору относится else, используйте следующее правило:если перед else нет слова end, нужно искать ближайший сверху условный оператор if если перед else стоит end (конец блока), нужно искать парный ему begin (начало блока) и соответствующий условный оператор if ... then beginпроверяйте, все ли необходимые условия учтены в программе, это особенно актуально для немонотонных функций типа синуса или косинуса (немонотонные функции на некоторых участках возрастают при увеличении аргумента, а на некоторых – убывают); не перепутайте, где нужно использовать операцию and («И», одновременное выполнение условий), а где – or («ИЛИ», хотя бы одно условие)нужно внимательно проверять, всегда ли программа выдает сообщение, если заданное условие не выполняется;часто бывает полезно нарисовать блок-схему алгоритма, которая позволяет увидеть ход выполнения программы при всех возможных вариантах;проверяйте, включает ли заданная область свои границы; если включает – в отношениях будут нестрогие неравенства (=), если не включает – строгие ();при оценке работы можно (при абсолютно правильном решении) потерять баллы из-за синтаксических ошибок в программе (скобки, точки с запятой, неправильное написание оператора и т.п.); не забывайте, что в сложном условии все простые условия (отношения) нужно брать в скобки, так как в Паскале отношения при вычислении логического выражения имеют самый низкий приоритетперед else точка с запятой никогда не ставится в конце программы после последнего end ставится точка.За что снимают баллы:неправильно определены входные данные, при которых исходная программа работает неверноисправлены не все ошибки в программе,программа работает правильно в большем количестве случаев, чем исходная, но не для всех возможных исходных данныхперепутаны знаки , логические операции or и andневерно расставлены операторные скобки begin-endсинтаксические ошибки (знаки пунктуации – запятые, точки, точки с запятой; неверное написание ключевых слов); чтобы получить 3 балла, нужно сделать не более одной синтаксической ошибки; на 2 балла – до двух ошибок, на 1 балл – до трех ошибок Часть 3. Задание C2.Обработка массива (написать программу из 10-15 строк на языке программирования или алгоритм на естественном языке).Что нужно знать:массив – это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядомдля обращения к элементу массива используют квадратные скобки, запись A[i] обозначает элемент массива A с номером (индексом) iдля обработки всех элементов массива используется цикл видаfor i:=1 to N do begin{ что-то делаем с элементом A[i] } end; переменная i обозначает номер текущего элемента массива, она меняется от 1 до N с шагом 1, то есть мы «проходим» последовательно все элементыматрица (двухмерный массив) – это прямоугольная таблица однотипных элементовесли матрица имеет имя ^ A, то обращение A[i,k] обозначает элемент, расположенный на пересечении строки i и столбца k k i A[i,k] каждая строка матрицы – это обычный (одномерный, линейный) массив; для того, чтобы обработать строку i в матрице из M столбцов, нужно использовать цикл, в котором меняется номер столбца k:for k:=1 to M do begin{ что-то делаем с элементом A[i,k] } end;каждый столбец матрицы – это обычный (одномерный, линейный) массив; для того, чтобы обработать столбец k в матрице из N строк, нужно использовать цикл, в котором изменяется номер строки i:for i:=1 to N do begin{ что-то делаем с элементом A[i,k] } end;Возможные проблемы:проверяйте правильность минимального и максимального значения переменной цикла в заголовке цикла forкак видим, основная сложность в этой задаче – не написать программу, а придумать хороший (часто еще нужно – быстрый) алгоритмпроверьте, что будет записано в переменные до начала цикла (определены ли их начальные значения)проверяйте, не выйдет ли индекс за границу массива в начале или в конце циклабудьте внимательны с «крайними» случаями, например, нужно обязательно убедиться, что программа работает, когда интересующая нас цепочка стоит в самом начале или в самом конце массивапроверьте, правильно ли заданы (и заданы ли вообще) начальные значения для всех переменныхпроверьте, правильно ли расставлены операторные скобки begin-end, ограничивающие тело цикла; их обязательно нужно ставить, если в теле цикла несколько операторовпроверяйте, не выйдет ли индекс за границу массива в начале или в конце циклане перепутайте номер строки (это первый индекс) и номер столбца (второй индекс)для надежности не рекомендуется использовать в одной программе переменные i и j, потому что они слишком похоже выглядят, вот пример ошибочного решения в этой задаче:for i:=1 to N do beginmax := A[i,1];for i:=2 to N doif A[j,i] > max then max := A[i,j];Sum := Sum + max;end;Немного тактики:если вы хорошо умеете выражать свои мысли по-русски, эксперты рекомендуют писать только алгоритм на русском языке; дело в том, что если вы сделаете много ошибок в программе, оценка будет снижена даже при абсолютно правильном алгоритмеесли вам сложно изъясняться на родном языке, а легче записать свои мысли на Паскале или Си – пишите программу, но тщательно проверяйте ее на предмет возможных случайных ошибок-опечаток, которые можно сделать просто по невнимательности:задавайте все начальные значения для переменныхпроверяйте правильность написания ключевых словесли в теле цикла несколько операторов, заключайте их в блок begin-end (операторные скобки)проверяйте начальное и конечное значение переменной циклаесли вы используете циклы while или repeat, проверьте, что переменная цикла изменяется в теле цикла (иначе в программе будет зацикливание, а на ЕГЭ – потерянные баллы)выводите на экран именно то, что требуется по условиюставьте точку с запятой в конце операторовНЕ ставьте точку с запятой перед else (Паскаль)ставьте точку в конце последнего оператора end (Паскаль)За что снимают баллы:задано неверное начальное значение переменных (или вообще не задано)неверно указано условие завершения цикла«забыли» изменять переменную цикла в цикле while (repeat) перепутаны знаки , логические операции or и andневерно расставлены операторные скобки begin-endпрограмма не выводит результат или выводит не то, что спрашиваютсинтаксические ошибки (знаки пунктуации – запятые, точки, точки с запятой; неверное написание ключевых слов) допускаются в разумных пределах (если они не искажают замысел автора)Бейсик. Часть 3. Задание C1.Что нужно знать:правила построения программы на Бэйсике.правила работы с переменными (объявление, ввод, вывод, оператор присваивания)ветвление – это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое условие;на блок-схеме алгоритма ветвление изображается в виде блока-ромба с одним входом и двумя выходами:условный оператор if–else служит для организации ветвления в программе на языке Бэйсик.условный оператор может иметь полную или неполную форму; вот фрагменты программы, реализующие ветвления, показанные на рисунках 1 и 2: Линейная форма Блочная форма полная форма: неполная форма: полная форма: неполная форма: if a = b then блок-1 else блок-2 if a = b then блок-1 ^ IF a = b THEN блок-1 ELSE блок-2END IF IF a = b THEN блок-1END IF ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой» или с неправильными отступами.чтобы разобраться с работой этих программ, нужно определить, к какому из условных операторов if относится часть else; и правильно использовать блочную форму на три условия. Блочная форма на три условия: Линейная форма на три условия:IF a = b THEN if a = b then блок-1 else if a > b then блок-2 else блок-3блок-1 ELSEIF a > b THENблок-2ELSEблок-3END IFв условных операторах можно использовать сложные условия, которые строятся из простых отношений (, >=, =, ) с помощью логических операций not («НЕ», отрицание), and («И», одновременное выполнение двух условий) и or («ИЛИ», выполнение хотя бы одного из двух условий)в сложном условии сначала выполняются действия в скобках, потом – not, затем – and, затем – or и, наконец, отношения; операции равного уровня (приоритета) выполняются последовательно слева направоВозможные проблемы:как правило, в этой задаче требуется использовать знания из курса математики (решение уравнений, графики функций, составление уравнений прямой по приведенному графику)как показывает анализ опубликованных задач этого типа, нужно уметь, прежде всего, разбираться в серии вложенных условных операторов в полной и неполной форменеправильная «лесенка» в записи сбивает с толку и подталкивает к неверному решению; чтобы разобраться в программе, лучше на черновике построить блок-схему алгоритма и правильную «лесенку»если использовали блочную форму записи, то закрыть end if, а elseif записываем слитно.если линейную, то else if записываем раздельно.проверяйте, все ли необходимые условия учтены в программе, это особенно актуально для немонотонных функций типа синуса или косинуса (немонотонные функции на некоторых участках возрастают при увеличении аргумента, а на некоторых – убывают); не перепутайте, где нужно использовать операцию and («И», одновременное выполнение условий), а где – or («ИЛИ», хотя бы одно условие)нужно внимательно проверять, всегда ли программа выдает сообщение, если заданное условие не выполняется;часто бывает полезно нарисовать блок-схему алгоритма, которая позволяет увидеть ход выполнения программы при всех возможных вариантах;проверяйте, включает ли заданная область свои границы; если включает – в отношениях будут нестрогие неравенства (=), если не включает – строгие ();при оценке работы можно (при абсолютно правильном решении) потерять баллы из-за синтаксических ошибок в программе (скобки, точки с запятой, неправильное написание оператора и т.п.);За что снимают баллы:неправильно определены входные данные, при которых исходная программа работает неверноисправлены не все ошибки в программе,программа работает правильно в большем количестве случаев, чем исходная, но не для всех возможных исходных данныхперепутаны знаки , логические операции or и andсинтаксические ошибки (знаки пунктуации – запятые, точки, точки с запятой; неверное написание ключевых слов); чтобы получить 3 балла, нужно сделать не более одной синтаксической ошибки; на 2 балла – до двух ошибок, на 1 балл – до трех ошибок^ Часть 3. Задание C2.Обработка массива (написать программу из 10-15 строк на языке программирования или алгоритм на естественном языке).Что нужно знать:массив – это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядомдля обращения к элементу массива используют квадратные скобки, запись A(i) обозначает элемент массива A с номером (индексом) iдля обработки всех элементов массива используется цикл видаfor i:=1 to N { что-то делаем с элементом A(i) } next i переменная i обозначает номер текущего элемента массива, она меняется от 1 до N с шагом 1, то есть мы «проходим» последовательно все элементыматрица (двухмерный массив) – это прямоугольная таблица однотипных элементовесли матрица имеет имя ^ A, то обращение A(i,k) обозначает элемент, расположенный на пересечении строки i и столбца k k i A(i,k) каждая строка матрицы – это обычный (одномерный, линейный) массив; для того, чтобы обработать строку i в матрице из M столбцов, нужно использовать цикл, в котором меняется номер столбца k:for k:=1 to M { что-то делаем с элементом A(i,k) } next kкаждый столбец матрицы – это обычный (одномерный, линейный) массив; для того, чтобы обработать столбец k в матрице из N строк, нужно использовать цикл, в котором изменяется номер строки i:for i:=1 to N { что-то делаем с элементом A(i,k) } next iВозможные проблемы:проверяйте правильность минимального и максимального значения переменной цикла в заголовке цикла forкак видим, основная сложность в этой задаче – не написать программу, а придумать хороший (часто еще нужно – быстрый) алгоритмпроверьте, что будет записано в переменные до начала цикла (определены ли их начальные значения)проверяйте, не выйдет ли индекс за границу массива в начале или в конце циклабудьте внимательны с «крайними» случаями, например, нужно обязательно убедиться, что программа работает, когда интересующая нас цепочка стоит в самом начале или в самом конце массивапроверьте, правильно ли заданы (и заданы ли вообще) начальные значения для всех переменныхпроверьте, правильно ли закрыты циклыпроверяйте, не выйдет ли индекс за границу массива в начале или в конце циклане перепутайте номер строки (это первый индекс) и номер столбца (второй индекс)для надежности не рекомендуется использовать в одной программе переменные i и j, потому что они слишком похоже выглядят, вот пример ошибочного решения в этой задаче:for i=1 to N max = A(i,1)for i=2 to N if A(j,i) > max then max = A(i,j)Sum = Sum + maxnext iНемного тактики:если вы хорошо умеете выражать свои мысли по-русски, эксперты рекомендуют писать только алгоритм на русском языке; дело в том, что если вы сделаете много ошибок в программе, оценка будет снижена даже при абсолютно правильном алгоритмеесли вам сложно изъясняться на родном языке, а легче записать свои мысли на Бейсике – пишите программу, но тщательно проверяйте ее на предмет возможных случайных ошибок-опечаток, которые можно сделать просто по невнимательности:задавайте все начальные значения для переменныхпроверяйте правильность написания ключевых словпроверяйте начальное и конечное значение переменной циклавыводите на экран именно то, что требуется по условиюЗа что снимают баллы:задано неверное начальное значение переменных (или вообще не задано)неверно указано условие завершения цикла«забыли» изменять переменную цикла в цикле while … wend или do … loop.перепутаны знаки , логические операции or и andпрограмма не выводит результат или выводит не то, что спрашиваютсинтаксические ошибки (знаки пунктуации – запятые, точки, точки с запятой; неверное написание ключевых слов) допускаются в разумных пределах (если они не искажают замысел автора)