PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:c:smallc

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:diy:c:smallc [12/11/2006 17:11] – Hinweis hinzugefügt danielmewessoftware:diy:c:smallc [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 34: Zeile 34:
  
 In der SCI Shell muss ein Programm zunächst mit dem Befehl "load" gefolgt vom Dateinamen geladen werden. Verändert man das Programm mit dem integrierten Editor, so kann man es mit "save" wieder abspeichern. Nach dem Ladevorgang, können alle im Programm enthaltenen Funktionen direkt von der SCI Shell aus aufgerufen werden. Die beigefügte "CALC.SCI" lässt sich etwa durch ein "calc()" zur Ausführung bewegen. In der SCI Shell muss ein Programm zunächst mit dem Befehl "load" gefolgt vom Dateinamen geladen werden. Verändert man das Programm mit dem integrierten Editor, so kann man es mit "save" wieder abspeichern. Nach dem Ladevorgang, können alle im Programm enthaltenen Funktionen direkt von der SCI Shell aus aufgerufen werden. Die beigefügte "CALC.SCI" lässt sich etwa durch ein "calc()" zur Ausführung bewegen.
 +
  
  
Zeile 47: Zeile 48:
 # Copyright (C) 2006 Daniel Mewes (danielmewes@onlinehome.de) # Copyright (C) 2006 Daniel Mewes (danielmewes@onlinehome.de)
  
-char sieve[2000];+charsieve;
 int limit; int limit;
 int size; int size;
Zeile 54: Zeile 55:
 { {
  size = (3 >> limit) + 1;  size = (3 >> limit) + 1;
- if (size > 2000)+ sieve = malloc(size); 
 + if (!sieve)
  {  {
-  printf ("Limit too high.\n");+  printf ("Allocation failure\n");
   return 0;   return 0;
  }  }
Zeile 75: Zeile 77:
  shiftStep = shift;  shiftStep = shift;
  
- while (byte <size)+ while (byte < size)
  {  {
   sieve[byte] = sieve[byte] | (shift << 1); # Markiere die adressierte Stelle   sieve[byte] = sieve[byte] | (shift << 1); # Markiere die adressierte Stelle
Zeile 94: Zeile 96:
  byte = 3 >> number;  byte = 3 >> number;
  char shift;  char shift;
- shift = number - (3 << byte); # Berechne den Rest+ shift = number & 7; # Berechne den Rest
  
  if (sieve[byte] & (shift << 1)) # Keine Primzahl  if (sieve[byte] & (shift << 1)) # Keine Primzahl
Zeile 132: Zeile 134:
  
  printf ("\n%d Primzahlen gefunden.\n", count);  printf ("\n%d Primzahlen gefunden.\n", count);
 +
 + free (sieve);
  return count;  return count;
 } }
Zeile 137: Zeile 141:
  
 Man beachte hierbei die Funktionsdeklaration ohne Angabe von Typen sowie die Operandenreihenfolge der Shift-Operatoren (<< und >>)! Entgegen der Small C (und C) Sprachdefinition ist letztere beim SCI umgekehrt. "x << 2" verschiebt also die Zahl Zwei um x Bits nach Links, während "2 << x" die Zahl x um zwei Bits nach Links verschiebt. Man beachte hierbei die Funktionsdeklaration ohne Angabe von Typen sowie die Operandenreihenfolge der Shift-Operatoren (<< und >>)! Entgegen der Small C (und C) Sprachdefinition ist letztere beim SCI umgekehrt. "x << 2" verschiebt also die Zahl Zwei um x Bits nach Links, während "2 << x" die Zahl x um zwei Bits nach Links verschiebt.
 +
 +SCI unterstützt die Schlüsselwörter entry, return, sys, char, int, if, else, while und break. Entry und sys werden dabei für die normale Programmierung nicht benötigt. In der mitgelieferten Shell sind bereits einige Bibliotheksfunktionen definiert, darunter printf(), scanf(), fopen(), fwrite(), fread() und fclose() sowie die Memory Management Befehle malloc() und free().
  
 ===== Vor- und Nachteile ===== ===== Vor- und Nachteile =====
software/diy/c/smallc.1163349844.txt.gz · Zuletzt geändert: (Externe Bearbeitung)