OpenLLM-France/wikimedia huggingface dataset:
# Programmation C-C++/La bibliothèque standard/Notions de base

Modèle:Programmation C-C++/C++ : La bibliothèque standard/Notions de base
La bibliothèque standard C++ fournit un certain nombre de fonctionnalités de base sur lesquelles toutes les autres fonctionnalités de la bibliothèque s'appuient. Ces fonctionnalités apparaissent comme des classes d'encapsulation de la bibliothèque C et des classes d'abstraction des principales constructions du langage. Ces dernières utilisent des notions très évoluées pour permettre une encapsulation réellement générique des types de base. D'autre part, la bibliothèque standard utilise la notion de complexité algorithmique pour définir les contraintes de performance des opérations réalisables sur ses structures de données ainsi que sur ses algorithmes. Bien que complexes, toutes ces notions sont omniprésentes dans toute la bibliothèque, aussi est-il extrêmement important de les comprendre en détail. Ce chapitre a pour but de vous les présenter et de les éclaircir.
# Programmation C-C++/La bibliothèque standard/Les conteneurs

Modèle:Programmation C-C++/C++ : La bibliothèque standard/Les conteneurs
La plupart des programmes informatiques doivent, à un moment donné ou à un autre, conserver un nombre arbitraire de données en mémoire, généralement pour y accéder ultérieurement et leur appliquer des traitements spécifiques. En général, les structures de données utilisées sont toujours manipulées par des algorithmes classiques, que l'on retrouve donc souvent, si ce n'est plusieurs fois, dans chaque programme. Ces structures de données sont communément appelées des conteneurs en raison de leur capacité à contenir d'autres objets.
Afin d'éviter aux programmeurs de réinventer systématiquement la roue et de reprogrammer les structures de données et leurs algorithmes associés les plus classiques, la bibliothèque standard définit un certain nombre de classes template pour les conteneurs les plus courants. Ces classes sont paramétrées par le type des données des conteneurs et peuvent donc être utilisées virtuellement pour toutes les situations qui se présentent.
Les conteneurs de la bibliothèque standard ne sont pas définis par les algorithmes qu'ils utilisent, mais plutôt par l'interface qui peut être utilisée par les programmes clients. La bibliothèque standard impose également des contraintes de performances sur ces interfaces en termes de complexité. En réalité, ces contraintes sont tout simplement les plus fortes qui soient, ce qui garantit aux programmes qui les utilisent qu'ils auront les meilleures performances possibles.
La bibliothèque classifie les conteneurs en deux grandes catégories selon leurs fonctionnalités : les séquences et les conteneurs associatifs. Une séquence est un conteneur capable de stocker ses éléments de manière séquentielle, les uns à la suite des autres. Les éléments sont donc parfaitement identifiés par leur position dans la séquence, et leur ordre relatif est donc important. Les conteneurs associatifs, en revanche, manipulent leurs données au moyen de valeurs qui les identifient indirectement. Ces identifiants sont appelées des clefs par analogie avec la terminologie utilisée dans les bases de données. L'ordre relatif des éléments dans le conteneur est laissé dans ce cas à la libre discrétion de ce dernier et leur recherche se fait donc, généralement, par l'intermédiaire de leurs clefs.
La bibliothèque fournit plusieurs conteneurs de chaque type. Chacun a ses avantages et ses inconvénients. Comme il n'existe pas de structure de données parfaite qui permette d'obtenir les meilleures performances sur l'ensemble des opérations réalisables, l'utilisateur des conteneurs de la bibliothèque standard devra effectuer son choix en fonction de l'utilisation qu'il désire en faire. Par exemple, certains conteneurs sont plus adaptés à la recherche d'éléments mais sont relativement coûteux pour les opérations d'insertion ou de suppression, alors que pour d'autres conteneurs, c'est exactement l'inverse. Le choix des conteneurs à utiliser sera donc déterminant quant aux performances finales des programmes.
# Programmation C-C++/La bibliothèque standard/Les flux d'entrée / sortie

