Hva du trenger å vite for å fullføre oppgaven. Detaljert løsning av OGE-problemer i informatikk Datotabellen viser data om antallet

Databehandling:

  • Algoritme, egenskaper ved algoritmer, måter å skrive algoritmer på. Flytskjemaer. Introduksjon til programmering.
  • Algoritmiske design.

Dette er temaene som prøveoppgaver nr. 10 ved hovedstatseksamen (OGE) i informatikk lages for.

10 (B) (del 1, videregående nivå - oppgaven innebærer at eksaminanden selvstendig formulerer og registrerer besvarelsen i form av en symbolsekvens, gjennomføringstid - 6 minutter, maksimal poengsum for gjennomføring av oppgaven - 1). Krav til treningsnivået, hvis mestring blir testet under eksamen når du svarer på denne oppgaven: evaluere de numeriske parameterne til informasjonsobjekter og prosesser, evnen til å utføre round robin-algoritme behandle en rekke tall på et av programmeringsspråkene.

Hva du trenger å vite for å fullføre oppgaven:

  • array- dette er et sett (kalt samling) av elementer av samme type, sortert etter indekser som bestemmer posisjonen til elementet i matrisen;
  • Før du bruker det i et program, må arrayet beskrives, dvs. navn, antall matriseelementer og deres type må spesifiseres;

var<имя_массива>:array [<мин_знач_индекса>. . <макс_знач_индекса> ] av<тип_элементов>;

For eksempel: rekord
var A: rekke av heltall;
betyr at en matrise kalt A er gitt, bestående av 10 heltallselementer.

  • Du kan fylle matrisen ved å skrive inn verdien til hvert element fra tastaturet, eller ved å tilordne noen verdier til elementene:
  • For å referere til et matriseelement, bruk firkantede parenteser, notasjon A[i] betegner elementet i array A med nummer (indeks) i;
  • en matrise (to-dimensjonal matrise) er en rektangulær tabell med elementer av samme type;
  • hvis matrisen heter A, betegner invers A elementet som ligger i skjæringspunktet mellom rad i og kolonne k.

Et eksempel på å løse et problem:
Dat-tabellen lagrer data om antall elever i klassene (Dat - antall elever i første klasse, Dat - i andre osv.). Bestem hvilket nummer som skal skrives ut som et resultat av følgende program. Programteksten leveres på tre programmeringsspråk.

Algoritmisk språk GRUNNLEGGENDE Pascal

alg
begynnelse
celtab Dat
heltall k, m
Dat := 20; Dat := 25
Dat := 19; Dat := 25
Dat := 26; Dato:= 22
Dat := 24; Dat := 28
Dat := 26; Dato:= 21
Dato:= 27
m:= 0
nc for k fra 1 til 11
hvis Dat[k] > 22 da
m:= m + 1
Alle
kts
utgang m
lure

DIM Dat(11) SOM HELTAL
DIM k,m SOM HELTAL
Dat(1) = 20: Dat(2) = 25
Dat(3) = 19: Dat(4) = 25
Dat(5) = 26: Dat(6) = 22
Dat(7) = 24: Dat(8) = 28
Dat(9) = 26: Dat(10) = 21
Dat(11) = 27
m = 0
FOR k = 1 TIL 11
HVIS Dat(k) > 22 DÅ
m = m + 1
SLUTT OM
NESTE k
SKRIV UT m

Var k, m: heltall; Dat: array av heltall; Start Dat := 20; Dat := 25; Dat := 19; Dat := 25; Dat := 26; Dat := 22; Dat := 24; Dat := 28; Dat := 26; Dat := 21; Dat > 22 begynner så m:= m + 1 slutt; skriveln(m) Slutt.

Løsning (en vei):

  1. La oss se på programmet trinn for trinn. Først deklareres variablene som skal brukes (variablene k og m), samt Dat-matrisen som inneholder 11 elementer (elementene er nummerert fra 1 til 11).

OBS: I Dat-matrisen, som er beskrevet i Grunnleggende språk det vil være 12 elementer, siden nummereringen starter ikke fra det første elementet, men fra null.

  1. Deretter kommer fylling av matrisen. For eksempel er array-elementet med indeks 1 tildelt verdien 20, elementet med indeks 2 er tildelt 25, osv. Som et resultat kan den resulterende arrayen representeres som følger:

Array Dat

Indeks

Betydning

  1. variabel m tildeles verdien 0. Deretter starter en sløyfe med parameter k, hvor k endres fra 1 til 11 i trinn på 1.

