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

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

30.03.2013, 07:26. Показов 5111. Ответов 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,664
Записей в блоге: 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,664
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru