Мусор или проблема непредсказуемых значений
У каждого языка программирования есть свои фундаментальные правила [несмотря на то, что эти правила иногда переходят в другие языки].
Тем не менее, C считается «матерью» всех языков программирования, как они говорят. В C существует множество аспектов; будучи учащимся, время, потраченное на понимание его основ, имеет важное значение для поддержки роста.
Самый простой для изучения язык программирования
Что есть в обучении, если не находить процесс приятным ежедневно? Что касается меня, то я всегда боялся С, просто из-за эмоциональной привязанности и прислушивания к мнению других. Однако в тот день, когда я взял себя в руки и изменил свою точку зрения, я задумался, почему я боюсь этого языка.
Фантастическое чтение различных книг, которые помогли в этом путешествии, — это «Let Us C» Yashavant Kanetkar. Я знаю, что то же самое недействительно для некоторых и других. Тем не менее, при разнообразии понимания у каждого свой индивидуальный способ изучения и применения полученных концепций. Разнообразие языков программирования также меняет кривую обучения.
Таким образом, мастерство в одном языке для человека А может отличаться от того, как человек Б понимает те же самые понятия. Достижение наших целей понимания помогает познать себя и использовать ресурсы, которые у нас есть, чтобы получить лучшее из всего.
То, что сработало для него (он), может сработать, а может и не сработать для них. И это «Хорошо».
Иллюстрация проблемы мусора:
На изображении ниже показано простое использование функции 'printf', которая помогает изобразить проблему мусора в программировании на C.
Код помогает проиллюстрировать проблему Garbage Value:
#include <stdio.h> int main() { int x; // uninitialized variable printf("The value of x is %d\n", x); return 0; }
В приведенном выше коде мы объявили целочисленную переменную, но ее еще нужно инициализировать. Это означает, что x
содержит мусорное значение — значение, которое непредсказуемо и может меняться при каждом запуске программы.
Когда мы пытаемся напечатать значение x
с помощью printf
, отображается значение мусора. Запуск этой программы несколько раз приведет к тому, что каждый раз будут печататься разные значения мусора.
Это иллюстрирует проблему использования неинициализированных переменных в C — это может привести к непредсказуемому поведению и ошибкам в вашей программе. Крайне важно всегда инициализировать ваши переменные перед их использованием, чтобы избежать подобных проблем.
Без явной инициализации переменные получат непредсказуемое значение, то есть значение мусора. Причина связана с последовательным выполнением программы.
В программировании на C выполнение программы является последовательным, если это не указано в инструкциях принятия решения. Таким образом, программа выполняется при вызове функции 'printf' даже до следующих разделов.
Примеры результатов
#1
The value of x is 8724728
#2
The value of x is -141474720
#3
The value of x is 0
Как видите, значение x
может быть любым произвольным значением, которое хранится в ячейке памяти, выделенной для x
. Вот почему важно инициализировать переменные перед их использованием, чтобы убедиться, что они содержат предсказуемое значение.
Пример, закрепляющий значение инициализации
В этом разделе рассматривается простой пример, который требует инициализации переменных в управляющих структурах.
Нулевое значение (0) формирует важный метод минимизации потенциальных значений мусора при назначении переменных.
Например, приведенная ниже программа вычисляет общие расходы на основе введенного количества и ставки.
Инициализация значения скидки (кол-во) и скидки (диск) до 0 очень важна. На изображении ниже показана простая программа, использующая оператор if.
#include <stdio.h> int main() { int qty = 0; // initialize quantity to 0 float rate = 0.0; // initialize rate to 0.0 float disc = 0.0; // initialize discount to 0.0 printf("Enter the quantity: "); scanf("%d", &qty); printf("Enter the rate: "); scanf("%f", &rate); if (qty > 100) { disc = 0.05 * qty * rate; } float total = qty * rate - disc; printf("Total expenses: $%.2f\n", total); return 0; }
В приведенном выше коде мы объявили три переменные: qty
, rate
и disc
. Мы инициализировали qty
и disc
до 0 с помощью оператора присваивания, а rate
инициализировали до 0.0.
Затем мы предлагаем пользователю ввести количество и норму и прочитать эти значения с помощью функции scanf
. Мы используем оператор if
, чтобы проверить, превышает ли количество 100, и в этом случае мы рассчитываем скидку по формуле 0.05 * qty * rate
.
Наконец, мы вычисляем общие расходы, вычитая скидку из произведения количества и ставки, и отображаем результат. printf
.
Инициализируя переменные qty
и disc
равными 0, мы гарантируем, что они не содержат мусорных значений, которые могут повлиять на вычисления.
Как показано в приведенном выше примере программы, может возникнуть вопрос, а необходимы ли 'Qty = 0' и 'disc = 0'? Ответ: «Да». Это связано с тем, что в C переменные, которые не инициализированы явно или явным образом, будут содержать или отображать некоторые непредсказуемые (мусорные) значения. Как показано в предыдущем примере 'x', значение мусора постоянно менялось. Следовательно, чтобы предотвратить это, становится полезным присвоение нуля (0).
Очевидно, проблема мусора формирует лишь незначительную область в C, которая нуждается в понимании, и постоянное обучение имеет решающее значение. Учитывая это, а также различия в навыках среди разработчиков и компьютерных энтузиастов, понимание этого простого аспекта может сэкономить ценное время на отладку, особенно при изучении инструкций по принятию решения.
C It All: существуют вариации в обучении
В своих рутинных чтениях я наткнулся на статью, объясняющую кривую обучения C. В статье автор поясняет, что для уровня программирования Absolute beginner изучение C в этом случае занимает не менее трех месяцев. Во-вторых, для того, кто уже программист, сроки 1-3 месяца. Тем не менее, эти два уровня не делают человека мастером C. В построении мастерства временная шкала составляет от 2 лет до бесконечности.
Несмотря на эту статистику, у всех нас разные способности, и то, что можно выучить за один час, может занять у другого всего две минуты. А для других процесс может занять до трех месяцев. В конечном счете, мы все приходим к нашей цели с различными промежуточными факторами. Всегда важно держать голову высоко и сосредоточиться на результате, независимо от того, как все обернется.
Наконец: продолжайте учиться; Наконец-то стало проще.
Этот аспект бесконечности в освоении C имеет решающее значение и всегда должен учитываться. Можно попытаться стать мастером; однако это название неуловимо в C [и других языках программирования, с которыми вы можете столкнуться]. Как ученики, понимание того, что вещи растут, имеет решающее значение. Независимо от текущих навыков, самосовершенствование путем изучения новых концепций жизненно важно.
Вещи постоянно меняются, и в этой области есть значительный вклад в программирование. Тем не менее, понимание основ лежит в основе успеха, что бы ни случилось.
Вы можете узнать больше о жизни и других областях на Домашней странице Acceldia.
Всегда рад подключению. Удачного кодирования!