Tuesday, June 24, 2025 01:55

Cuprins >> Introducere > Instrucțiunile If imbricate

Instrucțiunile If imbricate

Uneori în programele dumneavoastră, va trebui să efectuați controale în interiorul altor controale. Aceste tipuri de prelucrare condițională sunt numite declarații If (sau If-Else) imbricate.

Mai pe înțeles, imbricarea este procesul de plasare a unui concept în interiorul altui concept. În cazul nostru, plasăm o declarație condițională în interiorul unei alte declarații condiționale. Singurul lucru asupra căruia trebuie să fiți atenți este faptul că fiecare clauză Else corespunde celei mai apropiate clauze If anterioare. În cazul în care veți folosi procesarea condițională imbricată, ar trebui să folosiți întotdeauna blocuri de cod pentru corpul instrucțiunilor, deoarece instrucțiunile condiționale imbricate pot fi dificil de înțeles. Iată un exemplu de instrucțiuni If imbricate:

int ora = 7;
int minut = 30;

if (ora < 7) //verifică mai întâi dacă ora este mai mică decât 7
{
    Console.WriteLine("Încă nu este dimineață");
}            
else //ora este mai mare sau egală cu 7. Execută verificările condiționale imbricate!
{
    if (minut < 30) //verifică dacă minutul este mai mic decât 30
    {
        Console.WriteLine("Trezirea, duș, mic dejun!");
    }
    else //minutul este mai mare sau egal cu 30
    {
        Console.WriteLine("Este timpul să mergi la muncă!");
    }
}

Console.Read();

Ieșirea urmează:

instructiunile if imbricate

Conceptele explicate în această lecție sunt prezentate și vizual, ca parte a următorului videoclip:

 

EXERCIȚII
1. Scrieți un program care găsește cel mai mare număr din trei numere întregi, folosind instrucțiuni if imbricate.

Soluție


Instrucțiuni: Folosiți intrucțiuni if imbricate, verificând mai întâi primele două numere, apoi verificând pe cel mai mare dintre ele cu al treilea număr.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BunaLume
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Introduceti primul numar: ");
            int a = Int32.Parse(Console.ReadLine());
            Console.Write("Introduceti al doilea numar: ");
            int b = Int32.Parse(Console.ReadLine());
            Console.Write("Introduceti al treilea numar: ");
            int c = Int32.Parse(Console.ReadLine());

            if (a > b)
            {
                if (a > c) Console.WriteLine("A este cel mai mare");
                else if (a < c) Console.WriteLine("C este cel mai mare");
                else Console.WriteLine("A si C sunt cele mai mari");
            }
            else if (a < b) { if (b > c) Console.WriteLine("B este cel mai mare");
                else if (b < c) Console.WriteLine("C este cel mai mare");
                else Console.WriteLine("B si C sunt cele mai mari");
            }
            else if (a == b)
            {
                if (a == c) Console.WriteLine("All are equal");
                else if (a < c) Console.WriteLine("C este cel mai mare");
                else Console.WriteLine("A si B sunt cele mai mari");
            }
        }
    }
}

2. Sortați 3 numere reale în ordine descrescătoare. Folosiți instrcțiuni if imbricate.

Soluție


Instrucțiuni: Mai întâi, găsiți cel mai mic dintre cele trei numere și înlocuiți-l cu primul. Apoi verificați dacă al doilea este mai mare decât al treilea număr, și dacă da, schimbați-le și pe acestea.
O altă metodă este să verificați toate ordinile posibile ale numerelor, cu o serie de verificări if-else: a≤b≤c, a≤c≤b, b≤a≤c, b≤c≤a, c≤a≤b șic≤b≤a.
O soluție mai complicată și mai generală este plasarea numerelor într-un array și folosirea metodei Array.Sort(...).

using System;

namespace BunaLume
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Introduceti primul numar: ");
            int a = Int32.Parse(Console.ReadLine());
            Console.Write("Introduceti al doilea numar: ");
            int b = Int32.Parse(Console.ReadLine());
            Console.Write("Introduti al treilea numar: ");
            int c = Int32.Parse(Console.ReadLine());

            if (a < b)
            {
                if (a < c) { a = a + c; c = a - c; a = a - c; if (b > c)
                    {                        
                        a = a + b;
                        b = a - b;
                        a = a - b;
                    }
                }
                else if (a >= c)
                {
                    a = a + b;
                    b = a - b;
                    a = a - b;
                }
            }
            else if (a == b)
            {
                if (a < c)
                {
                    a = a + c;
                    c = a - c;
                    a = a - c;
                }
            }
            else
            {
                if (b < c)
                {
                    b = b + c;
                    c = b - c;
                    b = b - c;
                }
                if (a < b)
                {
                    a = a + b;
                    b = a - b;
                    a = a - b;
                }
            }
            Console.WriteLine("{0}, {1}, {2}", a, b, c);
            Console.ReadLine();
        }
    }
}

3. Scrieți un program care găsește cel mai mare numar din cinci numere date.

Soluție


Instrucțiuni: Folosiți instrucțiuni if imbricate.

static void Main(string[] args)
{    
    Console.Write("Introduceti primul numar: ");
    int a = Int32.Parse(Console.ReadLine());
    Console.Write("Introduceti al doilea numar: ");
    int b = Int32.Parse(Console.ReadLine());
    Console.Write("Introduceti al treilea numar: ");
    int c = Int32.Parse(Console.ReadLine());
    Console.Write("Introduceti al patrulea numar: ");
    int d = Int32.Parse(Console.ReadLine());
    Console.Write("Introduceti al cincilea numar: ");
    int e = Int32.Parse(Console.ReadLine());
    
    if (a < b) a = b;
    if (a < c) a = c;
    if (a < d) a = d;
    if (a < e) a = e;
    
    Console.WriteLine("{0} este cel mai mare numar.", a);
}

Tags: , , , , ,

Leave a Reply