Modèle:Programmation C-C++/C++ : La bibliothèque standard/Les flux d'entrée / sortie
Nous avons vu dans la Section 8.12 un exemple d'application des classes de flux d'entrée / sortie de la bibliothèque pour les entrées / sorties standards des programmes. En réalité, ces classes de gestion des flux s'intègrent dans une hiérarchie complexe de classes permettant de manipuler les flux d'entrée / sortie et pas seulement pour les entrées / sorties standards.
localiser
En effet, afin de faciliter la manipulation des flux d'entrée / sortie, la bibliothèque standard C++ fournit tout un ensemble de classes template. Ces classes sont paramétrées par le type de base des caractères qu'elles manipulent. Bien entendu, les types de caractères les plus utilisés sont les type char et wchar_t, mais il est possible d'utiliser a priori n'importe quel autre type de donnée pour lequel une classe de traits char_traits est définie.
Ce chapitre a pour but de détailler cette hiérarchie de classes. Les principes de base et l'architecture générale des flux C++ seront donc abordés dans un premier temps, puis les classes de gestion des tampons seront traitées. Les classes génériques de gestion des flux d'entrée / sortie seront ensuite décrites, et ce sera enfin le tour des classes de gestion des flux orientés chaînes de caractères et des classes de gestion des flux orientés fichiers.
# Programmation C-C++/La boucle for

Ce livre est en cours de copie depuis le site http://casteyde.christian.free.fr/online/cours_cpp/ qui le fournit sous licence GFDL.
Cours de C/C++ :
| Les structures de contrôle ||
| | La structure if |
| | La boucle for |
| | Le while |
| | Le do |
| | Branchement conditionnel |
| | Le saut |
| | Rupture de séquence |
| Livre original de C. Casteyde ||

## La boucle for

