Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Læringsmål:

  • Betingelser
  • For-løkker
  • While-løkker
  • PLACEHOLDERFilbehandling (star)(star)

Pensum:

  • PLACEHOLDER

DEL 1

a)

Et palindrom er et ord som staves likt begge veier (f.eks. 'abba'). Lag en funksjon som returnerer true om en streng er et palindrom; false ellers.

b)

Det ønskes å hente ut den lengste biten av et stykke RNA avgrenset av en bestemt start og stopp sekvens. Disse oppgis å være "AUG" (start) og "UAG" (stop). RNAet gis som en lang streng av bokstaver: A, C, G og U. Funksjonen skal starte tellingen på nytt hver gang startstrengen gjentas, og tellingen skal avsluttes hver gang stopstrengen gjentas.
Lag en funksjon, sequenceFinder som tar inn tre strenger: sequence, start og stop. Den skal returnere den lengste strengen mellom start og stopp sekvensene.

Test programmet ditt med følgende streng: UCGCAUGCAUCAGUACCUAGCUACG, svaret skal da være AUGCAUCAGUACCUAG.

...

a) 

Skriv en funksjon som returnerer True om parameteren a er delelig med b. Hint: En modulo-operasjon (mod(a,b)) blir brukt i informatikk og i matematikk til å finne resten av et opprinnelig heltall etter en divisjon med et annet tall. Eks.: mod(5,2) = 1

b)

Lag funksjon med en for løkke som itererer fra b = 2,3,...,a-1 og bruker funksjonen fra forrige oppgave for å sjekke om a det er delelig med b. Om de er delelige avslutter du og returnerer 0. Ellers skal du returnere 1.

c)

 Algoritmen skal nå gjøres raskere ved hjelp av 2 små inngrep:

...

  • 3.7 User-Defined Functions That Return a Single Value
  • 4.1 The if statement
  • 4.2 The if-else statement
  • 4.3 Nested if-else statements
  • 5.1 The for loop
  • 5.2 Nested for loops
  • 5.3 While loops
  • 5.4 Loops With Vectors and Matrices: Vectorizing
  • 9.1 Lower Level File I/O Functions (star)(star)


a)    

        Lag funksjonen isPrime(N) som tar inn et heltall, N,  som parameter og tester om det er et primtall ved hjelp av en for-løkke. Funksjonen skal returnere true hvis tallet er et primtall og false hvis det ikke er det.

        Et primtall er et tall som kun er delelig med seg selv og 1, og er større enn 1. Du kan ikke bruke Matlabs innebygde isprime()

 

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> isPrime(2003)
ans =
     1
>> isPrime(2001)
ans =
     0
>> isPrime(2)
ans =
     1



b) 

        Lag en ny funksjon, getPrimeList(N), som returnerer en liste over de første primtallene.

        Hint: For å skape en effektiv kode, kan du bruke de primtallene du allerede har funnet til å sjekke om et tall er et primtall. Den innebygde kommandoen break kan brukes til å hoppe ut av en enkelt for-løkke.  

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> getPrimeList(8)
ans =
     2     3     5     7    11    13    17    19
>> getPrimeList(15)
ans =
     2     3     5     7    11    13    17    19    23    29    31    37    41    43    47

   

c)

        Ved å liste de første fem primtallene: 2, 3, 5, 7, 11, kan vi se at 11 er det femte primtallet. Lag en funksjon, primeNumN(N), som tar inn antallet primtall N og bruker getPrimeList(N) til å returnere det siste av de N
        primtallene.

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> primeNumN(10001)
ans =
      104743

 

d)     (Frivillig) (star)(star) (Denne oppgaven har fått to stjerner da den inneholder filbehandling som egentlig ikke er pensum før øving 9)

Primtallene skal lagres til en fil og det skal være mulig å la den nye primtallsfunksjonen fortsette på listen uten å regne ut listen fra starten av. Det kan være lurt å lage tre nye funksjoner for dette: mainPrime, loadPrimes, savePrimes.
mainPrime regner ut 100 primtall som lagres og spør brukeren om ytterligere 100 primtall skal finnes. Når brukeren avslutter, skal alle primtallene som har blitt funnet, lagres og returneres.

 

...