Basic programming, .NET technology.

CÁC CẤU TRÚC LẶP - Repetition structures


    Hoang Phi Hong, you must have heard a lot about this name, especially those who have a bit of blood in fighting and kicking will know very well. This master has a technique called Shadowless Kick. Roughly it is a series of consecutive kicks. It is repetition. In programming we also have a similar technique, also performing the repetition of a certain piece of code. That's the charge loop, oh my…the loop structures.

In C#, we have loop types like while loop, do-while loop, for loop, and foreach loop. Within the scope of this article, I only present the concept, structure, block diagram, and usage (just at a simple level) of each of the above iterations.

First, we need to understand iteration constructs that will allow us to execute a statement or group of statements n times when the loop condition is true.


1. While loop
    Is a simple loop structure, allowing statements to be executed until the value of the conditional expression is still true (condition expression = true).

Syntax:
      While (condition)
     {
            Statement(s);
     }

For example:

Run the above code, will print the screen values the values of n from 0 -> 6.

We see the structure of the while loop that will consider the value of n before executing the code inside the loop. With the while loop structure, we do not specify the number of iterations, the number of iterations depends on the value of the conditional expression. So it is very likely that the statements inside the loop will not be executed at all.

The flowchart diagram, which can be represented as follows:



       2. Do-while loop
     The do-while construct is similar to the while construct. It allows executing statements when the value of the conditional expression is true. It also cannot know the exact number of iterations in advance, it depends on the value of the conditional expression. But the difference from the while structure is that the conditional expression is placed at the bottom of the loop. This means that even if the conditional expression is false, the loop will be executed at least once. You can think of it as something like Better a glorious minute than a hundred years.

The structure of do-while is as simple as while:
      do
     {
            Statement(s);  
     }
     while(condition)

Let see the below code:

Here's the result


   Even though the conditional expression is false, the loop's code is still executed once. It is a remarkable feature when we use the do-while structure.



When studying the two structures above, we see that they are both structures with an indefinite number of iterations. Next, we will learn two iterative constructs, which we can predetermine the number of iterations.

       3. For loop
   This structure, allows statements to be executed when the value of the conditional expression is still true.

The difference with the above two structures is that the for loop has 3 components: the initialization expression for the loop, the conditional expression, and the counter variable. This helps fraternal coders completely determine the exact number of iterations they want.

Its structure is as follows
     for(init-expr; cond-expr; count-expr)
    {
            Statement(s);
    }

Example: 

Here's what we got

Here's the flowchart:

                 
The for construct is very useful in case we need to iterate a certain number of times.

       4. Foreach loop:
We have a collection of type arrays or any kind of collection. The usual way we use for traverses from 0 -> array.length; There is nothing wrong with this, but in C# there is a loop type that helps us iterate through the elements of an array or any type of collection. It's foreach.

We have a syntax:
   foreach(elementtype element in collection)
  {
            Statement(s);  
  }

   For example, we have an array of list of courses, we want to go through this list and print the name of each element in the list, we can use this trick as follows:



Here we got

      
   One thing worth noting about foreach is that we traverse the array sequentially, using only the element in question, and don't care about the number of elements currently in the array. In contrast, with for, we can do random access while traversing the array, but need to know the number of elements in the array.

      Each iterative structure has its own advantages and disadvantages, and how to use it to achieve the desired results is up to each coder. But first, having a good understanding of iterative constructs, and practicing it in specific situations over and over again, will help us to use them more effectively.



Share:

CẤU TRÚC RẼ NHÁNH - Decision structures


In this section, I will review with you the basics of branching. It is a fundamental part of any programming language. It is similar to the basic martial arts in Kung-fu.

What is a branching structure? Attack or defend, attack, wait, no no… defend. The boxer is wondering whether to attack or defend in this case. Don't worry, the branching structure will help the boxer decide which option. I've rambled on about fighting again. But hopefully easy to understand branching structure. The branching structure helps to make a decision, no matter what the situation, fighting or coding. I will go deeper into the field of coding. J)

In C# we have branching structures: If, If-else, switch.

1. If, If - else
Form: If(Boolean expression)
            {
                        //Code
    }

Code is executed only when the Boolean expression is true.

For example

Here is the result:

If the statement flow chart



Here, the resulting output to the screen will be executed, when the condition i < j is true.

Try to guess the result of the following code:


Let see the if-else construct. The if-else construct will allow the program to execute a piece of code when the Boolean expression is false.

For instance:

In this case, it is easy to see that i is not greater than j. So the code in the else part will be executed and output to the output screen:




2. Switch 
It allows multiple branches like if-else, in which there must be one or more cases and a default case is required. 
Form:

Switch(expression)
Case1: Code block 1
Case2: Code block 2
Default:

Let see the below example


Result is:


The above constructs all help the program to make a decision about which code to execute. The question is when to use which structure? This requires each coder to practice a lot, and accumulate more experience for themselves. Personally, when deciding to branch based on a constant value, I would use a switch, it makes the code easy to read, and easy to debug.


Share:

DATA TYPE 2: Reference type


In the previous post, I introduced the basics of value types. In today's post, I continue to introduce you to reference types. What is a reference type? What types are there? Is it possible to convert from a reference type to a value type?

As we know the value type will store the value of a variable directly, and that value is stored on the stack. Unlike the value type, the reference type does not store the value directly, but it does contain a pointer to the memory area where the value is stored. The value of the reference type is stored on the heap.

To understand better, we can consider the following illustrative example:



In the above example, I create a variable name with a data type string and do not initialize it. I then assign a value to the variable name. The name variable will store in allocated memory "M100" and the M100 will point to the actual value I assigned to the variable name = “Victor”.


Could I convert a value from Reference type to Value type??
  
Definitely yes, and that conversion technique in the coding world they call "boxing and unboxing".

Boxing is a conversion from a value type to a reference type. Boxing is also known as implicit conversion. During conversion, the CLR will convert the value type to System. Object and store it on the Heap.

Let check this example:



In the above example, the CLR will create a variable int i = 10 and store it on the stack. Then will create a variable "o" on the heap and copy its value to the corresponding allocated memory for the object "o".



Unboxing will convert from a reference type to a value type. Unboxing is also understood as converting the data type explicitly.



In the first two lines, the CLR will convert from value type to reference type. The next line will perform the conversion from a reference type to a value type, which also includes checking if object o is holding a value of type int?

Let see this example:


Here is the result:



The reason, during unboxing, the CLR will perform checks to make sure the boxed object is of the correct type given.

Thus, we have understood the basic concept of value types and reference types, as well as understand their conversion using boxing and unboxing techniques.

Related Posts:

Share:

Featured Posts

Data type 3 - string type