La structure de contrôle for est sans doute l'une des plus importantes. Elle permet de réaliser toutes sortes de boucles et, en particulier, les boucles itérant sur les valeurs d'une variable de contrôle. Sa syntaxe est la suivante :
où initialisation est une instruction (ou un bloc d'instructions) exécutée avant le premier parcours de la boucle du for. test est une expression dont la valeur déterminera la fin de la boucle. itération est l'opération à effectuer en fin de boucle, et opération constitue le traitement de la boucle. Chacune de ces parties est facultative.
La séquence d'exécution est la suivante :

### Exemple - Boucle for

Note : En C++, il est possible que la partie initialisation déclare une variable. Dans ce cas, la variable déclarée n'est définie qu'à l'intérieur de l'instruction for. Par exemple,
est strictement équivalent à :
Cela signifie que l'on ne peut pas utiliser la variable i après l'instruction for, puisqu'elle n'est définie que dans le corps de cette instruction. Cela permet de réaliser des variables muettes qui ne servent qu'à l'instruction for dans laquelle elles sont définies.
Note : Cette règle n'est pas celle utilisée par la plupart des compilateurs C++. La règle qu'ils utilisent spécifie que la variable déclarée dans la partie initialisation de l'instruction for reste déclarée après cette instruction. La différence est subtile, mais importante. Cela pose assurément des problèmes de compatibilité avec les programmes C++ écrits pour ces compilateurs, puisque dans un cas la variable doit être redéclarée et dans l'autre cas elle ne le doit pas. Il est donc recommandé de ne pas déclarer de variables dans la partie initialisation des instructions for pour assurer une portabilité maximale.
# Programmation C-C++/La fonction main

Ce livre est en cours de copie depuis le site http://casteyde.christian.free.fr/cpp/cours/online/book1.html qui le fournit sous licence GFDL.
Cours de C/C++ :
| Première approche ||
| | Les commentaires |
| | Les types prédéfinis |
| | Notation des valeurs |
| | La définition des variables |
| | Instructions et opérations |
| | Les fonctions |
| | La fonction main |
| | Entrée / sortie de base |
| | Exemple de programme |
| Livre original de C. Casteyde ||

## La fonction main

Lorsqu'un programme est chargé, son exécution commence par l'appel d'une fonction spéciale du programme. Cette fonction doit impérativement s'appeler « main » (principal en anglais) pour que le compilateur puisse savoir que c'est cette fonction qui marque le début du programme. La fonction main est appelée par le système d'exploitation, elle ne peut pas être appelée par le programme, c'est-à-dire qu'elle ne peut pas être récursive.

### Exemple - Programme minimal

La fonction main doit renvoyer un code d'erreur d'exécution du programme, le type de ce code est int. Elle peut aussi recevoir des paramètres du système d'exploitation. Ceci sera expliqué plus loin. Pour l'instant, on se contentera d'une fonction main ne prenant pas de paramètre.
Note : Il est spécifié dans la norme du C++ que la fonction main ne doit pas renvoyer le type void. En pratique cependant, beaucoup de compilateurs l'acceptent également.
La valeur 0 retournée par la fonction main indique que tout s'est déroulé correctement. En réalité, la valeur du code de retour peut être interprétée différemment selon le système d'exploitation utilisé. La bibliothèque C définit donc les constantes EXIT_SUCCESS et EXIT_FAILURE, qui permettent de supprimer l'hypothèse sur la valeur à utiliser respectivement en cas de succès et en cas d'erreur.
# Programmation C-C++/La bibliothèque standard/Les types complémentaires

Modèle:Programmation C-C++/C++ : La bibliothèque standard/Les types complémentaires
Le C++ étant un langage basé sur le C, il souffre des mêmes limitations concernant les types de données avancés que celui-ci. Pour pallier cet inconvénient, la bibliothèque standard C++ définit des types complémentaires sous forme de classes C++, éventuellement template, et permettant de satisfaire aux besoins les plus courants. Parmi ces types, on notera avant tout le type basic_string, qui permet de manipuler les chaînes de caractères de manière plus simple et plus sûre qu'avec des pointeurs et des tableaux de caractères. Mais la bibliothèque standard définit également des classes utilitaires qui permettent de manipuler les autres types plus facilement, ainsi que des types capables d'utiliser toutes les ressources de la machine pour les calculs numériques avancés.
# Programmation GTK2 en Pascal/GtkVSeparator

* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie

## Présentation

Le contrôle GtkVSeparator permet de dessiner une ligne verticale entre des contrôles.

### Hiérarchie

* Hiérarchie
* GObject
* └─GtkObject
* └─GtkWidget
* └─GtkSeparator
* └─GtkVSeparator

## Utilisation de base
### Création

Ce contrôle n'a qu'une seule fonction : sa fonction de création :
Il n'y a rien de plus à dire à propos de ce contrôle.

## Programme exemple

Voilà le fichier gtk041.pas :
Voilà ce que donne l'exécution du programme gtk041 :
* Décorations :
* GtkFrame ~
* GtkHSeparator ~
* GtkVSeparator
# Programmation GTK2 en Pascal/Installation sous Linux

* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie

## Compilateur Pascal
### Free Pascal
#### Mandrake

Avec un urpmi bien configuré :
et le tour est joué.
Ou pour avoir la dernière version (au mois de mars 2005, la 1.9.8), il faut télécharger sur le site http://www.freepascal.org le fichier fpc-1.9.8-0.i586.rpm qu'on installe classiquement :

### Kylix

<à compléter>

## En-têtes GTK2 pour le langage Pascal
### Free Pascal version 1.0 ou Kylix

L'archive gtk2forpascal-1.0.7.tgz est à télécharger sur le site Gtk2 for Pascal.
Il faut décompresser ensuite l'archive, par exemple dans le répertoire où vous placez vos sources :
Cela créé un sous-répertoire gtk2 avec tout ce qu'il faut dedans.

### Free Pascal version 2.0 (1.9.x)

Si vous avez installé la version 2.0 du compilateur Free Pascal (ou les versions RC, 1.9.x), vous avez déjà ces en-têtes. Mais elles sont précompilés pour fonctionner avec les bibliothèques Gtk+ 2.0, pas 2.2, 2.4 ou 2.6 qui apportent pas mal de nouveautés intéressantes.
En attendant que l'équipe de Free Pascal le fasse, pour recompiler ces unités en version 2.6, la dernière disponible en mars 2005, vous devez télécharger les sources du compilateur Free Pascal, exemple pour Mandrake, le fichier fpc-1.9.8-0.src.rpm.
Il faut mettre à jour le fichier gtk+/gtk/gtkincludes.inc car il y a 3 unités qui ne passent pas. Mettez en commentaires les lignes :
Puis on poursuit :
Nos unités sont disponibles.

## Bibliothèques GTK+

Sur un Linux où un Gnome récent est installé, les bibliothèques GTK+ version 2 seront installés.
Vous pouvez vérifier quelle version est installée sur votre système à l'aide de la ligne de commande suivante :
S'il vous répond, un truc du style :
Ce n'est pas bon signe...

### Autre solution

Taper en root « locate *.pc » pour trouver le répertoire pkgconfig.
Vérifier si le fichier "gtk+-2.0" est présent ! Si non : installer libgtk2.0-dev et libglade2-dev. Et il est conseillé d'ajouter : libgtk2.0-0, libgtk2.0-bin et libgtk2.0-common.

### Compilation

Par le biais des mises-à-jour automatiques il se peut que vous ayez une version de Gtk+ assez ancienne. Par exemple sur une Mandrake 10.0, pas si vieille, c'est la version 2.2.4 de Gtk+ qui est disponible. Pour posséder une version récente, au mois de mars 2005, la 2.6.2, on peut tout recompiler.
Il faut télécharger sur le site http://www.gtk.org/ les fichiers :
* glib+-2.6.2.tar.bz2
* atk-1.9.0.tar.bz2
* pango-1.8.0.tar.bz2
* gtk+-2.6.2.tar.bz2
Puis dans l'ordre, on compile la GLib :
Au tour de l'Atk :
De Pango :
Et enfin de Gtk+ :
Et c'est tout.
# Programmation GTK2 en Pascal/Introduction

* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie
GTK+ (The Gimp Tool Kit) est un ensemble de bibliothèques (au sens informatique du terme, c'est-à-dire un ensemble de fonctions) développé originellement pour les besoins du logiciel de traitement d'images The Gimp (GNU Image Manipulation Program) et utilisé également pour le développement de l'environnement de bureau GNOME.
GTK+ peut-être utilisé pour créer des programmes avec interfaces graphiques facilement.
GTK+ est libre (licence GNU LGPL) et multiplateforme.
Le plan de ce « livre » est calqué sur le site wiki GtkFr - Cours Gtk+-2 qui concerne la programmation de GTK+ version 2 mais en langage C. Ce site et son ancêtre sont sous licence GFDL.
Ce « livre » se veut donc l'équivalent, un manuel de référence pour la programmation GTK+ version 2 en langage Pascal. Une bonne connaissance du Pascal est nécessaire ; vous pouvez pour l'acquérir vous référer au livre Programmation Pascal.
# Programmation GTK2 en Pascal/La barre d'outils

* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie
La barre d'outils est un élément moderne participant à l'ergonomie d'une interface graphique. Elle est constituée comme le menu de plusieurs éléments :
* GtkToolbar
* GtkToolItem
* GtkToolButton
* GtkMenuToolButton
* GtkToggleToolButton
* GtkRadioToolButton
* GtkSeparatorToolItem
# Programmation GTK2 en Pascal/Installation sous Mac/OS

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « »).
Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle engendrant ce cadre)
* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie
NB: Ne connaissant pas du tout le monde Mac, ce chapitre est simplement ébauché pour l'instant.