I hoveddelen av løkken kontrolleres tilstanden:

  1. Verdien av matriseelementet ved indeks k sammenlignes med tallet 22. Hvis matriseelementet er større enn 22, økes variabelen m med 1. Ellers skjer ingenting.
  2. Helt på slutten av programmet vises verdien til variabelen m på skjermen.
  3. La oss finne ut hva som skjer etter å ha kjørt programmet. Verdien av variabelen m endres i en sløyfe. Før løkken er verdien null. Deretter itererer programmet gjennom alle elementene i matrisen og sammenligner dem med tallet 22. Og hvis matriseelementet er større enn 22, økes variabelen m med 1. Derfor må vi telle alle elementene i matrisen. array som er større enn 22 - deres antall vil være lik verdien av variabelen m. Det er 7 slike elementer - dette er elementer med indeksene 2, 4, 5, 7, 8, 9 og 11.

OBS: Element nummer 6, som er lik 22. Men siden... Siden sammenligningen vår er streng («>»-tegnet), tar vi ikke hensyn til den.

Svar: 7

Løsning (2-veis manuell rulling):

Tenk mentalt den resulterende matrisen:
Array Dat

Indeks

Betydning

Federal Institute of Pedagogical Measurements / Demo-versjoner, spesifikasjoner, kodifikatorer av OGE 2015 - 2019 // Datavitenskap og IKT - (http://fipi.ru)

  • Dracheva E. R., Grishina I. A. Forbereder for GIA i informatikk / E. R. Dracheva, I. A. Grishina // Del B - (http://giainformatika.ru/)
  • k Dat[k](for BASIC Dat(k)) Tilstandssjekk Dat[k] > 22(for BASIC Dat(k) > 22) m
    0
    1 20 Nei
    2 25 Ja 1
    3 19 Nei
    4 25 Ja 2
    5 26 Ja 3
    6 22 Nei
    7 24 Ja 4

    Dat-tabellen presenterer data om antall stemmer avgitt for 10 utøvere av folkesanger (Dat - antall stemmer avgitt for den første utøveren; Dat - for den andre, etc.). Bestem hvilket nummer som skal skrives ut som et resultat av følgende program. Programteksten leveres på tre programmeringsspråk. Algoritmisk språk BASIC Pascal alg nach celtab Dat heltall k, m Dat := 16 Dat := 20 Dat := 20 Dat := 41 Dat := 14 Dat := 21 Dat := 28 Dat := 12 Dat := 15 Dat : = 35 m:= 0 nc for k fra 1 til 10 hvis Dat[k]gt;m så m:= Dat[k] all cc utgang m con DIM Dat(10) AS INTEGER DIM k,m AS INTEGER Dat(1) ) = 16: Dat(2) = 20 Dat(3) = 20: Dat(4) = 41 Dat(5) = 14: Dat(6) = 21 Dat(7) = 28: Dat(8) = 12 Dat (9) = 15:Dat(10) = 35 m = 0 FOR k = 1 TIL 10 HVIS Dat(k)gt;m DA m = Dat(k) ENDIF NESTE k SKRIV UT m Var k, m: heltall; Dat: array av heltall; Startdato:= 16; Dat := 20; Dat := 20; Dat := 41; Dat := 14; Dat := 21; Dat := 28; Dat := 12; Dat := 15; Dat := 35; m:= 0; for k:= 1 til 10 gjør hvis Dat[k]gt;m så begynner m:= Dat[k] slutt; skrivln(m); Slutt.

    Lignende spørsmål

    • Fyll ut de blanke feltene. Hjelp meg vær så snill:)
    • Helten som frigjorde Prometheus
    • Lag en oppgave, løs oppgaven og skriv ned løsningen
    • Gutter, hjelp: (lg(x+√3)+lg(x-√3)=0
    • Hjelp meg å bestemme meg. Beregn arealet av en trekant hvis det er 9 ganger mindre enn arealet av en firkant med en sidelengde på 12 cm
    • Løs ligningen (8 5/27 - x) - 2 25/27 = 1 25/27
    • Hva het bøndene som ble solgt?
    • Jenta begynte å mate kattungen. Hun tok med havregrøt, han snudde seg bort fra koppen. Da han mottok reddikene, snudde han seg bort fra bollen. Jeg tok med en bit bacon, kattungen sier at det ikke er nok. Finn ord i teksten med skrivemåten "ubetonet vokal...

    Jeg presenterer løsningen på oppgave 10 i OGE-2016 i informatikk fra demoversjonsprosjektet. Sammenlignet med 2015-demoen har ikke oppgave 10 endret seg. Dette er en oppgave om evnen til å utføre en syklisk algoritme for å behandle en rekke tall, skrevet i et algoritmisk språk (Algorithm, egenskaper til algoritmer, måter å skrive algoritmer på. Flytskjemaer. Introduksjon til programmering. Algoritmiske konstruksjoner). Dette er en oppgave med økt kompleksitet, svaret på den er et heltall som skal skrives i svarfeltet.

    Skjermbilde av oppgave 10.

    Trening:

    Dat-tabellen presenterer data om antall stemmer avgitt for 10 utøvere av folkesanger (Dat - antall stemmer avgitt for den første utøveren; Dat - for den andre, etc.). Bestem hvilket nummer som skal skrives ut som et resultat av følgende program. Programteksten leveres på tre programmeringsspråk.

    Eksempel i Pascal

    Var k, m: heltall;
    Dat: array av heltall;
    Begynne
    Dat := 16; Dat := 20;
    Dat := 20; Dat := 41;
    Dat := 14; Dat := 21;
    Dat := 28; Dat := 12;
    Dat := 15; Dat := 35;
    m:= 0;
    for k:= 1 til 10 do
    hvis Dat[k]>m da
    begynne
    m:=Dat[k]
    slutt;
    skrivln(m);
    Slutt.

    Dette programmet lager en rekke med 10 tall. I en sløyfe fra 1 til og med 10 sammenlignes verdien av array-elementet med verdien av variabelen m. Hvis det viser seg at verdien av et matriseelement er strengt tatt større enn verdien av variabel m, tildeles variabel m verdien til matriseelementet (opprinnelig, før løkken, var verdien av variabel m lik 0).

    For å parafrasere får vi følgende. For hver utøver av folkesanger fra 1 til og med 10, sammenlignes antall stemmer med verdien m. Hvis antallet stemmer er større enn m, tildeles variabelen m en verdi lik antall stemmer. Som et resultat av å utføre syklusen får vi tallet m, som viser det største antallet stemmer gitt til en av deltakerne, dvs. m=41.

    En matrise i vår forståelse er en vanlig tabell. Verdiene i tabellen må være av samme type: heltall, eller reelle tall, eller strenger, eller boolske verdier. Som regel vurderes problemer med heltallstabeller i skolekurs. Tabellelementene er plassert i nærheten i minnet og kan nås gjennom deres serienummer (indeks) i tabellen.

    EN
    1 2 3 4 5
    55 36 134 75 100

    La A være en tabell med fem elementer. Da er A = 55, A = 36, A = 134, A = 75, A = 100

    For å jobbe med tabeller i Idol, må du tildele minne for å lagre det:

    Alg nach celtab A

    Tabellen kan fylles ut manuelt:

    A := 55 A := 36 A := 134 A := 75 A := 100

    Hvis det er mange elementer, er det bedre å bruke en løkke ( loop variabel Jeg må deklareres i begynnelsen av programmet):

    nc for i fra 1 til 5 inngang A[i] cc

    Hvis du trenger å endre verdiene til alle tabellelementer (for eksempel øke dem med 2 ganger), er det igjen bedre å bruke en løkke:

    NC for i fra 1 til 5 A[i] := A[i]*2 kc

    Vi utfører også utdata av alle tabellelementverdier i en løkke:

    nc for i fra 1 til 5 pin A[i],ns cc

    Finne verdien av maksimumselementet og dets nummer i tabellen

    Merk: oppgaven med å finne minimumselementet skiller seg bare i sammenligningstegnet

    Oppgaven er delt inn i flere stadier:

    1. For det innledende maksimum, ta det aller første elementet i tabellen, og husk nummeret

    Imax:= 1

    2. Vi vil sjekke alle andre elementer (fra 2. til siste): hvis det gjeldende elementet som kontrolleres er større enn maksimum, så husker vi nummeret til det gjeldende elementet i imax

    Nts for i fra 2 til 5 hvis A[i] > A så imax:= i alle kts

    3. Ved å bruke det funnet nummeret til maksimumselementet, viser vi selve maksimumet:

    Pinne A

    Her er hele programmets tekst:

    Alg SearchMax start celtab A int imax, i nc for i fra 1 til 5 inngang A[i] kts imax:= 1 nts for i fra 2 til 5 hvis A[i] > A så imax:= i alle kts utgang A kts

    Finne summen og gjennomsnittsverdi alle tabellelementer

    Først må du angi startverdien for beløpet:

    Så i en løkke legger vi verdiene til elementene til summen:

    nc for i fra 1 til 5 s:= s + A[i] cc

    Vi finner gjennomsnittsverdien av alle tabellelementer som forholdet mellom summen og antall elementer:

    Sr:= s/5

    Her er hele programmets tekst:

    Alg SumAvg begynnelsen celtab En hel i, s ting sr | gjennomsnittstallet vil være reelt nc for i fra 1 til 5 inngang A[i] kc s:= 0 nc for i fra 1 til 5 s:= s + A[i] kc sr:= s/5 utgang “Sum av alle elementer: ",s,ns utgang "Gjennomsnittsverdi av alle elementer:",sr kts

    Eksempler på problemløsning

    Eksempel 1.

    Dat-tabellen presenterer data om antall stemmer avgitt for 10 utøvere av folkesanger (Dat - antall stemmer avgitt for den første utøveren; Dat - for den andre osv.). Bestem hvilket nummer som skal skrives ut som et resultat av følgende program.

    Alg start celtab Dat int k, m Dat := 16 Dat := 20 Dat := 20 Dat := 41 Dat := 14 Dat := 21 Dat := 28 Dat := 12 Dat := 15 Dat := 35 m: = 0 nc for k fra 1 til 10 hvis Dat[k]>m så m:= Dat[k] all kc utgang m end

    I begynnelsen av programmet registreres antall avgitte stemmer for utøverne i cellene i tabellen.

    Tenk på følgende programfragment:

    M:= 0 nc for k fra 1 til 10 hvis Dat[k]>m så m:= Dat[k] alle kc

    Det kan sees at i sløyfen sammenlignes hvert element med variabelen m, som før sløyfen var lik null. Hvis det gjeldende elementet som kontrolleres er større enn m, skrives verdien til det gjeldende elementet til variabelen m. Etter at løkken er utført, vil variabelen m lagre verdien til det største elementet.

    Med andre ord finner programmet maksimalverdien blant alle tabellceller. Denne elementverdien er Dat = 41

    Svar: 41

    Eksempel 2:

    Alg start celtab Dat int k, m Dat := 7; Dat := 9 Dat := 10;Dat := 5 Dat := 6; Dat := 7 Dat := 9; Dat := 8 Dat := 6; Dat:= 9 m:= 0 nc for k fra 1 til 10 hvis Dat[k]< 7 то m:= m + 1 все кц вывод m кон

    I starten av programmet fylles det ut en tabell som inneholder antall fullførte oppgaver.
    Etter dette introduseres en variabel m med null verdi.

    I en løkke Til fra 1 til 10 er krysset av: hvis antall fullførte oppgaver for eleven er nummerert Til er mindre enn 7, så er det en slik elev til (m:= m +1).

    Programmet teller med andre ord antall elever som fullførte mindre enn 7 oppgaver.

    Vi har tre slike elever: Dat, Dat, Dat

    Svar: 3

    Eksempel 3:

    Dat-tabellen lagrer data om antall oppgaver utført av studenter (Dat-oppgaver ble utført av den første eleven, Dat av den andre, osv.). Bestem hvilket nummer som skal skrives ut som et resultat av følgende program.

    Alg start celtab Dat int k, m Dat := 20; Dat := 25 Dat := 19; Dat := 25 Dat := 26; Dat := 22 Dat := 24; Dat := 28 Dat := 26; Dat := 21 Dat := 27 m:= 0 nc for k fra 1 til 11 hvis k > 9 så m:= m + Dat[k] alle kc utgang m end

    Inne i en løkke for elementnummer Til fra 1 til 11 (for alle elever) er merket av: hvis tallet på elementet (eleven) er større enn 9, så til variabelen m Antall gjennomførte elevoppgaver legges til.

    Det kan sees at kun elev nummer 10 (Dat) og elev nummer 11 (Dat) består vilkåret. Følgelig er variabelen m vil lagre summen av antall fullførte oppgaver til disse elevene, 0+21+27=48

    Svar: 48

    Eksempel 4:

    Dat-tabellen lagrer data om antall oppgaver utført av studenter (Dat-oppgaver ble utført av den første eleven, Dat av den andre, osv.). Bestem hvilket nummer som skal skrives ut som et resultat av følgende program.

    Alg start celtab Dat int k, m, n Dat := 7; Dat := 9 Dat := 10; Dat := 5 Dat := 6; Dat := 7 Dat := 5; Dat := 8 Dat := 6; Dat:= 9 m:= 10; n:= 0 nc for k fra 1 til 10 hvis Dat[k]<= m то m:= Dat[k] n:= k все кц вывод n кон

    Elementverdier overstiger ikke 10.

    Linje nts for k fra 1 til 10 betyr at alle elementene i matrisen itereres (vi har 10 av dem).

    Betingelse Hvis Dat[k]<= m vil være sann når verdien til det gjeldende elementet er mindre enn eller lik m. Hvis denne betingelsen er sann, så inn i variabelen m verdien av det gjeldende elementet skrives, og variabelen n- nummeret hans.

    Poenget med problemet er å finne Antall minimumselement! (programmet skriver ut verdien på slutten n).

    Siden betingelsen ikke er streng Dat[k]<= m, то будет найден siste minimumselementet og dets nummer (Dat).

    Hvis betingelsen var streng, så den første blant identiske minima (Dat)