Встроенные типы данных в С#. Массивы. Строки. Регулярные выражения
Классификация типов данных, отличия синтаксических конструкций языков C# и C++. Базовые типы: Array, String, StringBuilder. Средства стандартного ввода и вывода и возможности форматирования вывода. Понятие о регулярных выражениях и их применении.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 13.05.2014 |
Размер файла | 148,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа 4
ВСТРОЕННЫЕ ТИПЫ ДАННЫХ В С#. МАССИВЫ. СТРОКИ. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Выполнил: ст. гр. И-22
Миролюбов В.В.
Проверил:
Забаштанский А.К.
Севастополь 2014
Цель работы
Изучить классификацию типов данных и отличительные особенности синтаксических конструкций языка C# от C++;
Изучить базовые типы: Array, String, StringBuilder, а также средства стандартного ввода/вывода и возможности форматирования вывода;
Получить понятие о регулярных выражениях и их применении для поиска, замены и разбиения текста на синтаксические лексемы.
Вариант задания:
Проработать примеры программ 1-8, данные в теоретических сведениях. Создать на их основе программы. Получить результаты работы программ и уметь их объяснить. Внести их в отчет по работе с комментариями.
1. Удалить столбец двухмерного массива вещественных чисел, в котором находится максимальный элемент этого массива.
2. Дана строка, содержащая текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой или знаком восклицания). Получить в новой строке отредактированный текст, в котором удалены подряд идущие вхождения слов в предложениях.
3. Задан текст. Выбрать из него все e-mail адреса.
1. Ход работы
Пример 1
using System;
class laba
{
public static int Main (string [] args)
{
string [] firstNames={"Саша", "Маша", "Олег", "Света", "Игорь"};
Console. WriteLine ("Here is the array: ");
int i;
int len = firstNames. Length;
i = 0;
while (i < len) // Цикл до конца массива
{
Console. WriteLine (firstNames [i]); // Вывод текущего элемента
i++; // Переход на следующий
}
Console. WriteLine ("\n");
Array. Reverse (firstNames);
for (i=0; i< len; Console. WriteLine (firstNames [i++]));
Console. WriteLine ("\n");
Console. WriteLine ("Cleared out all but one. ");
Array. Clear (firstNames,1,4); // Очистка всех элементов кроме первого
len = firstNames. Length;
for (i=0; i< len; i++)
Console. WriteLine (firstNames [i++] +"\n");
return 0;
}
}
Рис. 1. - Результаты работы примера 1
Пример 2
using System;
class laba
{
public static int Main (string [] args)
{
string [] firstNames={"Саша", "Маша", "Олег", "Света", "Игорь"};
Console. WriteLine ("Here is the array: ");
PrintAr ("ИМЕНА!!!", firstNames);
return 0;
}
public static void PrintAr (string name, Array A)
{
Console. WriteLine (name);
switch (A. Rank)
{
case 1: for (int i = 0; i<A. GetLength (0); i++)
Console. Write ("\t" + name + " [{0}] ={1}", i, A. GetValue (i) + "\n"); Console. WriteLine ();
break;
case 2: for (int i = 0; i<A. GetLength (0); i++)
{
for (int j = 0; j<A. GetLength (1); j++)
Console. Write ("\t" + name + " [{0},{1}] ={2}",A. GetValue (i,j));
Console. WriteLine ();
}
break;
default: break;
}
}
}
Рис. 2 - Результаты работы второго примера
Пример 3
using System;
class laba
{
public static int Main (string [] args)
{
string [] firstNames={"Саша", "Маша", "Олег", "Света", "Игорь"};
Console. WriteLine ("Here is the array: ");
TestCharArAndString ();
return 0;
}
static string CharArrayToString (char [] ar)
{
string result = "";
for (int i = 0; i< ar. Length; result += ar [i++]);
return (result);
}
static void PrintCharAr (string name,char [] ar)
{
Console. WriteLine (name);
for (int i=0; i < ar. Length; Console. Write (ar [i++]));
Console. WriteLine ();
}
public static void TestCharArAndString ()
{
string hello = "Здравствуй, Мир!";
char [] strM1 = hello. ToCharArray ();
PrintCharAr ("strM1",strM1);
char [] World = new char [3];
Array. Copy (strM1,12,World,0,3); // копирование подстроки
PrintCharAr ("World",World);
Console. WriteLine (CharArrayToString (World));
}
}
Рис. 3 - Результаты работы третьего примера
Пример 4
using System;
using System. Text;
class laba
{
public static int Main (string [] args)
{
Console. WriteLine ("Here is the array: ");
TestStringBuilder ();
return 0;
}
public static void TestStringBuilder ()
{
StringBuilder s1 =new StringBuilder ("ABC"),
s2 =new StringBuilder ("CDE"),
s3 = new StringBuilder ();
s3= s1. Append (s2);
bool b1 = (s1==s3);
char ch1 = s1 [0], ch2=s2 [0];
Console. WriteLine ("s1={0}, s2={1}, b1={2}," + "ch1={3},ch2={4}", s1,s2,b1,ch1,ch2);
StringBuilder s = new StringBuilder ("Zenon");
s [0] ='L'; Console. WriteLine (s);
}
}
Рис. 4 - Очередной пример работы программы
Пример 5
using System;
using System. Text. RegularExpressions;
class laba
{
public static int Main (string [] args)
{
Console. WriteLine ("Here is the array: ");
TestSinglePat ();
return 0;
}
static string FindMatch (string str, string strpat)
{
Regex pat = new Regex (strpat);
Match match =pat. Match (str);
string found = "";
if (match. Success)
{
found =match. Value;
Console. WriteLine ("Строка ={0}\nбразец={1}^ Найдено={2}", str,strpat,found);
}
return (found);
}
public static void TestSinglePat ()
{
string str, strpat, found;
Console. WriteLine ("Поиск по образцу"); // образец задает подстроку, начинающуюся с
// символа a, далее идут буквы или цифры.
str ="start";
strpat =@"a\w+";
found = FindMatch (str,strpat); // art str ="fab77cd efg";
found = FindMatch (str,strpat); // ab77cd // образец задает подстроку, начинающуюся
// с символa а, заканчивающуюся f с возможными символами b и d в середине
strpat = "a (b|d) *f";
str = "fabadddbdf";
found = FindMatch (str,strpat); // adddbdf
}
}
Рис. 5 - Результаты работы пятого примера
Пример 6
using System;
using System. Text. RegularExpressions;
class laba
{
public static int Main (string [] args)
{
Console. WriteLine ("Here is the array: ");
string str, strpat;
Console. WriteLine ("око и рококо"); strpat="око"; str = "рококо";
FindMatches (str, strpat); // найдено одно соответствие
return 0;
}
static void FindMatches (string str, string strpat)
{
Regex pat = new Regex (strpat);
MatchCollection match =pat. Matches (str);
Console. WriteLine (" Строка ={0}\nOбразец={1}^ Найдено={2}", str,strpat,match. Count);
}
}
Рис. 6 - Результаты работы программы 6
Пример 7
using System;
using System. Text. RegularExpressions;
class laba
{
public static void Main ()
{
string si = "Это строка для поиска"; // найти любой пробельный символ следующий за
// непробельным
Regex theReg = new Regex (@" (\S+) \s"); // получить коллекцию результата поиска
MatchCollection theMatches = theReg. Matches (si); // перебор всей коллекции
foreach (Match theMatch in theMatches)
{
Console. WriteLine ("theMatch. Length: {0}", theMatch. Length);
if (theMatch. Length! = 0)
Console. WriteLine ("theMatch: {0}", theMatch. ToString ());
}
}
}
Рис. 7 - Результаты выполнения программы примера 7
Пример 8
using System;
using System. Text. RegularExpressions;
class laba
{
public static void Main ()
{
string stringl = "04: 03: 27 127.0.0.0 GotDotNet.ru";
Regex theReg = new Regex (@" (? <time> (\d |:) +\s)" + @" (? <ip> (\d |.) +) \s" + @" (? <url>\S+)");
// группа time - одна и более цифр или двоеточий, за которыми сле¬дует пробельный символ
// группа ip адрес - одна и более цифр или точек, за которыми сле¬дует пробельный символ
// группа url - один и более непробельных символов
MatchCollection theMatches = theReg. Matches (stringl);
foreach (Match theMatch in theMatches)
{
if (theMatch. Length! = 0)
{ // выводим найденную подстроку
Console. WriteLine ("\ntheMatch: {0}", theMatch. ToString ()); // выводим группу "time"
Console. WriteLine ("time: {0}", theMatch. Groups ["time"]); // выводим группу "ip"
Console. WriteLine ("ip: {0}", theMatch. Groups ["ip"]); // выводим группу "url"
Console. WriteLine ("url: {0}", theMatch. Groups ["url"]);
}
}
}
}
Рис. 8 - Результат работы программы 8, совпадений нет
Задание 1
using System;
class laba
{
public static void Main ()
{
int N, i, j;
N = 5;
float [,] matrix = new float [N, N];
Random rand = new Random ();
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
matrix [i,j] = rand. Next (10, 50); // заполнение массива случайными числами от 0 до 50
Console. WriteLine ("Исходная Матрица\n");
drawarr (matrix, N, N);
float max = matrix [0,0];
int maxj = 0;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
if (matrix [i,j] > max)
{
max = matrix [i,j]; // поиск максимального элемента
maxj = j; // запоминание столбца с этим элементом
}
Console. WriteLine ("Столбец с макс. элементом {0}", maxj+1);
if (maxj! = N)
for (i = 0; i < N; i++)
for (j = maxj; j < N-1; j++)
matrix [i,j] = matrix [i,j+1];
Console. WriteLine ("Удален столбец с максимальным элементом\n");
drawarr (matrix, N, N-1);
}
public static void drawarr (float [,] arr, int a, int b) // функция вывода матрицы на экран
{
int i, j;
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
Console. Write (arr [i,j] + " ");
Console. Write ("\n");
}
}
}
Рис. 9 - Результаты выполнения программы по заданию 1
Задание 2
using System;
using System. Text. RegularExpressions;
class laba {
static void Main ()
{
string ishod = "При объявлении массива массива массива границы задаются выражениями. Если все все все все границы заданы заданы константами. ";
Regex theReg = new Regex (@" (\S+) (\s)"); // выделение из строки каждого отдельного слова
MatchCollection theMatches = theReg. Matches (ishod);
string slovo1 = "", slovo2 = "";
int i = 0;
string konec = "";
foreach (Match theMatch in theMatches)
{
if (i == 0)
{
slovo1 = theMatch. ToString (); // первое слово
konec += slovo1;
}
else
{
slovo2 = theMatch. ToString ();
if (slovo2! = slovo1) {slovo1 = slovo2; konec += slovo1; }
}
i = 1;
}
Console. WriteLine ("Исходная строка");
Console. WriteLine (ishod + "\n");
Console. WriteLine ("Отредактированная строка");
Console. WriteLine (konec);
}
}
массив синтаксическая конструкция язык
Рис. 10 - Результаты выполнения программы номер 3
Задание 3
using System;
using System. Text. RegularExpressions;
class laba {
static void Main ()
{
string ishod = "Дело было так lslk@dsf.com и sssmonstr@com.com пошли к DEMENTOR@AZKABAN. DETH";
Regex theReg = new Regex (@"\w+@\w+. \w+"); // выделение из строки каждого отдельного слова
MatchCollection theMatches = theReg. Matches (ishod);
string email;
foreach (Match theMatch in theMatches)
{
email = theMatch. ToString ();
Console. WriteLine (email);
}
}
}
Рис.11 - Результаты выполнения программы по пункту 3
Вывод
изучена классификация типов данных и отличительные особенности синтаксических конструкций языка C# от C++;
изучены базовые типы: Array, String, StringBuilder, а также средства стандартного ввода/вывода и возможности форматирования вывода;
получено понятие о регулярных выражениях и их применении для поиска, замены и разбиения текста на синтаксические лексемы.
Размещено на Allbest.ru
Подобные документы
Сущность понятия "тип данных". Объектно-ориентированный стиль программирования. Простые типы данных в языке Паскаль: порядковые, вещественные, дата-время. Булевский (логический) тип. Синтаксис определения ограниченного типа. Регулярные типы (массивы).
реферат [24,1 K], добавлен 01.12.2009Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.
лабораторная работа [40,4 K], добавлен 06.07.2009Организация типов данных. Записи, оператор присоединения. Множества, операции над ними. Строки, стандартные процедуры и функции, работающие со строками. Совместимость типов. Явное и неявное преобразование типов. Многомерные массивы. Операции отношения.
презентация [30,8 K], добавлен 13.10.2013Использование пользовательских регистров. Регистры общего назначения. Элементарные и базовые типы данных. Язык микроопераций, ассемблер. Директивы резервирования памяти. Система команд, организация вычислений. Сложные структуры данных. Схемы ввода-вывода.
курс лекций [280,7 K], добавлен 02.12.2009Элементарные конструкции языка ПАСКАЛЬ: имена, числа и строки. Стандартные типы данных. Организация ввода и вывода данных с терминального устройства. Разработка программы, изменяющей первоначальную матрицу по заданной схеме и выводящей ее на экран.
курсовая работа [68,6 K], добавлен 09.07.2015Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.
лабораторная работа [62,0 K], добавлен 15.07.2010Основные составляющие системного блока. Назначение материнской платы. Базовая система ввода-вывода – Bios. Понятие периферийного устройства. Запоминающие устройства и их виды. Открытая архитектура в устройстве ПК. Устройства для ввода и вывода данных.
реферат [478,5 K], добавлен 18.12.2009Проектирование баз данных, реализация ее серверной части, методика создания таблиц, различных триггеров, хранимых процедур, клиентского приложения. Процедура поиска данных, фильтрации данных, вывода отчета, ввода SQL запросов и вывода хранимых процедур.
контрольная работа [50,1 K], добавлен 30.10.2009Программирование линейных алгоритмов. Процедуры ввода READ и READLN и вывода WRITE и WRITELN. Примеры решения задач на языке Паскаль. Оператор присваивания и выражения. Основные способы формирования структурных операторов. Операторы вызова процедур.
курсовая работа [44,3 K], добавлен 18.03.2013Сущность и основные свойства алгоритмов, принципы их составления. Скалярные типы данных в языке Pascal. Тождественность и совместимость типов данных. Понятие и основные этапы развития, а также движущие силы эволюции языков программирования, типы.
презентация [85,8 K], добавлен 18.05.2014