## Free Pascal et en-têtes Gtk+

En février 2005, Free Pascal est disponible en version 1.9.8 (2.0 RC 2). La page du site plus particulièrement dédiée au Mac est http://www.freepascal.org/fpcmac.html.

## Bibliothèques GTK+

Voir le projet GTK+OSX (http://gtk-osx.sourceforge.net/) de portage de Gtk+ sur Mac/OS X.
# Programmation GTK2 en Pascal/Installation sous Windows

* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie

## Compilateur Pascal
### Free Pascal

Sur le site de Free Pascal, téléchargez le fichier w321010.zip (au 23/02/2005, version stable 1.0.10), la version sans les sources est suffisante (25,1 Mo).
Décompactez l'archive dans un répertoire temporaire et lancez install.exe.

## En-têtes GTK2 pour le langage Pascal

L'archive gtk2forpascal-1.0.7.tgz est à télécharger sur le site Gtk2 for Pascal.
Il faut décompresser ensuite l'archive, par exemple dans le répertoire où vous placez vos sources. Avec un WinZip récent ça passe.
NB : Il faut éventuellement le faire en deux fois, et renommer le fichier intermédiaire en .tar pour qu'il soit accepté par WinZip.
Cela créé un sous-répertoire gtk2 avec tout ce qu'il faut dedans.

## Bibliothèques GTK+

Sur le site de Gimp, vous devez télécharger les principales bibliothèques nécessaires. Des explications en anglais sont données.
Au 23/02/2005, il faut télécharger :
* glib-2.4.7.zip
* GNU libiconv (libiconv-1.9.1.bin.woe32.zip)
* gettext-runtime-0.13.1.zip
* gtk+-2.4.14.zip
* pango-1.4.1.zip
* atk-1.8.0.zip
Décompactez ces archives dans un même répertoire.
Il faut ensuite mettre à jour la variable d'environnement PATH Sous un windows 2000 ou XP, cela se passe dans le panneau de configuration, choix Système, onglet Avancé, bouton Variables d'environnement. Sélectionnez « path » et le bouton « modifier », ajoutez à la fin un « ; » suivi du répertoire où vous venez de placer toutes les archives, suivi de « \bin ».
Par exemple, chez moi, j'ai tout décompacté dans D:\gtk2lib, j'ai donc ajouté ;D:\gtk2lib\bin.
# Programmation GTK2 en Pascal/La notion d'objet

* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie
Avant de commencer l'étude de la création d'interface graphique grâce à Gtk+, il faut savoir que les objets graphiques de Gtk+ qui sont appelés en anglais des widgets (de Window Gadget) et en français des contrôles (ou contrôle fenêtré). Un contrôle est en fait une structure définissant les propriétés d'un objet associé à une large panoplie de fonctions permettant de manipuler ces objets.
Ici, le terme « objet » est à prendre au sens littéral, mais aussi au sens Programmation orientée objet (POO). En effet, bien que GTK+ soit écrit en C et non en C++, il introduit la notion d'héritage et les contrôles de Gtk+ suivent une hiérarchie bien définie. Ainsi tous les objets graphiques héritent des propriétés et des fonctions (qu'on appelle également méthodes dans la terminologie objet) d'une classe de base qui s'appelle GtkWidget. Lui même héritant des propriétés et des méthodes de la classe ancêtre GtkObject.
Ainsi la classe permettant d'afficher une fenêtre (GtkWindow) a bien sûr ses propres fonctions, mais grâce à l'héritage elle bénéficie aussi des fonctions des autres contrôles dont elle dérive. Dans l'ordre de l'héritage jusqu'à l'ancêtre commun : GtkBin, GtkContainer, GtkWidget et GtkObject.
# Chanter les psaumes/Tons de psaume simples

