Лабораторно упражнение 9 Работа с масиви и използване на клас Array
|
|
- Юрий Динков
- преди 3 години
- Прегледи:
Препис
1 I. Теоретична част Лабораторно упражнение 9 Работа с масиви и използване на клас Array 1. Дефиниране на масиви. Достъп до елементи на масив Масивът е несортирана последователност от елементи от един и същи тип, заразлика от класовете, при които полетата са от различен тип. Елементите намасива се съхраняват в последователен блок от паметта и са достъпни чрез индекс, който е цяло число и показва мястото на елемента в масива Деклариране на масиви и създаване на инстанции от тип масив. Променлива от тип масив се декларира като се посочи името й, типа на елементите и квадратни скоби. Общият вид на декларацията на едномерен масив е следния: тип [] имемасив; int[] array; Необходимо е да се отбележи, че броя на елементите не е част от декларацията и че синтаксисът на език C# изисква скобите да са преди името на масива. Декларирането на двумерен масив има следният общ вид: тип [,] имедрумеренмасив; Аналогично, тримерен масив ще бъде деклариран като: тип [,,] иметримеренмасив; Масивите са адресни типове, независимо от типа на техните елементи. Това означава, че името на масива се съхранява в стека, а в динамичната памет се създава инстанция от тип масив, в която се съхраняват стойностите на самите елементи т.е. самият масив. Поради тази причина, в декларацията на масива не се посочва броя на елементите. Създаването (дефиниране) на масив е едва след като се създаде инстанция (екземпляр) чрез ключова дума new. Общият вид на дефиниране на едномерен масив е: имемасив = new тип [брой елементи]; int[] array; array = new int[4]; С първия програмен ред се декларира името array в стека. Първоначално, както всяка променлива от референтен тип, array е инициализирана със стойност null. С вторият програмен ред в динамичната памет се заделя място, необходимо
2 да всичките елементи и адресът в стека се инициализира така че да сочи паметта, където е съхранен масивът. Дефинирането на масив може да е и с един програмен ред: int[] array = new int[4]; В език C# масивите са от динамичен тип и броя на елементите може да се определи и по време на изпълнение на програмния код. Например: int n = Int32.Parse(Console.ReadLine()); double[] ma = new double[n]; Синтаксисът на дефиниране на двумерни и тримерни масиви е следния: имедвумеренмасив = new тип [бройредове, бройстълбове]; иметримеренмасив = new тип [граница1, граница2, граница3]; Примери за създаване на многомерни масиви са: int[,] matrix = new int[5, 4]; double [,] twodimentionalarray = new double [3,2]; double [,,] threedimentionalarray = new double [2,3,2]; 1.2. Инициализиране на масиви Когато се създаде обект (инстанция) от тип масив всички елементи на масива се инициализират със стойности по подразбиране в зависимост от техния тип. Възможно е още при дефинирането на масив, неговите елементи да бъдат инициализирани съа зададени стойности. Общият вид на инициализацията е: имемасив = new тип [бройелементи] списък стойности; int[] mb = new int[5] 1,2,3,4,5; Не е необходимо стойностите във фигурните скоби непременно да бъдат константи, те могат да се изчислят и по време на изпълнение. Random r = new Random(); int[] array = new int[4] r.next() % 10, r.next() % 10, r.next() % 10, r.next() % 10 ; В случая се използва генератор на случайни числа, с които да се инициализират елементите на масива. Броят на стойностите между фигурните скоби задължително трябва да съответства на размера на масива. Например, посочените по-долу програмни редове ще предизвикат грешка по време на компилиране: int[] array = new int[4] 1, 2, 3 ; int[] array = new int[3] 1, 2, 3, 4 ; При инициализиране на масиви изразът new и размерът на масива могат да бъдат пропуснати. Компилаторът изчислява размера на масива според броя на стойностите.
3 В случая е създаден масив от 6 елемента от тип int. Инициализацията на многомерните масиви е подобна на едномерните. Примери: int[,] matrix = new int[2, 3] 1, 3, 5, 2, 4, 6 ; int[,,] array3d = new int[,,] 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ; 1.3. Достъп до елементите на масив За да се получи достъп до елемент на масив е необходимо да се зададе индексът, посочващ елемента. int a; a = array[3]; В случая, на променливата a се присвоява стойността на елемент от масива с индекс 3. Индексите на масивите в език С# започват от 0, както е и в програмни езици С и С++. При всяко индексиране (адресиране на елемент на масив) се проверява дали индексът попада в границите на масива. Ако се използва индекс по-малък от 0, равен или по-голям от дължината на масива, компилаторът генерира изключение IndexOutOf RangeException. try int[] pins = 9, 3, 7, 2 ; Console.WriteLine(pins[4]); catch (IndexOutOfRangeException e) 2. Клас Array Console.WriteLine(e.Message); В платформата.net e предвидено за масивите да отговаря клас Array. Всеки дефиниран масив се явява обект от този клас. Клас Array разполага с редица свойства и методи, които могат да се използват от програмистите. Най-често използваните свойства на класа са: Length свойство за четене, което връща броя на елементите на масива Rank свойство за четене, което връща размерността на масива Console.WriteLine("Размерността на мaсива е " + array.rank); for(int i=0;i<array.length; i++)
4 int a = array[i]; Console.Write(a); За дублиране на масиви могат да бъдат използвани методите на клас Array: Copy, CopyTo и Clone. Метод Copy е статичен и се извиква чрез името на класа. Изисква 3 параметъра: стар масив, нов масив, брой елементи, които се копират в новия масив. int[] array1 = new int[array.length]; Array.Copy(array, array1, array.length); Метод CopyTo изисква два параметъра новия масив и началния индекс, от който ще се копират елементите в новия масив. Масивът, от който ще се копират елементи (източникът) е текущият обект, с който се извиква методът. int[] array1 = new int[array.length]; array.copyto(array1, 0); Метод Clone се използва за дублиране на цял масив. int[] array1 = (int[])array.clone(); Други методи на клас Array са: Sum намира сумата от елементите на масива; Min намира най-малка стойност Max намира най-голяма стойност Average намира средноаритметична стойност от елементите на масива Посочените методи са методи на екземплярите. Извикват се чрез обект масив и връщат като резултат съответно: сумата на елементите, най-голямата, най-малката стойност, средноаритметична стойност. Методи на клас Array, които са статични са: Sort(Array) сортира масив, предаден като параметър. IndexOf(Array, Object) връща индекса на посочения обект Reverse(Array, index, length) обръща стойностите на определен брой елементи в масива Array от този с посочения индекс. Броят елементи се определя от параметъра length.
5 II. Задачи за изпълнение 1. Да се дефинира едномерен масив от n целочислени елемента. Да се въведат стойности на елементите и да се формират следните масиви: Масив, който съдържа първите m елемента (m<n) Масив, който е два пъти по-голям от въведения и последователно съдържа елементите от 1 до n и повторно от 1 до n. Изведете съдържанието на резултантните масиви Упътване: Да се използват методи Copy и CopyTo за прехвърляне на елемрнтите на масивите. Да се използва и свойството Length, чрез което се определя броя на елементите в масива. 2. Да се дефинира едномерен масив от n целочислени стойности. Да се въведат стойности за елементите на масива (или да се използва генератор на случайни числа). Да се намери сумата, средноаритметично, най-голямата и най-малката стойност от елементите на масива. С помощта на метод Clone да се дублира масивa. Да се сортира новия масив и да се изведат двата масива на екрана. Упътване: Използвайте методите на клас Array: Min, Max, Sum, Average, Sort. 3. Да се дефинира едномерен масив от n реални (дробно-десетични) стойности, като n e четно число. Да се сортира масивът и да се обърнат стойностите на елементите във втората половина от масива. Упътване: Използвайте методите на клас Array: Sort и Reverse. Относно въпроси по темата на адрес: ln_zh_st@yahoo.com
Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр
Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември
ПодробноСтруктура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор
Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София
ПодробноМаисви
МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double
ПодробноВиртуални функции
Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1
Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15.11-6.12.2018 г. 1 / 17 Масиви
ПодробноПредефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве
Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :
ПодробноC++
Управляващи оператори в C++ Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 18 30 октомври 2018 г. Трифон Трифонов (УП 18/19) Управляващи оператори в C++ 18 30 октомври
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма
Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо
ПодробноКласове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1
Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 1.1 Модулност............................ 1 1.2 Обектно-ориентирана
ПодробноДефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class
ПодробноMathematica CalcCenter
Mathematica CalcCenter Основни възможности Wolfram Mathematica CalcCenter е разработен на базата на Mathematica Professional и първоначално е бил предназначен за технически пресмятания. Информация за този
ПодробноSlide 1
Списъци. Структура и синтаксис. Създаване и показване. Основни операции(добавяне, изваждане на елемент или цял подсписък; подреждане). Трансформации. проф. дмн С. Христова Списъци Списъците / list са основна
ПодробноLush Green
Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се
ПодробноОбработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re
Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 27 февруари 2005 г. 1 #include < cstdio
ПодробноДинамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:
ПодробноLush Green
Класове Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях Дефиниция
Подробноdoll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н
doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката на механични кукли, датиращи от древни времена. Движенията
ПодробноHomework 3
Домашно 3 по дисциплината Дискретни структури за специалност Информатика I курс летен семестър на 2015/2016 уч г в СУ ФМИ Домашната работа се дава на асистента в началото на упражнението на 25 26 май 2016
ПодробноЛабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн
Лабораторно упражние 6 Тема: Оператори за цикли в езика C++. Реализира на циклични алгоритми I. Цел на лабораторното упражние Да се затвърдят знанията на студентите за организацията и синтаксиса на програми
ПодробноПроект 1: Форма за решаване на тест Създайте приложение, което тества знанията на ученика по Информатика. Върху формата да се разположат въпроси с по
Проект 1: Форма за решаване на тест Създайте приложение, което тества знанията на ученика по Информатика. Върху формата да се разположат въпроси с по четири отговора всеки, от които точно един е верен.
ПодробноMSDOS1
ПРИЛОЖЕНИЕ C ANSI ESCAPE последователности Забележка Информацията в това приложение зависи от инсталацията и може да не се прилага в машините на всички производители. ANSI ESCAPE последователността представлява
Подробно3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението
3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението представя кратко въведение в синтактичния анализ.
ПодробноИнструкция за работа с Декларации 1 и 6 Инструкция за изготвяне на Декларация образец 1 и Декларация образец 6 в ПП Омекс 2000, съгласно изискванията
Инструкция за работа с Декларации 1 и 6 Инструкция за изготвяне на Декларация образец 1 и Декларация образец 6 в ПП Омекс 2000, съгласно изискванията на НАП от 01.01.2014 г. за едновременно подаване на
ПодробноBlack and White
Advanced C++ Memory Management Йордан Димитър Зайков Трендафилов Memory Management Effective C++ 2 nd ed: 3, 5, 7, 8, 9, 10 More Effective C++: 1, 3, 8 Exceptional C++: 35, 36 Какво всъщност прави new?
ПодробноMicrosoft PowerPoint - DBoyadzhieva
: Изграждане на висококвалифицирани млади изследователи по съвременни информационни технологии за оптимизация, разпознаване на образи и подпомагане вземането на решения Минимизиране на броя на признаците
ПодробноМИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА
МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА У Ч Е Б Н А П Р О Г Р А М А ЗА ЗАДЪЛЖИТЕЛНА ПРОФЕСИОНАЛНА ПОДГОТОВКА ПО ПРОГРАМИРАНЕ И АЛГОРИТМИЧНИ ЕЗИЦИ ЗА ПРОФЕСИЯ: КОД 482010 ИКОНОМИСТ - ИНФОРМАТИК СПЕЦИАЛНОСТ:
ПодробноПроф
Утвърдил:.. / доц. д-р Е. Великова / Утвърден от Факултетен съвет с протокол... /... СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ Факултет по Математика и Информатика Специалност: Компютърни науки М И К 0
Подробно4
Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата
Подробно2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет
2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия
ПодробноРекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари
Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари 2017 г. Трифон Трифонов (УП 16/17) Рекурсия 21.12.16
ПодробноПри изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и
При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива
ПодробноСтруктура на програма в C - Част 2 - типове, функции
Структура на програма в C Част 2 - типове, функции Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 10 март 2019 г. И. Георгиев, Х.
ПодробноВ тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц
В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични
ПодробноСОФИЙСКА МАТЕМАТИЧЕСКА ГИМНАЗИЯ ТУРНИР ПО МАТЕМАТИКА И ИНФОРМАТИКА "ЗА ТОРТАТА НА ДИРЕКТОРА" ТЕМА ПО ИНФОРМАТИКА Група X (10-12 клас) Задача Рязане на
Задача Рязане на квадрат Цури има квадрат с лице 1 и иска да го разреже на N равнолицеви правоъгълника (всеки с лице 1 ). За съжаление инстумента за рязане с който разполага Цури не е N съвършен. Чрез
ПодробноMicrosoft Word - nbb2.docx
Коректност на метода на характеристичното уравнение за решаване на линейно-рекурентни уравнения Стефан Фотев Пиша този файл, тъй като не успях да намеря в интернет кратко и ясно обяснение на коректността
ПодробноИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври
JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври 2008 JAVA ОБЕКТИ Забележка: Тази лекция е адаптация на лекция от курса: 6.092 Java
ПодробноУказатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23
Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21
ПодробноKontrolno 5, variant 1
N P - П Ъ Л Н И З А Д А Ч И КОНТРОЛНО 5 ПО ДИЗАЙН И АНАЛИЗ НА АЛГОРИТМИ СУ, ФМИ ( ЗА СПЕЦИАЛНОСТ КОМПЮТЪРНИ НАУКИ, 1. ПОТОК; 3 МАЙ 018 Г. ) Задача 1. Разглеждаме задачата за разпознаване LongestCycle:
ПодробноПрограмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5
Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming
Подробно