Скачать 298.43 Kb.
|
Ввод значений элементов массива с клавиатурыПример: Const n = 5; Var num : array [1..n] of real; I : integer; begin for i:=1 to n do begin write(’Вводите элемент номер ’,i,’ ’); readln(num[i]); end; …
Текстовый файл должен содержать значения элементов массива, записанные так, как будто бы их вводят с клавиатуры (через пробел, ‘Enter’ и т.п.). В программе должна быть объявлена переменная типа TEXT, которая будет указывать на текстовый файл, файл нужно открыть и указывать на него в каждом операторе ввода (или вывода). Пример: В файле my.txt в каталоге C:\tp\bin должны быть размещены в столбик пять вещественных чисел var F : TEXT; i : integer; M : array [1..5] of real; begin assign(F,’C:\tp\bin\my.txt’); reset(F); for i:=1 to 5 do readln(F,M[i]); close(F); …
Пример: присвоение элементам массива целых чисел, проиндексированных от 1 до n, утроенного значения соответствующего индекса: Const n = 5; Var num : array [1..n] of integer; I : integer; begin for i:=1 to n do num[i]:=i*3; …
Генератором псевдослучайных чисел называют функцию RANDOM. Обращаться к этой функции можно двумя способами:
пример: NUM:=RANDOM(10); num получит в качестве значения одно из чисел 0..9. Чтобы значения, возвращаемые генератором, различались при повторных запусках программы, необходимо до обращения к генератору инициализировать его процедурой RANDOMIZE Пример: Const n = 5; Var num : array [1..n] of integer; I : integer; begin randomize; for i:=1 to n do num[i]:=random(5)+10; … В примере элементы массива получают случайные значения от 10 до 14 включительно
Целые числа из массива выводятся последовательно через пробел. Завершающий оператор WriteLn обеспечивает начало возможного последующего вывода программы с новой строки. Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего. Var A: array [1..10] of integer; I : byte ; {переменная I вводится как индекс массива} Begin For i :=1 to 10 do Write ( a [ i ],’ ‘); {вывод массива осуществляется в строку, после каждого элемента печатается пробел} Вывод можно осуществить и в столбик с указанием соответствующего индекса. Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана. Var A: array [1..10] of integer; I : byte ; {переменная I вводится как индекс массива} Begin For i:=1 to 10 do Writeln (‘a[‘, i,’]=’, a[i]); { вывод элементов массива в столбик }
Перед началом поиска максимального элемента допустим, что его первый элемент и является максимальным элементом, а его индекс указывает позицию максимального элемента в массиве. Это запишется так: max := m[1]; {Cчитать 1-й элемент максимальным} numer_max := 1; {Запомнить номер максимального элемента} Для организации просмотра элементов будем использовать оператор цикла с параметром, который будет указывать индекс очередного элемента (переменная цикла будет индексом элемента массива). Сравнение очередного элемента массива с максимальным осуществляется оператором if m[i] > max then…. Если очередной элемент массива больше, чем максимальный, то следует считать его значение максимальным и запомнить его индекс. Данный фрагмент кода записывается таким образом: for i:= 2 to n do begin if m[i]> max then begin max:= m[i]; numer_max:= i; end; end; Для поиска минимального элемента и его порядкового номера меняем обозначения: min - значение наименьшего элемента; numer_min - его порядковый номер. Перед началом поиска предполагаем, что первый элемент массива минимальный, и его индекс - номер минимального элемента. При сравнении очередного элемента с минимальным, меняем знак отношения на противоположный.
Для вычисления суммы всех элементов массива берем переменную S и присваиваем ей такое начальное значение, чтобы оно не повлияло на результат суммирования. Таким числом является ноль (S:=0). Затем в цикле к переменной S прибавляем элемент массива for i:=1 to n do S:=S+a[i]… PROGRAM Summa; const n=10; var a:array[1..n] of real; S:real; i:integer; BEGIN {заполнение массива} for i:=1 to n do begin write (‘введите‘,i,’-й элемент’); readln (a[i]); end; S:=0; for i:=1 to n do S:=S+ a[i]; write ('сумма элементов массива равна ',S:7:3); readln; END.
Для вычисления суммы положитеных элементов в цикле используем условный оператор if A[i]>0 then …..для проверки элементов на положительность program PositivSumm; const n=10; var a:array[1..n] of real; S:real; i:integer; BEGIN {заполнение массива} for i:=1 to n do begin write (‘введите‘,i,’-й элемент’); readln (a[i]); end; { Присвоим переменным начальные значения } S:=0; { Переменная S будет накапливать сумму всех положительных элементов. } for i:=l to N do if A[i]>0 then S:=S+A[i]; writeln('Сумма положительных элементов =',S) ;readln; end.
Для вычисления количества элементов массива, удовлетворяющие условию, берем переменную p и присваиваем ей такое начальное значение, чтобы оно не повлияло на результат суммирования. Таким числом является ноль (p:=0). Затем в цикле, проверяем условие и к переменной p прибавляем единицу … for i:=1 to n do if a[i]<0 then p:=p+1; …. Program KOLICHESTVO; Var a: array[1..100] of real; n,p,i: integer; begin write('Введите количество элементов: '); readln(n); write('Введите элементы массива'); for i:=1 to n do readln(a[i]); p:=0; for i:=1 to n do if a[i]<0 then p:=p+1; writelen ('Количество отрицательных элементов ',p); readln; end.
Сортировка — перестановка местами объектов в определенном порядке. Известно несколько сотен алгоритмов сортировки. Рассмотрим два способа сортировки.
Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:
Пример работы алгоритма:
( меняются местами 8 и 1)
( меняются местами 3 и 3)
(меняются местами 6 и 4)
(меняются местами 8 и 6)
Program Vibor; const SIZE = 5; var a: array [1..SIZE] of integer; i,j,buf,k: integer; begin for k:=1 to SIZE do read (a [k]); for i:=1 to SIZE -1 do {поиск минимального элемента в части массива от a[i] до a[SIZE]} begin min:= i; for j:= i + 1 to SIZE do if a [j] < a[min] then min:= j; {поменяем местами a [min] и a [i]} buf:= a [i]; a [i]:= a [min]; a [min]:= buf; end; {выведем массив} writeln (‘Массив отсортирован^’); for k:= 1 to SIZE do write (a [k], ‘ ‘); readln; end.
В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и, если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива, а элементы с большим значением – к концу массива (всплывают), поэтому этот метод иногда называют методом “пузырька”. Пример работы алгоритма простого обмена Первый проход: (5 1 4 2 8) (1 5 4 2 8), Здесь алгоритм сравнивает два первых элемента и меняет их местами. (1 5 4 2 8) (1 4 5 2 8), Меняет местами, так как 5 > 4 (1 4 5 2 8) (1 4 2 5 8), Меняет местами, так как 5 > 2 (1 4 2 5 8) (1 4 2 5 8), Теперь, ввиду того, что элементы стоят на своих местах (8 > 5), алгоритм не меняет их местами. Второй проход: (1 4 2 5 8) (1 4 2 5 8) (1 4 2 5 8) (1 2 4 5 8), Меняет местами, так как 4 > 2 (1 2 4 5 8) (1 2 4 5 8) (1 2 4 5 8) (1 2 4 5 8) Program Obmen; const n=5; var a: array [1..n] of integer; i,k, buf: integer; begin for k:= 1 to n do read (a [k]); for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin buf:=a[i]; a[i]:=a[j]; a[j]:=buf; end; writeln; writeln('Массив после сортировки пузырьковым методом: '); for i:=1 to n do write(a[i],' '); end.
Задача 1: Допустим, имеется одномерный массив, содержащий числа от 0 до 49 включительно. Требуется исключить из него все элементы, значения которых меньше 15. Алгоритм решения задачи: Присваивание значение n переменной m требуется, т.к. n - константа и не может быть изменена. Поскольку при "просмотре" массива в цикле while некоторые элементы будут удаляться, то значение m, обозначающее длину массива, будет уменьшаться. Если очередной элемент не удаляется, то переходим к просмотру следующего элемента (i := i + 1) и не уменьшаем массив (m не меняется). Program vvv; const n = 20; var arr: array[1..n] of integer; i, j, m: integer; begin randomize; for i := 1 to n do begin arr[i] := random(50); write(arr[i]:4); end; m := n; i := 1; while i <= m do if arr[i] < 15 then begin for j := i to m - 1 do arr[j] := arr[j+1]; m := m - 1 end else i := i + 1; for i:= 1 to m do write(arr[i]:4); readln end. Задача 2: Произвести удаление элемента из одномерного массива. Номер удаляемого элемента вводится с клавиатуры. program рrim3; var a.array [1..1000] of integer; i,k,n:integer; begin randomize; write(' число элементов n=');readln(n); for i:=1 to n do begin a[i]:=random(45)-22; write(a[i], ' '); end; write(' номер удал. элем. k=<п ');readln(k); { Вводим номер удаляемого элемента.} for i:=1 to n-1 do begin {Смещаем элементы массива к началу, начиная с К-го.} if i>=k then a[i]:=a[i+1]; end; {Обнуляем последний элемент.} a[n]:=0; {Выводим на экран измененный массив.} for i:=1 to n - 1 do begin write(a[i],' '); end; readln; end.
|
«Разработка алгоритмов и программирование на языке Pascal» Лабораторный практикум содержит методические указания к выполнению лабораторных работ по алгоритмизации и программированию на языке... | Угринович Н. Д. Информатика и икт. Профильный уровень: учебник для 10 класса Егэ» увеличено количество часов за счет уменьшения количества часов на темы «Моделирование и формализация» и «Информационное общество».... | ||
Усвоить понятие программы, структуры программы на языке Turbo Pascal,... На прошлых уроках мы познакомились с понятием алгоритма и основами алгоритмизации. Давайте вспомним, что такое алгоритм, какими свойствами... | Программа по формированию навыков безопасного поведения на дорогах... Планирование составлено на основе авторской программы курса 8-го класса Информатика и икт «Алгоритмизация и программирование на языке... | ||
Рабочая программа учебного курса «Информатика и икт» Икт. В настоящее время, преимущественно за счет регионального и школьного компонентов, выстроена многоуровневая структура предмета... | Программа по формированию навыков безопасного поведения на дорогах... Рф изучение предмета «Информатика и икт» предполагается в 8-9 классах, но с целью реализации непрерывного изучения курса «Информатика... | ||
Программа по формированию навыков безопасного поведения на дорогах... Данный урок рассматривается как обобщающий по пройденным темам “Одномерные массивы” и “Двумерные массивы”, а, кроме того, знакомит... | Программа по формированию навыков безопасного поведения на дорогах... С целью реализации непрерывного изучения курса «Информатика и икт» в образовательном учреждении за счет часов школьного компонента... | ||
Программа по формированию навыков безопасного поведения на дорогах... С целью реализации непрерывного изучения курса «Информатика и икт» в образовательном учреждении за счет часов школьного компонента... | Пояснительная записка с целью реализации непрерывного изучения курса... Икт, в том числе овладение умениями работать с различными видами информации, самостоятельно планировать и осуществлять индивидуальную... | ||
Пояснительная записка с целью реализации непрерывного изучения курса... Икт для 5-7 классов средней общеобразовательной школы» изданной в сборнике «Программы для общеобразовательных учреждений: Информатика.... | Пояснительная записка Элективный курс «Основы программирования на языке Turbo Pascal» Изучение курса позволяет учащимся более полно выявить свои способности в изучаемой области знаний, создать предпосылки по применению... | ||
Одномерные массивы Ребята, мы закончили изучать раздел русского языка, который изучает звуки и буквы. Кто скажет, как он называется? | Рабочая программа по Информатике и икт 9 класс «Информатика и икт» составлена на основе авторской программы Н. Д. Угриновича «Преподавание базового курса «Информатика и икт» в... | ||
Рабочая программа педагога кирсановой В. И., Вкк ф. И. О., категория... «Информатика и икт» в социально-экономическом профиле изучается на базовом уровне с учебной нагрузкой 1 час в неделю, за счет школьного... | Урокам тема №5: программирование на языке turbo-pascal. Организация... Цели и задачи: Знакомство с операторами цикла языка Turbo-Pascal. Выработка навыков работы в Turbo-Pascal. Решение практических задач... |