Всем привет!
Прошу простить за столько долгое отсутствие лекций видео-курса. Было несколько причин, по которым не было возможности записать, но теперь, думаю, что дальше видео буду записывать более-менее стабильно.
А теперь по теме
В этой лекции вы узнаете о функциях, параметрах функций, области видимости переменных и еще некоторых полезных вещах, которые, несомненно, очень пригодятся в дальнейшем. Лекция получилась еще длиннее, чем предыдущие, поэтому, начиная со следующей, буду разбивать на 2 части, потому что материала действительно очень много!
Ссылки на предыдущие лекции
Лекция 1. Введение
Лекция 2. Hello, World! и знакомство с Visual C# Express 2010
Лекция 3. Переменные и выражения
Лекция 4. Условия и циклы
Лекция 5. Преобразование типов. Перечисления, структуры, массивы
Ответы на предыдущее домашнее задание:
1. Какая из операций не может выполняться неявно:
в, г
bool в string
byte в float
2. Создайте на базе типа short код для перечисления color, содержащего 4 разных цвета. Может ли такое перечисление основываться на byte?
Ответ: Для создания перечисления можно использовать пример из 4 лекции. Можно использовать тип byte.
3. Будет ли компилироваться следующий код и почему?
string[] blab = new string[5]
string[5] = 5th string;
* This source code was highlighted with Source Code Highlighter.
Ответ: нет, так как значение должно присваиваться массиву (blab[5] = «5th string»), строковое значение должно быть в кавычках, а также индекс находится за пределами массива.
Приятного просмотра!
Также как дополнение — видео, которое решил не выкладывать в отдельный пост:
Visual C# for beginners — Code Upgrade #1
Исходники из лекций
Лабораторная работа №1. Поиск наибольшего элемента в массиве
static int MaxValue(int[] intArray)
{
int maxVal = intArray[0];
for(int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxVal)
maxVal = intArray[i];
}
return maxVal;
}
static void Main(string[] args)
{
int[] myArray = {1, 8, 3, 6, 2, 5, 9, 3, 0, 2};
int maxVal = MaxValue(myArray);
Console.WriteLine("The maximum value in myArray is {0}", maxVal);
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №2. Использование массива параметров
static int SumVals(params int[] vals)
{
int sum = 0;
foreach (int val in vals)
{
sum += val;
}
return sum;
}
static void Main(string[] args)
{
int sum = SumVals(1, 5, 2, 9, 8);
Console.WriteLine("Summed values = {0}", sum);
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №3. Передача параметра по ссылке
static void ShowDouble(ref int val)
{
val *= 2;
Console.WriteLine("Doubled value is {0}", val);
}
static void Main(string[] args)
{
int myNumber = 5;
Console.WriteLine("myNumber is {0}", myNumber);
ShowDouble(ref myNumber);
Console.WriteLine("myNumber is {0}", myNumber);
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №4. Передача параметра по ссылке
static void ShowDouble(ref int val)
{
val *= 2;
Console.WriteLine("Doubled value is {0}", val);
}
static void Main(string[] args)
{
int myNumber = 5;
Console.WriteLine("myNumber is {0}", myNumber);
ShowDouble(ref myNumber);
Console.WriteLine("myNumber is {0}", myNumber);
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №5. Выходные параметры
static int MaxValue(int[] intArray, out int maxIndex)
{
int maxVal = intArray[0];
maxIndex = 0;
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxVal)
{
maxVal = intArray[i];
maxIndex = i;
}
}
return maxVal;
}
static void Main(string[] args)
{
int[] myArray = {1, 8, 3, 6, 2, 5, 9, 3, 0, 2};
int maxIndex;
Console.WriteLine("Maximum value in myArray is {0}", MaxValue(myArray, out maxIndex));
Console.WriteLine("First index with max value in element {0}", maxIndex + 1);
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №6. Область видимости переменных
static string myString;
static void Write()
{
string myString = "String defined in Write()";
Console.WriteLine("Now in Write()");
Console.WriteLine("Local string myString = {0}", myString);
Console.WriteLine("Global string myString = {0}", Program.myString);
}
static void Main(string[] args)
{
string myString = "String defined in Main()";
Program.myString = "Global string";
Write();
Console.WriteLine("\nNow in Main()");
Console.WriteLine("Local string = {0}", myString);
Console.WriteLine("Global string myString = {0}", Program.myString);
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №7. Аргументы командной строки
static void Main(string[] args)
{
Console.WriteLine("{0} command line arguments were specified:", args.Length);
foreach (string arg in args)
{
Console.WriteLine(arg);
Console.ReadKey();
}
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №8. Использование функций в структурах
struct customerName
{
public string firstName, lastName;
public string Name()
{
return firstName + " " + lastName;
}
}
static void Main(string[] args)
{
customerName myCustomer;
myCustomer.firstName = "John";
myCustomer.lastName = "Franklin";
Console.WriteLine(myCustomer.Name());
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №9. Перегрузка функций
static int MaxValue(int[] intArray)
{
int maxVal = intArray[0];
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxVal)
maxVal = intArray[i];
}
return maxVal;
}
static double MaxValue(double[] doubleArray)
{
double maxVal = doubleArray[0];
for (int i = 1; i < doubleArray.Length; i++)
{
if (doubleArray[i] > maxVal)
maxVal = doubleArray[i];
}
return maxVal;
}
static void Main(string[] args)
{
int[] myIntArray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };
double[] myDoubleArray = { 1.3, 8.6, 3.8, 6.1, 2.6, 5.8, 9.6, 3.4, 0.3, 2.1 };
int intVal = MaxValue(myIntArray);
double doubleVal = MaxValue(myDoubleArray);
Console.WriteLine("The maximum value in myIntArray is {0}", intVal);
Console.WriteLine("The maximum value in myDoubleArray is {0}", doubleVal);
}
* This source code was highlighted with Source Code Highlighter.
Лабораторная работа №10. Делегаты
delegate double ProcessDelegate(double param1, double param2);
static double Multiply(double param1, double param2)
{
return param1 * param2;
}
static double Divide(double param1, double param2)
{
return param1/param2;
}
static void Main(string[] args)
{
ProcessDelegate process;
Console.WriteLine("Enter 2 numbers separated with comma:");
string input = Console.ReadLine();
int commaPos = input.IndexOf(',');
double param1 = Convert.ToDouble(input.Substring(0, commaPos));
double param2 = Convert.ToDouble(input.Substring(commaPos + 1, input.Length - commaPos - 1));
Console.WriteLine("Enter M to multiply or D to divide:");
input = Console.ReadLine();
process = input == "M" ? new ProcessDelegate(Multiply) : new ProcessDelegate(Divide);
Console.WriteLine("Result: {0}", process(param1, param2));
}
* This source code was highlighted with Source Code Highlighter.
Упражнения для самостоятельной работы
1. Две приведенных ниже функции содержат ошибки. Назовите их
static bool Write()
{
Console.WriteLine("Text output from function.");
}
static void myFunction(string label, params int[] args, bool showLabel)
{
if (showLabel)
Console.WriteLine(label);
foreach (int i in args)
{
Console.WriteLine("{0}", i);
}
}
* This source code was highlighted with Source Code Highlighter.
2. Напишите приложение, использующее два аргумента командной строки для помещения значений, соответственно, в строку и целочисленную переменную, а затем отражающее эти значения на экране.
3. Измените структуру так, чтобы она включала функцию, возвращающую общую цену заказа:
struct order
{
public string itemName;
public int unitCount;
public double unitCost;
}
* This source code was highlighted with Source Code Highlighter.
Спасибо за внимание! Подписывайтесь на мой канал Vimeo и официальную страницу ВКонтакте, чтобы первыми узнать о выходе нового видео.