Скачать презентацию Тема 1 Массивы К Поляков 2006 -2011 http Скачать презентацию Тема 1 Массивы К Поляков 2006 -2011 http

Паскаль_Массивы 7 класс.ppt

  • Количество слайдов: 27

Тема 1. Массивы К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru Тема 1. Массивы К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 2 Массивы Массив – это группа однотипных элементов, Программирование на языке Паскаль. Часть II 2 Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом. Особенности: • все элементы имеют один тип • весь массив имеет одно имя • все элементы расположены в памяти рядом Примеры: • список учеников в классе • квартиры в доме • школы в городе • данные о температуре воздуха за год К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 3 Массивы A НОМЕР массив 1 2 5 Программирование на языке Паскаль. Часть II 3 Массивы A НОМЕР массив 1 2 5 10 A[1] A[2] 3 3 15 15 элемента массива (ИНДЕКС) 4 5 20 25 A[3] A[4] ЗНАЧЕНИЕ A[5] элемента массива НОМЕР (ИНДЕКС) элемента массива: 2 A[2] ЗНАЧЕНИЕ элемента массива: 10 К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 4 Объявление массивов Зачем объявлять? • определить имя Программирование на языке Паскаль. Часть II 4 Объявление массивов Зачем объявлять? • определить имя массива • определить тип массива • определить число элементов • выделить место в памяти Массив целых чисел: имя начальный индекс конечный индекс тип элементов var A : array[ 1. . 5 ] of integer ; Размер через константу: const N=5; var A: array[1. . N ] of integer; К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 5 Объявление массивов Массивы других типов: var X, Программирование на языке Паскаль. Часть II 5 Объявление массивов Массивы других типов: var X, Y: array [1. . 10] of real; C: array [1. . 20] of char; Другой диапазон индексов: var Q: array [0. . 9] of real; C: array [-5. . 13] of char; Индексы других типов: var A: array ['A'. . 'Z'] of real; B: array [False. . True] of integer; . . . A['C'] : = 3. 14259*A['B']; B[False] : = B[False] + 1; К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 6 Что неправильно? var a: array[10. . 1] Программирование на языке Паскаль. Часть II 6 Что неправильно? var a: array[10. . 1] of integer; [1. . 10]. . . A[5] : = 4. 5; var a: array ['a'. . 'z'] of integer; ['z'. . 'a']. . . A['B'] A['b'] : = 15; var a: array [0. . 9] of integer; . . . A[10] : = 'X'; К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 7 Массивы Объявление: var a: array[1. . 5] Программирование на языке Паскаль. Часть II 7 Массивы Объявление: var a: array[1. . 5] of integer; i: integer; Ввод с клавиатуры: for i: =1 to N do begin write('a[', i, ']='); read ( a[i] ); end; a[1] = a[2] = a[3] = a[4] = a[5] = 5 12 34 56 13 ? Почему write? Поэлементные операции: for i: =1 to N do a[i]: =a[i]+1; Вывод на экран: writeln('Массив A: '); for i: =1 to N do write(a[i]: 4); К. Поляков, 2006 -2011 Массив A: 6 13 35 57 14 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 8 Максимальный элемент Задача: найти в массиве максимальный Программирование на языке Паскаль. Часть II 8 Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: Псевдокод: { считаем, что первый элемент – максимальный } for i: =2 to N do if a[i] > { максимального } then { запомнить новый максимальный элемент a[i] } ? К. Поляков, 2006 -2011 Почему цикл от i=2? http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 9 Максимальный элемент Дополнение: как найти номер максимального Программирование на языке Паскаль. Часть II 9 Максимальный элемент Дополнение: как найти номер максимального элемента? max : = a[1]; { считаем, что первый – максимальный } i. Max : = 1; for i: =2 to N do { проверяем все остальные } if a[i] > a[i. Max] then { нашли новый максимальный } max begin max : = a[i]; { запомнить a[i] } i. Max : = i; { запомнить i } end; ? Как упростить? По номеру элемента i. Max всегда можно найти его значение a[i. Max]. Поэтому везде меняем max на a[i. Max] и убираем переменную max. К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 10 Программа program qq; var a: array [1. Программирование на языке Паскаль. Часть II 10 Программа program qq; var a: array [1. . 100] of integer; i, i. Max, n: integer; Begin Readln(n); { здесь нужно ввести массив с клавиатуры } i. Max : = 1; {считаем, что первый – максимальный} for i: =2 to N do { проверяем все остальные} if a[i] > a[i. Max] then { новый максимальный} i. Max : = i; { запомнить i } writeln; {перейти на новую строку} writeln('Максимальный элемент a[', i. Max, ']=', a[i. Max]); end. К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Тема 3. Обработка массивов К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru Тема 3. Обработка массивов К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 12 Случайные процессы Случайно… 1)встретить друга на улице Программирование на языке Паскаль. Часть II 12 Случайные процессы Случайно… 1)встретить друга на улице 2)разбить тарелку 3)найти 10 рублей 4)выиграть в лотерею Случайный выбор: 1)жеребьевка на соревнованиях 2)выигравшие номера в лотерее Как получить случайность? К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 13 Генератор случайных чисел в Паскале Целые числа Программирование на языке Паскаль. Часть II 13 Генератор случайных чисел в Паскале Целые числа в интервале [0, N): var x: integer; . . . x : = random ( 100 ); { интервал [0, 99] } Вещественные числа в интервале [0, 1) var x: real; . . . x : = random; К. Поляков, 2006 -2011 { интервал [0, 1) } http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 14 Заполнение массива случайными числами var A: array Программирование на языке Паскаль. Часть II 14 Заполнение массива случайными числами var A: array [1. . 100] of integer; n, i: integer; Количество элементов в массиве Begin Readln(n); случайные числа в writeln('Исходный массив: '); интервале [50, 150) for i: =1 to N do begin A[i] : = random(100) + 50; write(A[i]: 4); end; . . . Зачем сразу выводить? ? К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 15 Подсчет элементов Задача: заполнить массив случайными числами Программирование на языке Паскаль. Часть II 15 Подсчет элементов Задача: заполнить массив случайными числами в интервале [-1, 1] и подсчитать количество нулевых элементов. Идея: используем переменную-счётчик. Решение: 1)записать в счётчик ноль 2)просмотреть все элементы массива: если очередной элемент = 0, то увеличить счётчик на 1 3)вывести значение счётчика К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 16 Подсчет элементов начало начать с 1 -ого Программирование на языке Паскаль. Часть II 16 Подсчет элементов начало начать с 1 -ого пока ни одного не нашли count: = 0 i: = 1 i <= N? нет конец да A[i] = 0? нет нашли еще 1 count: = count + 1 i: = i + 1 К. Поляков, 2006 -2011 да перейти к следующему http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 17 Подсчет элементов program qq; var A: array Программирование на языке Паскаль. Часть II 17 Подсчет элементов program qq; var A: array [1. . 100] of integer; i, n, count: integer; Количество Begin элементов в массиве Readln(n); { здесь надо заполнить массив } count: = 0; перебираем все элементы массива for i: =1 to N do if A[i] = 0 then count: = count + 1; writeln('Нулевых элементов: ', count); end. К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 18 Сумма выбранных элементов Задача: заполнить массив случайными Программирование на языке Паскаль. Часть II 18 Сумма выбранных элементов Задача: заполнить массив случайными числами в интервале [-10, 10] и подсчитать сумму положительных элементов. Идея: используем переменную S для накопления суммы. S: =0 S: = A[1]+A[2]+A[3] S: = A[1]+A[2]+…+A[N] Решение: 1)записать в переменную S ноль 2)просмотреть все элементы массива: если очередной элемент > 0, то добавить к сумме этот элемент 3)вывести значение суммы К. Поляков, 2006 -2011 S: = S+A[i] http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 19 Сумма выбранных элементов начало начать с 1 Программирование на языке Паскаль. Часть II 19 Сумма выбранных элементов начало начать с 1 -ого пока ни одного не нашли S: = 0 i: = 1 i <= N? нет конец да A[i] > 0? нет i: = i + 1 К. Поляков, 2006 -2011 да нашли еще 1 S: = S + A[i] перейти к следующему http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 20 Сумма выбранных элементов program qq; var A: Программирование на языке Паскаль. Часть II 20 Сумма выбранных элементов program qq; var A: array [1. . 100] of integer; i, S: integer; Количество Begin элементов в массиве Readln(n); { здесь надо заполнить массив } S: = 0; перебираем все элементы массива for i: =1 to N do > S: = S + A[i]; if A[i] = 0 then count: = count + 1; writeln('Cумма полож. элементов: ', S); end. К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 21 Поиск в массиве Задача – найти в Программирование на языке Паскаль. Часть II 21 Поиск в массиве Задача – найти в массиве элемент, равный X, или установить, что его нет. Пример: если в классе ученик с фамилией Пупкин? Алгоритм: 1)начать с 1 -ого элемента (i: =1) 2)если очередной элемент (A[i]) равен X, то закончить поиск иначе перейти к следующему элементу: К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 22 Поиск элемента, равного X начало начать с Программирование на языке Паскаль. Часть II 22 Поиск элемента, равного X начало начать с 1 -ого i: = 1 i <= N? нет ‘Не нашли’ да A[i] = X? нет i: = i + 1 К. Поляков, 2006 -2011 да ‘Есть!’ перейти к следующему конец ? Как найти номер? http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 23 Поиск элемента в массиве program qq; var Программирование на языке Паскаль. Часть II 23 Поиск элемента в массиве program qq; var a: array[1. . N] of integer; i, n, X: integer; Количество begin элементов в массиве Readln(n); { здесь надо заполнить массив } i: =1; while (i<=N) and (A[i]<>X) do A[i]<>X do i: =i+1; if i <= N then writeln('A[', i, ']=', X) else writeln('Не нашли. . . '); end. К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 24 Реверс массива Задача: переставить элементы массива в Программирование на языке Паскаль. Часть II 24 Реверс массива Задача: переставить элементы массива в обратном порядке. 1 2 … N-1 N 3 5 … 9 7 Алгоритм: 1 2 … N-1 N 7 9 … 5 3 сумма индексов N+1 поменять местами A[1] и A[N], A[2] и A[N-1], … Псевдокод: for i: =1 to N do 2 do N div { поменять местами A[i] и A[N+1 -i] } К. Поляков, 2006 -2011 ? Что неверно? http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 25 Как переставить элементы? 2 Задача: поменять местами Программирование на языке Паскаль. Часть II 25 Как переставить элементы? 2 Задача: поменять местами содержимое двух чашек. 3 1 Задача: поменять местами содержимое двух ячеек памяти. y x Можно ли обойтись без c? К. Поляков, 2006 -2011 6 4 2 1 ? 4 6 3 x : = y; y : = x; c : = x; x : = y; y : = c; ? 4 c http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 26 Программа program qq; var A: array[1. . Программирование на языке Паскаль. Часть II 26 Программа program qq; var A: array[1. . N] of integer; i, n, c: integer; Begin Readln(n); { заполнить массив } { вывести исходный массив } for i: =1 to N div 2 do begin c: =A[i]; A[i]: =A[N+1 -i]; A[N+1 -i]: =c; end; { вывести полученный массив } end. К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru

Программирование на языке Паскаль. Часть II 27 Задачи: Выбрать любую из предложенных : 1. Программирование на языке Паскаль. Часть II 27 Задачи: Выбрать любую из предложенных : 1. Найти сумму элементов массива с четными номерами, содержащего N элементов. Элементы вводятся с клавиатуры. 2. Сформировать и вывести на экран массив, элементы которого заданы датчиком случайных чисел на интервале [-19, 26] (размер произвольный). Найти произведение элементов с нечетными номерами. 3. Сформировать и вывести на экран массив, элементы которого заданы датчиком случайных чисел на интервале [-56, 47] (размер произвольный). Найти произведение элементов с четными номерами, которые превосходят некоторое число t. 4. Найти номер наименьшего элемента в массиве, заданного датчиком случайных чисел на интервале [-20, 25]. 5. В заданном одномерном массиве, состоящем из n целых чисел, подсчитать количество нулей. 6. В заданном одномерном массиве, состоящем из n целых чисел, подсчитать количество четных элементов. К. Поляков, 2006 -2011 http: //kpolyakov. narod. ru