Скачать 0.87 Mb.
|
Тема: Обработка одномерных и двухмерных массивов. Цель: Научиться составлять программы с массивами на языке Pascal. Оборудование: IBM PC Программное обеспечение: WINDOWS, Pascal Вопросы для повторения:
Краткая теория Понятие одномерного массива идентично понятию линейной таблицы. На практике в виде таблиц подаётся часто самая разнообразная информация. Если место элемента в таблице определяется значением одной какой – то величины, таблицу называют линейной, если двумя – прямоугольной. Обращение к элементу таблицы осуществляется следующим образом: необходимо указать имя таблицы (имя массива) и рядом с ним в круглых скобках номер нужного элемента. Нумерацию элементов нужно начинать с 0 или 1. С учётом практических задач представления и использования данных универсальный язык программирования должен располагать несколькими методами структурирования. Основные методы позволяют строить следующие структуры: массив, запись, множество, строка и последовательность (файл). При решении как научно-технических, так и экономических задач часто обрабатываются совокупности простых значений. Например, программирование научно-технических задач связано с описанием действий над совокупностями значений, организованных в форме векторов и матриц, а экономических задач - над совокупностями различного вида документов. Такую возможность предоставляет использование массивов. Массив это упорядоченная последовательность величин, обозначаемая одним именем. Упорядоченность заключается в том, что элементы массива располагаются в последовательных ячейках памяти. Массив это структура данных, которую можно рассматривать как набор переменных одинакового типа, имеющих общее имя. Массивы удобно использовать для хранения однородной по составу информации, например, элементов таблицы, коэффициентов уравнений, матриц. Описывать массивы можно двумя способами: 1. Type <�имя типа>= array[<�номер 1 эл-та>..<�номер последнего эл-та>] of <�тип элементов>; Var <�имя массива>:<�имя типа>; 2. var <�имя массива>:array [<�номер 1 эл-та>..<�номер последнего эл-та>] of <�тип элементов>; Приступая к решению задач этого раздела, следует вспомнить, что:
Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной таблицы или матрицы. Рассмотрим матрицу А размерностью 2*3, то есть в ней будет две строки, а в каждой строке по три элемента: Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел - номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a12 - это элемент, стоящий в первой строке и во втором столбце. Существуют несколько способов объявления двумерного массива. Способ 1. В Паскале двумерный массив можно описать как одномерный, элементами которого являются одномерные массивы. Например, для матрицы А, приведённой выше:Const n = 2; m = 3; Type omyarray = Array[1..m] Of <�тип элементов >; dmyarray = Array[1..n] Of omyarray; Var v : omyarray; a : dmyarray; В данном случае переменная v объявлена как одномерный массив из трёх элементов вещественного типа. Переменная а описана как двумерный массив из двух строк, каждую из которых включено по три элемента. Способ 2. Описание массива А можно сократить, исключив определение типа omyarray в определении типа dmyarray: Const n = 2; m = 3; Type dmyarray = Array[1..n, 1..m] Of <�тип элементов>; Var a : dmyarray. Способ 3. Ещё более краткое описание массива А можно получить, указывая имя массива и диапазоны изменения индексов для каждой размерности массива: Const n = 2; m = 3; Type dmyarray = Array[1..n, 1..m] Of <�тип элементов >; Var a : dmyarray. Если указанный тип используется для определения одного массива в программе, то удобно объявление массива в разделе описания переменных: V Пример №2 Определить число грузов массива А, имеющих массу 8 т. , их порядковые номера. uses crt; var a: array [1..60] of integer; b: array [1..60] of integer; i,k: integer; begin writeln ('Сведения о грузах:'); for i:=1 to 60 do begin a[i]:=random(10)+1; write (a[i],' '); if a[i]=8 then inc(k); end; writeln; writeln ('Найдено ',k,' грузов(a) с массой в 8 тонн'); for i:=1 to 60 do if a[i]=8 then writeln ('Груз под номером ',i); end. ar a: Array [1..n, 1..m] Of < тип элементов >. Пример №1. Ввод и вывод одномерного массива. const n = 5; type mas = array[1..n] of integer; var a: mas; i: byte; begin writeln('введите элементы массива'); for i:=1 to n do readln(a[i]); writeln('вывод элементов массива:'); for i:=1 to n do write(a[i]:5); end. П Пример №4 . Заполнить массив данными, а затем выведем их на экран в виде таблицы. const M = 3; N = 5; var matrix: array[1..M,1..N] of integer; i, j: integer; begin writeln ('Введите 15 чисел: '); for i := 1 to M do for j := 1 to N do read (matrix[i,j]); for i := 1 to M do begin for j := 1 to N do write (matrix[i,j]:5); writeln end; readln end. Пример№6 Дана матрица A(3,4), и вектор B (4), состоящие из целых чисел . Умножить матрицу А на вектор В . program pr4; const m=3; n=4; var a : array [ 1 .. m, 1 .. n ] of integer; b : array [ 1 .. n ] of integer; c : array [ 1 .. m ] of integer; i, j: integer; begin for i:=1 to m do (* ввод матрицы *) begin writeln ('введите элементы ', i , '-той строки'); \for j:=1 to n do read (a [i, j] ); writeln; end; writeln ('введите элементы вектора'); for j:=1 to n do (* ввод вектора *) read (b[ j]); writeln; for i:=1 to m do begin c [ i ]:=0; for j:=1 to n do c[i] := c[ i ]+ a[i , j]* b[j]; end; for i:=1 to m do (*форматный вывод матрицы *) begin for j:=1 to n do write (a [i, j]: 4 ); writeln; end; for j:=1 to n do write (b [ j ] :4); (* вывод массива B *) writeln ; for i:=1 to m do write (c [ i ] :4); (* вывод массива С *) readln; end. ример №3. Найти сумму элементов массива, состоящего из 12 целых чисел. Const n=12; type mas=array[1..n]of integer; Var a:mas; i,s:integer; Procedure wwod(var a:mas; Name:char); var i:integer; Begin for i:=1 to n do Begin Write(Name,'[',i,']='); ReadLn(a[i]); End; End; Begin wwod(a,'a'); For i:=1 to n do s:=s+a[i]; Write('s=',s:4); Readln; End. Пример №5 Задать и распечатать массив 10X10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагоналиProgram M5; Var A : Array[1..10,1..10] Of Integer; I, K : Byte; S : Integer; Begin S:=0; For I:=1 To 10 Do Begin For K:=1 To 10 Do Begin A[I,K]:=Trunc(Random*100)+1; Write(A[I,K]:6); If K>I Then S:=S+A[I,K] End; Writeln End; Writeln('Сумма элементов выше гл. диагонали равнаV',S) End. Задание №1 1. N=8. Ввести К. Подсчитать и вывести количество элементов массива, равных К. 2. N=10 Все отрицательные элементы массива заменить нулем. 3. N=12 Все элементы массива, значения которых кратны 5, увеличить в 2 раза. Массив вывести. 4. N=7 Определить сумму положительных элементов массива. 5. N=12 Подсчитать и вывести количество нулевых элементов массива. 6. N=8 Определить количество элементов массива, значения которых = первому элементу. 7. N=12 Найти среднее арифметическое значение отрицательных элементов массива. 8. N=14 Ввести К. Вывести номера элементов массива, равных К. 9. N=12 Ввести число К Определить количество элементов массива, значения которых больше K. 10. N=15 Каждый элемент массива заменить его квадратом. Массив вывести. 11. N=10 Все отрицательные элементы массива заменить значением первого элемента. 12. N=15Определить сумму отрицательных элементов массива. 13. N=18 Все отрицательные элементы массива заменить его абсолютным значением. Задание №2 1. Сформировать второй массив из положительных элементов первого массива. 2. Найти сумму минимального и максимального элементов. 3. Сдвинуть элементы массива на одну позицию влево, первый элемент переместить на последнее место. 4. Все элементы массива увеличить в 3 раза. Массив вывести. 5. Поменять местами минимальный и максимальный элементы массива. 6. Поменять местами первый элемент массива с минимальным элементом. 7. Сдвинуть элементы массива на одну позицию вправо, последний элемент переместить на первое место. 8. Найти сумму четных элементов. 9. Поменять местами значения соседние элементы (1-2, 3-4, …) 10. Определить в какой половине массива находится максимальный элемент. 11. Найти произведение положительных элементов массива. 12.Сформировать второй массив из отрицательных элементов первого массива. 13. Определить среднее арифметическое значение элементов массива. Задание №3 1. Все элементы с нечетными номерами разделить нацело на первый элемент. 2. Определить минимальное значение сред отрицательных элементов массива. 3. Из элементов первого массива сформировать второй массив по правилу: B[I]=A[1]+A[2]+…+A[I] 4. Определить произведение нечетных по значению элементов. 5. Найти номер первого и последнего положительного элемента. 6. Все положительные элементы исходного массива записать во второй массив, все отрицательные элементы – в третий массив. 7. Найти номера первого и последнего нулевого элемента. 8. Пусть первый массив А. сформировать массив В по следующему правилу В[1]=A=[1], B[2]=A[12], B[3]=A[2], B[4]=A[11]… 9. Даны два одномерных массива одинаковой размерности. Найти их скалярное произведение. 10. Определить, какой элемент, максимальный или минимальный, расположен ближе к первому элементу. 11. Каждый третий элемент массива заменить полусуммой двух предыдущих элементов. 12. Сформировать второй массив, разместив в нем элементы первого массива со сдвигом на 2 позиции вправо. 13. Сформировать второй массив, разместив в нем элементы первого массива, значения которых оканчиваются на 7. Задание №4 1. Заполнить массив С(4,4). Вывести на экран элементы главной диагонали. 2. Заполнить двумерный массив 6,5 случайными числами. Найти произведений элементов 4 строки. 3. Заполнить двумерный массив 3,6 случайными числами. Найти сумму элементов 2 столбца. 4. Заполнить массив 2 на 5 случайными значениями. Найти минимальное значение для каждого столбца. 5. Вывести первый положительный элемент для каждого столбца двумерного массива. 6. Заполнить двумерный массив 4 на 3 случайными значениями. Определить количество нечетных значений в каждом столбце. 7. Заполнить двумерный массив D(3,5) случайными значениями, найти сумму элементов для каждой строки. 8. Заполнить двумерный массив 8,4 с клавиатуры. Вывести элементы 5 строки. 9. Заполнить двумерный массив 6,3 с клавиатуры. Вывести элементы 1 столбца. 10. Заполнить двумерный массив 3 на 6 случайными значениями. Определить количество четных значений в каждой строке. 11. Вывести все элементы массива А(5,5), располагающиеся ниже главной диагонали. 12. Заполнить двумерный массив 3,5 с клавиатуры. Вывести произведение элементов 2 строки. 13. Заполнить двумерный массив 3,6 случайными числами. Найти сумму элементов 2 столбца. Порядок выполнения работы. 1. Запустить Pascal любым способом. 2.Проверить предложенные программы 3. Выполнить Задание №1 Одномерный массив N элементов заполнить случайными значениями, вывести его на экран. 4. Выполнить Задание № 2 Одномерный массив 8 элементов заполнить значениями с клавиатуры. 5. Выполнить Задание № 3 Одномерный массив 12 элементов заполнить случайными положительными и отрицательными значениями. 6. Выполнить Задание № 4 7. Оформить отчёт. 8. Сделать вывод. Литература.
Практическая работа №6 Тема : Работа со строковыми переменными. Использование стандартных функций и процедур для работы со строками. Цель: 1. Научиться составлять программы работы со строковыми переменными на языке Pascal 2. Научиться вводить программу с клавиатуры, запускать её на выполнение Оборудование: IBM PC Программное обеспечение: WINDOWS, Pascal Вопросы для повторения:
Краткая теория. Строка это последовательность символов определённой длины. Элементы строки хранятся по два в двух байтах памяти ЭВМ. Для описания переменных этого типа используется зарезервированное слово string. Переменные типа string могут быть объявлены следующим образом: Var Strl:String[31]; В квадратных скобках указывается максимально допустимый размер строки (количество символов), которая может храниться в переменной. Если максимальный размер не указан, то он автоматически принимается равным 255. Строка похожа на одномерный массив символов: она имеет определённую длину (не больше некоторого числа), к каждому символу можно обратиться по его номеру (как в массиве) - Str1[i] это обращение к i-му элементу строки Str1. Переменные данного типа выводятся на экран посредством стандартных процедур Write и Writeln и вводятся с помощью стандартных процедур Read и Readln. То есть вводятся и выводятся не поэлементно, как массивы, а сразу целиком. Функции и процедуры : Склейку строк можно произвести с помощью функции Concat(Str1,Str2,...,StrN); Процедура Delete(Str,n,m)- удаляет из строки Str m символов, начиная с n-го. Процедура Insert(Str1,Str2,n) - вставка строки Str1 в строку Str2 начиная с n-го символа, при этом Str1 не изменяется. CONCAT(S1 [,S2, ... , SN] ) - функция типа STRING; возвращает строку, представляющую собой сцепление строк-параметров SI, S2, ..., SN. COPY(ST, INDEX, COUNT) - функция типа STRING; копирует из строки ST COUNT символов, начиная с символа с номером INDEX. DELETE (ST, INDEX, COUNT) - процедура; удаляет СОUNT символов из строки ST, начиная с символа с номером INDEX. INSERT (SUBST, ST, INDEX) - процедура; вставляет подстроку SUBST в строку ST, начиная с символа с номером INDEX. LENGTH (ST) - функция типа INTEGER; возвращает длину строки ST. P Пример №2: Сложение строк program number42; uses crt; var name: string[20]; title: string[20]; rez: string[30]; begin clrscr; name:='А. С. Пушкин '; title:='Евгений Онегин'; rez:=name+title; writeln(rez); readln end. OS (SUBST, ST) - функция типа INTEGER; отыскивает в строке STпервое вхождение подстроки SUBST и возвращает номер позиции, с которой она начинается; если подстрока не найдена, возвращается ноль. Пример №1.Написать программу, которая Спрашивала имя и здоровалась с вами Program number25_6; Uses Crt; Const hello = 'Привет, '; Var name: string; Begin ClrScr; Write('Введите имя: '); Readln(name); Write(hello, name, '!'); ReadLn End. П Пример №4. Написать программу, которая выдает код символа, введенного пользователем. Программа должна завершать работу после ввода точки. var sim: char; { символ } code: integer; begin writeln('Введите символ и нажмите .'); writeln('Для завершения работы программы введите точку.'); repeat write('->'); readln(sim) ; code:=Ord(sim) ; writeln('Символ: ',sim , ' Код: ',code); until sim = '.'; end. ример №3 Удалить из текста все заданные буквы uses crt; var word1,word: String; dl,n:integer; label 1; begin clrscr; writeln('Введите текст'); readln(word1); writeln('Введите букву, которую надо удалить'); readln(word); dl:=length(word1); n:=pos(word,word1); 1:if n>0 then begin Delete(word1,n,1); insert(' ',word1,n); dl:=length(word1); if dl>0 then begin n:=pos(word,word1); goto 1; end end; writeln(word1); end. Задание №1 1. Ввести слово. Первую и последнюю букву поменять местами. 2. Ввести строку. Удалить из нее все буквы А. 3. Ввести строку. Изменить ее так, чтобы все латинские буквы стали заглавные. 4. Ввести слово .Вывести его без первой и последней буквы. 5. Удалить среднюю букву при нечетной длине строки и две средние буквы при четной длине строки. 6. Ввести строку. Удалить из нее все буквы А и О. 7. Ввести слово. Вывести слово, полученное путем перестановки местами половинок введенного слова. 8. Ввести строку. Удалить из нее все символы, которые не являются латинскими буквами. 9. Ввести строку. В конец каждого слова добавить сочетание СЛА. 10. Ввести строку. Вывести каждый второй символ строки. 11. Ввести строку. Удалить из нее все латинские буквы. 12. Ввести строку. Изменить ее так, чтобы все латинские буквы стали строчными. 13. Ввести строку и слово. Удалить слово из строки, если она в ней содержится. Задание №2 1. Определить сколько раз в строке встречается сочетание “ht”. 2. Ввести строку. Подсчитать , сколько в ней букв R, K, L. 3. Ввести строку. Определить сколько раз в строке встречается каждый символ (например, дано kooaaooa, результат а- 3 раза, о -4 раза, к – 1 раз). 4. Определить сколько раз встречается “о” в первом слове строки. 5. Ввести строку. Вывести на экран слова, содержащие три буквы. 6. Ввести слово, в котором содержится буква А, причем не на последнем месте. Вывести символ, следующий за А. 7. Определить количество слов в строке, которые начинаются и заканчиваются одним и тем же символом. 8. Ввести строку. Подсчитать , сколько в ней символов * D F H. 9. Ввести строку. Определить сколько раз встречается сочетание abc. 10. Ввести число N и один символ сформировать строку, в которой символ повторяется N_раз . 11. Ввести строку. Заменить в ней сочетание NO на YES. 12. Ввести строку. Определить количество слов, содержащих букву Z. 13. Ввести строку и слово. Определить сколько раз слово встречается в строке. Задание №3 1. Ввести строку. Определить содержит ли она символы отличные от латинских заглавных букв. 2. Ввести строку, содержащую цифры. Определить является ли она записью восьмеричного числа. 3. Ввести строку. Найти длину самого длинного слова. 4. Ввести строку. Определить сколько раз в последнем слове встречается K. 5. Ввести строку, содержащую одну открывающуюся скобку и одну закрывающуюся. Вывести текст между скобками. 6. Ввести строку, состоящую из латинских букв. Заменить каждую букву строки на букву, следующую за ней по алфавиту (например, a-b, b-c, z – a). 7. Ввести строку, содержащую цифры. Определить является ли она записью двоичного числа. 8. Ввести строку. Определить сколько слов начинается и заканчивается на одну и ту же букву. 9. Ввести строку, состоящую из латинских букв. Заменить каждую букву строки на букву, предшествующей по алфавиту (например, a-z, b-a, c – b). 10. Ввести число N и строку. Определить сколько раз символ строки с номером N встречается в строке. 11. Ввести строку, содержащую латинские буквы. Определить, каких букв больше заглавных или строчных. 12. Ввести два слова. Определить можно ли из букв первого слова составить второе слово. 13. Ввести строку, содержащую одну открывающуюся скобку и одну закрывающуюся. Удалить текст между скобками. Задание №4 1.Ввести слово. Вывести его без двух первых и двух последних символов. 2.Ввести слово. Вывести второй и предпоследний символ. 3.Ввести строку. Определить каких букв больше А или О. 4.Ввести строку. Найти длину самого короткого слова. 5.Ввести строку. Вывести вторую половину строки. 6.Ввести строку, которая содержит символ +. Определить, сколько символов следует после него. 7.Ввести строку. «Задвоить» каждый символ строки (например, дано ABCD, результат AABBCCDD). 8.Ввести строку. Удалить из нее все цифры. 9.В строке есть одна точка с запятой; определить количество символов до нее и после. 10.Ввести строку. Определить количество заглавных букв. 11. Ввести строку. Вывести символы до первой точки. 12. Ввести слово. Вывести “да”, если первый и последний символ совпадает, в противном случае вывести “нет”. 13. Ввести строку. Вывести каждый второй символ строки. Порядок выполнения работы:
Литература. 1. Попов И.и. Партыка Т.Л. Языки программирования: учебное пособие.- М.: «ФОРУМ»: ИНФРА –М,2008 – 400с. 2. Семакин И.Г Основы алгоритмизации и программирования: учебник для студ. учреждений сред. проф. образования/И.Г Семакин, А.П Шестаков. – 3-е изд., стер. – М: Издательский центр «Академия», 2012.- 400с. Практическое занятие №7 |
Методические указания по выполнению лабораторных работ Издательство Инженерная геодезия. Методические указания по выполнению лабораторных работ. Составители: Шешукова Л. В., Тютина Н. М., Клевцов Е.... |
Методические указания по выполнению лабораторных работ по дисциплине... Методические указания по выполнению лабораторных работ рассмотрены и утверждены на заседании кафедры «Безопасность труда и инженерная... |
||
Методические указания для студентов по выполнению лабораторных и... Методические указания для студентов по выполнению лабораторных и практических работ |
Методические указания по выполнению практических и лабораторных работ... Учебно-методическое пособие предназначенодля студентов 3 курса, обучающихся по профессии 23. 01. 03 Автомеханик. Пособие содержит... |
||
Сборник методических указаний для студентов по выполнению лабораторных работ дисциплина «химия» Методические указания для выполнения лабораторных работ являются частью основной профессиональной образовательной программы Государственного... |
Методические указания по выполнению лабораторных работ по дисциплине «Сметное дело» ... |
||
Методические указания по выполнению лабораторных работ Казань 201 Эксплуатация, диагностика и надежность гту: метод указания/ сост.: Б. М. Осипов, А. В. Титов, Р. Г. Сагадеев. Казань: Казан гос... |
Методические указания по выполнению лабораторных работ Казань 2013 Эксплуатация, диагностика и надежность гту: метод указания/ сост.: Б. М. Осипов, А. В. Титов, Р. Г. Сагадеев. Казань: Казан гос... |
||
Методические указания для студентов по выполнению Правила техники безопасности при выполнении лабораторных и практических работ по химии |
Методические указания по выполнению лабораторных работ по дисциплине... Государственное бюджетное профессиональное образовательное учреждение московской области |
||
Методические указания по выполнению лабораторных работ по дисциплине... Федерального государственного бюджетного образовательного учреждения высшего образования |
Лабораторная работа №7 Тема: «Арифметические операции. Битовые команды» Методические указания к выполнению лабораторных работ по мдк 01. 01 «Системное программирование» |
||
Методические указания по выполнению лабораторных работ по дисциплине... Федерального государственного бюджетного образовательного учреждения высшего образования |
Методические указания к выполнению лабораторных работ по дисциплине радиолокационные системы Лабораторная работа №1 «Изучение принципов построения штатной радиолокационной киа» |
||
Методические указания по выполнению лабораторных работ по междисциплинарному курсу мдк02. 01 ПМ02. Применение микропроцессорных систем, установка и настройка периферийного оборудования |
Методические указания по выполнению практических и лабораторных работ... Методические указания предназначены для обучающихся по специальностям технического профиля 21. 02. 08 Прикладная геодезия |
Поиск |