Understanding DART syntax: Identifiers, Datatypes, variables, comments; Decision making (if, if..else, if..else if..., switch..case); Iterative statements (for, for...in loop, while, do..while); break, continue, label

Java ની આંખે જોયેલું Dart syntax: જાણીતાં if/switch/loops, અને સાથે જે લહેકા જુદા પડે છે તે: var type તારવીને એને જડી દે છે, arrays ની જગ્યાએ List આવે છે, for-in collections પર ફરે છે, અને labels ને લીધે break એકસાથે અંદરના તથા બહારના loops માંથી નીકળી શકે છે.

12 min read · 9 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

કશું શીખ્યા વગર જ વાંચો

કોઈ પણ સમજૂતી પહેલાં આ Dart વાંચો અને એનું પરિણામ ધારો:

int day = 2;

if (day == 2) {

print('Workshops today');

} else {

print('Regular schedule');

}

તમે એને બરાબર વાંચી લીધું: એ Workshops today છાપે છે, કારણ કે Dart નું control flow તમારા Java જેવું જ છે, બસ થોડું હળવું પહેરણ પહેરીને. આ પાઠ આખા syntax નો પ્રવાસ ઝડપી રીતે કરાવે છે: જાણીતા ભાગ પર સરકી જવું, અને Dart જ્યાં 4 જગ્યાએ જુદું પડે છે ત્યાં કડક બ્રેક મારવી.

At a glance

Datatypes (3, 6 અને 7 નંબરની હરોળે બ્રેક મારો)

Typeશું સમાવેદાખલો
int, doubleપૂર્ણ સંખ્યા, દશાંશ સંખ્યાint seats = 350; double fee = 49.5;
numint કે double, બેમાંથી કોઈ પણnum anyNumber = 350;
Stringલખાણ: મોટો S, અને એક અવતરણચિહ્ન વપરાશમાં રૂઢString fest = 'TechnoUtsav';
booltrue / falsebool open = true;
ListDart નું array: વધી શકે એવું, 0 થી ક્રમાંકિતvar events = ['Garba', 'Robo'];
Mapકૂંચી અને કિંમતની જોડvar seats = {'Garba': 350, 'Robo': 80};
var / dynamicvar તારવીને જડી દે છે; dynamic તપાસમાંથી બહાર નીકળી જાય છેvar day = 2; // હંમેશ માટે int

Theory

Variables અને comments: લહેકા

var શરૂઆતની કિંમત પરથી type તારવે છે અને એને જડી દે છે: var seats = 350; થી seats એ int બની જાય છે; પછી seats = 'full'; લખો તો એ compile error છે. તારવણી એટલે ઢીલાશ નહીં.

dynamic એ ખરેખરો બહાર નીકળવાનો રસ્તો છે (તપાસ runtime પર ઠેલાય છે): ભાગ્યે જ અને જાણી જોઈને વપરાય.

final એટલે runtime પર એક જ વાર ગોઠવાય (final festName = fetchName();); const એટલે compile વખતનો અચળ (const maxSeats = 350;).

Comments: Java ની જેમ જ // અને /* */, અને એ ઉપરાંત /// વાળી documentation comments જેને tooling વાંચે છે: Flutter ની libraries આ જ રીતે નોંધાયેલી છે.

Practical

નિર્ણયો, દરેક loop, અને label ની યુક્તિ

void main() {
  var events = ['Garba Night', 'Coding Contest', 'Robo Race'];
  int day = 2;

  // switch: Java જેવા જ ઘાટનું, ખાલી ન હોય એવા દરેક case માટે break
  switch (day) {
    case 1:
      print('Inaugration day');
      break;
    case 2:
      print('Workshops today');
      break;
    default:
      print('Regular schedule');
  }

  // for-in: collection પર ફરનારું (નવો લહેકો)
  for (var e in events) {
    print(e);
  }

  // પરંપરાગત for, while, do-while: બરાબર તમારા Java જેવાં જ
  for (int i = 0; i < 2; i++) { print('pass $i'); }

  // LABEL: એક જ કૂદકે બંને loops માંથી બહાર
  outer:
  for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
      if (i * j == 4) {
        print('found at i=$i, j=$j');   // i=2, j=2
        break outer;                    // બંને loops માંથી બહાર નીકળે છે
      }
    }
  }
}

Quiz

var seats = 350; અને 2 લીટી પછી: seats = 'Housefull'; Dart શું કહેશે?

  1. વાંધો નહીં: var એટલે type ગમે ત્યારે બદલી શકાય
  2. Compile error: var એ શરૂઆતમાં int તારવ્યો હતો અને એ type હંમેશ માટે જડાઈ ગયો છે
  3. String ને પહેલી વાર સંખ્યા તરીકે વાપરો ત્યારે runtime error
  4. વાંધો નહીં, પણ ત્યાર પછી seats એ dynamic બની જાય છે
Show the answer

Compile error: var એ શરૂઆતમાં int તારવ્યો હતો અને એ type હંમેશ માટે જડાઈ ગયો છે

