Уроки по программированию
план-конспект урока по информатике и икт (10 класс) по теме

Устимкина Лидия Ивановна

20 уроков по программированию в 10 классе

Скачать:

ВложениеРазмер
Файл programmirovanie.rar156.51 КБ

Предварительный просмотр:

Массивы в Паскале

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

Для этого сначала познакомимся с правилами описания массивов. Заметим, что в данном разделе учебника мы ограничиваемся только работой с одномерными массивами (линейными таблицами).

Описание и обработка массива на Паскале

Общая форма описания одномерного массива на Паскале такая:

var <имя массива>: array [<нижняя граница индекса .. верхняя граница индекса>] of <тип массива>

Слово "array" буквально переводится как "массив". Границы индекса могут быть любыми целыми числами. Важно, чтобы нижняя граница была меньше верхней границы. Описание массива температур будет следующим:
var T: array [1..12] of real;

Цикл с параметром на Паскале

Рассмотрим полный текст программы на Паскале.

Program Temperature;
var T: array[1..12] of real;
I: integer; Tsred: real;
begin
        {Цикл ввода}
     
for I:=l to 12 do
     
begin
          write ( 'T[ ',1:2, '] = ') ;
          readln(T[I])
     
end;
        {Цикл суммирования}
     Tsred:=0;
     
for I:=l to 12 do
          Tsred:=Tsred+T[I] ;
        {Вычисление среднего}
     Tsred:=Tsred/12;
     writeln( 'Среднегодовая температура = ', Tsred:6:2, ' градусов')
end. 

В этой программе дважды использован оператор цикла с параметром. Он имеет следующий формат:

for <параметр цикла> := <начальное значение параметра> to <конечное значение параметра> do <тело цикла>;

Если параметр цикла - целая переменная, то ее значение будет возрастать через единицу. Существует другой вариант этого оператора, в котором вместо слова to записывается downto. В этом случае значение параметра цикла убывает через единицу. Следовательно, начальное значение в этом случае должно быть больше конечного.

Так же как и для оператора цикла while, здесь тело цикла может быть либо простым оператором, либо составным. В первом случае тело цикла заканчивается на ближайшей точке с запятой. В нашем примере - это цикл суммирования. Во втором случае тело цикла заключается между словами begin и end (цикл ввода).

Форматы вывода

В программе присутствует еще один новый для вас элемент Паскаля: формат вывода. Это числа с двоеточиями, стоящие после переменных в операторе вывода write:

write( 'Т [',I:2,']=');

В этой записи I:2 обозначает, что значение переменной I выводится как целое число в две символьные позиции на экране. Для однозначного числа в первой позиции будет помещен пробел, например: _5.

В операторе вывода результата также используется формат: Tsred: 6:2. Значение переменной Tsred выводится как смешанное число в 6 позиций, две последние из которых занимает дробная часть. В третьей справа позиции - точка. Лишние позиции для целой части занимаются пробелами. Например: _34.25.

Результат выполнения программы Temperature будет выведен на экран в следующем виде:

Среднегодовая температура =2.56 градусов

Программа с двумя массивами

А теперь расширим условие задачи. Требуется для каждого месяца определить отклонение его средней температуры от среднегодовой величины.

Вернемся к электронной таблице на рис. 3.13. Добавим к ней еще один столбец С, в котором будут вычисляться искомые отклонения. В ячейку С2 занесем формулу =В2-$В$14. По этой формуле вычислится отклонение январской температуры от среднегодовой. Скопировав эту формулу в ячейки СЗ:С13, получим все остальные величины. Смысл "замораживания" адреса В14 вам должен быть понятен. Результаты приведены в таблице на рис. 3.14.

 

A

B

1

Месяц

Температура

Отклонения

2

1

-21

-23,56

3

2

-18

-20,56

4

3

-7,5

-10,06

5

4

5,6

3,04

6

5

10

7,44

7

6

18

15,44

8

7

22,2

19,64

9

8

24

21,44

10

9

17

14,44

11

10

5,4

2,84

12

11

-7

-9,56

13

12

-18

-20,56

14

Среднее:

2,56

 

Рис. 3.14. Температуры и отклонения от среднего

Реализуем вычисление отклонений в программе на Паскале. Очевидно, в программе должен появиться еще один массив для размещения в нем таблицы отклонений. Дадим этому массиву имя Dt. Как и массив температур, он состоит из 12 чисел: Dt[l] , Dt[2] , Dt[3] , ..., Dt [12] .

К предыдущей программе надо добавить описание массива Dt в следующем виде:

var Dt: array[1..12] of real;

Значение каждого элемента массива равно разности между температурой соответствующего месяца и среднегодовой температурой. Например, для января: Dt[l] = Т[1] - Tsred. Такие вычисления повторяются в цикле 12 раз. Значения массива Dt выводятся на экран.

Запишем на Паскале фрагмент, который надо вставить в конец предыдущей программы, чтобы решить поставленную задачу.

for I:=l to 12 do 
begin
    Dt[I]:= T[I] - Tsred;
    writeln('Dt[',I:2,']=', Dt[I]:б:2)
end 

Здесь вычисление значений массива Dt и вывод их на экран совмещены в одном цикле. Результат работы программы будет следующим:
Dt[1]= -23,56
Dt[2]= -20,56
Dt[3]= -10,06

Dt[12]= -20,56

Как и следовало ожидать, это те же самые числа, что получены в электронной таблице.

Вопросы и задания

1. Как можно описать на Паскале массив, в котором будут храниться значения численности населения Москвы к концу каждого года XX века?

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

3. Напишите фрагмент программы на Паскале ввода исходных данных для массивов, определенных в заданиях 1 и 2.

4. Введите в компьютер программу Temperature, добавив к ней обработку массива Dt. Выполните программу, получите результаты. Сравните их с приведенными в параграфе.

5. Составьте программы на Паскале по алгоритмам из заданий 3, 4 предыдущего параграфа. Выполните эти программы на компьютере.

Основные действия по работе с массивами

Program Massiv1;
  uses Crt;
  const {
Раздел описания констант, то есть постоянных величин, определяемых в программе заранее и не изменяющихся по ходу выполнения программы }
  N=10; {
Имена констант не используются для имен переменных величин (из раздела var) }
  var
      A: array [1..N] of integer; {
1..N - тип индекса. Для индекса выбран интервальный тип, то есть интервал целых чисел от 1 до N, где N определено в разделе const }
      i:integer; {
Переменная, хранящая индекс элемента массива, к которому идет обращение }
begin
{
Задание значений элементов массива как случайных чисел }
  Randomize; {
Инициализация датчика случайных чисел }
{
Задание элементов массива; }
  for i:=l to N do {
Переменная i изменяется в цикле от 1 до N, то есть мы по очереди перебираем все элементы массива }
  A[i]:=Random(100); {
 В очередной элемент массива A[i] записываем случайное число от 0 до 99, обратите внимание: i - номер элемента массива (принято говорить "индекс"), A[i] -значение элемента массива }
{
Вывод элементов массива на экран в одну строку }
  ClrScr;
  Writeln('Введенный массив;');
  for i:=1 to N do
  write(A[i]:4); {
На каждый элемент массива выделяется по 4 позиции строки, чтобы они не склеивались при выводе!}
  writeln;
  readln {
Этот "пустой" оператор вывода отработает только один раз и переведет курсор на новую строку для дальнейшей работы }
end.

Задача 36.

Сформировать одномерный массив из N элементов, где элемеи ты массива- целые случайные числа в пределах от 1 до 45. Напечатать элементы массива в прямом и обратном порядке.

{Для получения случайных чисел воспользуемся следующей функцией:
Функция Random [(x)]
Формирует случайное число от 0 до X целого или вещественного типа (перед обращением к функции ее целесообразно инициализировать, использовав процедуру Randomize).
X - параметр, указывающий диапазон значений случайного числа. Оно изменяется в пределах 0 до X. Результат в этом случае имеет тип Word (диапазон значений - 0...65535). Если параметр X не задан, результат будет типа Real в пределах 0.0 <Х< 1.0. Для получения массива целых случайных чисел из диапазона от [А,В] random(B-A+1)+A }

program prim 1;
  uses crt;
  var i, n:integer;
      a:array[1..10000] of integer;
begin
  clrscr;
  randomize;
  write(' размер =' );readln(n);
  for i:=1 to n do
    begin
{Получаем случайные числа в пределах от 1 до 45.}
      a[i]:=random(46))+1;
{Выводим элементы массива на экран.}
      write(a[i], ' ' );
    end;
{Полученный массив печатаем в обратном порядке.}
  for i:=n downto 1 do
    write(a[i],' ');
  readkey;
end.

Задача 37.

Переставить элементы, стоящие на нечетных местах, с соответствующими элементами на четных местах.

program prim2;
  uses crt;
  var i, n, r: integer;
  a: array[1.. 10000] of integer;
