En aquest tema, explorarem els diferents tipus d'operadors disponibles en Dart. Els operadors són símbols que indiquen a l'intèrpret que realitzi operacions específiques sobre un o més operands. Els operadors en Dart es poden classificar en diverses categories:

  1. Operadors aritmètics
  2. Operadors de comparació
  3. Operadors lògics
  4. Operadors d'assignació
  5. Operadors de bits
  6. Operadors de tipus

  1. Operadors aritmètics

Els operadors aritmètics s'utilitzen per realitzar operacions matemàtiques bàsiques com la suma, resta, multiplicació, divisió, etc.

Operador Descripció Exemple
+ Suma a + b
- Resta a - b
* Multiplicació a * b
/ Divisió a / b
% Mòdul (residu) a % b
~/ Divisió sencera a ~/ b

Exemple pràctic

void main() {
  int a = 10;
  int b = 3;

  print('Suma: ${a + b}');         // Suma: 13
  print('Resta: ${a - b}');        // Resta: 7
  print('Multiplicació: ${a * b}');// Multiplicació: 30
  print('Divisió: ${a / b}');      // Divisió: 3.3333333333333335
  print('Mòdul: ${a % b}');        // Mòdul: 1
  print('Divisió sencera: ${a ~/ b}'); // Divisió sencera: 3
}

  1. Operadors de comparació

Els operadors de comparació s'utilitzen per comparar dos valors. El resultat d'una operació de comparació és un valor booleà (true o false).

Operador Descripció Exemple
== Igual a a == b
!= Diferent de a != b
> Major que a > b
< Menor que a < b
>= Major o igual que a >= b
<= Menor o igual que a <= b

Exemple pràctic

void main() {
  int a = 10;
  int b = 3;

  print('Igual a: ${a == b}');      // Igual a: false
  print('Diferent de: ${a != b}');  // Diferent de: true
  print('Major que: ${a > b}');     // Major que: true
  print('Menor que: ${a < b}');     // Menor que: false
  print('Major o igual que: ${a >= b}'); // Major o igual que: true
  print('Menor o igual que: ${a <= b}'); // Menor o igual que: false
}

  1. Operadors lògics

Els operadors lògics s'utilitzen per combinar expressions booleanes.

Operador Descripció Exemple
&& I lògic (AND) a && b
` `
! Negació lògica (NOT) !a

Exemple pràctic

void main() {
  bool a = true;
  bool b = false;

  print('I lògic: ${a && b}');      // I lògic: false
  print('O lògic: ${a || b}');      // O lògic: true
  print('Negació lògica: ${!a}');   // Negació lògica: false
}

  1. Operadors d'assignació

Els operadors d'assignació s'utilitzen per assignar valors a les variables.

Operador Descripció Exemple
= Assignació a = b
+= Assignació amb suma a += b
-= Assignació amb resta a -= b
*= Assignació amb multiplicació a *= b
/= Assignació amb divisió a /= b
%= Assignació amb mòdul a %= b

Exemple pràctic

void main() {
  int a = 10;
  int b = 3;

  a += b; // a = a + b
  print('Assignació amb suma: $a'); // Assignació amb suma: 13

  a -= b; // a = a - b
  print('Assignació amb resta: $a'); // Assignació amb resta: 10

  a *= b; // a = a * b
  print('Assignació amb multiplicació: $a'); // Assignació amb multiplicació: 30

  a ~/= b; // a = a ~/ b
  print('Assignació amb divisió sencera: $a'); // Assignació amb divisió sencera: 10

  a %= b; // a = a % b
  print('Assignació amb mòdul: $a'); // Assignació amb mòdul: 1
}

  1. Operadors de bits

Els operadors de bits s'utilitzen per realitzar operacions a nivell de bit.

Operador Descripció Exemple
& I a nivell de bit (AND) a & b
` ` O a nivell de bit (OR)
^ XOR a nivell de bit a ^ b
~ Complement a nivell de bit ~a
<< Desplaçament a l'esquerra a << b
>> Desplaçament a la dreta a >> b

Exemple pràctic

void main() {
  int a = 5;  // 0101 en binari
  int b = 3;  // 0011 en binari

  print('I a nivell de bit: ${a & b}'); // I a nivell de bit: 1 (0001 en binari)
  print('O a nivell de bit: ${a | b}'); // O a nivell de bit: 7 (0111 en binari)
  print('XOR a nivell de bit: ${a ^ b}'); // XOR a nivell de bit: 6 (0110 en binari)
  print('Complement a nivell de bit: ${~a}'); // Complement a nivell de bit: -6
  print('Desplaçament a l\'esquerra: ${a << b}'); // Desplaçament a l'esquerra: 40 (101000 en binari)
  print('Desplaçament a la dreta: ${a >> b}'); // Desplaçament a la dreta: 0 (0000 en binari)
}

  1. Operadors de tipus

Els operadors de tipus s'utilitzen per comprovar el tipus d'un objecte o per convertir-lo a un altre tipus.

Operador Descripció Exemple
is Comprova el tipus a is int
is! Comprova que no és del tipus a is! int
as Conversió de tipus a as int

Exemple pràctic

void main() {
  var a = 10;

  print('És un enter: ${a is int}'); // És un enter: true
  print('No és un enter: ${a is! int}'); // No és un enter: false

  dynamic b = 'Hola';
  var c = b as String;
  print('Conversió de tipus: $c'); // Conversió de tipus: Hola
}

Exercicis Pràctics

  1. Escriu un programa que calculi la suma, resta, multiplicació i divisió de dos nombres enters introduïts per l'usuari.
  2. Escriu un programa que comprovi si un nombre introduït per l'usuari és parell o senar.
  3. Escriu un programa que comprovi si una cadena introduïda per l'usuari és un número.

Solucions

  1. Càlcul de suma, resta, multiplicació i divisió
import 'dart:io';

void main() {
  print('Introdueix el primer nombre:');
  int a = int.parse(stdin.readLineSync()!);

  print('Introdueix el segon nombre:');
  int b = int.parse(stdin.readLineSync()!);

  print('Suma: ${a + b}');
  print('Resta: ${a - b}');
  print('Multiplicació: ${a * b}');
  print('Divisió: ${a / b}');
}
  1. Comprovació de nombre parell o senar
import 'dart:io';

void main() {
  print('Introdueix un nombre:');
  int a = int.parse(stdin.readLineSync()!);

  if (a % 2 == 0) {
    print('$a és parell');
  } else {
    print('$a és senar');
  }
}
  1. Comprovació si una cadena és un número
import 'dart:io';

void main() {
  print('Introdueix una cadena:');
  String input = stdin.readLineSync()!;

  if (int.tryParse(input) != null) {
    print('$input és un número');
  } else {
    print('$input no és un número');
  }
}

Conclusió

En aquest tema, hem explorat els diferents tipus d'operadors disponibles en Dart, incloent-hi operadors aritmètics, de comparació, lògics, d'assignació, de bits i de tipus. Hem vist exemples pràctics de com utilitzar aquests operadors i hem proporcionat exercicis per reforçar els conceptes apresos. Amb aquests coneixements, estàs preparat per avançar al següent tema sobre sentències de control de flux.

© Copyright 2024. Tots els drets reservats