Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677

Непонятные моменты из книги Фроловых А. и Г. "C# для начинающих"

30.03.2013, 07:26. Показов 5262. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я читаю эту книгу на работе и дома, пока время есть, и переписываю приведенные в книге примеры в Microsoft Visual C#, но как бы ни было доходчиво все изложено, все равно то и дело возникают вопросы, бывает приведенные элементы кода просто не работают на практике, редактор программы указывает на ошибки, но почему эти ошибки возникают, если делаешь все строго по книге не ясно. Поэтому я решил обратиться на форум, туда где находится множество знающих тему людей, надеясь найти ответы.

Добавлено через 11 минут
Например, вот участок кода, где я получаю множество указаний на ошибки:
C#
1
2
3
4
5
int x = 8 - 6;
int i = ( x > 0 ) : 8 ? 9;
int j = i - 2;
System.Console.WriteLine("{0} - 2 = {1}", i, j);
System.Console.ReadLine();
Кто-нибудь может сказать, как их исправить, и почему они возникли? Может все дело в том, что книга написана давно, и многое в языке изменилось?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.03.2013, 07:26
Ответы с готовыми решениями:

Непонятные моменты с полумостом.
Вначале выкладывал в разделе "Аналоговая и силовая электроника" но ответов нет, наверно сразу сюда надо было. Здравствуйте. Допустим...

Сервер непонятные моменты
Помогите разобраться с непонятными моментами реализовал сервер описанный тут https://www.cyberforum.ru/blogs/199542/blog919.html ...

сокеты непонятные моменты
1. Как выбрать оптимальный размер буфера? Я понимаю что можно поставить и 1 байт данные все равно все будут получены (TCP/IP) , можно...

52
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
04.04.2013, 11:41  [ТС]
Студворк — интернет-сервис помощи студентам
Доброго всем времени суток, а я пока продолжаю читать Фроловых на работе, хоть мне и дали уже Шилдта, но вот до работы его книги пока не добрались.
Поэтому у меня опять назрел животрепещущий вопрос.
Почему эта программа открывает пустую, совершенно консоль, хотя методы WriteLine, совершенно очевидно, должны были бы вывести информацию, либо должна была бы возникнуть ошибка. Но ни того, ни другого не произошло.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Redefinition
{
    class Rectangle
    {
        public int xPos;
        public int yPos;
        protected int width;
        protected int height;
 
        public Rectangle()
        {
            xPos = yPos = width = height = 0;
        }
 
        public void SetPosition(int x, int y)
        {
            xPos = x;
            yPos = y;
        }
 
        public void SetSize(int w, int h)
        {
            width = w;
            height = h;
        }
    }
 
    class ColorRectangle : Rectangle
    {
        byte colorR;
        byte colorG;
        byte colorB;
 
        public void SetColor(byte r, byte g, byte b)
        {
            colorR = r;
            colorG = g;
            colorB = b;
        }
 
        public new void SetSize(int w, int h)
        {
            width = w;
            height = h;
        }
 
        public int GetXPos()
        {
            return xPos;
        }
 
        public int GetYPos()
        {
            return yPos;
        }
 
        public int GetWidth()
        {
            return width;
        }
 
        public int GetHeight()
        {
            return height;
        }
    }
 
    class Redefinition
    {
        static void Main(string[] args)
        {
            ColorRectangle cr;
            cr = new ColorRectangle();
 
            cr.SetPosition(0, 10);
            cr.SetSize(20, 30);
            cr.SetColor(0, 0, 0xFF);
 
            Console.WriteLine("Координаты прямоугольника = ({0}, {1})", cr.GetXPos(), cr.GetYPos());
 
            Console.WriteLine("Координаты прямоугольника = ({0}, {1})", cr.xPos, cr.yPos);
 
            Console.WriteLine("Ширина прямоугольника = {0}, высота = {1}", cr.GetWidth(), cr.GetHashCode());
 
            Console.ReadLine();
        }
    }
}
0
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
04.04.2013, 11:47
Это у Вас что-то, у меня вот:
Координаты прямоугольника = (0, 10)
Координаты прямоугольника = (0, 10)
Ширина прямоугольника = 20, высота = 37121646
0
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
05.04.2013, 09:29  [ТС]
kontuPauk,
Спасибо, буду разбираться.

Мне кажется высота как-то не правильно отобразилась. Блин, там автозамена сработала, хэшкод поставила вместо переменной GetHeight

Добавлено через 21 час 37 минут
Вот и у Шилдта тоже есть такие ошибки.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
using System;
class Example
{
    static void Main()
    {
        Console.WriteLine("Простая программа на C#");
     }
}


При этом автором предполагается, что откроется окно, с указанным текстом, и закроется только после нажатия ввода. Однако метода ReadLine в коде нет.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.04.2013, 09:44
SrgKord, это не ошибка . нажмите Ctrl + F5...
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
05.04.2013, 15:23
Цитата Сообщение от SrgKord Посмотреть сообщение
Вот и у Шилдта тоже есть такие ошибки.
Пока будете читать Шилдта будьте уверены - все ошибки ваши. Это сэкономит вам время, в таких книгах крайне мало ошибок, ищите ошибки в своём понимании.
2
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
05.04.2013, 22:49
Цитата Сообщение от SrgKord Посмотреть сообщение
Вот и у Шилдта тоже есть такие ошибки
Если изучать книгу по принципу - "Ага! Попалась ошибка!", то лучше оставайтесь при своем мнении.
Действительно, не сошелся же на Шилдте клином белый свет.
2
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
06.04.2013, 12:19  [ТС]
Цитата Сообщение от Евгений В Посмотреть сообщение
Если изучать книгу по принципу
Нет, все не так =) я наоборот надеялся, что хоть в этой книге не будет подобных ошибок. Но оказывается, это нечто иное. Мне теперь интересно, зачем Фроловы постоянно писали в конце программы ReadLine(), если, действительно для отображения содержимого программы на консоли можно нажать F5 + ctrl.

А теперь у меня совсем другого плана вопрос, тут уже на логику алгоритма.
Вот исходный текст со страницы 63 "С# 4.0 Полное руководство":
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
class Example2
{
    static void Main()
    {
        int prod, sum, i;
 
        sum = 0;
        prod = 1;
 
        for (i = 1; i <= 10; i++)
        {
            sum = sum + i;
            prod = prod * i;
        }
 
        Console.Write("Сумма равна " + sum + "\nПроизведение равно " + prod + "\n");
 
                
    }
}

Мне не понятно, почему при подсчете суммы (в строке 13) в первой итерации i принимает своё исходное значение, заданное значением переменной управления циклом, а не результат выполнения итерации, ведь выполнение команд происходит слева на право.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
06.04.2013, 13:01
Цитата Сообщение от SrgKord Посмотреть сообщение
Мне не понятно, почему при подсчете суммы (в строке 13) в первой итерации i принимает своё исходное значение, заданное значением переменной управления циклом, а не результат выполнения итерации
Если я вас правильно понял
C#
1
i++
i увеличивается на единицу в концу выполнения очередного цикла (такая запись называется постфиксной). Поэтому в первом цикле i = 1, а по его окончанию становится равным 2.
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
06.04.2013, 13:55
Цитата Сообщение от SrgKord Посмотреть сообщение
А теперь у меня совсем другого плана вопрос, тут уже на логику алгоритма.
Вот исходный текст со страницы 63 "С# 4.0 Полное руководство":
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
class Example2
{
    static void Main()
    {
        int prod, sum, i;
 
        sum = 0;
        prod = 1;
 
        for (i = 1; i <= 10; i++)
        {
            sum = sum + i;
            prod = prod * i;
        }
 
        Console.Write("Сумма равна " + sum + "\nПроизведение равно " + prod + "\n");
 
                
    }
}

Мне не понятно, почему при подсчете суммы (в строке 13) в первой итерации i принимает своё исходное значение, заданное значением переменной управления циклом, а не результат выполнения итерации, ведь выполнение команд происходит слева на право.
Вернитесь назад на 2 страницы и прочитайте внимательно то, что я подчеркнул.

Из этого следует, что цикл состоит из 4 частей:
1) Инициализация переменной цикла (i = 1)
2) Условие выполнения цикла (i <= 10)
3) тело цикла (sum = sum + i; prod = prod * i
4) Инкремент счетчика (i++)

1 пункт выполняется один раз, 2-4 повторяются пока выполняется условие
1
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
06.04.2013, 14:06
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от SrgKord Посмотреть сообщение
Мне не понятно, почему при подсчете
Рекомендую использовать точки останова и клавиши F10 и F11 при отладке программы или для изучения.

Точка останова позволяет приостановить программе в указанном вами месте и ожидать дальнейшего пошагового выполнения (например).
Для установки точки останова кликните левой мышкой по строке, где хотели бы приостановить программу. Максимально слева текстового поля. Появится красный шарик.
Затем запускайте программу. Она остановится в нужном месте.

Теперь нажимайте F10 или F11. Программа дальше начнется выполняться пошагово. С каждым нажатием.
Можно наводить мышкой на переменные и видеть их текущие значения.
Разница между F10 и F11 в том, что при F10 курсор перейдет в исполняемую часть любого метода, если встретит его, а при F11 метод выполнится без подробного захода в него.

В любой момент можете нажать F5 и программа продолжит выполнение дальше.

Если вы так сделаете, то увидите что i++ выполняется после очередного цикла.

P.S. У вас будут много вопросов в ходе обучения. Создавайте отдельные темы для отдельных мало связанных вопросов. Иначе эта ветка быстро разбухнет. Да и правила форума это требуют.
3
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.04.2013, 14:15
Евгений В, наоборот, F11 - trace into, заходит в методы
1
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
06.04.2013, 14:24
Верно. ОписАлся.
0
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
08.04.2013, 16:03  [ТС]
Евгений В,
Предельно понятно, логику уяснил. Буду все вопросы в отдельные темы писать. Спасибо всем за участие =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.04.2013, 16:03

Прокомментировать непонятные моменты
System.out.println(&quot;Задание b:&quot;); int m = 30; int source = new int; int evens = 0,...

Непонятные моменты языка
Тут нужно переписать программу с Фортрана-77 на Си, котелок уже не варит. Вот несколько вопросов (не думаю, что они могут вызвать проблемы...

Непонятные моменты из Страуструпа и не только
Начал я читать Страуструпа, там употребляется много новых слов для меня, вот по ним и вопросы (по порядку) Но пока не из него: что значит...

DllImport из с++ подскажите непонятные моменты
private extern static IntPtr Print(string a, string b); public static string Print2(string a, string b) { ...

Непонятные моменты в самом языке
Здарова ребята, пж ответьте на эти вопросы: В чем разница между Интерфейсом и Абстрактным классом? В чем разница между виртуальным и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru