Всем привет! Я изучаю c# по учебнику Герберта Шилдта и не давно столкнулся с проблемой. В общем, код то я списал, но полностью понять как он работает не смог. Решил оставить комментарии в тех местах, где мне не понятно и где бы я хотел попросить у вас помощи. Надеюсь на ваше понимание! (под словом "помощь" , я бы хотел услышать ,как получилась эта строка , из чего вышла и что она означает.) Спасибо за понимание!
using System;
namespace std
{
class NwoD
{
static void Main()
{
int i, j;//создаем 2 переменные типа инт
int[] num1 = new int[10];//создаем 1-ый массив(типа инт) с 10-ю значениями
int [] num2 = new int [10];//создаем 2-ой массив(типа инт) с 10-ю значениями
for ( i = 0; i < num1.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"
{
num1[i] = i;//не понятно
}
Console.Write("Исходное содержимое массива :");
for (i = 0; i < num2.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"
{
Console.Write(num1[i] + "");//то что выводим - я понял, но что выводим не понятно
}
Console.WriteLine();
if(num2.Length >= num1.Length)// задаем условие : (если величина 2-го массива >= величине первого массива, то выполняем условие)
{
for (i = 0, j = num1.Length-1; i < num1.Length; i++,j--)// создаем цикл : ( пока "i" меньше величине первого массива, инкрементируем "i"
// декрементируем "j"
{
num2[j] = num1[i];//не понятно
}
}
Console.Write("Содержимое массива в обратном порядке :");
for( i = 0; i<num2.Length; i++)// создаем цикл: ( пока "i" меньше величине 2-го массива, икрементируем "i"
{
Console.Write(num2[i] + "");//то что выводим - я понял, но что выводим не понятно
}
Console.WriteLine();
}
}
}
C#
Программирование C# . Length
>for ( i = 0; i < num1.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"
>{
>num1[i] = i;//не понятно
>}
массив num1 инициализируется значениями вида 0, 1, 2, ..., т.е. num1[0] = 0, num1[1] = 1
Console.Write("Исходное содержимое массива :");
for (i = 0; i < num2.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"
...
Здесь ошибка, должно быть num1.Length, либо программист должен гарантировать, что длина num2 всегда меньше или равна длине num1. В задаче обе длины == 10, так что ок.
> Console.Write(num1[i] + "");//то что выводим - я понял, но что выводим не понятно
Выводятся значения массива num1, в кавычках какой-то разделитель, который возможно проглотили ответы. Т.е. без него будет выведено "0123456789"; с ним - "0 1 2 3 4 5 6 7 8 9" или наподобие
>for (i = 0, j = num1.Length-1; i < num1.Length; i++,j--)// создаем цикл : ( пока "i" меньше величине первого массива, инкрементируем "i"
> // декрементируем "j"
> {
> num2[j] = num1[i];//не понятно
> }
заполняем массив num2 значениями из num1 в обратном порядке. Т.е. на первом проходе
i = 0, j = 9, num2[9] = num1[0] (т.е. num2[9] = 0), на втором
i = 1, j = 8, num2[8] = num1[1] (т.е. num2[8] = 1) и так далее
>Console.Write(num2[i] + "");//то что выводим - я понял, но что выводим не понятно
Выводится содержимое массива num2 с каким-то разделителем, аналогично тому что выше
>{
>num1[i] = i;//не понятно
>}
массив num1 инициализируется значениями вида 0, 1, 2, ..., т.е. num1[0] = 0, num1[1] = 1
Console.Write("Исходное содержимое массива :");
for (i = 0; i < num2.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"
...
Здесь ошибка, должно быть num1.Length, либо программист должен гарантировать, что длина num2 всегда меньше или равна длине num1. В задаче обе длины == 10, так что ок.
> Console.Write(num1[i] + "");//то что выводим - я понял, но что выводим не понятно
Выводятся значения массива num1, в кавычках какой-то разделитель, который возможно проглотили ответы. Т.е. без него будет выведено "0123456789"; с ним - "0 1 2 3 4 5 6 7 8 9" или наподобие
>for (i = 0, j = num1.Length-1; i < num1.Length; i++,j--)// создаем цикл : ( пока "i" меньше величине первого массива, инкрементируем "i"
> // декрементируем "j"
> {
> num2[j] = num1[i];//не понятно
> }
заполняем массив num2 значениями из num1 в обратном порядке. Т.е. на первом проходе
i = 0, j = 9, num2[9] = num1[0] (т.е. num2[9] = 0), на втором
i = 1, j = 8, num2[8] = num1[1] (т.е. num2[8] = 1) и так далее
>Console.Write(num2[i] + "");//то что выводим - я понял, но что выводим не понятно
Выводится содержимое массива num2 с каким-то разделителем, аналогично тому что выше
Ihar Zanimon
Теперь понял, спасибо!
Массив - набор переменных с общим именем, отличающихся индексом. Все, что тебе непонятно - это адресация элементов массива по их индексам. Уясни себе это каким-то образом и все станет понятно.
Тяжело вам будет, если у вас проблемы с массивами и индексацией.
num1[i] = i - на каждой итерации тут происходит присваивание каждому элементу массива, то есть элементу с индексом 0 присваивается 0, потом элементу с индексом 1 присваивается 1... и т.д.
Я конечно понимаю, что учебник Шилдта по C# морально устарел, но не настолько что бы потеряться в изучении массивов.
num1[i] = i - на каждой итерации тут происходит присваивание каждому элементу массива, то есть элементу с индексом 0 присваивается 0, потом элементу с индексом 1 присваивается 1... и т.д.
Я конечно понимаю, что учебник Шилдта по C# морально устарел, но не настолько что бы потеряться в изучении массивов.
Похожие вопросы
- Посоветуйте пожалуйста книгу, для изучения языка программирования C#, с полного нуля, заранее спасибо!
- Написание программы на языке программирования C#
- Решил попробовать изучать программирование (C# конкретно) и вот не могу понять почему код с упражнения не работает
- Программирование на C Sharp (C#)
- Как выглядит сам процесс программирования на C#
- Программирование на C# - целые числа
- Программирование на C#
- Как в C# разделить одно слово на две? К примеру слово программирование разделить на програм и мирование.
- Программирование на C#
- Как выучить язык программирования?