begin
  clrscr;
  randomize;
  write ('число элементов ');
  readln(n);
  for i:=1 to n do
    begin
{
Получаем случайные числа и выводим их на экран.}
      a[i]:=random(45)-22;
      write(a[i],' ');
    end;
{
В полученном массиве меняем соседние элементы.}
  i:=1;
{Пока I<=N-1.}
  while i<=n-1 do
    begin
{
Меняем значения соседних элементов. }
      r:=a[i];a[i]:=a[i+1];a[i+1]:=r;
{
Увеличиваем индекс на два.}
      inc(i,2);
    end;
{
Распечатываем измененный массив.}
  for i:=1 to n do
    write(a[i],' ');
  readkey;
end.

{
Процедура Inc(i,n) преобразует переменную порядкового типа i к последующему значению (n=1) или на n шагов вперед.}

Задача 38.

Ввод с клавиатуры одномерного массива целых чисел и вывод его элементов на экран с противоположным знаком

Program Massiv2;
  const N=10;
  type {
Раздел описания типов переменных. Эти типы определяет сам пользователь, то есть мы определяем тип одномерного массива из n целых чисел }
    Mas=array [1..N] of integer; {
1..N - тип индекса; для индекса выбран интервальный тип. то есть интервал целых чисел от 1 до N. где N определено в разделе const }
  var
      Line:Mas; {
Line - одномерный массив, его тип определен нами как Mas }
      i:integer; {
Переменная, хранящая индекс элемента массива, к которому идет обращение }
begin
{
Ввод массива с клавиатуры }
  for i:=l to N do {
Обращение к элементам массива происходит в цикле, по очереди }
    begin {
Начало цикла ввода элементов массива }
      write('Введите элемент с индексом ' ,i,' :');
      readln(Line[i]) {
Обращаемся к i-му элементу массива (Line[l],Line[2] и т. д.) }
    end; {
Конец цикла ввода элементов массива }
{
Вывод элементов происходит также в цикле:}
  for i:=l to N do {
Перебираем все N элементов массива }
    write(-Line[i]:5); {
10 элементов выводятся в строку. Выводим все элементы массива с противоположным знаком }
  writeln; {
После вывода массива элементов - переход на новую строку }
  readln
end.

Задача 39.

Найти максимальный (минимальный) элемента массива, а также его порядковый номер.

program prim3;
  uses crt;
  var i,n,r,max,min,imax,imin:integer;
      a:array[1..10000] of integer;
begin
  clrscr;
  randomize;
  write('число элементов n= ');
  readln(n);
  for i:=1 to n do
    begin
      a[i]:=random(45)-22;
{
Получаем случайные числа и выводим их на экран.}
      write(a[i],' ');
    end;
{
За начальный максимум (минимум) берем первый элемент массива.}
  min:=a[1]; max:=a[1];
  for i:=1 to n do
    begin
{
Если найдется элемент, меньший MIN, то MIN будет равен этому элементу. Одновременно запоминаем индекс промежуточного минимума.}
      if a[i]<=min then
        begin
          min:=a[i]; imin:=i;
        end;
{
Если найдется элемент, больший МАХ, то МАХ будет равен этому элементу. Одновременно запоминаем индекс промежуточного максимума.}
      if a[i]>= max then
        begin
          max:=a[i]; imax:=i;
        end;
    end;
{
Печатаем минимальный элемент и его индекс.}
  writeln(min,' номер' , imin);
{
Печатаем максимальный элемент и его индекс.}
  writeln(max, ' номер' ,imax);
  readkey;
end.


По теме: методические разработки, презентации и конспекты

Visual basic уроки по программированию

Последовательно шаг за шагом, рассматриваются темы уроков по объектно - ориентированному программированию  Visual basic....

Разработка урока по программированию на Бейсике

После изучения условного оператора в языке программирования QBasic добавляю сложные условия в этот оператор. Представляю сам урок и презентацию к этому уроку....

Урок технология программированного обучения 5 класс по теме "Десятичные дроби"

Открытый урок по математике в 5а классе «Практикум сравнения десятичных дробей»Проведён для районного методического объединения математиков  учителем математики и информатики Григорьево...

Строковый и символьный типы данных - урок по программированию в 11 классе (PASCAL)

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

Разработка урока по теме "Языки программирования. Условные предложения", 3 курс, специальность 09.02.03 Программирование в компьютерных системах

Данный урок направлен на активизацию лексического материала по теме "Языки программирования" и ознакомление с грамматическим материалом по теме "Условные предложения второго типа"....

Конспект урока "Язык программирования Tурбо Паскаль. Алфавит, структура программы, система типов"

Конспект урока "Язык программирования Tурбо Паскаль. Алфавит, структура программы, система типов"...

Конспект пробного урока по программированию на языке Python

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