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

Nächste Überarbeitung
Vorhergehende Überarbeitung
software:diy:c:smallc [12/11/2006 16:11] – Neu angelegt 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 46: 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 53: 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 74: 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 93: 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 131: Zeile 134:
  
  printf ("\n%d Primzahlen gefunden.\n", count);  printf ("\n%d Primzahlen gefunden.\n", count);
 +
 + free (sieve);
  return count;  return count;
 } }
 </code> </code>
  
 +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.1163346846.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)