D'après psautier.com
Ton I Le Serpent équilibré
Ton II La moustache d'Aaron
Ton III Il descendit du Ciel
Ton IV La colline du Thabor
Ton V L'escalier de Jacob
Ton VI
Ton VII Moustache
Ton VIII Vallée
Ton IX Vallée
Ton X Moustaches
Ton XI Descendre l'escalier
Ton XII S
Ton XIII montagne
Ton XIV escaliers
Ton XV La montagne du Sinaï
Ton XVI escaliers
Ton XVII S
Ton XVIII Vallée
Ton XIX escalier brisé
Ton XX S applatit
Ton XXI S aplatit
Ton XXII Le Serpent
Ton XXIII S long
Ton XXIV S
Ton XXV L'escalier
Ton XXVI Fausse persévérance pentes
Ton XXVII pente
Ton XXVIII pente
# Apprendre la guitare/Suggestions de morceaux
## Faciles à jouer

Deep Purple : Smoke on the Water The White Stripes : Seven Nation Army The Cure : Boys Don't Cry Black Sabbath : Black Sabbath Metallica : One

## Pour les débutants :

Green Day : Time of your life (Good Riddance)
Green Day : Wake me up when September ends
Green Day : Macy's Day Parade
Nirvana : Come as you are
Nirvana : Smells like teen spirit
(De manière générale, les partitions de Nirvana, tout comme celles de Green Day sont bien indiquées pour les débutants).
The Cranberries : Zombie