var એટલે તારવણી, છૂટછાટ નહીં: શરૂઆતની કિંમતનો type (int) એ જ variable નો જડાયેલો, compiler તપાસે એવો type બની જાય છે, અને એમાં String પ્રવેશી શકતો નથી: Java વાંચનાર માટે આ Dart નો સૌથી અગત્યનો લહેકો છે, અને આ unit નો સૌથી પ્રિય પરીક્ષા-પ્રશ્ન પણ. વિકલ્પ A તો dynamic ને વર્ણવે છે, જે જાણી જોઈને લખવો પડતો છૂટકારો છે. વિકલ્પ C એ ભૂલને પાછળ ઠેલે છે જેને Dart compile વખતે જ પકડી પાડે છે (static typing નો આખો મુદ્દો એ જ છે). વિકલ્પ D એવું type બદલાવાનું કલ્પી લે છે જે કોઈ assignment કરી શકતું નથી. નિયમ: var જન્મ વખતે, જોઈને, એક જ વાર નક્કી કરી લે છે.

Think first

Label ને હાથે ટ્રેસ કરો

ઉપરના listing ના nested loop માં i અને j ને હાથે ચલાવો: break પહેલાં કઈ (i, j) જોડીઓ ચાલે છે, શું છપાય છે, અને label વગરનું સાદું break હોત તો શું જુદું થાત?

Show the answer

જોડીઓ ક્રમમાં આ રહી: (1,1), (1,2), (1,3), (2,1), અને પછી (2,2), જ્યાં ij બરાબર 4 થાય છે: ત્યાં found at i=2, j=2* છપાય છે, અને break outer; એકસાથે બંને loops માંથી બહાર કાઢી દે છે.

સાદું break ફક્ત અંદરના loop ને જ મારે છે: બહારનો loop i=3 સાથે ચાલુ રહેત, એટલે કે (3,1) થી આગળ ચાલત. ખરેખર જોઈએ તો i=3 સાથે ગુણાકાર 3, 6, 9 થાય છે, એટલે બીજી વાર 4 મળતું નથી, છતાં બહારનો loop નકામો પોતાનો આખો આંટો પૂરો કરત. Labels આ એક જ પ્રામાણિક જરૂરિયાત માટે જ છે: એક જ કૂદકે અંદરોઅંદર ગોઠવાયેલા loops માંથી નીકળી જવું. Java માં પણ એ હતાં; Dart એમને પરીક્ષામાં પુછાય એ રીતે સાચવી રાખે છે.

Watch out

Java જાણનારને ભૂલાવે એવા 4 લહેકા

var નો type જડાયેલો હોય છે: આ જ quiz વાળી વાત; એને હાથ પર લખી રાખો.

String માં S મોટો હોય છે: string લખો તો compile થતું નથી; અને એક અવતરણચિહ્ન એ અહીંની રૂઢ રીત છે.

List, arrays નહીં: int[] જેવો syntax નથી; events[0] ચાલે છે, અને .length એ property છે (કૌંસ વગર: Java ના array વાળું .length, String વાળું .length() નહીં).

અલગ char નથી: 'G' એ ફક્ત 1 અક્ષરનો String જ છે.

Theory

સરકો અને બ્રેક મારો: બીજી ભાષા શીખવાની રીત

તમે એક જ પાઠમાં આખી ભાષાનો 90 ટકા ભાગ શીખી ગયા, કારણ કે તમે Java માં બરાબર મહેનત કરી હતી: આને જ transfer કહેવાય, અને ખરો અભ્યાસક્રમ એ જ છે. લહેકાની યાદી તમે જ્યાં પુનરાવર્તન કરો છો ત્યાં રાખો, અને ફક્ત લહેકાનો જ મહાવરો કરો: જાણીતા ભાગ પોતાની મેળે સચવાઈ રહેશે. Flutter પહેલાં ભાષાનો એક જ ટુકડો બાકી છે: functions, જ્યાં Dart પોતાની સૌથી સારી નવી યુક્તિઓ (arrow bodies, named parameters) સંતાડીને બેઠું છે, અને એ જ હવે પછી.

Summary

Key takeaways

  • Identifiers અને comments: Java ના જ નિયમો, અને ઉપરથી /// વાળી documentation comments.
  • Types: int, double, num (બેમાંથી કોઈ પણ), String (મોટો S), bool, List (વધી શકે એવું array), Map.
  • var શરૂઆતની કિંમત પરથી એક જ વાર type તારવીને એને જડી દે છે; dynamic ભાગ્યે જ વપરાતો છૂટકારો છે; final runtime પર એક વાર, const compile વખતે.
  • if/else if/else અને switch-case: Java જેવા જ ઘાટનાં, ખાલી ન હોય એવા દરેક case માટે break.
  • Loops: for, collections માટે for-in, while, do-while; break અને continue તમે જાણો છો એ જ રીતે.
  • Label (outer:) હોય તો break outer; એક જ કૂદકે અંદરોઅંદરના loops માંથી બહાર: ટ્રેસમાં i=2, j=2 પર.
  • યાદ રાખવાની કડી: જાણીતા પર સરકો, અને var, String, List તથા for-in પર બ્રેક મારો.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Working with DART

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati